diff options
Diffstat (limited to 'comm/mail/components/extensions/test/browser/browser_ext_composeAction_properties.js')
-rw-r--r-- | comm/mail/components/extensions/test/browser/browser_ext_composeAction_properties.js | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/comm/mail/components/extensions/test/browser/browser_ext_composeAction_properties.js b/comm/mail/components/extensions/test/browser/browser_ext_composeAction_properties.js new file mode 100644 index 0000000000..517dae8c46 --- /dev/null +++ b/comm/mail/components/extensions/test/browser/browser_ext_composeAction_properties.js @@ -0,0 +1,125 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at http://mozilla.org/MPL/2.0/. */ + +add_task(async () => { + let account = createAccount(); + addIdentity(account); + + let files = { + "background.js": async () => { + async function checkProperty(property, expectedDefault, ...expected) { + browser.test.log( + `${property}: ${expectedDefault}, ${expected.join(", ")}` + ); + + browser.test.assertEq( + expectedDefault, + await browser.composeAction[property]({}) + ); + for (let i = 0; i < 3; i++) { + browser.test.assertEq( + expected[i], + await browser.composeAction[property]({ tabId: tabIDs[i] }) + ); + } + + await window.sendMessage("checkProperty", property, expected); + } + + await browser.compose.beginNew(); + await browser.compose.beginNew(); + await browser.compose.beginNew(); + let windows = await browser.windows.getAll({ + populate: true, + windowTypes: ["messageCompose"], + }); + let tabIDs = windows.map(w => w.tabs[0].id); + + await checkProperty("isEnabled", true, true, true, true); + await browser.composeAction.disable(); + await checkProperty("isEnabled", false, false, false, false); + await browser.composeAction.enable(tabIDs[0]); + await checkProperty("isEnabled", false, true, false, false); + await browser.composeAction.enable(); + await checkProperty("isEnabled", true, true, true, true); + await browser.composeAction.disable(); + await checkProperty("isEnabled", false, true, false, false); + await browser.composeAction.disable(tabIDs[0]); + await checkProperty("isEnabled", false, false, false, false); + await browser.composeAction.enable(); + await checkProperty("isEnabled", true, false, true, true); + + await checkProperty( + "getTitle", + "default", + "default", + "default", + "default" + ); + await browser.composeAction.setTitle({ tabId: tabIDs[2], title: "tab2" }); + await checkProperty("getTitle", "default", "default", "default", "tab2"); + await browser.composeAction.setTitle({ title: "new" }); + await checkProperty("getTitle", "new", "new", "new", "tab2"); + await browser.composeAction.setTitle({ tabId: tabIDs[1], title: "tab1" }); + await checkProperty("getTitle", "new", "new", "tab1", "tab2"); + await browser.composeAction.setTitle({ tabId: tabIDs[2], title: null }); + await checkProperty("getTitle", "new", "new", "tab1", "new"); + await browser.composeAction.setTitle({ title: null }); + await checkProperty("getTitle", "default", "default", "tab1", "default"); + await browser.composeAction.setTitle({ tabId: tabIDs[1], title: null }); + await checkProperty( + "getTitle", + "default", + "default", + "default", + "default" + ); + + await browser.tabs.remove(tabIDs[0]); + await browser.tabs.remove(tabIDs[1]); + await browser.tabs.remove(tabIDs[2]); + browser.test.notifyPass("finished"); + }, + "utils.js": await getUtilsJS(), + }; + let extension = ExtensionTestUtils.loadExtension({ + files, + manifest: { + applications: { + gecko: { + id: "compose_action_properties@mochi.test", + }, + }, + background: { scripts: ["utils.js", "background.js"] }, + compose_action: { + default_title: "default", + }, + }, + }); + + extension.onMessage("checkProperty", async (property, expected) => { + let composeWindows = [...Services.wm.getEnumerator("msgcompose")]; + is(composeWindows.length, 3); + + for (let i = 0; i < 3; i++) { + let button = composeWindows[i].document.getElementById( + "compose_action_properties_mochi_test-composeAction-toolbarbutton" + ); + switch (property) { + case "isEnabled": + is(button.disabled, !expected[i], `button ${i} enabled state`); + break; + case "getTitle": + is(button.getAttribute("label"), expected[i], `button ${i} label`); + break; + } + } + + extension.sendMessage(); + }); + + await extension.startup(); + await extension.awaitFinish("finished"); + await extension.unload(); +}); |