forked from mirrors/gecko-dev
Bug 1813108 - Add support for pinning to ExtensionSettings policy. r=willdurand
Differential Revision: https://phabricator.services.mozilla.com/D170949
This commit is contained in:
parent
fb4b7b9935
commit
a9973a08c2
3 changed files with 80 additions and 1 deletions
|
|
@ -566,6 +566,10 @@
|
|||
},
|
||||
"updates_disabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"default_area": {
|
||||
"type": "string",
|
||||
"enum": ["navbar", "menupanel"]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,3 +52,75 @@ add_task(async function testBrowserActionInTabStrip() {
|
|||
add_task(async function testBrowserActionInPersonalToolbar() {
|
||||
await testInArea("personaltoolbar");
|
||||
});
|
||||
|
||||
add_task(async function testPolicyOverridesBrowserActionToNavbar() {
|
||||
const { EnterprisePolicyTesting } = ChromeUtils.importESModule(
|
||||
"resource://testing-common/EnterprisePolicyTesting.sys.mjs"
|
||||
);
|
||||
await EnterprisePolicyTesting.setupPolicyEngineWithJson({
|
||||
policies: {
|
||||
ExtensionSettings: {
|
||||
"policyBrowserActionAreaNavBarTest@mozilla.com": {
|
||||
default_area: "navbar",
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
let manifest = {
|
||||
browser_action: {},
|
||||
browser_specific_settings: {
|
||||
gecko: {
|
||||
id: "policyBrowserActionAreaNavBarTest@mozilla.com",
|
||||
},
|
||||
},
|
||||
};
|
||||
let extension = ExtensionTestUtils.loadExtension({
|
||||
manifest,
|
||||
});
|
||||
await extension.startup();
|
||||
let widget = getBrowserActionWidget(extension);
|
||||
let placement = CustomizableUI.getPlacementOfWidget(widget.id);
|
||||
is(
|
||||
placement && placement.area,
|
||||
CustomizableUI.AREA_NAVBAR,
|
||||
`widget located in nav bar`
|
||||
);
|
||||
await extension.unload();
|
||||
});
|
||||
|
||||
add_task(async function testPolicyOverridesBrowserActionToMenuPanel() {
|
||||
const { EnterprisePolicyTesting } = ChromeUtils.importESModule(
|
||||
"resource://testing-common/EnterprisePolicyTesting.sys.mjs"
|
||||
);
|
||||
await EnterprisePolicyTesting.setupPolicyEngineWithJson({
|
||||
policies: {
|
||||
ExtensionSettings: {
|
||||
"policyBrowserActionAreaMenuPanelTest@mozilla.com": {
|
||||
default_area: "menupanel",
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
let manifest = {
|
||||
browser_action: {
|
||||
default_area: "navbar",
|
||||
},
|
||||
browser_specific_settings: {
|
||||
gecko: {
|
||||
id: "policyBrowserActionAreaMenuPanelTest@mozilla.com",
|
||||
},
|
||||
},
|
||||
};
|
||||
let extension = ExtensionTestUtils.loadExtension({
|
||||
manifest,
|
||||
});
|
||||
await extension.startup();
|
||||
let widget = getBrowserActionWidget(extension);
|
||||
let placement = CustomizableUI.getPlacementOfWidget(widget.id);
|
||||
is(
|
||||
placement && placement.area,
|
||||
getCustomizableUIPanelID(),
|
||||
`widget located in extensions menu`
|
||||
);
|
||||
await extension.unload();
|
||||
});
|
||||
|
|
|
|||
|
|
@ -513,7 +513,10 @@ class BrowserActionBase extends PanelActionBase {
|
|||
extension.manifest.browser_action || extension.manifest.action;
|
||||
super(options, tabContext, extension);
|
||||
|
||||
let default_area = options.default_area || "menupanel";
|
||||
let default_area =
|
||||
Services.policies.getExtensionSettings(extension.id)?.default_area ||
|
||||
options.default_area ||
|
||||
"menupanel";
|
||||
|
||||
this.defaults = {
|
||||
...this.defaults,
|
||||
|
|
|
|||
Loading…
Reference in a new issue