diff options
Diffstat (limited to 'xpfe/components/downloads/content/DownloadProgressListener.js')
-rw-r--r-- | xpfe/components/downloads/content/DownloadProgressListener.js | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/xpfe/components/downloads/content/DownloadProgressListener.js b/xpfe/components/downloads/content/DownloadProgressListener.js new file mode 100644 index 000000000..5341b44d8 --- /dev/null +++ b/xpfe/components/downloads/content/DownloadProgressListener.js @@ -0,0 +1,58 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); + +/** + * DownloadProgressListener "class" is used to help update download items shown + * in the Download Manager UI such as displaying amount transferred, transfer + * rate, and time left for each download. + * + * This class implements the nsIDownloadProgressListener interface. + */ +function DownloadProgressListener() {} + +DownloadProgressListener.prototype = { + ////////////////////////////////////////////////////////////////////////////// + //// nsISupports + + QueryInterface: XPCOMUtils.generateQI([Components.interfaces.nsIDownloadProgressListener]), + + ////////////////////////////////////////////////////////////////////////////// + //// nsIDownloadProgressListener + + onDownloadStateChange: function(aState, aDownload) { + // Update window title in-case we don't get all progress notifications + onUpdateProgress(); + + switch (aDownload.state) { + case nsIDownloadManager.DOWNLOAD_QUEUED: + gDownloadTreeView.addDownload(aDownload); + break; + + case nsIDownloadManager.DOWNLOAD_BLOCKED_POLICY: + gDownloadTreeView.addDownload(aDownload); + // Should fall through, this is a final state but DOWNLOAD_QUEUED + // is skipped. See nsDownloadManager::AddDownload. + default: + gDownloadTreeView.updateDownload(aDownload); + break; + } + }, + + onProgressChange: function(aWebProgress, aRequest, + aCurSelfProgress, aMaxSelfProgress, + aCurTotalProgress, aMaxTotalProgress, aDownload) { + gDownloadTreeView.updateDownload(aDownload); + + // Update window title + onUpdateProgress(); + }, + + onStateChange: function(aWebProgress, aRequest, aState, aStatus, aDownload) { + }, + + onSecurityChange: function(aWebProgress, aRequest, aState, aDownload) { + } +}; |