Bug 1400805 - added WebExtension API to get/set browser.display.use_document_fonts draft
authorSoeren Hentzschel <cadeyrn@ymail.com>
Tue, 17 Apr 2018 21:27:42 +0200
changeset 783821 6a8a5d7e144651dd84986ef016ec71815a3e873a
parent 777437 c23c7481957f7b982cffc0ce1d25979c69ca2c2f
push id106794
push userbmo:cadeyrn@ymail.com
push dateTue, 17 Apr 2018 19:29:12 +0000
bugs1400805
milestone61.0a1
Bug 1400805 - added WebExtension API to get/set browser.display.use_document_fonts MozReview-Commit-ID: 9JaJN1yTxMy
toolkit/components/extensions/parent/ext-browserSettings.js
toolkit/components/extensions/schemas/browser_settings.json
toolkit/components/extensions/test/xpcshell/test_ext_browserSettings.js
--- a/toolkit/components/extensions/parent/ext-browserSettings.js
+++ b/toolkit/components/extensions/parent/ext-browserSettings.js
@@ -234,16 +234,26 @@ ExtensionPreferencesManager.addSetting("
     "browser.display.document_color_use",
   ],
 
   setCallback(value) {
     return {[this.prefNames[0]]: value};
   },
 });
 
+ExtensionPreferencesManager.addSetting("useDocumentFonts", {
+  prefNames: [
+    "browser.display.use_document_fonts",
+  ],
+
+  setCallback(value) {
+    return {[this.prefNames[0]]: value};
+  },
+});
+
 this.browserSettings = class extends ExtensionAPI {
   getAPI(context) {
     let {extension} = context;
     return {
       browserSettings: {
         allowPopupsForUserEvents: getSettingsAPI(
           extension, "allowPopupsForUserEvents",
           () => {
@@ -443,12 +453,30 @@ this.browserSettings = class extends Ext
               } else if (details.value === "always") {
                 prefValue = 2;
               }
               return ExtensionPreferencesManager.setSetting(
                 extension.id, "overrideDocumentColors", prefValue);
             },
           }
         ),
+        useDocumentFonts: Object.assign(
+          getSettingsAPI(
+            extension, "useDocumentFonts",
+            () => {
+              return Services.prefs.getIntPref("browser.display.use_document_fonts") !== 0;
+            }
+          ),
+          {
+            set: details => {
+              if (typeof details.value !== "boolean") {
+                throw new ExtensionError(
+                  `${details.value} is not a valid value for useDocumentFonts.`);
+              }
+              return ExtensionPreferencesManager.setSetting(
+                extension.id, "useDocumentFonts", Number(details.value));
+            },
+          }
+        ),
       },
     };
   }
 };
--- a/toolkit/components/extensions/schemas/browser_settings.json
+++ b/toolkit/components/extensions/schemas/browser_settings.json
@@ -155,12 +155,16 @@
       },
       "webNotificationsDisabled": {
         "$ref": "types.Setting",
         "description": "Disables webAPI notifications."
       },
       "overrideDocumentColors": {
         "$ref": "types.Setting",
         "description": "This setting controls whether the user-chosen colors override the page's colors."
+      },
+      "useDocumentFonts": {
+        "$ref": "types.Setting",
+        "description": "This setting controls whether the document's fonts are used."
       }
     }
   }
 ]
--- a/toolkit/components/extensions/test/xpcshell/test_ext_browserSettings.js
+++ b/toolkit/components/extensions/test/xpcshell/test_ext_browserSettings.js
@@ -46,16 +46,17 @@ add_task(async function test_browser_set
     "network.proxy.socks_version": 5,
     "network.proxy.socks_remote_dns": false,
     "network.proxy.no_proxies_on": "localhost, 127.0.0.1",
     "network.proxy.autoconfig_url": "",
     "signon.autologin.proxy": false,
     "browser.tabs.insertRelatedAfterCurrent": true,
     "browser.tabs.insertAfterCurrent": false,
     "browser.display.document_color_use": 1,
+    "browser.display.use_document_fonts": 1,
   };
 
   async function background() {
     browser.test.onMessage.addListener(async (msg, apiName, value) => {
       let apiObj = browser.browserSettings[apiName];
       let result = await apiObj.set({value});
       if (msg === "set") {
         browser.test.assertTrue(result, "set returns true.");
@@ -215,16 +216,23 @@ add_task(async function test_browser_set
     {"browser.display.document_color_use": 0});
   await testSetting(
     "overrideDocumentColors", "never",
     {"browser.display.document_color_use": 1});
   await testSetting(
     "overrideDocumentColors", "always",
     {"browser.display.document_color_use": 2});
 
+  await testSetting(
+    "useDocumentFonts", false,
+    {"browser.display.use_document_fonts": 0});
+  await testSetting(
+    "useDocumentFonts", true,
+    {"browser.display.use_document_fonts": 1});
+
   async function testProxy(config, expectedPrefs) {
     // proxyConfig is not supported on Android.
     if (AppConstants.platform === "android") {
       return Promise.resolve();
     }
 
     let proxyConfig = {
       proxyType: "system",