summaryrefslogtreecommitdiffstats
path: root/browser/components/extensions/test/browser/browser_ext_browserAction_area.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/extensions/test/browser/browser_ext_browserAction_area.js')
-rw-r--r--browser/components/extensions/test/browser/browser_ext_browserAction_area.js126
1 files changed, 126 insertions, 0 deletions
diff --git a/browser/components/extensions/test/browser/browser_ext_browserAction_area.js b/browser/components/extensions/test/browser/browser_ext_browserAction_area.js
new file mode 100644
index 0000000000..90ed744a78
--- /dev/null
+++ b/browser/components/extensions/test/browser/browser_ext_browserAction_area.js
@@ -0,0 +1,126 @@
+/* -*- 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(
+ "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();
+});