Bug 1666836 - Set bools correct with legacy preferences. r=emalysz, a=RyanVM DEVEDITION_82_0b3_BUILD1 DEVEDITION_82_0b3_RELEASE FIREFOX_82_0b3_BUILD1 FIREFOX_82_0b3_RELEASE
authorMichael Kaply <mozilla@kaply.com>
Wed, 23 Sep 2020 21:09:06 +0000 (2020-09-23)
changeset 614758 67c588e4cb84ae61ff7e015e279c58ef03fae9cc
parent 614757 c8a59169f279da31a1b29dc02613b2a779db0a52
child 614759 80d8577dc2e760f6e2dc6ff0d9065e24d8053f32
push id13998
push userryanvm@gmail.com
push dateThu, 24 Sep 2020 14:51:14 +0000 (2020-09-24)
treeherdermozilla-beta@67c588e4cb84 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersemalysz, RyanVM
bugs1666836
milestone82.0
Bug 1666836 - Set bools correct with legacy preferences. r=emalysz, a=RyanVM Differential Revision: https://phabricator.services.mozilla.com/D91178
browser/components/enterprisepolicies/Policies.jsm
browser/components/enterprisepolicies/tests/xpcshell/test_preferences.js
--- a/browser/components/enterprisepolicies/Policies.jsm
+++ b/browser/components/enterprisepolicies/Policies.jsm
@@ -2055,17 +2055,30 @@ function setDefaultPref(prefName, prefVa
       defaults.setBoolPref(prefName, prefValue);
       break;
 
     case "number":
       if (!Number.isInteger(prefValue)) {
         throw new Error(`Non-integer value for ${prefName}`);
       }
 
-      defaults.setIntPref(prefName, prefValue);
+      if (
+        defaults.getPrefType(prefName) == defaults.PREF_BOOL ||
+        prefName == "browser.bookmarks.restore_default_bookmarks" ||
+        prefName == "browser.places.importBookmarksHTML" ||
+        prefName == "extensions.getAddons.showPane"
+      ) {
+        // It's possible an int was used in place of a boolean due to legacy prefs and GPO.
+        // If so, we need to set it as a boolean. We had to hardcode these few preference
+        // names because they aren't set by default.
+        // See bug 1666836.
+        defaults.setBoolPref(prefName, !!prefValue);
+      } else {
+        defaults.setIntPref(prefName, prefValue);
+      }
       break;
 
     case "string":
       defaults.setStringPref(prefName, prefValue);
       break;
   }
 
   if (locked) {
--- a/browser/components/enterprisepolicies/tests/xpcshell/test_preferences.js
+++ b/browser/components/enterprisepolicies/tests/xpcshell/test_preferences.js
@@ -5,22 +5,26 @@
 
 const OLD_PREFERENCES_TESTS = [
   {
     policies: {
       Preferences: {
         "network.IDN_show_punycode": true,
         "accessibility.force_disabled": 1,
         "security.default_personal_cert": "Select Automatically",
+        "geo.enabled": 1,
+        "extensions.getAddons.showPane": 0,
       },
     },
     lockedPrefs: {
       "network.IDN_show_punycode": true,
       "accessibility.force_disabled": 1,
       "security.default_personal_cert": "Select Automatically",
+      "geo.enabled": true,
+      "extensions.getAddons.showPane": false,
     },
   },
 ];
 
 const NEW_PREFERENCES_TESTS = [
   {
     policies: {
       Preferences: {