diff options
Diffstat (limited to 'browser/components/extensions/test/browser/browser_ext_browserAction_context.js')
-rw-r--r-- | browser/components/extensions/test/browser/browser_ext_browserAction_context.js | 398 |
1 files changed, 0 insertions, 398 deletions
diff --git a/browser/components/extensions/test/browser/browser_ext_browserAction_context.js b/browser/components/extensions/test/browser/browser_ext_browserAction_context.js deleted file mode 100644 index 8a26dbb3c..000000000 --- a/browser/components/extensions/test/browser/browser_ext_browserAction_context.js +++ /dev/null @@ -1,398 +0,0 @@ -/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */ -/* vim: set sts=2 sw=2 et tw=80: */ -"use strict"; - -function* runTests(options) { - async function background(getTests) { - async function checkDetails(expecting, tabId) { - let title = await browser.browserAction.getTitle({tabId}); - browser.test.assertEq(expecting.title, title, - "expected value from getTitle"); - - let popup = await browser.browserAction.getPopup({tabId}); - browser.test.assertEq(expecting.popup, popup, - "expected value from getPopup"); - - let badge = await browser.browserAction.getBadgeText({tabId}); - browser.test.assertEq(expecting.badge, badge, - "expected value from getBadge"); - - let badgeBackgroundColor = await browser.browserAction.getBadgeBackgroundColor({tabId}); - browser.test.assertEq(String(expecting.badgeBackgroundColor), - String(badgeBackgroundColor), - "expected value from getBadgeBackgroundColor"); - } - - let expectDefaults = expecting => { - return checkDetails(expecting); - }; - - let tabs = []; - let tests = getTests(tabs, expectDefaults); - - { - let tabId = 0xdeadbeef; - let calls = [ - () => browser.browserAction.enable(tabId), - () => browser.browserAction.disable(tabId), - () => browser.browserAction.setTitle({tabId, title: "foo"}), - () => browser.browserAction.setIcon({tabId, path: "foo.png"}), - () => browser.browserAction.setPopup({tabId, popup: "foo.html"}), - () => browser.browserAction.setBadgeText({tabId, text: "foo"}), - () => browser.browserAction.setBadgeBackgroundColor({tabId, color: [0xff, 0, 0, 0xff]}), - ]; - - for (let call of calls) { - await browser.test.assertRejects( - new Promise(resolve => resolve(call())), - RegExp(`Invalid tab ID: ${tabId}`), - "Expected invalid tab ID error"); - } - } - - // Runs the next test in the `tests` array, checks the results, - // and passes control back to the outer test scope. - function nextTest() { - let test = tests.shift(); - - test(async expecting => { - // Check that the API returns the expected values, and then - // run the next test. - let tabs = await browser.tabs.query({active: true, currentWindow: true}); - await checkDetails(expecting, tabs[0].id); - - // Check that the actual icon has the expected values, then - // run the next test. - browser.test.sendMessage("nextTest", expecting, tests.length); - }); - } - - browser.test.onMessage.addListener((msg) => { - if (msg != "runNextTest") { - browser.test.fail("Expecting 'runNextTest' message"); - } - - nextTest(); - }); - - browser.tabs.query({active: true, currentWindow: true}, resultTabs => { - tabs[0] = resultTabs[0].id; - - nextTest(); - }); - } - - let extension = ExtensionTestUtils.loadExtension({ - manifest: options.manifest, - - files: options.files || {}, - - background: `(${background})(${options.getTests})`, - }); - - let browserActionId; - function checkDetails(details) { - if (!browserActionId) { - browserActionId = `${makeWidgetId(extension.id)}-browser-action`; - } - - let button = document.getElementById(browserActionId); - - ok(button, "button exists"); - - let title = details.title || options.manifest.name; - - is(getListStyleImage(button), details.icon, "icon URL is correct"); - is(button.getAttribute("tooltiptext"), title, "image title is correct"); - is(button.getAttribute("label"), title, "image label is correct"); - is(button.getAttribute("badge"), details.badge, "badge text is correct"); - is(button.getAttribute("disabled") == "true", Boolean(details.disabled), "disabled state is correct"); - - if (details.badge && details.badgeBackgroundColor) { - let badge = button.ownerDocument.getAnonymousElementByAttribute( - button, "class", "toolbarbutton-badge"); - - let badgeColor = window.getComputedStyle(badge).backgroundColor; - let color = details.badgeBackgroundColor; - let expectedColor = `rgb(${color[0]}, ${color[1]}, ${color[2]})`; - - is(badgeColor, expectedColor, "badge color is correct"); - } - - - // TODO: Popup URL. - } - - let awaitFinish = new Promise(resolve => { - extension.onMessage("nextTest", (expecting, testsRemaining) => { - checkDetails(expecting); - - if (testsRemaining) { - extension.sendMessage("runNextTest"); - } else { - resolve(); - } - }); - }); - - yield extension.startup(); - - yield awaitFinish; - - yield extension.unload(); -} - -add_task(function* testTabSwitchContext() { - yield runTests({ - manifest: { - "browser_action": { - "default_icon": "default.png", - "default_popup": "__MSG_popup__", - "default_title": "Default __MSG_title__", - }, - - "default_locale": "en", - - "permissions": ["tabs"], - }, - - "files": { - "_locales/en/messages.json": { - "popup": { - "message": "default.html", - "description": "Popup", - }, - - "title": { - "message": "Title", - "description": "Title", - }, - }, - - "default.png": imageBuffer, - "default-2.png": imageBuffer, - "1.png": imageBuffer, - "2.png": imageBuffer, - }, - - getTests(tabs, expectDefaults) { - const DEFAULT_BADGE_COLOR = [0xd9, 0, 0, 255]; - - let details = [ - {"icon": browser.runtime.getURL("default.png"), - "popup": browser.runtime.getURL("default.html"), - "title": "Default Title", - "badge": "", - "badgeBackgroundColor": DEFAULT_BADGE_COLOR}, - {"icon": browser.runtime.getURL("1.png"), - "popup": browser.runtime.getURL("default.html"), - "title": "Default Title", - "badge": "", - "badgeBackgroundColor": DEFAULT_BADGE_COLOR}, - {"icon": browser.runtime.getURL("2.png"), - "popup": browser.runtime.getURL("2.html"), - "title": "Title 2", - "badge": "2", - "badgeBackgroundColor": [0xff, 0, 0, 0xff], - "disabled": true}, - {"icon": browser.runtime.getURL("1.png"), - "popup": browser.runtime.getURL("default-2.html"), - "title": "Default Title 2", - "badge": "d2", - "badgeBackgroundColor": [0, 0xff, 0, 0xff], - "disabled": true}, - {"icon": browser.runtime.getURL("1.png"), - "popup": browser.runtime.getURL("default-2.html"), - "title": "Default Title 2", - "badge": "d2", - "badgeBackgroundColor": [0, 0xff, 0, 0xff], - "disabled": false}, - {"icon": browser.runtime.getURL("default-2.png"), - "popup": browser.runtime.getURL("default-2.html"), - "title": "Default Title 2", - "badge": "d2", - "badgeBackgroundColor": [0, 0xff, 0, 0xff]}, - ]; - - return [ - async expect => { - browser.test.log("Initial state, expect default properties."); - - await expectDefaults(details[0]); - expect(details[0]); - }, - async expect => { - browser.test.log("Change the icon in the current tab. Expect default properties excluding the icon."); - browser.browserAction.setIcon({tabId: tabs[0], path: "1.png"}); - - await expectDefaults(details[0]); - expect(details[1]); - }, - async expect => { - browser.test.log("Create a new tab. Expect default properties."); - let tab = await browser.tabs.create({active: true, url: "about:blank?0"}); - tabs.push(tab.id); - - await expectDefaults(details[0]); - expect(details[0]); - }, - async expect => { - browser.test.log("Change properties. Expect new properties."); - let tabId = tabs[1]; - browser.browserAction.setIcon({tabId, path: "2.png"}); - browser.browserAction.setPopup({tabId, popup: "2.html"}); - browser.browserAction.setTitle({tabId, title: "Title 2"}); - browser.browserAction.setBadgeText({tabId, text: "2"}); - browser.browserAction.setBadgeBackgroundColor({tabId, color: "#ff0000"}); - browser.browserAction.disable(tabId); - - await expectDefaults(details[0]); - expect(details[2]); - }, - expect => { - browser.test.log("Navigate to a new page. Expect no changes."); - - // TODO: This listener should not be necessary, but the |tabs.update| - // callback currently fires too early in e10s windows. - browser.tabs.onUpdated.addListener(function listener(tabId, changed) { - if (tabId == tabs[1] && changed.url) { - browser.tabs.onUpdated.removeListener(listener); - expect(details[2]); - } - }); - - browser.tabs.update(tabs[1], {url: "about:blank?1"}); - }, - async expect => { - browser.test.log("Switch back to the first tab. Expect previously set properties."); - await browser.tabs.update(tabs[0], {active: true}); - expect(details[1]); - }, - async expect => { - browser.test.log("Change default values, expect those changes reflected."); - browser.browserAction.setIcon({path: "default-2.png"}); - browser.browserAction.setPopup({popup: "default-2.html"}); - browser.browserAction.setTitle({title: "Default Title 2"}); - browser.browserAction.setBadgeText({text: "d2"}); - browser.browserAction.setBadgeBackgroundColor({color: [0, 0xff, 0, 0xff]}); - browser.browserAction.disable(); - - await expectDefaults(details[3]); - expect(details[3]); - }, - async expect => { - browser.test.log("Re-enable by default. Expect enabled."); - browser.browserAction.enable(); - - await expectDefaults(details[4]); - expect(details[4]); - }, - async expect => { - browser.test.log("Switch back to tab 2. Expect former value, unaffected by changes to defaults in previous step."); - await browser.tabs.update(tabs[1], {active: true}); - - await expectDefaults(details[3]); - expect(details[2]); - }, - async expect => { - browser.test.log("Delete tab, switch back to tab 1. Expect previous results again."); - await browser.tabs.remove(tabs[1]); - expect(details[4]); - }, - async expect => { - browser.test.log("Create a new tab. Expect new default properties."); - let tab = await browser.tabs.create({active: true, url: "about:blank?2"}); - tabs.push(tab.id); - expect(details[5]); - }, - async expect => { - browser.test.log("Delete tab."); - await browser.tabs.remove(tabs[2]); - expect(details[4]); - }, - ]; - }, - }); -}); - -add_task(function* testDefaultTitle() { - yield runTests({ - manifest: { - "name": "Foo Extension", - - "browser_action": { - "default_icon": "icon.png", - }, - - "permissions": ["tabs"], - }, - - files: { - "icon.png": imageBuffer, - }, - - getTests(tabs, expectDefaults) { - const DEFAULT_BADGE_COLOR = [0xd9, 0, 0, 255]; - - let details = [ - {"title": "Foo Extension", - "popup": "", - "badge": "", - "badgeBackgroundColor": DEFAULT_BADGE_COLOR, - "icon": browser.runtime.getURL("icon.png")}, - {"title": "Foo Title", - "popup": "", - "badge": "", - "badgeBackgroundColor": DEFAULT_BADGE_COLOR, - "icon": browser.runtime.getURL("icon.png")}, - {"title": "Bar Title", - "popup": "", - "badge": "", - "badgeBackgroundColor": DEFAULT_BADGE_COLOR, - "icon": browser.runtime.getURL("icon.png")}, - {"title": "", - "popup": "", - "badge": "", - "badgeBackgroundColor": DEFAULT_BADGE_COLOR, - "icon": browser.runtime.getURL("icon.png")}, - ]; - - return [ - async expect => { - browser.test.log("Initial state. Expect extension title as default title."); - - await expectDefaults(details[0]); - expect(details[0]); - }, - async expect => { - browser.test.log("Change the title. Expect new title."); - browser.browserAction.setTitle({tabId: tabs[0], title: "Foo Title"}); - - await expectDefaults(details[0]); - expect(details[1]); - }, - async expect => { - browser.test.log("Change the default. Expect same properties."); - browser.browserAction.setTitle({title: "Bar Title"}); - - await expectDefaults(details[2]); - expect(details[1]); - }, - async expect => { - browser.test.log("Clear the title. Expect new default title."); - browser.browserAction.setTitle({tabId: tabs[0], title: ""}); - - await expectDefaults(details[2]); - expect(details[2]); - }, - async expect => { - browser.test.log("Set default title to null string. Expect null string from API, extension title in UI."); - browser.browserAction.setTitle({title: ""}); - - await expectDefaults(details[3]); - expect(details[3]); - }, - ]; - }, - }); -}); |