From 3057ff32c5513f47b99351b9749bc33f322f7c57 Mon Sep 17 00:00:00 2001 From: Wes Johnston Date: Thu, 12 Sep 2013 15:46:35 -0700 Subject: [PATCH] Bug 690252 - Default to saving files. r=mfinkle --- mobile/android/app/mobile.js | 1 + mobile/android/components/HelperAppDialog.js | 128 ++----------------- 2 files changed, 9 insertions(+), 120 deletions(-) diff --git a/mobile/android/app/mobile.js b/mobile/android/app/mobile.js index 90e1b69f37fd..7a70ce8a10ca 100644 --- a/mobile/android/app/mobile.js +++ b/mobile/android/app/mobile.js @@ -783,3 +783,4 @@ pref("general.useragent.override.youtube.com", "Android; Tablet;#Android; Mobile // When true, phone number linkification is enabled. pref("browser.ui.linkify.phone", false); + diff --git a/mobile/android/components/HelperAppDialog.js b/mobile/android/components/HelperAppDialog.js index 767bcafab61d..c7c58f3b25d7 100644 --- a/mobile/android/components/HelperAppDialog.js +++ b/mobile/android/components/HelperAppDialog.js @@ -24,122 +24,20 @@ HelperAppLauncherDialog.prototype = { QueryInterface: XPCOMUtils.generateQI([Ci.nsIHelperAppLauncherDialog]), show: function hald_show(aLauncher, aContext, aReason) { - // Check to see if we can open this file or not - if (aLauncher.MIMEInfo.hasDefaultHandler) { - aLauncher.MIMEInfo.preferredAction = Ci.nsIMIMEInfo.useSystemDefault; - aLauncher.launchWithApplication(null, false); - } else { - let wasClicked = false; - let listener = { - observe: function(aSubject, aTopic, aData) { - if (aTopic == "alertclickcallback") { - wasClicked = true; - let win = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator).getMostRecentWindow("navigator:browser"); - if (win) - win.BrowserUI.showPanel("downloads-container"); - - aLauncher.saveToDisk(null, false); - } else { - if (!wasClicked) - aLauncher.cancel(Cr.NS_BINDING_ABORTED); - } - } - }; - this._notify(aLauncher, listener); - } + // Save everything by default + aLauncher.MIMEInfo.preferredAction = Ci.nsIMIMEInfo.useSystemDefault; + aLauncher.saveToDisk(null, false); }, promptForSaveToFile: function hald_promptForSaveToFile(aLauncher, aContext, aDefaultFile, aSuggestedFileExt, aForcePrompt) { - let file = null; - let prefs = Services.prefs; + // Retrieve the user's default download directory + let dnldMgr = Cc["@mozilla.org/download-manager;1"].getService(Ci.nsIDownloadManager); + let defaultFolder = dnldMgr.userDownloadsDirectory; - if (!aForcePrompt) { - // Check to see if the user wishes to auto save to the default download - // folder without prompting. Note that preference might not be set. - let autodownload = true; - try { - autodownload = prefs.getBoolPref(PREF_BD_USEDOWNLOADDIR); - } catch (e) { } - - if (autodownload) { - // Retrieve the user's default download directory - let dnldMgr = Cc["@mozilla.org/download-manager;1"].getService(Ci.nsIDownloadManager); - let defaultFolder = dnldMgr.userDownloadsDirectory; - - try { - file = this.validateLeafName(defaultFolder, aDefaultFile, aSuggestedFileExt); - } - catch (e) { - } - - // Check to make sure we have a valid directory, otherwise, prompt - if (file) - return file; - } - } - - // Use file picker to show dialog. - let picker = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker); - let windowTitle = ""; - let parent = aContext.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindow); - picker.init(parent, windowTitle, Ci.nsIFilePicker.modeSave); - picker.defaultString = aDefaultFile; - - if (aSuggestedFileExt) { - // aSuggestedFileExtension includes the period, so strip it - picker.defaultExtension = aSuggestedFileExt.substring(1); - } - else { - try { - picker.defaultExtension = aLauncher.MIMEInfo.primaryExtension; - } - catch (e) { } - } - - var wildCardExtension = "*"; - if (aSuggestedFileExt) { - wildCardExtension += aSuggestedFileExt; - picker.appendFilter(aLauncher.MIMEInfo.description, wildCardExtension); - } - - picker.appendFilters(Ci.nsIFilePicker.filterAll); - - // Default to lastDir if it is valid, otherwise use the user's default - // downloads directory. userDownloadsDirectory should always return a - // valid directory, so we can safely default to it. - var dnldMgr = Cc["@mozilla.org/download-manager;1"].getService(Ci.nsIDownloadManager); - picker.displayDirectory = dnldMgr.userDownloadsDirectory; - - // The last directory preference may not exist, which will throw. try { - let lastDir = prefs.getComplexValue("browser.download.lastDir", Ci.nsILocalFile); - if (isUsableDirectory(lastDir)) - picker.displayDirectory = lastDir; - } - catch (e) { } + file = this.validateLeafName(defaultFolder, aDefaultFile, aSuggestedFileExt); + } catch (e) { } - if (picker.show() == Ci.nsIFilePicker.returnCancel) { - // null result means user cancelled. - return null; - } - - // Be sure to save the directory the user chose through the Save As... - // dialog as the new browser.download.dir since the old one - // didn't exist. - file = picker.file; - - if (file) { - try { - // Remove the file so that it's not there when we ensure non-existence later; - // this is safe because for the file to exist, the user would have had to - // confirm that he wanted the file overwritten. - file.remove(false); - } - catch (e) {} - var newDir = file.parent.QueryInterface(Ci.nsILocalFile); - prefs.setComplexValue("browser.download.lastDir", Ci.nsILocalFile, newDir); - file = this.validateLeafName(newDir, file.leafName, null); - } return file; }, @@ -200,16 +98,6 @@ HelperAppLauncherDialog.prototype = { isUsableDirectory: function hald_isUsableDirectory(aDirectory) { return aDirectory.exists() && aDirectory.isDirectory() && aDirectory.isWritable(); }, - - _notify: function hald_notify(aLauncher, aCallback) { - let bundle = Services.strings.createBundle("chrome://browser/locale/browser.properties"); - - let notifier = Cc[aCallback ? "@mozilla.org/alerts-service;1" : "@mozilla.org/toaster-alerts-service;1"].getService(Ci.nsIAlertsService); - notifier.showAlertNotification(URI_GENERIC_ICON_DOWNLOAD, - bundle.GetStringFromName("alertDownloads"), - bundle.GetStringFromName("alertCantOpenDownload"), - true, "", aCallback, "downloadopen-fail"); - } }; this.NSGetFactory = XPCOMUtils.generateNSGetFactory([HelperAppLauncherDialog]);