From 007caf3a34170060259e84597da3fd9249a139b8 Mon Sep 17 00:00:00 2001 From: Soeren Hentzschel Date: Tue, 17 Apr 2018 21:27:42 +0200 Subject: [PATCH] Bug 1400805 - added WebExtension API to get/set browser.display.use_document_fonts r=ntim,zombie MozReview-Commit-ID: 9JaJN1yTxMy --HG-- extra : rebase_source : 097cbef283a62ab3fc69bdb62a06c0f1feae5dbc --- .../extensions/parent/ext-browserSettings.js | 28 +++++++++++++++++++ .../extensions/schemas/browser_settings.json | 4 +++ .../test/xpcshell/test_ext_browserSettings.js | 8 ++++++ 3 files changed, 40 insertions(+) diff --git a/toolkit/components/extensions/parent/ext-browserSettings.js b/toolkit/components/extensions/parent/ext-browserSettings.js index 0dd70d177c1b..8bea13b5567d 100644 --- a/toolkit/components/extensions/parent/ext-browserSettings.js +++ b/toolkit/components/extensions/parent/ext-browserSettings.js @@ -239,6 +239,16 @@ ExtensionPreferencesManager.addSetting("overrideDocumentColors", { }, }); +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; @@ -448,6 +458,24 @@ this.browserSettings = class extends ExtensionAPI { }, } ), + 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)); + }, + } + ), }, }; } diff --git a/toolkit/components/extensions/schemas/browser_settings.json b/toolkit/components/extensions/schemas/browser_settings.json index 45c37329e49e..5d6aeba2d02a 100644 --- a/toolkit/components/extensions/schemas/browser_settings.json +++ b/toolkit/components/extensions/schemas/browser_settings.json @@ -160,6 +160,10 @@ "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." } } } diff --git a/toolkit/components/extensions/test/xpcshell/test_ext_browserSettings.js b/toolkit/components/extensions/test/xpcshell/test_ext_browserSettings.js index 00ad4fc1e37e..367ea453fdfd 100644 --- a/toolkit/components/extensions/test/xpcshell/test_ext_browserSettings.js +++ b/toolkit/components/extensions/test/xpcshell/test_ext_browserSettings.js @@ -51,6 +51,7 @@ add_task(async function test_browser_settings() { "browser.tabs.insertRelatedAfterCurrent": true, "browser.tabs.insertAfterCurrent": false, "browser.display.document_color_use": 1, + "browser.display.use_document_fonts": 1, }; async function background() { @@ -220,6 +221,13 @@ add_task(async function test_browser_settings() { "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") {