diff options
Diffstat (limited to 'components/downloads/DownloadsUI.js')
-rw-r--r-- | components/downloads/DownloadsUI.js | 151 |
1 files changed, 0 insertions, 151 deletions
diff --git a/components/downloads/DownloadsUI.js b/components/downloads/DownloadsUI.js deleted file mode 100644 index afdbda8..0000000 --- a/components/downloads/DownloadsUI.js +++ /dev/null @@ -1,151 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set ts=2 et sw=2 tw=80: */ -/* 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/. */ - -/** - * This component implements the nsIDownloadManagerUI interface and opens the - * downloads panel in the most recent browser window when requested. - * - * If a specific preference is set, this component transparently forwards all - * calls to the original implementation in Toolkit, that shows the window UI. - */ - -"use strict"; - -//////////////////////////////////////////////////////////////////////////////// -//// Globals - -const Cc = Components.classes; -const Ci = Components.interfaces; -const Cu = Components.utils; -const Cr = Components.results; - -Cu.import("resource://gre/modules/Services.jsm"); -Cu.import("resource://gre/modules/XPCOMUtils.jsm"); - -XPCOMUtils.defineLazyModuleGetter(this, "DownloadsCommon", - "resource:///modules/DownloadsCommon.jsm"); -XPCOMUtils.defineLazyServiceGetter(this, "gBrowserGlue", - "@mozilla.org/browser/browserglue;1", - "nsIBrowserGlue"); -XPCOMUtils.defineLazyModuleGetter(this, "RecentWindow", - "resource:///modules/RecentWindow.jsm"); -XPCOMUtils.defineLazyModuleGetter(this, "PrivateBrowsingUtils", - "resource://gre/modules/PrivateBrowsingUtils.jsm"); - -//////////////////////////////////////////////////////////////////////////////// -//// DownloadsUI - -function DownloadsUI() -{ - XPCOMUtils.defineLazyGetter(this, "_toolkitUI", function () { - // Create Toolkit's nsIDownloadManagerUI implementation. - return Components.classesByID["{7dfdf0d1-aff6-4a34-bad1-d0fe74601642}"] - .getService(Ci.nsIDownloadManagerUI); - }); -} - -DownloadsUI.prototype = { - classID: Components.ID("{4d99321e-d156-455b-81f7-e7aa2308134f}"), - - _xpcom_factory: XPCOMUtils.generateSingletonFactory(DownloadsUI), - - ////////////////////////////////////////////////////////////////////////////// - //// nsISupports - - QueryInterface: XPCOMUtils.generateQI([Ci.nsIDownloadManagerUI]), - - ////////////////////////////////////////////////////////////////////////////// - //// nsIDownloadManagerUI - - show: function DUI_show(aWindowContext, aDownload, aReason, aUsePrivateUI) - { - if (DownloadsCommon.useToolkitUI && !PrivateBrowsingUtils.isWindowPrivate(aWindowContext)) { - this._toolkitUI.show(aWindowContext, aDownload, aReason, aUsePrivateUI); - return; - } - - if (!aReason) { - aReason = Ci.nsIDownloadManagerUI.REASON_USER_INTERACTED; - } - - if (aReason == Ci.nsIDownloadManagerUI.REASON_NEW_DOWNLOAD) { - const kMinimized = Ci.nsIDOMChromeWindow.STATE_MINIMIZED; - let browserWin = gBrowserGlue.getMostRecentBrowserWindow(); - - if (!browserWin || browserWin.windowState == kMinimized) { - this._showDownloadManagerUI(aWindowContext, aUsePrivateUI); - } - else { - // If the indicator is visible, then new download notifications are - // already handled by the panel service. - browserWin.DownloadsButton.checkIsVisible(function(isVisible) { - if (!isVisible) { - this._showDownloadManagerUI(aWindowContext, aUsePrivateUI); - } - }.bind(this)); - } - } else { - this._showDownloadManagerUI(aWindowContext, aUsePrivateUI); - } - }, - - get visible() - { - // If we're still using the toolkit downloads manager, delegate the call - // to it. Otherwise, return true for now, until we decide on how we want - // to indicate that a new download has started if a browser window is - // not available or minimized. - return DownloadsCommon.useToolkitUI ? this._toolkitUI.visible : true; - }, - - getAttention: function DUI_getAttention() - { - if (DownloadsCommon.useToolkitUI) { - this._toolkitUI.getAttention(); - } - }, - - /** - * Helper function that opens the download manager UI. - */ - _showDownloadManagerUI: - function DUI_showDownloadManagerUI(aWindowContext, aUsePrivateUI) - { - // If we weren't given a window context, try to find a browser window - // to use as our parent - and if that doesn't work, error out and give up. - let parentWindow = aWindowContext; - if (!parentWindow) { - parentWindow = RecentWindow.getMostRecentBrowserWindow({ private: !!aUsePrivateUI }); - if (!parentWindow) { - Components.utils.reportError( - "Couldn't find a browser window to open the Places Downloads View " + - "from."); - return; - } - } - - // If window is private then show it in a tab. - if (PrivateBrowsingUtils.isWindowPrivate(parentWindow)) { - parentWindow.openUILinkIn("about:downloads", "tab"); - return; - } else { - let organizer = Services.wm.getMostRecentWindow("Places:Organizer"); - if (!organizer) { - parentWindow.openDialog("chrome://browser/content/places/places.xul", - "", "chrome,toolbar=yes,dialog=no,resizable", - "Downloads"); - } else { - organizer.PlacesOrganizer.selectLeftPaneQuery("Downloads"); - organizer.focus(); - } - } - } -}; - -//////////////////////////////////////////////////////////////////////////////// -//// Module - -this.NSGetFactory = XPCOMUtils.generateNSGetFactory([DownloadsUI]); |