Fixed issues reported in review of Bug 1417810 draft
authorSatish <psatish@live.in>
Wed, 21 Mar 2018 13:40:40 +0530
changeset 770421 e0db90b8884960756d92e2f61bd0839cdee1eb8e
parent 768516 c914dc693176d89bf7bfe0a90d18f0318c5a11bc
child 770427 4f688f96b1976ddfdd88532d2ed84f24534f8eb5
push id103407
push userbmo:psatish@live.in
push dateWed, 21 Mar 2018 08:11:48 +0000
bugs1417810
milestone61.0a1
Fixed issues reported in review of Bug 1417810 MozReview-Commit-ID: KjzsoLKFzZQ
toolkit/components/extensions/ext-browserSettings.js
toolkit/components/extensions/test/xpcshell/test_ext_browserSettings.js
--- a/toolkit/components/extensions/ext-browserSettings.js
+++ b/toolkit/components/extensions/ext-browserSettings.js
@@ -372,26 +372,33 @@ this.browserSettings = class extends Ext
               Services.prefs.getIntPref(
                 "permissions.default.desktop-notification", null);
             return prefValue === PERM_DENY_ACTION;
           }),
         useDocumentColors: Object.assign(
           getSettingsAPI(
             extension, "useDocumentColors",
             () => {
-              return Services.prefs.getIntPref("browser.display.document_color_use");
+              let prefValue = Services.prefs.getIntPref("browser.display.document_color_use");
+              return prefValue === 1 ? "never" : (prefValue === 2 ? "always" : "high-contrast-only");
             }
           ),
           {
             set: details => {
-              if (![0, 1, 2].includes(details.value)) {
+              if (!["never", "always", "high-contrast-only"].includes(details.value)) {
                 throw new ExtensionError(
                   `${details.value} is not a valid value for useDocumentColors.`);
               }
+              let prefValue = 0; // initialize to 0 - auto/high-contrast-only
+              if ("never" === details.value) {
+                prefValue = 1;
+              } else if ("always" === details.value) {
+                prefValue = 2;
+              }
               return ExtensionPreferencesManager.setSetting(
-                extension.id, "useDocumentColors", details.value);
+                extension.id, "useDocumentColors", prefValue);
             },
           }
         ),
       },
     };
   }
 };
--- a/toolkit/components/extensions/test/xpcshell/test_ext_browserSettings.js
+++ b/toolkit/components/extensions/test/xpcshell/test_ext_browserSettings.js
@@ -173,27 +173,27 @@ add_task(async function test_browser_set
     {"browser.tabs.loadBookmarksInTabs": false});
 
   await testSetting(
     "openSearchResultsInNewTabs", true,
     {"browser.search.openintab": true});
   await testSetting(
     "openSearchResultsInNewTabs", false,
     {"browser.search.openintab": false});
-  
+
   await testSetting(
-    "useDocumentColors", 0,
+    "useDocumentColors", "high-contrast-only",
     {"browser.display.document_color_use": 0});
   await testSetting(
-    "useDocumentColors", 1,
+    "useDocumentColors", "never",
     {"browser.display.document_color_use": 1});
   await testSetting(
-    "useDocumentColors", 2,
+    "useDocumentColors", "always",
     {"browser.display.document_color_use": 2});
-  
+
   async function testProxy(config, expectedPrefs) {
     // proxyConfig is not supported on Android.
     if (AppConstants.platform === "android") {
       return Promise.resolve();
     }
 
     let proxyConfig = {
       proxyType: "system",
@@ -341,22 +341,22 @@ add_task(async function test_browser_set
 });
 
 add_task(async function test_bad_value() {
   async function background() {
     await browser.test.assertRejects(
       browser.browserSettings.contextMenuShowEvent.set({value: "bad"}),
       /bad is not a valid value for contextMenuShowEvent/,
       "contextMenuShowEvent.set rejects with an invalid value.");
-    
+
     await browser.test.assertRejects(
-      browser.browserSettings.useDocumentColors.set({value: 3}),
-      /3 is not a valid value for useDocumentColors/,
+      browser.browserSettings.useDocumentColors.set({value: 2}),
+      /2 is not a valid value for useDocumentColors/,
       "useDocumentColors.set rejects with an invalid value.");
-    
+
     await browser.test.assertRejects(
       browser.browserSettings.useDocumentColors.set({value: "bad"}),
       /bad is not a valid value for useDocumentColors/,
       "useDocumentColors.set rejects with an invalid value.");
 
     browser.test.sendMessage("done");
   }