diff options
author | wolfbeast <mcwerewolf@wolfbeast.com> | 2019-03-25 17:47:59 +0100 |
---|---|---|
committer | wolfbeast <mcwerewolf@wolfbeast.com> | 2019-03-25 17:47:59 +0100 |
commit | 917a2c450f08ab4c934c9938319f10a1114272b4 (patch) | |
tree | 79394bdbef8c5bc90734918a9f862efaf6ec2e1a | |
parent | eb77e289bbe056b58051db0fa868e95da803aa0a (diff) | |
parent | a1ad1d835b66e9300cc011244a23aea5d660baf1 (diff) | |
download | UXP-917a2c450f08ab4c934c9938319f10a1114272b4.tar UXP-917a2c450f08ab4c934c9938319f10a1114272b4.tar.gz UXP-917a2c450f08ab4c934c9938319f10a1114272b4.tar.lz UXP-917a2c450f08ab4c934c9938319f10a1114272b4.tar.xz UXP-917a2c450f08ab4c934c9938319f10a1114272b4.zip |
Merge branch 'master' of https://github.com/MoonchildProductions/UXP
19 files changed, 229 insertions, 311 deletions
diff --git a/application/basilisk/base/content/browser.js b/application/basilisk/base/content/browser.js index 336670fa0..e3a5393a0 100644 --- a/application/basilisk/base/content/browser.js +++ b/application/basilisk/base/content/browser.js @@ -1277,7 +1277,7 @@ var gBrowserInit = { // Setup click-and-hold gestures access to the session history // menus if global click-and-hold isn't turned on - if (!getBoolPref("ui.click_hold_context_menus", false)) + if (!Services.prefs.getBoolPref("ui.click_hold_context_menus", false)) SetClickAndHoldHandlers(); let NP = {}; @@ -1868,7 +1868,7 @@ function BrowserGoHome(aEvent) { case "tabshifted": case "tab": urls = homePage.split("|"); - var loadInBackground = getBoolPref("browser.tabs.loadBookmarksInBackground", false); + var loadInBackground = Services.prefs.getBoolPref("browser.tabs.loadBookmarksInBackground", false); gBrowser.loadTabs(urls, loadInBackground); break; case "window": diff --git a/application/basilisk/base/content/utilityOverlay.js b/application/basilisk/base/content/utilityOverlay.js index 38ca82f55..c576aef9e 100644 --- a/application/basilisk/base/content/utilityOverlay.js +++ b/application/basilisk/base/content/utilityOverlay.js @@ -61,16 +61,6 @@ function openTopWin(url) { openUILinkIn(url, "current"); } -function getBoolPref(prefname, def) -{ - try { - return Services.prefs.getBoolPref(prefname); - } - catch (er) { - return def; - } -} - /* openUILink handles clicks on UI elements that cause URLs to load. * * As the third argument, you may pass an object with the same properties as @@ -137,7 +127,7 @@ function whereToOpenLink( e, ignoreButton, ignoreAlt ) // ignoreButton allows "middle-click paste" to use function without always opening in a new window. var middle = !ignoreButton && e.button == 1; - var middleUsesTabs = getBoolPref("browser.tabs.opentabfor.middleclick", true); + var middleUsesTabs = Services.prefs.getBoolPref("browser.tabs.opentabfor.middleclick", true); // Don't do anything special with right-mouse clicks. They're probably clicks on context menu items. @@ -145,7 +135,7 @@ function whereToOpenLink( e, ignoreButton, ignoreAlt ) if (metaKey || (middle && middleUsesTabs)) return shift ? "tabshifted" : "tab"; - if (alt && getBoolPref("browser.altClickSave", false)) + if (alt && Services.prefs.getBoolPref("browser.altClickSave", false)) return "save"; if (shift || (middle && !middleUsesTabs)) @@ -342,7 +332,7 @@ function openLinkIn(url, where, params) { if (loadInBackground == null) { loadInBackground = aFromChrome ? false : - getBoolPref("browser.tabs.loadInBackground"); + Services.prefs.getBoolPref("browser.tabs.loadInBackground"); } let uriObj; @@ -652,7 +642,7 @@ function getShellService() function isBidiEnabled() { // first check the pref. - if (getBoolPref("bidi.browser.ui", false)) + if (Services.prefs.getBoolPref("bidi.browser.ui", false)) return true; // then check intl.uidirection.<locale> @@ -914,7 +904,7 @@ function openHelpLink(aHelpTopic, aCalledFromModal, aWhere) { function openPrefsHelp() { // non-instant apply prefwindows are usually modal, so we can't open in the topmost window, // since its probably behind the window. - var instantApply = getBoolPref("browser.preferences.instantApply"); + var instantApply = Services.prefs.getBoolPref("browser.preferences.instantApply"); var helpTopic = document.getElementsByTagName("prefwindow")[0].currentPane.helpTopic; openHelpLink(helpTopic, !instantApply); diff --git a/application/basilisk/extensions/pdfjs/content/PdfJs.jsm b/application/basilisk/extensions/pdfjs/content/PdfJs.jsm index b3d85436e..7dc01c398 100644 --- a/application/basilisk/extensions/pdfjs/content/PdfJs.jsm +++ b/application/basilisk/extensions/pdfjs/content/PdfJs.jsm @@ -52,23 +52,6 @@ XPCOMUtils.defineLazyModuleGetter(this, 'PdfjsChromeUtils', 'resource://pdf.js/PdfjsChromeUtils.jsm'); XPCOMUtils.defineLazyModuleGetter(this, 'PdfjsContentUtils', 'resource://pdf.js/PdfjsContentUtils.jsm'); - -function getBoolPref(aPref, aDefaultValue) { - try { - return Services.prefs.getBoolPref(aPref); - } catch (ex) { - return aDefaultValue; - } -} - -function getIntPref(aPref, aDefaultValue) { - try { - return Services.prefs.getIntPref(aPref); - } catch (ex) { - return aDefaultValue; - } -} - function isDefaultHandler() { if (Services.appinfo.processType === Services.appinfo.PROCESS_TYPE_CONTENT) { return PdfjsContentUtils.isDefaultHandlerApp(); @@ -172,7 +155,7 @@ var PdfJs = { } this._initialized = true; - if (!getBoolPref(PREF_DISABLED, true)) { + if (!Services.prefs.getBoolPref(PREF_DISABLED, true)) { this._migrate(); } @@ -209,7 +192,7 @@ var PdfJs = { _migrate: function migrate() { const VERSION = 2; - var currentVersion = getIntPref(PREF_MIGRATION_VERSION, 0); + var currentVersion = Services.prefs.getIntPref(PREF_MIGRATION_VERSION, 0); if (currentVersion >= VERSION) { return; } @@ -284,7 +267,7 @@ var PdfJs = { * @return {boolean} Whether or not it's enabled. */ get enabled() { - var disabled = getBoolPref(PREF_DISABLED, true); + var disabled = Services.prefs.getBoolPref(PREF_DISABLED, true); if (disabled) { return false; } diff --git a/application/basilisk/extensions/pdfjs/content/PdfStreamConverter.jsm b/application/basilisk/extensions/pdfjs/content/PdfStreamConverter.jsm index 5e337bbc5..b5b21f214 100644 --- a/application/basilisk/extensions/pdfjs/content/PdfStreamConverter.jsm +++ b/application/basilisk/extensions/pdfjs/content/PdfStreamConverter.jsm @@ -78,22 +78,6 @@ function getFindBar(domWindow) { } } -function getBoolPref(pref, def) { - try { - return Services.prefs.getBoolPref(pref); - } catch (ex) { - return def; - } -} - -function getIntPref(pref, def) { - try { - return Services.prefs.getIntPref(pref); - } catch (ex) { - return def; - } -} - function getStringPref(pref, def) { try { return Services.prefs.getComplexValue(pref, Ci.nsISupportsString).data; @@ -103,7 +87,7 @@ function getStringPref(pref, def) { } function log(aMsg) { - if (!getBoolPref(PREF_PREFIX + '.pdfBugEnabled', false)) { + if (!Services.prefs.getBoolPref(PREF_PREFIX + '.pdfBugEnabled', false)) { return; } var msg = 'PdfStreamConverter.js: ' + (aMsg.join ? aMsg.join('') : aMsg); @@ -359,17 +343,17 @@ ChromeActions.prototype = { return !!findBar && ('updateControlState' in findBar); }, supportsDocumentFonts: function() { - var prefBrowser = getIntPref('browser.display.use_document_fonts', 1); - var prefGfx = getBoolPref('gfx.downloadable_fonts.enabled', true); + var prefBrowser = Services.prefs.getIntPref('browser.display.use_document_fonts', 1); + var prefGfx = Services.prefs.getBoolPref('gfx.downloadable_fonts.enabled', true); return (!!prefBrowser && prefGfx); }, supportsDocumentColors: function() { - return getIntPref('browser.display.document_color_use', 0) !== 2; + return Services.prefs.getIntPref('browser.display.document_color_use', 0) !== 2; }, supportedMouseWheelZoomModifierKeys: function() { return { - ctrlKey: getIntPref('mousewheel.with_control.action', 3) === 3, - metaKey: getIntPref('mousewheel.with_meta.action', 1) === 3, + ctrlKey: Services.prefs.getIntPref('mousewheel.with_control.action', 3) === 3, + metaKey: Services.prefs.getIntPref('mousewheel.with_meta.action', 1) === 3, }; }, reportTelemetry: function (data) { @@ -531,10 +515,10 @@ ChromeActions.prototype = { prefName = (PREF_PREFIX + '.' + key); switch (typeof prefValue) { case 'boolean': - currentPrefs[key] = getBoolPref(prefName, prefValue); + currentPrefs[key] = Services.prefs.getBoolPref(prefName, prefValue); break; case 'number': - currentPrefs[key] = getIntPref(prefName, prefValue); + currentPrefs[key] = Services.prefs.getIntPref(prefName, prefValue); break; case 'string': currentPrefs[key] = getStringPref(prefName, prefValue); @@ -921,16 +905,16 @@ PdfStreamConverter.prototype = { } catch (e) {} var hash = aRequest.URI.ref; - var isPDFBugEnabled = getBoolPref(PREF_PREFIX + '.pdfBugEnabled', false); + var isPDFBugEnabled = Services.prefs.getBoolPref(PREF_PREFIX + '.pdfBugEnabled', false); rangeRequest = contentEncoding === 'identity' && acceptRanges === 'bytes' && aRequest.contentLength >= 0 && - !getBoolPref(PREF_PREFIX + '.disableRange', false) && + !Services.prefs.getBoolPref(PREF_PREFIX + '.disableRange', false) && (!isPDFBugEnabled || hash.toLowerCase().indexOf('disablerange=true') < 0); streamRequest = contentEncoding === 'identity' && aRequest.contentLength >= 0 && - !getBoolPref(PREF_PREFIX + '.disableStream', false) && + !Services.prefs.getBoolPref(PREF_PREFIX + '.disableStream', false) && (!isPDFBugEnabled || hash.toLowerCase().indexOf('disablestream=true') < 0); } diff --git a/application/palemoon/base/content/browser-menudragging.js b/application/palemoon/base/content/browser-menudragging.js index cf26b2ba4..f3f00d72c 100644 --- a/application/palemoon/base/content/browser-menudragging.js +++ b/application/palemoon/base/content/browser-menudragging.js @@ -52,11 +52,9 @@ var browserMenuDragging = { initPref: function(){ this.STAY_OPEN_ONDRAGEXIT = - this.getPref('browser.menu.dragging.stayOpen', - 'bool', false); + Services.prefs.getBoolPref('browser.menu.dragging.stayOpen', false); this.DEBUG = - this.getPref('browser.menu.dragging.debug', - 'bool', false); + Services.prefs.getBoolPref('browser.menu.dragging.debug', false); }, //delayed startup @@ -291,26 +289,6 @@ var browserMenuDragging = { .logStringMessage(aMsg); }, - getPref: function(aPrefString, aPrefType, aDefault){ - var xpPref = Components.classes["@mozilla.org/preferences-service;1"] - .getService(Components.interfaces.nsIPrefService); - try{ - switch (aPrefType){ - case 'complex': - return xpPref.getComplexValue(aPrefString, Components.interfaces.nsILocalFile); break; - case 'str': - return xpPref.getCharPref(aPrefString).toString(); break; - case 'int': - return xpPref.getIntPref(aPrefString); break; - case 'bool': - default: - return xpPref.getBoolPref(aPrefString); break; - } - }catch(e){ - } - return aDefault; - }, - setPref: function(aPrefString, aPrefType, aValue){ var xpPref = Components.classes["@mozilla.org/preferences-service;1"] .getService(Components.interfaces.nsIPrefService); diff --git a/application/palemoon/base/content/browser.js b/application/palemoon/base/content/browser.js index 4e753d422..1e7129272 100644 --- a/application/palemoon/base/content/browser.js +++ b/application/palemoon/base/content/browser.js @@ -1147,7 +1147,7 @@ var gBrowserInit = { // Setup click-and-hold gestures access to the session history // menus if global click-and-hold isn't turned on - if (!getBoolPref("ui.click_hold_context_menus", false)) + if (!Services.prefs.getBoolPref("ui.click_hold_context_menus", false)) SetClickAndHoldHandlers(); // Initialize the full zoom setting. @@ -1783,7 +1783,7 @@ function BrowserGoHome(aEvent) { case "tabshifted": case "tab": urls = homePage.split("|"); - var loadInBackground = getBoolPref("browser.tabs.loadBookmarksInBackground", false); + var loadInBackground = Services.prefs.getBoolPref("browser.tabs.loadBookmarksInBackground", false); gBrowser.loadTabs(urls, loadInBackground); break; case "window": @@ -3402,7 +3402,7 @@ function BrowserCustomizeToolbar() { TabsInTitlebar.allowedBy("customizing-toolbars", false); var customizeURL = "chrome://global/content/customizeToolbar.xul"; - gCustomizeSheet = getBoolPref("toolbar.customization.usesheet", false); + gCustomizeSheet = Services.prefs.getBoolPref("toolbar.customization.usesheet", false); if (gCustomizeSheet) { let sheetFrame = document.createElement("iframe"); @@ -3486,7 +3486,7 @@ function BrowserToolboxCustomizeDone(aToolboxChanged) { cmd.removeAttribute("disabled"); // make sure to re-enable click-and-hold - if (!getBoolPref("ui.click_hold_context_menus", false)) + if (!Services.prefs.getBoolPref("ui.click_hold_context_menus", false)) SetClickAndHoldHandlers(); gBrowser.selectedBrowser.focus(); diff --git a/application/palemoon/base/content/utilityOverlay.js b/application/palemoon/base/content/utilityOverlay.js index fe148ad04..c2a8baeed 100644 --- a/application/palemoon/base/content/utilityOverlay.js +++ b/application/palemoon/base/content/utilityOverlay.js @@ -75,16 +75,6 @@ function openTopWin(url) { openUILinkIn(url, "current"); } -function getBoolPref(prefname, def) -{ - try { - return Services.prefs.getBoolPref(prefname); - } - catch(er) { - return def; - } -} - /* openUILink handles clicks on UI elements that cause URLs to load. * * As the third argument, you may pass an object with the same properties as @@ -151,7 +141,7 @@ function whereToOpenLink( e, ignoreButton, ignoreAlt ) // ignoreButton allows "middle-click paste" to use function without always opening in a new window. var middle = !ignoreButton && e.button == 1; - var middleUsesTabs = getBoolPref("browser.tabs.opentabfor.middleclick", true); + var middleUsesTabs = Services.prefs.getBoolPref("browser.tabs.opentabfor.middleclick", true); // Don't do anything special with right-mouse clicks. They're probably clicks on context menu items. @@ -162,7 +152,7 @@ function whereToOpenLink( e, ignoreButton, ignoreAlt ) #endif return shift ? "tabshifted" : "tab"; - if (alt && getBoolPref("browser.altClickSave", false)) + if (alt && Services.prefs.getBoolPref("browser.altClickSave", false)) return "save"; if (shift || (middle && !middleUsesTabs)) @@ -334,7 +324,7 @@ function openLinkIn(url, where, params) { if (loadInBackground == null) { loadInBackground = aFromChrome ? false : - getBoolPref("browser.tabs.loadInBackground"); + Services.prefs.getBoolPref("browser.tabs.loadInBackground"); } let uriObj; @@ -515,7 +505,7 @@ function getShellService() function isBidiEnabled() { // first check the pref. - if (getBoolPref("bidi.browser.ui", false)) + if (Services.prefs.getBoolPref("bidi.browser.ui", false)) return true; // if the pref isn't set, check for an RTL locale and force the pref to true @@ -673,7 +663,7 @@ function openAboutDialog() { function openPreferences(paneID, extraArgs) { - var instantApply = getBoolPref("browser.preferences.instantApply", false); + var instantApply = Services.prefs.getBoolPref("browser.preferences.instantApply", false); var features = "chrome,titlebar,toolbar,centerscreen" + (instantApply ? ",dialog=no" : ",modal"); var win = Services.wm.getMostRecentWindow("Browser:Preferences"); @@ -854,7 +844,7 @@ function openHelpLink(aHelpTopic, aCalledFromModal) { function openPrefsHelp() { // non-instant apply prefwindows are usually modal, so we can't open in the topmost window, // since its probably behind the window. - var instantApply = getBoolPref("browser.preferences.instantApply"); + var instantApply = Services.prefs.getBoolPref("browser.preferences.instantApply"); var helpTopic = document.getElementsByTagName("prefwindow")[0].currentPane.helpTopic; openHelpLink(helpTopic, !instantApply); diff --git a/dom/browser-element/BrowserElementParent.js b/dom/browser-element/BrowserElementParent.js index 67d05f0ab..8e4475bfa 100644 --- a/dom/browser-element/BrowserElementParent.js +++ b/dom/browser-element/BrowserElementParent.js @@ -23,15 +23,6 @@ function debug(msg) { //dump("BrowserElementParent - " + msg + "\n"); } -function getIntPref(prefName, def) { - try { - return Services.prefs.getIntPref(prefName); - } - catch(err) { - return def; - } -} - function handleWindowEvent(e) { if (this._browserElementParents) { let beps = ThreadSafeChromeUtils.nondeterministicGetWeakMapKeys(this._browserElementParents); @@ -856,8 +847,8 @@ BrowserElementParent.prototype = { */ zoom: defineNoReturnMethod(function(zoom) { zoom *= 100; - zoom = Math.min(getIntPref("zoom.maxPercent", 300), zoom); - zoom = Math.max(getIntPref("zoom.minPercent", 50), zoom); + zoom = Math.min(Services.prefs.getIntPref("zoom.maxPercent", 300), zoom); + zoom = Math.max(Services.prefs.getIntPref("zoom.minPercent", 50), zoom); this._sendAsyncMsg('zoom', {zoom: zoom / 100.0}); }), diff --git a/mobile/android/components/AddonUpdateService.js b/mobile/android/components/AddonUpdateService.js index 2505e2796..b2c4732c3 100644 --- a/mobile/android/components/AddonUpdateService.js +++ b/mobile/android/components/AddonUpdateService.js @@ -23,14 +23,6 @@ XPCOMUtils.defineLazyModuleGetter(this, "Messaging", XPCOMUtils.defineLazyModuleGetter(this, "OS", "resource://gre/modules/osfile.jsm"); -function getPref(func, preference, defaultValue) { - try { - return Services.prefs[func](preference); - } - catch (e) {} - return defaultValue; -} - // ----------------------------------------------------------------------- // Add-on auto-update management service // ----------------------------------------------------------------------- @@ -49,7 +41,7 @@ AddonUpdateService.prototype = { QueryInterface: XPCOMUtils.generateQI([Ci.nsITimerCallback]), notify: function aus_notify(aTimer) { - if (aTimer && !getPref("getBoolPref", PREF_ADDON_UPDATE_ENABLED, true)) + if (aTimer && !Services.prefs.getBoolPref(PREF_ADDON_UPDATE_ENABLED, true)) return; // If we already auto-upgraded and installed new versions, ignore this check @@ -61,7 +53,7 @@ AddonUpdateService.prototype = { let gmp = new GMPInstallManager(); gmp.simpleCheckAndInstall().then(null, () => {}); - let interval = 1000 * getPref("getIntPref", PREF_ADDON_UPDATE_INTERVAL, 86400); + let interval = 1000 * Services.prefs.getIntPref(PREF_ADDON_UPDATE_INTERVAL, 86400); Messaging.sendRequest({ type: "Gecko:ScheduleRun", action: "update-addons", diff --git a/modules/libpref/nsIPrefBranch.idl b/modules/libpref/nsIPrefBranch.idl index ee0c11ef0..900806b42 100644 --- a/modules/libpref/nsIPrefBranch.idl +++ b/modules/libpref/nsIPrefBranch.idl @@ -57,12 +57,16 @@ interface nsIPrefBranch : nsISupports * Called to get the state of an individual boolean preference. * * @param aPrefName The boolean preference to get the state of. + * @param aDefaultValue The value to return if the preference is not set. * * @return boolean The value of the requested boolean preference. * * @see setBoolPref */ - boolean getBoolPref(in string aPrefName); + [optional_argc,binaryname(GetBoolPrefWithDefault)] + boolean getBoolPref(in string aPrefName, [optional] in boolean aDefaultValue); + [noscript,binaryname(GetBoolPref)] + boolean getBoolPrefXPCOM(in string aPrefName); /** * Called to set the state of an individual boolean preference. @@ -83,23 +87,31 @@ interface nsIPrefBranch : nsISupports * are converted to floating point numbers. * * @param aPrefName The floating point preference to get the state of. + * @param aDefaultValue The value to return if the preference is not set. * * @return float The value of the requested floating point preference. * * @see setCharPref */ - float getFloatPref(in string aPrefName); + [optional_argc,binaryname(GetFloatPrefWithDefault)] + float getFloatPref(in string aPrefName, [optional] in float aDefaultValue); + [noscript,binaryname(GetFloatPref)] + float getFloatPrefXPCOM(in string aPrefName); /** * Called to get the state of an individual string preference. * * @param aPrefName The string preference to retrieve. + * @param aDefaultValue The string to return if the preference is not set. * * @return string The value of the requested string preference. * * @see setCharPref */ - string getCharPref(in string aPrefName); + [optional_argc,binaryname(GetCharPrefWithDefault)] + string getCharPref(in string aPrefName, [optional] in string aDefaultValue); + [noscript,binaryname(GetCharPref)] + string getCharPrefXPCOM(in string aPrefName); /** * Called to set the state of an individual string preference. @@ -118,12 +130,16 @@ interface nsIPrefBranch : nsISupports * Called to get the state of an individual integer preference. * * @param aPrefName The integer preference to get the value of. + * @param aDefaultValue The value to return if the preference is not set. * * @return long The value of the requested integer preference. * * @see setIntPref */ - long getIntPref(in string aPrefName); + [optional_argc,binaryname(GetIntPrefWithDefault)] + long getIntPref(in string aPrefName, [optional] in long aDefaultValue); + [noscript,binaryname(GetIntPref)] + long getIntPrefXPCOM(in string aPrefName); /** * Called to set the state of an individual integer preference. diff --git a/modules/libpref/nsPrefBranch.cpp b/modules/libpref/nsPrefBranch.cpp index 98e06aaa4..5173db06e 100644 --- a/modules/libpref/nsPrefBranch.cpp +++ b/modules/libpref/nsPrefBranch.cpp @@ -141,6 +141,20 @@ NS_IMETHODIMP nsPrefBranch::GetPrefType(const char *aPrefName, int32_t *_retval) return NS_OK; } +NS_IMETHODIMP nsPrefBranch::GetBoolPrefWithDefault(const char *aPrefName, + bool aDefaultValue, + uint8_t _argc, bool *_retval) +{ + nsresult rv = GetBoolPref(aPrefName, _retval); + + if (NS_FAILED(rv) && _argc == 1) { + *_retval = aDefaultValue; + return NS_OK; + } + + return rv; +} + NS_IMETHODIMP nsPrefBranch::GetBoolPref(const char *aPrefName, bool *_retval) { NS_ENSURE_ARG(aPrefName); @@ -156,6 +170,20 @@ NS_IMETHODIMP nsPrefBranch::SetBoolPref(const char *aPrefName, bool aValue) return PREF_SetBoolPref(pref, aValue, mIsDefault); } +NS_IMETHODIMP nsPrefBranch::GetFloatPrefWithDefault(const char *aPrefName, + float aDefaultValue, + uint8_t _argc, float *_retval) +{ + nsresult rv = GetFloatPref(aPrefName, _retval); + + if (NS_FAILED(rv) && _argc == 1) { + *_retval = aDefaultValue; + return NS_OK; + } + + return rv; +} + NS_IMETHODIMP nsPrefBranch::GetFloatPref(const char *aPrefName, float *_retval) { NS_ENSURE_ARG(aPrefName); @@ -169,6 +197,21 @@ NS_IMETHODIMP nsPrefBranch::GetFloatPref(const char *aPrefName, float *_retval) return rv; } +NS_IMETHODIMP nsPrefBranch::GetCharPrefWithDefault(const char *aPrefName, + const char *aDefaultValue, + uint8_t _argc, char **_retval) +{ + nsresult rv = GetCharPref(aPrefName, _retval); + + if (NS_FAILED(rv) && _argc == 1) { + NS_ENSURE_ARG(aDefaultValue); + *_retval = NS_strdup(aDefaultValue); + return NS_OK; + } + + return rv; +} + NS_IMETHODIMP nsPrefBranch::GetCharPref(const char *aPrefName, char **_retval) { NS_ENSURE_ARG(aPrefName); @@ -195,6 +238,20 @@ nsresult nsPrefBranch::SetCharPrefInternal(const char *aPrefName, const char *aV return PREF_SetCharPref(pref, aValue, mIsDefault); } +NS_IMETHODIMP nsPrefBranch::GetIntPrefWithDefault(const char *aPrefName, + int32_t aDefaultValue, + uint8_t _argc, int32_t *_retval) +{ + nsresult rv = GetIntPref(aPrefName, _retval); + + if (NS_FAILED(rv) && _argc == 1) { + *_retval = aDefaultValue; + return NS_OK; + } + + return rv; +} + NS_IMETHODIMP nsPrefBranch::GetIntPref(const char *aPrefName, int32_t *_retval) { NS_ENSURE_ARG(aPrefName); diff --git a/modules/libpref/test/unit/test_defaultValues.js b/modules/libpref/test/unit/test_defaultValues.js new file mode 100644 index 000000000..d04bcc04a --- /dev/null +++ b/modules/libpref/test/unit/test_defaultValues.js @@ -0,0 +1,48 @@ +/* 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/. */ + +/* Tests for providing a default value to get{Bool,Char,Float,Int}Pref */ + +function run_test() { + var ps = Cc["@mozilla.org/preferences-service;1"] + .getService(Ci.nsIPrefService) + .QueryInterface(Ci.nsIPrefBranch); + + let prefName = "test.default.values.bool"; + do_check_throws(function() { ps.getBoolPref(prefName); }, + Cr.NS_ERROR_UNEXPECTED); + strictEqual(ps.getBoolPref(prefName, false), false); + strictEqual(ps.getBoolPref(prefName, true), true); + ps.setBoolPref(prefName, true); + strictEqual(ps.getBoolPref(prefName), true); + strictEqual(ps.getBoolPref(prefName, false), true); + strictEqual(ps.getBoolPref(prefName, true), true); + + prefName = "test.default.values.char"; + do_check_throws(function() { ps.getCharPref(prefName); }, + Cr.NS_ERROR_UNEXPECTED); + strictEqual(ps.getCharPref(prefName, ""), ""); + strictEqual(ps.getCharPref(prefName, "string"), "string"); + ps.setCharPref(prefName, "foo"); + strictEqual(ps.getCharPref(prefName), "foo"); + strictEqual(ps.getCharPref(prefName, "string"), "foo"); + + prefName = "test.default.values.float"; + do_check_throws(function() { ps.getFloatPref(prefName); }, + Cr.NS_ERROR_UNEXPECTED); + strictEqual(ps.getFloatPref(prefName, 3.5), 3.5); + strictEqual(ps.getFloatPref(prefName, 0), 0); + ps.setCharPref(prefName, 1.75); + strictEqual(ps.getFloatPref(prefName), 1.75); + strictEqual(ps.getFloatPref(prefName, 3.5), 1.75); + + prefName = "test.default.values.int"; + do_check_throws(function() { ps.getIntPref(prefName); }, + Cr.NS_ERROR_UNEXPECTED); + strictEqual(ps.getIntPref(prefName, 3), 3); + strictEqual(ps.getIntPref(prefName, 0), 0); + ps.setIntPref(prefName, 42); + strictEqual(ps.getIntPref(prefName), 42); + strictEqual(ps.getIntPref(prefName, 3), 42); +} diff --git a/modules/libpref/test/unit/xpcshell.ini b/modules/libpref/test/unit/xpcshell.ini index 74c56907a..66458863f 100644 --- a/modules/libpref/test/unit/xpcshell.ini +++ b/modules/libpref/test/unit/xpcshell.ini @@ -13,6 +13,7 @@ support-files = [test_stickyprefs.js] support-files = data/testPrefSticky.js data/testPrefStickyUser.js [test_changeType.js] +[test_defaultValues.js] [test_dirtyPrefs.js] [test_extprefs.js] [test_libPrefs.js] diff --git a/toolkit/components/blocklist/nsBlocklistService.js b/toolkit/components/blocklist/nsBlocklistService.js index 1cd2ed806..49033fc8f 100644 --- a/toolkit/components/blocklist/nsBlocklistService.js +++ b/toolkit/components/blocklist/nsBlocklistService.js @@ -169,27 +169,6 @@ function LOG(string) { } /** - * Gets a preference value, handling the case where there is no default. - * @param func - * The name of the preference function to call, on nsIPrefBranch - * @param preference - * The name of the preference - * @param defaultValue - * The default value to return in the event the preference has - * no setting - * @returns The value of the preference, or undefined if there was no - * user or default value. - */ -function getPref(func, preference, defaultValue) { - try { - return gPref[func](preference); - } - catch (e) { - } - return defaultValue; -} - -/** * Constructs a URI to a spec. * @param spec * The spec to construct a URI to @@ -297,9 +276,9 @@ function parseRegExp(aStr) { function Blocklist() { Services.obs.addObserver(this, "xpcom-shutdown", false); Services.obs.addObserver(this, "sessionstore-windows-restored", false); - gLoggingEnabled = getPref("getBoolPref", PREF_EM_LOGGING_ENABLED, false); - gBlocklistEnabled = getPref("getBoolPref", PREF_BLOCKLIST_ENABLED, true); - gBlocklistLevel = Math.min(getPref("getIntPref", PREF_BLOCKLIST_LEVEL, DEFAULT_LEVEL), + gLoggingEnabled = Services.prefs.getBoolPref(PREF_EM_LOGGING_ENABLED, false); + gBlocklistEnabled = Services.prefs.getBoolPref(PREF_BLOCKLIST_ENABLED, true); + gBlocklistLevel = Math.min(Services.prefs.getIntPref(PREF_BLOCKLIST_LEVEL, DEFAULT_LEVEL), MAX_BLOCK_LEVEL); gPref.addObserver("extensions.blocklist.", this, false); gPref.addObserver(PREF_EM_LOGGING_ENABLED, this, false); @@ -345,15 +324,15 @@ Blocklist.prototype = { case "nsPref:changed": switch (aData) { case PREF_EM_LOGGING_ENABLED: - gLoggingEnabled = getPref("getBoolPref", PREF_EM_LOGGING_ENABLED, false); + gLoggingEnabled = Services.prefs.getBoolPref(PREF_EM_LOGGING_ENABLED, false); break; case PREF_BLOCKLIST_ENABLED: - gBlocklistEnabled = getPref("getBoolPref", PREF_BLOCKLIST_ENABLED, true); + gBlocklistEnabled = Services.prefs.getBoolPref(PREF_BLOCKLIST_ENABLED, true); this._loadBlocklist(); this._blocklistUpdated(null, null); break; case PREF_BLOCKLIST_LEVEL: - gBlocklistLevel = Math.min(getPref("getIntPref", PREF_BLOCKLIST_LEVEL, DEFAULT_LEVEL), + gBlocklistLevel = Math.min(Services.prefs.getIntPref(PREF_BLOCKLIST_LEVEL, DEFAULT_LEVEL), MAX_BLOCK_LEVEL); this._blocklistUpdated(null, null); break; @@ -525,8 +504,8 @@ Blocklist.prototype = { return; } - var pingCountVersion = getPref("getIntPref", PREF_BLOCKLIST_PINGCOUNTVERSION, 0); - var pingCountTotal = getPref("getIntPref", PREF_BLOCKLIST_PINGCOUNTTOTAL, 1); + var pingCountVersion = Services.prefs.getIntPref(PREF_BLOCKLIST_PINGCOUNTVERSION, 0); + var pingCountTotal = Services.prefs.getIntPref(PREF_BLOCKLIST_PINGCOUNTTOTAL, 1); var daysSinceLastPing = 0; if (pingCountVersion == 0) { daysSinceLastPing = "new"; @@ -535,7 +514,7 @@ Blocklist.prototype = { // Seconds in one day is used because nsIUpdateTimerManager stores the // last update time in seconds. let secondsInDay = 60 * 60 * 24; - let lastUpdateTime = getPref("getIntPref", PREF_BLOCKLIST_LASTUPDATETIME, 0); + let lastUpdateTime = Services.prefs.getIntPref(PREF_BLOCKLIST_LASTUPDATETIME, 0); if (lastUpdateTime == 0) { daysSinceLastPing = "invalid"; } @@ -894,7 +873,7 @@ Blocklist.prototype = { return; } - var populateCertBlocklist = getPref("getBoolPref", PREF_ONECRL_VIA_AMO, true); + var populateCertBlocklist = Services.prefs.getBoolPref(PREF_ONECRL_VIA_AMO, true); var childNodes = doc.documentElement.childNodes; for (let element of childNodes) { @@ -1466,7 +1445,7 @@ Blocklist.prototype = { Services.obs.addObserver(applyBlocklistChanges, "addon-blocklist-closed", false); - if (getPref("getBoolPref", PREF_BLOCKLIST_SUPPRESSUI, false)) { + if (Services.prefs.getBoolPref(PREF_BLOCKLIST_SUPPRESSUI, false)) { applyBlocklistChanges(); return; } diff --git a/toolkit/components/search/current/nsSearchService.js b/toolkit/components/search/current/nsSearchService.js index 6e8f6da43..2a8601078 100644 --- a/toolkit/components/search/current/nsSearchService.js +++ b/toolkit/components/search/current/nsSearchService.js @@ -234,7 +234,7 @@ var LOG = function() {}; if (AppConstants.DEBUG) { LOG = function (aText) { - if (getBoolPref(BROWSER_SEARCH_PREF + "log", false)) { + if (Services.prefs.getBoolPref(BROWSER_SEARCH_PREF + "log", false)) { DO_LOG(aText); } }; @@ -908,18 +908,6 @@ function getLocalizedPref(aPrefName, aDefault) { } /** - * Wrapper for nsIPrefBranch::getBoolPref. - * @param aPrefName - * The name of the pref to get. - * @returns aDefault if the requested pref doesn't exist. - */ -function getBoolPref(aName, aDefault) { - if (Services.prefs.getPrefType(aName) != Ci.nsIPrefBranch.PREF_BOOL) - return aDefault; - return Services.prefs.getBoolPref(aName); -} - -/** * @return a sanitized name to be used as a filename, or a random name * if a sanitized name cannot be obtained (if aName contains * no valid characters). @@ -1534,7 +1522,7 @@ Engine.prototype = { stringBundle.formatStringFromName("addEngineConfirmation", [this._name, this._uri.host], 2); var checkboxMessage = null; - if (!getBoolPref(BROWSER_SEARCH_PREF + "noCurrentEngine", false)) + if (!Services.prefs.getBoolPref(BROWSER_SEARCH_PREF + "noCurrentEngine", false)) checkboxMessage = stringBundle.GetStringFromName("addEngineAsCurrentText"); var addButtonLabel = @@ -2658,7 +2646,7 @@ function checkForSyncCompletion(aPromise) { // nsIBrowserSearchService function SearchService() { // Replace empty LOG function with the useful one if the log pref is set. - if (getBoolPref(BROWSER_SEARCH_PREF + "log", false)) + if (Services.prefs.getBoolPref(BROWSER_SEARCH_PREF + "log", false)) LOG = DO_LOG; this._initObservers = Promise.defer(); @@ -3770,7 +3758,7 @@ SearchService.prototype = { // If the user has specified a custom engine order, read the order // information from the metadata instead of the default prefs. - if (getBoolPref(BROWSER_SEARCH_PREF + "useDBForOrder", false)) { + if (Services.prefs.getBoolPref(BROWSER_SEARCH_PREF + "useDBForOrder", false)) { LOG("_buildSortedEngineList: using db for order"); // Flag to keep track of whether or not we need to call _saveSortedEngineList. @@ -4624,7 +4612,7 @@ SearchService.prototype = { notify: function SRCH_SVC_notify(aTimer) { LOG("_notify: checking for updates"); - if (!getBoolPref(BROWSER_SEARCH_PREF + "update", true)) + if (!Services.prefs.getBoolPref(BROWSER_SEARCH_PREF + "update", true)) return; // Our timer has expired, but unfortunately, we can't get any data from it. @@ -4735,7 +4723,7 @@ const SEARCH_UPDATE_LOG_PREFIX = "*** Search update: "; * logging pref (browser.search.update.log) is set to true. */ function ULOG(aText) { - if (getBoolPref(BROWSER_SEARCH_PREF + "update.log", false)) { + if (Services.prefs.getBoolPref(BROWSER_SEARCH_PREF + "update.log", false)) { dump(SEARCH_UPDATE_LOG_PREFIX + aText + "\n"); Services.console.logStringMessage(aText); } @@ -4751,7 +4739,7 @@ var engineUpdateService = { update: function eus_Update(aEngine) { let engine = aEngine.wrappedJSObject; ULOG("update called for " + aEngine._name); - if (!getBoolPref(BROWSER_SEARCH_PREF + "update", true) || !engine._hasUpdates) + if (!Services.prefs.getBoolPref(BROWSER_SEARCH_PREF + "update", true) || !engine._hasUpdates) return; let testEngine = null; diff --git a/toolkit/components/search/orginal/nsSearchService.js b/toolkit/components/search/orginal/nsSearchService.js index 6b23724a7..5b5ce7a57 100644 --- a/toolkit/components/search/orginal/nsSearchService.js +++ b/toolkit/components/search/orginal/nsSearchService.js @@ -248,7 +248,7 @@ function DO_LOG(aText) { * to allow enabling/disabling without a restart. */ function PREF_LOG(aText) { - if (getBoolPref(BROWSER_SEARCH_PREF + "log", false)) + if (Services.prefs.getBoolPref(BROWSER_SEARCH_PREF + "log", false)) DO_LOG(aText); } var LOG = PREF_LOG; @@ -934,18 +934,6 @@ function setLocalizedPref(aPrefName, aValue) { } /** - * Wrapper for nsIPrefBranch::getBoolPref. - * @param aPrefName - * The name of the pref to get. - * @returns aDefault if the requested pref doesn't exist. - */ -function getBoolPref(aName, aDefault) { - if (Services.prefs.getPrefType(aName) != Ci.nsIPrefBranch.PREF_BOOL) - return aDefault; - return Services.prefs.getBoolPref(aName); -} - -/** * Get a unique nsIFile object with a sanitized name, based on the engine name. * @param aName * A name to "sanitize". Can be an empty string, in which case a random @@ -1591,7 +1579,7 @@ Engine.prototype = { stringBundle.formatStringFromName("addEngineConfirmation", [this._name, this._uri.host], 2); var checkboxMessage = null; - if (!getBoolPref(BROWSER_SEARCH_PREF + "noCurrentEngine", false)) + if (!Services.prefs.getBoolPref(BROWSER_SEARCH_PREF + "noCurrentEngine", false)) checkboxMessage = stringBundle.GetStringFromName("addEngineAsCurrentText"); var addButtonLabel = @@ -2889,7 +2877,7 @@ function checkForSyncCompletion(aPromise) { // nsIBrowserSearchService function SearchService() { // Replace empty LOG function with the useful one if the log pref is set. - if (getBoolPref(BROWSER_SEARCH_PREF + "log", false)) + if (Services.prefs.getBoolPref(BROWSER_SEARCH_PREF + "log", false)) LOG = DO_LOG; this._initObservers = Promise.defer(); @@ -3814,7 +3802,7 @@ SearchService.prototype = { // If the user has specified a custom engine order, read the order // information from the engineMetadataService instead of the default // prefs. - if (getBoolPref(BROWSER_SEARCH_PREF + "useDBForOrder", false)) { + if (Services.prefs.getBoolPref(BROWSER_SEARCH_PREF + "useDBForOrder", false)) { LOG("_buildSortedEngineList: using db for order"); // Flag to keep track of whether or not we need to call _saveSortedEngineList. @@ -4595,7 +4583,7 @@ SearchService.prototype = { notify: function SRCH_SVC_notify(aTimer) { LOG("_notify: checking for updates"); - if (!getBoolPref(BROWSER_SEARCH_PREF + "update", true)) + if (!Services.prefs.getBoolPref(BROWSER_SEARCH_PREF + "update", true)) return; // Our timer has expired, but unfortunately, we can't get any data from it. @@ -4938,7 +4926,7 @@ const SEARCH_UPDATE_LOG_PREFIX = "*** Search update: "; * logging pref (browser.search.update.log) is set to true. */ function ULOG(aText) { - if (getBoolPref(BROWSER_SEARCH_PREF + "update.log", false)) { + if (Services.prefs.getBoolPref(BROWSER_SEARCH_PREF + "update.log", false)) { dump(SEARCH_UPDATE_LOG_PREFIX + aText + "\n"); Services.console.logStringMessage(aText); } @@ -4955,7 +4943,7 @@ var engineUpdateService = { update: function eus_Update(aEngine) { let engine = aEngine.wrappedJSObject; ULOG("update called for " + aEngine._name); - if (!getBoolPref(BROWSER_SEARCH_PREF + "update", true) || !engine._hasUpdates) + if (!Services.prefs.getBoolPref(BROWSER_SEARCH_PREF + "update", true) || !engine._hasUpdates) return; let testEngine = null; diff --git a/toolkit/components/timermanager/nsUpdateTimerManager.js b/toolkit/components/timermanager/nsUpdateTimerManager.js index d7fc15960..3ba82f8c0 100644 --- a/toolkit/components/timermanager/nsUpdateTimerManager.js +++ b/toolkit/components/timermanager/nsUpdateTimerManager.js @@ -16,30 +16,10 @@ const PREF_APP_UPDATE_LOG = "app.update.log"; const CATEGORY_UPDATE_TIMER = "update-timer"; XPCOMUtils.defineLazyGetter(this, "gLogEnabled", function tm_gLogEnabled() { - return getPref("getBoolPref", PREF_APP_UPDATE_LOG, false); + return Services.prefs.getBoolPref(PREF_APP_UPDATE_LOG, false); }); /** - * Gets a preference value, handling the case where there is no default. - * @param func - * The name of the preference function to call, on nsIPrefBranch - * @param preference - * The name of the preference - * @param defaultValue - * The default value to return in the event the preference has - * no setting - * @returns The value of the preference, or undefined if there was no - * user or default value. - */ -function getPref(func, preference, defaultValue) { - try { - return Services.prefs[func](preference); - } catch (e) { - } - return defaultValue; -} - -/** * Logs a string to the error console. * @param string * The string to write to the error console. @@ -93,13 +73,13 @@ TimerManager.prototype = { minInterval = 500; minFirstInterval = 500; case "profile-after-change": - this._timerMinimumDelay = Math.max(1000 * getPref("getIntPref", PREF_APP_UPDATE_TIMERMINIMUMDELAY, 120), + this._timerMinimumDelay = Math.max(1000 * Services.prefs.getIntPref(PREF_APP_UPDATE_TIMERMINIMUMDELAY, 120), minInterval); // Prevent the timer delay between notifications to other consumers from // being greater than 5 minutes which is 300000 milliseconds. this._timerMinimumDelay = Math.min(this._timerMinimumDelay, 300000); // Prevent the first interval from being less than the value of minFirstInterval - let firstInterval = Math.max(getPref("getIntPref", PREF_APP_UPDATE_TIMERFIRSTINTERVAL, + let firstInterval = Math.max(Services.prefs.getIntPref(PREF_APP_UPDATE_TIMERFIRSTINTERVAL, 30000), minFirstInterval); // Prevent the first interval from being greater than 2 minutes which is // 120000 milliseconds. @@ -189,7 +169,7 @@ TimerManager.prototype = { continue; } - let interval = getPref("getIntPref", prefInterval, defaultInterval); + let interval = Services.prefs.getIntPref(prefInterval, defaultInterval); // Allow the update-timer category to specify a maximum value to prevent // values larger than desired. maxInterval = parseInt(maxInterval); @@ -200,7 +180,7 @@ TimerManager.prototype = { timerID); // Initialize the last update time to 0 when the preference isn't set so // the timer will be notified soon after a new profile's first use. - lastUpdateTime = getPref("getIntPref", prefLastUpdate, 0); + lastUpdateTime = Services.prefs.getIntPref(prefLastUpdate, 0); // If the last update time is greater than the current time then reset // it to 0 and the timer manager will correct the value when it fires @@ -315,7 +295,7 @@ TimerManager.prototype = { let prefLastUpdate = PREF_APP_UPDATE_LASTUPDATETIME_FMT.replace(/%ID%/, id); // Initialize the last update time to 0 when the preference isn't set so // the timer will be notified soon after a new profile's first use. - let lastUpdateTime = getPref("getIntPref", prefLastUpdate, 0); + let lastUpdateTime = Services.prefs.getIntPref(prefLastUpdate, 0); let now = Math.round(Date.now() / 1000); if (lastUpdateTime > now) { lastUpdateTime = 0; diff --git a/toolkit/mozapps/update/content/updates.js b/toolkit/mozapps/update/content/updates.js index 6e8de7275..9996014b5 100644 --- a/toolkit/mozapps/update/content/updates.js +++ b/toolkit/mozapps/update/content/updates.js @@ -85,28 +85,6 @@ function openUpdateURL(event) { } /** - * Gets a preference value, handling the case where there is no default. - * @param func - * The name of the preference function to call, on nsIPrefBranch - * @param preference - * The name of the preference - * @param defaultValue - * The default value to return in the event the preference has - * no setting - * @returns The value of the preference, or undefined if there was no - * user or default value. - */ -function getPref(func, preference, defaultValue) { - try { - return Services.prefs[func](preference); - } - catch (e) { - LOG("General", "getPref - failed to get preference: " + preference); - } - return defaultValue; -} - -/** * A set of shared data and control functions for the wizard as a whole. */ var gUpdates = { @@ -320,7 +298,7 @@ var gUpdates = { onLoad: function() { this.wiz = document.documentElement; - gLogEnabled = getPref("getBoolPref", PREF_APP_UPDATE_LOG, false); + gLogEnabled = Services.prefs.getBoolPref(PREF_APP_UPDATE_LOG, false); this.strings = document.getElementById("updateStrings"); var brandStrings = document.getElementById("brandStrings"); @@ -601,7 +579,7 @@ var gNoUpdatesPage = { LOG("gNoUpdatesPage", "onPageShow - could not select an appropriate " + "update. Either there were no updates or |selectUpdate| failed"); - if (getPref("getBoolPref", PREF_APP_UPDATE_ENABLED, true)) + if (Services.prefs.getBoolPref(PREF_APP_UPDATE_ENABLED, true)) document.getElementById("noUpdatesAutoEnabled").hidden = false; else document.getElementById("noUpdatesAutoDisabled").hidden = false; @@ -1309,7 +1287,7 @@ var gFinishedPage = { moreElevatedLinkLabel.setAttribute("hidden", "false"); } - if (getPref("getBoolPref", PREF_APP_UPDATE_TEST_LOOP, false)) { + if (Services.prefs.getBoolPref(PREF_APP_UPDATE_TEST_LOOP, false)) { setTimeout(function () { gUpdates.wiz.getButton("finish").click(); }, UPDATE_TEST_LOOP_INTERVAL); } diff --git a/toolkit/mozapps/update/nsUpdateService.js b/toolkit/mozapps/update/nsUpdateService.js index 4e2d66a5c..8b0167de6 100644 --- a/toolkit/mozapps/update/nsUpdateService.js +++ b/toolkit/mozapps/update/nsUpdateService.js @@ -164,7 +164,7 @@ XPCOMUtils.defineLazyModuleGetter(this, "UpdateUtils", "resource://gre/modules/UpdateUtils.jsm"); XPCOMUtils.defineLazyGetter(this, "gLogEnabled", function aus_gLogEnabled() { - return getPref("getBoolPref", PREF_APP_UPDATE_LOG, false); + return Services.prefs.getBoolPref(PREF_APP_UPDATE_LOG, false); }); XPCOMUtils.defineLazyGetter(this, "gUpdateBundle", function aus_gUpdateBundle() { @@ -494,7 +494,7 @@ XPCOMUtils.defineLazyGetter(this, "gCanStageUpdatesSession", function aus_gCSUS( */ function getCanStageUpdates() { // If staging updates are disabled, then just bail out! - if (!getPref("getBoolPref", PREF_APP_UPDATE_STAGING_ENABLED, false)) { + if (!Services.prefs.getBoolPref(PREF_APP_UPDATE_STAGING_ENABLED, false)) { LOG("getCanStageUpdates - staging updates is disabled by preference " + PREF_APP_UPDATE_STAGING_ENABLED); return false; @@ -514,7 +514,7 @@ XPCOMUtils.defineLazyGetter(this, "gCanCheckForUpdates", function aus_gCanCheckF // If the administrator has disabled app update and locked the preference so // users can't check for updates. This preference check is ok in this lazy // getter since locked prefs don't change until the application is restarted. - var enabled = getPref("getBoolPref", PREF_APP_UPDATE_ENABLED, true); + var enabled = Services.prefs.getBoolPref(PREF_APP_UPDATE_ENABLED, true); if (!enabled && Services.prefs.prefIsLocked(PREF_APP_UPDATE_ENABLED)) { LOG("gCanCheckForUpdates - unable to automatically check for updates, " + "the preference is disabled and admistratively locked."); @@ -551,27 +551,6 @@ function LOG(string) { } /** - * Gets a preference value, handling the case where there is no default. - * @param func - * The name of the preference function to call, on nsIPrefBranch - * @param preference - * The name of the preference - * @param defaultValue - * The default value to return in the event the preference has - * no setting - * @return The value of the preference, or undefined if there was no - * user or default value. - */ -function getPref(func, preference, defaultValue) { - try { - return Services.prefs[func](preference); - } - catch (e) { - } - return defaultValue; -} - -/** * Convert a string containing binary values to hex. */ function binaryToHex(input) { @@ -898,16 +877,15 @@ function handleUpdateFailure(update, errorCode) { } if (update.errorCode == ELEVATION_CANCELED) { - let cancelations = getPref("getIntPref", PREF_APP_UPDATE_CANCELATIONS, 0); + let cancelations = Services.prefs.getIntPref(PREF_APP_UPDATE_CANCELATIONS, 0); cancelations++; Services.prefs.setIntPref(PREF_APP_UPDATE_CANCELATIONS, cancelations); if (AppConstants.platform == "macosx") { - let osxCancelations = getPref("getIntPref", - PREF_APP_UPDATE_CANCELATIONS_OSX, 0); + let osxCancelations = Services.prefs.getIntPref(PREF_APP_UPDATE_CANCELATIONS_OSX, 0); osxCancelations++; Services.prefs.setIntPref(PREF_APP_UPDATE_CANCELATIONS_OSX, osxCancelations); - let maxCancels = getPref("getIntPref", + let maxCancels = Services.prefs.getIntPref( PREF_APP_UPDATE_CANCELATIONS_OSX_MAX, DEFAULT_CANCELATIONS_OSX_MAX); // Prevent the preference from setting a value greater than 5. @@ -1177,8 +1155,8 @@ function Update(update) { this.showNeverForVersion = false; this.unsupported = false; this.channel = "default"; - this.promptWaitTime = getPref("getIntPref", PREF_APP_UPDATE_PROMPTWAITTIME, 43200); - this.backgroundInterval = getPref("getIntPref", PREF_APP_UPDATE_BACKGROUNDINTERVAL, + this.promptWaitTime = Services.prefs.getIntPref(PREF_APP_UPDATE_PROMPTWAITTIME, 43200); + this.backgroundInterval = Services.prefs.getIntPref(PREF_APP_UPDATE_BACKGROUNDINTERVAL, DOWNLOAD_BACKGROUND_INTERVAL); // Null <update>, assume this is a message container and do no @@ -1558,7 +1536,7 @@ UpdateService.prototype = { break; case "nsPref:changed": if (data == PREF_APP_UPDATE_LOG) { - gLogEnabled = getPref("getBoolPref", PREF_APP_UPDATE_LOG, false); + gLogEnabled = Services.prefs.getBoolPref(PREF_APP_UPDATE_LOG, false); } break; case "profile-change-net-teardown": // fall thru @@ -1795,11 +1773,11 @@ UpdateService.prototype = { // Send the error code to telemetry AUSTLMY.pingCheckExError(this._pingSuffix, update.errorCode); update.errorCode = BACKGROUNDCHECK_MULTIPLE_FAILURES; - let errCount = getPref("getIntPref", PREF_APP_UPDATE_BACKGROUNDERRORS, 0); + let errCount = Services.prefs.getIntPref(PREF_APP_UPDATE_BACKGROUNDERRORS, 0); errCount++; Services.prefs.setIntPref(PREF_APP_UPDATE_BACKGROUNDERRORS, errCount); // Don't allow the preference to set a value greater than 20 for max errors. - let maxErrors = Math.min(getPref("getIntPref", PREF_APP_UPDATE_BACKGROUNDMAXERRORS, 10), 20); + let maxErrors = Math.min(Services.prefs.getIntPref(PREF_APP_UPDATE_BACKGROUNDMAXERRORS, 10), 20); if (errCount >= maxErrors) { let prompter = Cc["@mozilla.org/updates/update-prompt;1"]. @@ -1969,7 +1947,7 @@ UpdateService.prototype = { AUSTLMY.pingCheckCode(this._pingSuffix, AUSTLMY.CHK_INVALID_DEFAULT_URL); } - } else if (!getPref("getBoolPref", PREF_APP_UPDATE_ENABLED, true)) { + } else if (!Services.prefs.getBoolPref(PREF_APP_UPDATE_ENABLED, true)) { AUSTLMY.pingCheckCode(this._pingSuffix, AUSTLMY.CHK_PREF_DISABLED); } else if (!hasUpdateMutex()) { AUSTLMY.pingCheckCode(this._pingSuffix, AUSTLMY.CHK_NO_MUTEX); @@ -2027,7 +2005,7 @@ UpdateService.prototype = { // (see bug 350636). let neverPrefName = PREFBRANCH_APP_UPDATE_NEVER + aUpdate.appVersion; if (aUpdate.showNeverForVersion && - getPref("getBoolPref", neverPrefName, false)) { + Services.prefs.getBoolPref(neverPrefName, false)) { LOG("UpdateService:selectUpdate - skipping update because the " + "preference " + neverPrefName + " is true"); lastCheckCode = AUSTLMY.CHK_UPDATE_NEVER_PREF; @@ -2058,7 +2036,7 @@ UpdateService.prototype = { let update = minorUpdate || majorUpdate; if (AppConstants.platform == "macosx" && update) { if (getElevationRequired()) { - let installAttemptVersion = getPref("getCharPref", + let installAttemptVersion = Services.prefs.getCharPref( PREF_APP_UPDATE_ELEVATE_VERSION, null); if (vc.compare(installAttemptVersion, update.appVersion) != 0) { @@ -2072,12 +2050,9 @@ UpdateService.prototype = { Services.prefs.clearUserPref(PREF_APP_UPDATE_ELEVATE_NEVER); } } else { - let numCancels = getPref("getIntPref", - PREF_APP_UPDATE_CANCELATIONS_OSX, 0); - let rejectedVersion = getPref("getCharPref", - PREF_APP_UPDATE_ELEVATE_NEVER, ""); - let maxCancels = getPref("getIntPref", - PREF_APP_UPDATE_CANCELATIONS_OSX_MAX, + let numCancels = Services.prefs.getIntPref(PREF_APP_UPDATE_CANCELATIONS_OSX, 0); + let rejectedVersion = Services.prefs.getCharPref(PREF_APP_UPDATE_ELEVATE_NEVER, ""); + let maxCancels = Services.prefs.getIntPref(PREF_APP_UPDATE_CANCELATIONS_OSX_MAX, DEFAULT_CANCELATIONS_OSX_MAX); if (numCancels >= maxCancels) { LOG("UpdateService:selectUpdate - the user requires elevation to " + @@ -2136,7 +2111,7 @@ UpdateService.prototype = { return; } - var updateEnabled = getPref("getBoolPref", PREF_APP_UPDATE_ENABLED, true); + var updateEnabled = Services.prefs.getBoolPref(PREF_APP_UPDATE_ENABLED, true); if (!updateEnabled) { AUSTLMY.pingCheckCode(this._pingSuffix, AUSTLMY.CHK_PREF_DISABLED); LOG("UpdateService:_selectAndInstallUpdate - not prompting because " + @@ -2152,7 +2127,7 @@ UpdateService.prototype = { if (update.unsupported) { LOG("UpdateService:_selectAndInstallUpdate - update not supported for " + "this system"); - if (!getPref("getBoolPref", PREF_APP_UPDATE_NOTIFIEDUNSUPPORTED, false)) { + if (!Services.prefs.getBoolPref(PREF_APP_UPDATE_NOTIFIEDUNSUPPORTED, false)) { LOG("UpdateService:_selectAndInstallUpdate - notifying that the " + "update is not supported for this system"); this._showPrompt(update); @@ -2193,7 +2168,7 @@ UpdateService.prototype = { return; } - if (!getPref("getBoolPref", PREF_APP_UPDATE_AUTO, true)) { + if (!Services.prefs.getBoolPref(PREF_APP_UPDATE_AUTO, true)) { LOG("UpdateService:_selectAndInstallUpdate - prompting because silent " + "install is disabled"); AUSTLMY.pingCheckCode(this._pingSuffix, AUSTLMY.CHK_SHOWPROMPT_PREF); @@ -2733,7 +2708,7 @@ UpdateManager.prototype = { Services.obs.notifyObservers(null, "update-staged", update.state); // Only prompt when the UI isn't already open. - let windowType = getPref("getCharPref", PREF_APP_UPDATE_ALTWINDOWTYPE, null); + let windowType = Services.prefs.getCharPref(PREF_APP_UPDATE_ALTWINDOWTYPE, null); if (Services.wm.getMostRecentWindow(UPDATE_WINDOW_NAME) || windowType && Services.wm.getMostRecentWindow(windowType)) { return; @@ -2813,7 +2788,7 @@ Checker.prototype = { this._forced = force; // Use the override URL if specified. - let url = getPref("getCharPref", PREF_APP_UPDATE_URL_OVERRIDE, null); + let url = Services.prefs.getCharPref(PREF_APP_UPDATE_URL_OVERRIDE, null); // Otherwise, construct the update URL from component parts. if (!url) { @@ -3016,7 +2991,7 @@ Checker.prototype = { */ _enabled: true, get enabled() { - return getPref("getBoolPref", PREF_APP_UPDATE_ENABLED, true) && + return Services.prefs.getBoolPref(PREF_APP_UPDATE_ENABLED, true) && gCanCheckForUpdates && hasUpdateMutex() && this._enabled; }, @@ -3502,11 +3477,11 @@ Downloader.prototype = { var shouldRegisterOnlineObserver = false; var shouldRetrySoon = false; var deleteActiveUpdate = false; - var retryTimeout = getPref("getIntPref", PREF_APP_UPDATE_SOCKET_RETRYTIMEOUT, + var retryTimeout = Services.prefs.getIntPref(PREF_APP_UPDATE_SOCKET_RETRYTIMEOUT, DEFAULT_SOCKET_RETRYTIMEOUT); // Prevent the preference from setting a value greater than 10000. retryTimeout = Math.min(retryTimeout, 10000); - var maxFail = getPref("getIntPref", PREF_APP_UPDATE_SOCKET_MAXERRORS, + var maxFail = Services.prefs.getIntPref(PREF_APP_UPDATE_SOCKET_MAXERRORS, DEFAULT_SOCKET_MAX_ERRORS); // Prevent the preference from setting a value greater than 20. maxFail = Math.min(maxFail, 20); @@ -3762,7 +3737,7 @@ UpdatePrompt.prototype = { * See nsIUpdateService.idl */ showUpdateAvailable: function UP_showUpdateAvailable(update) { - if (getPref("getBoolPref", PREF_APP_UPDATE_SILENT, false) || + if (Services.prefs.getBoolPref(PREF_APP_UPDATE_SILENT, false) || this._getUpdateWindow() || this._getAltUpdateWindow()) { return; } @@ -3775,7 +3750,7 @@ UpdatePrompt.prototype = { * See nsIUpdateService.idl */ showUpdateDownloaded: function UP_showUpdateDownloaded(update, background) { - if (background && getPref("getBoolPref", PREF_APP_UPDATE_SILENT, false)) { + if (background && Services.prefs.getBoolPref(PREF_APP_UPDATE_SILENT, false)) { return; } // Trigger the display of the hamburger menu badge. @@ -3797,7 +3772,7 @@ UpdatePrompt.prototype = { * See nsIUpdateService.idl */ showUpdateError: function UP_showUpdateError(update) { - if (getPref("getBoolPref", PREF_APP_UPDATE_SILENT, false) || + if (Services.prefs.getBoolPref(PREF_APP_UPDATE_SILENT, false) || this._getAltUpdateWindow()) return; @@ -3840,7 +3815,7 @@ UpdatePrompt.prototype = { * See nsIUpdateService.idl */ showUpdateElevationRequired: function UP_showUpdateElevationRequired() { - if (getPref("getBoolPref", PREF_APP_UPDATE_SILENT, false) || + if (Services.prefs.getBoolPref(PREF_APP_UPDATE_SILENT, false) || this._getAltUpdateWindow()) { return; } @@ -3864,7 +3839,7 @@ UpdatePrompt.prototype = { * application update user interface window. */ _getAltUpdateWindow: function UP__getAltUpdateWindow() { - let windowType = getPref("getCharPref", PREF_APP_UPDATE_ALTWINDOWTYPE, null); + let windowType = Services.prefs.getCharPref(PREF_APP_UPDATE_ALTWINDOWTYPE, null); if (!windowType) return null; return Services.wm.getMostRecentWindow(windowType); @@ -3916,7 +3891,7 @@ UpdatePrompt.prototype = { var idleService = Cc["@mozilla.org/widget/idleservice;1"]. getService(Ci.nsIIdleService); // Don't allow the preference to set a value greater than 600 seconds for the idle time. - const IDLE_TIME = Math.min(getPref("getIntPref", PREF_APP_UPDATE_IDLETIME, 60), 600); + const IDLE_TIME = Math.min(Services.prefs.getIntPref(PREF_APP_UPDATE_IDLETIME, 60), 600); if (idleService.idleTime / 1000 >= IDLE_TIME) { this._showUI(parent, uri, features, name, page, update); return; @@ -3961,7 +3936,7 @@ UpdatePrompt.prototype = { getService(Ci.nsIIdleService); // Don't allow the preference to set a value greater than 600 seconds for the idle time. - const IDLE_TIME = Math.min(getPref("getIntPref", PREF_APP_UPDATE_IDLETIME, 60), 600); + const IDLE_TIME = Math.min(Services.prefs.getIntPref(PREF_APP_UPDATE_IDLETIME, 60), 600); if (idleService.idleTime / 1000 >= IDLE_TIME) { this._showUI(parent, uri, features, name, page, update); } else { |