summaryrefslogtreecommitdiff
path: root/xpfe/components/downloads/content/DownloadProgressListener.js
diff options
context:
space:
mode:
Diffstat (limited to 'xpfe/components/downloads/content/DownloadProgressListener.js')
-rw-r--r--xpfe/components/downloads/content/DownloadProgressListener.js58
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) {
+ }
+};