} 
function downloadCompleted(aDownload){  // Wrap this in try...catch since this can be called while shutting down...  // it doesn't really matter if it fails then since well.. we're shutting down  // and there's no UI to update!  try {    let dl = getDownload(aDownload.id);    // Update attributes now that we've finished    dl.setAttribute("startTime", Math.round(aDownload.startTime / 1000));    dl.setAttribute("endTime", Date.now());    dl.setAttribute("currBytes", aDownload.amountTransferred);    dl.setAttribute("maxBytes", aDownload.size);    // Show the finish time because we're done    updateTime(dl);    // If we are displaying search results, we do not want to add it to the list    // of completed downloads    if (!gSearching) {      gDownloadsView.insertBefore(dl, gDownloadsDoneArea.nextSibling);      evenOddCellAttribution();    } else      removeFromView(dl);    // getTypeFromFile fails if it can't find a type for this file.    try {      // Refresh the icon, so that executable icons are shown.      var mimeService = Cc["@mozilla.org/mime;1"].                        getService(Ci.nsIMIMEService);      var contentType = mimeService.getTypeFromFile(aDownload.targetFile);      var listItem = getDownload(aDownload.id)      var oldImage = listItem.getAttribute("image");      // Tacking on contentType bypasses cache      listItem.setAttribute("image", oldImage + "&contentType=" + contentType);    } catch (e) { }    if (gDownloadManager.activeDownloadCount == 0)      document.title = document.documentElement.getAttribute("statictitle");  }  catch (e) { }}
5872	/local1/tlutelli/issta_data/temp/all_js/javascript/2007_temp/2007/5872/9a1d793ed199840168e87d4d74714e5218c22810/downloads.js/clean/toolkit/mozapps/downloads/content/downloads.js