diff options
author | janekptacijarabaci <janekptacijarabaci@seznam.cz> | 2018-07-25 15:28:56 +0200 |
---|---|---|
committer | janekptacijarabaci <janekptacijarabaci@seznam.cz> | 2018-07-25 15:28:56 +0200 |
commit | 58d5c1cca4ae42690a7ddb4e3025d794958b2e37 (patch) | |
tree | dca40fd0469e76a05473faa166479a8967f25c62 /application/palemoon/components/preferences/applications.js | |
parent | da0a9f854ff5d2d2a78dae776cc0a6bd75e9765a (diff) | |
download | UXP-58d5c1cca4ae42690a7ddb4e3025d794958b2e37.tar UXP-58d5c1cca4ae42690a7ddb4e3025d794958b2e37.tar.gz UXP-58d5c1cca4ae42690a7ddb4e3025d794958b2e37.tar.lz UXP-58d5c1cca4ae42690a7ddb4e3025d794958b2e37.tar.xz UXP-58d5c1cca4ae42690a7ddb4e3025d794958b2e37.zip |
[PALEMOON] Bug 480242 - "Always ask" doesn't work for Plugins
Diffstat (limited to 'application/palemoon/components/preferences/applications.js')
-rw-r--r-- | application/palemoon/components/preferences/applications.js | 54 |
1 files changed, 30 insertions, 24 deletions
diff --git a/application/palemoon/components/preferences/applications.js b/application/palemoon/components/preferences/applications.js index 4388f290e..1ff63ada9 100644 --- a/application/palemoon/components/preferences/applications.js +++ b/application/palemoon/components/preferences/applications.js @@ -288,6 +288,14 @@ HandlerInfoWrapper.prototype = { }, set preferredAction(aNewValue) { + // If the action is to use the plugin, + // we must set the preferred action to "save to disk". + // But only if it's not currently the preferred action. + if ((aNewValue == kActionUsePlugin) && + (this.preferredAction != Ci.nsIHandlerInfo.saveToDisk)) { + aNewValue = Ci.nsIHandlerInfo.saveToDisk; + } + // We don't modify the preferred action if the new action is to use a plugin // because handler info objects don't understand our custom "use plugin" // value. Also, leaving it untouched means that we can automatically revert @@ -1616,33 +1624,31 @@ var gApplicationsPane = { var typeItem = this._list.selectedItem; var handlerInfo = this._handledTypes[typeItem.type]; - if (aActionItem.hasAttribute("alwaysAsk")) { + let action = parseInt(aActionItem.getAttribute("action")); + + // Set the plugin state if we're enabling or disabling a plugin. + if (action == kActionUsePlugin) + handlerInfo.enablePluginType(); + else if (handlerInfo.pluginName && !handlerInfo.isDisabledPluginType) + handlerInfo.disablePluginType(); + + // Set the preferred application handler. + // We leave the existing preferred app in the list when we set + // the preferred action to something other than useHelperApp so that + // legacy datastores that don't have the preferred app in the list + // of possible apps still include the preferred app in the list of apps + // the user can choose to handle the type. + if (action == Ci.nsIHandlerInfo.useHelperApp) + handlerInfo.preferredApplicationHandler = aActionItem.handlerApp; + + // Set the "always ask" flag. + if (action == Ci.nsIHandlerInfo.alwaysAsk) handlerInfo.alwaysAskBeforeHandling = true; - } - else if (aActionItem.hasAttribute("action")) { - let action = parseInt(aActionItem.getAttribute("action")); - - // Set the plugin state if we're enabling or disabling a plugin. - if (action == kActionUsePlugin) - handlerInfo.enablePluginType(); - else if (handlerInfo.pluginName && !handlerInfo.isDisabledPluginType) - handlerInfo.disablePluginType(); - - // Set the preferred application handler. - // We leave the existing preferred app in the list when we set - // the preferred action to something other than useHelperApp so that - // legacy datastores that don't have the preferred app in the list - // of possible apps still include the preferred app in the list of apps - // the user can choose to handle the type. - if (action == Ci.nsIHandlerInfo.useHelperApp) - handlerInfo.preferredApplicationHandler = aActionItem.handlerApp; - - // Set the "always ask" flag. + else handlerInfo.alwaysAskBeforeHandling = false; - // Set the preferred action. - handlerInfo.preferredAction = action; - } + // Set the preferred action. + handlerInfo.preferredAction = action; handlerInfo.store(); |