Bug 945707 - Pausing a download fails when done after a retry + follow up (see the description)

Issue #121
[follow up] Bug 92737 - Part 9: Download multiple files when multiple
items are dropped on Downloads view in Library Window
This commit is contained in:
janekptacijarabaci 2018-04-25 16:05:19 +02:00 committed by Roy Tam
commit fea1a4d195
2 changed files with 16 additions and 21 deletions

View file

@ -40,22 +40,6 @@ const DOWNLOAD_VIEW_SUPPORTED_COMMANDS =
const NOT_AVAILABLE = Number.MAX_VALUE;
/**
* Download a URL.
*
* @param aURL
* the url to download (nsIURI object)
* @param [optional] aFileName
* the destination file name
*/
function DownloadURL(aURL, aFileName) {
// For private browsing, try to get document out of the most recent browser
// window, or provide our own if there's no browser window.
let browserWin = RecentWindow.getMostRecentBrowserWindow();
let initiatingDoc = browserWin ? browserWin.document : document;
saveURL(aURL, aFileName, null, true, true, undefined, initiatingDoc);
}
/**
* A download element shell is responsible for handling the commands and the
* displayed data for a single download view element. The download element
@ -654,7 +638,10 @@ DownloadElementShell.prototype = {
// In future we may try to download into the same original target uri, when
// we have it. Though that requires verifying the path is still valid and
// may surprise the user if he wants to be requested every time.
DownloadURL(this.downloadURI, this.getDownloadMetaData().fileName);
let browserWin = RecentWindow.getMostRecentBrowserWindow();
let initiatingDoc = browserWin ? browserWin.document : document;
DownloadURL(this.downloadURI, this.getDownloadMetaData().fileName,
initiatingDoc);
},
/* nsIController */
@ -1450,7 +1437,9 @@ DownloadsPlacesView.prototype = {
_downloadURLFromClipboard: function DPV__downloadURLFromClipboard() {
let [url, name] = this._getURLFromClipboardData();
DownloadURL(url, name);
let browserWin = RecentWindow.getMostRecentBrowserWindow();
let initiatingDoc = browserWin ? browserWin.document : document;
DownloadURL(url, name, initiatingDoc);
},
doCommand: function DPV_doCommand(aCommand) {
@ -1504,6 +1493,11 @@ DownloadsPlacesView.prototype = {
else
contextMenu.removeAttribute("state");
if (state == nsIDM.DOWNLOAD_DOWNLOADING) {
// The resumable property of a download may change at any time, so
// ensure we update the related command now.
goUpdateCommand("downloadsCmd_pauseResume");
}
return true;
},
@ -1597,10 +1591,12 @@ DownloadsPlacesView.prototype = {
let links = Services.droppedLinkHandler.dropLinks(aEvent);
if (!links.length)
return;
let browserWin = RecentWindow.getMostRecentBrowserWindow();
let initiatingDoc = browserWin ? browserWin.document : document;
for (let link of links) {
if (link.url.startsWith("about:"))
continue;
DownloadURL(link.url, link.name);
DownloadURL(link.url, link.name, initiatingDoc);
}
}
};

View file

@ -507,8 +507,7 @@ const DownloadsPanel = {
let uri = NetUtil.newURI(url);
DownloadsCommon.log("Pasted URL seems valid. Starting download.");
saveURL(uri.spec, name || uri.spec, null, true, true,
undefined, document);
DownloadURL(uri.spec, name, document);
} catch (ex) {}
},