/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */ /* vim: set sts=2 sw=2 et tw=80: */ "use strict"; const BASE = "http://example.com/browser/browser/components/extensions/test/browser/"; add_task(async function test_pageAction_basic() { let extension = ExtensionTestUtils.loadExtension({ manifest: { page_action: { default_popup: "popup.html", unrecognized_property: "with-a-random-value", }, }, files: { "popup.html": `
`, "popup.js": function () { browser.runtime.sendMessage("from-popup"); }, }, background: function () { browser.runtime.onMessage.addListener(msg => { browser.test.assertEq(msg, "from-popup", "correct message received"); browser.test.sendMessage("popup"); }); browser.tabs.query({ active: true, currentWindow: true }, tabs => { let tabId = tabs[0].id; browser.pageAction.show(tabId).then(() => { browser.test.sendMessage("page-action-shown"); }); }); }, }); SimpleTest.waitForExplicitFinish(); let waitForConsole = new Promise(resolve => { SimpleTest.monitorConsole(resolve, [ { message: /Reading manifest: Warning processing page_action.unrecognized_property: An unexpected property was found/, }, ]); }); ExtensionTestUtils.failOnSchemaWarnings(false); await extension.startup(); ExtensionTestUtils.failOnSchemaWarnings(true); await extension.awaitMessage("page-action-shown"); let elem = await getPageActionButton(extension); let parent = window.document.getElementById("page-action-buttons"); is( elem && elem.parentNode, parent, `pageAction pinned to urlbar ${elem.parentNode.getAttribute("id")}` ); clickPageAction(extension); await extension.awaitMessage("popup"); await extension.unload(); SimpleTest.endMonitorConsole(); await waitForConsole; }); add_task(async function test_pageAction_pinned() { let extension = ExtensionTestUtils.loadExtension({ manifest: { page_action: { default_popup: "popup.html", pinned: false, }, }, files: { "popup.html": ` `, }, background: function () { browser.tabs.query({ active: true, currentWindow: true }, tabs => { let tabId = tabs[0].id; browser.pageAction.show(tabId).then(() => { browser.test.sendMessage("page-action-shown"); }); }); }, }); await extension.startup(); await extension.awaitMessage("page-action-shown"); // There are plenty of tests for the main action button, we just verify // that we've properly set the pinned value. // This test used to check that the button was not pinned, but that is no // longer supported. // TODO bug 1703537: consider removal of the pinned property. let action = PageActions.actionForID(makeWidgetId(extension.id)); ok(action && action.pinnedToUrlbar, "Check pageAction pinning"); await extension.unload(); }); add_task(async function test_pageAction_icon_on_subframe_navigation() { let extension = ExtensionTestUtils.loadExtension({ manifest: { page_action: { default_popup: "popup.html", }, }, files: { "popup.html": ` `, }, background: function () { browser.tabs.query({ active: true, currentWindow: true }, tabs => { let tabId = tabs[0].id; browser.pageAction.show(tabId).then(() => { browser.test.sendMessage("page-action-shown"); }); }); }, }); await navigateTab( gBrowser.selectedTab, "data:text/html,