diff --git a/toolkit/components/extensions/parent/ext-browserSettings.js b/toolkit/components/extensions/parent/ext-browserSettings.js index 86267251c85a83fe4c7c92c3ad154320bc022bf5..c54aa49d51670cc45a9537ca626144ed1cd6bce0 100644 --- a/toolkit/components/extensions/parent/ext-browserSettings.js +++ b/toolkit/components/extensions/parent/ext-browserSettings.js @@ -156,6 +156,22 @@ ExtensionPreferencesManager.addSetting("useDocumentFonts", { }, }); +ExtensionPreferencesManager.addSetting("zoomFullPage", { + prefNames: ["browser.zoom.full"], + + setCallback(value) { + return { [this.prefNames[0]]: value }; + }, +}); + +ExtensionPreferencesManager.addSetting("zoomSiteSpecific", { + prefNames: ["browser.zoom.siteSpecific"], + + setCallback(value) { + return { [this.prefNames[0]]: value }; + }, +}); + this.browserSettings = class extends ExtensionAPI { getAPI(context) { let { extension } = context; @@ -417,6 +433,20 @@ this.browserSettings = class extends ExtensionAPI { }, } ), + zoomFullPage: getSettingsAPI({ + context, + name: "zoomFullPage", + callback() { + return Services.prefs.getBoolPref("browser.zoom.full"); + }, + }), + zoomSiteSpecific: getSettingsAPI({ + context, + name: "zoomSiteSpecific", + callback() { + return Services.prefs.getBoolPref("browser.zoom.siteSpecific"); + }, + }), }, }; } diff --git a/toolkit/components/extensions/schemas/browser_settings.json b/toolkit/components/extensions/schemas/browser_settings.json index cf58e3e96c4043779da92296d1e4a6b2a2eb056b..cba5d47782ccc6c80dba196deb718abbbb86633b 100644 --- a/toolkit/components/extensions/schemas/browser_settings.json +++ b/toolkit/components/extensions/schemas/browser_settings.json @@ -97,6 +97,14 @@ "useDocumentFonts": { "$ref": "types.Setting", "description": "This setting controls whether the document's fonts are used." + }, + "zoomFullPage": { + "$ref": "types.Setting", + "description": "This boolean setting controls whether zoom is applied to the full page or to text only." + }, + "zoomSiteSpecific": { + "$ref": "types.Setting", + "description": "This boolean setting controls whether zoom is applied on a per-site basis or to the current tab only. If privacy.resistFingerprinting is true, this setting has no effect and zoom is applied to the current tab only." } } } diff --git a/toolkit/components/extensions/test/xpcshell/test_ext_browserSettings.js b/toolkit/components/extensions/test/xpcshell/test_ext_browserSettings.js index 40a1d0419e6bf7a38b3175290dae4c58c7ed922c..aec4eee1e22e41a85081af1f09b52432d50ff7c1 100644 --- a/toolkit/components/extensions/test/xpcshell/test_ext_browserSettings.js +++ b/toolkit/components/extensions/test/xpcshell/test_ext_browserSettings.js @@ -37,6 +37,8 @@ add_task(async function test_browser_settings() { "browser.tabs.insertAfterCurrent": false, "browser.display.document_color_use": 1, "browser.display.use_document_fonts": 1, + "browser.zoom.full": true, + "browser.zoom.siteSpecific": true, }; async function background() { @@ -251,6 +253,20 @@ add_task(async function test_browser_settings() { "browser.display.use_document_fonts": 1, }); + await testSetting("zoomFullPage", true, { + "browser.zoom.full": true, + }); + await testSetting("zoomFullPage", false, { + "browser.zoom.full": false, + }); + + await testSetting("zoomSiteSpecific", true, { + "browser.zoom.siteSpecific": true, + }); + await testSetting("zoomSiteSpecific", false, { + "browser.zoom.siteSpecific": false, + }); + await extension.unload(); await promiseShutdownManager(); });