Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim: set sts=2 sw=2 et tw=80: */
"use strict";
var browserAreas = {
navbar: CustomizableUI.AREA_NAVBAR,
menupanel: getCustomizableUIPanelID(),
tabstrip: CustomizableUI.AREA_TABSTRIP,
personaltoolbar: CustomizableUI.AREA_BOOKMARKS,
};
async function testInArea(area) {
let manifest = {
browser_action: {
browser_style: true,
},
};
if (area) {
manifest.browser_action.default_area = area;
}
let extension = ExtensionTestUtils.loadExtension({
manifest,
});
await extension.startup();
let widget = getBrowserActionWidget(extension);
let placement = CustomizableUI.getPlacementOfWidget(widget.id);
let fallbackDefaultArea = CustomizableUI.AREA_ADDONS;
is(
placement && placement.area,
browserAreas[area] || fallbackDefaultArea,
`widget located in correct area`
);
await extension.unload();
}
add_task(async function testBrowserActionDefaultArea() {
await testInArea();
});
add_task(async function testBrowserActionInToolbar() {
await testInArea("navbar");
});
add_task(async function testBrowserActionInMenuPanel() {
await testInArea("menupanel");
});
add_task(async function testBrowserActionInTabStrip() {
await testInArea("tabstrip");
});
add_task(async function testBrowserActionInPersonalToolbar() {
await testInArea("personaltoolbar");
});
add_task(async function testPolicyOverridesBrowserActionToNavbar() {
const { EnterprisePolicyTesting } = ChromeUtils.importESModule(
);
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(
);
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();
});