Revision control
Copy as Markdown
Other Tools
/* 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
var { MailServices } = ChromeUtils.importESModule(
);
/* globals checkABrowser */
Services.scriptloader.loadSubScript(
new URL("files/head_formPickers.js", getRootDirectory(gTestPath)).href,
this
);
const TEST_DOCUMENT_URL =
const tabmail = document.getElementById("tabmail");
let testFolder;
add_setup(async () => {
// We'll try composing, so need an account.
const account = MailServices.accounts.createAccount();
const identity = MailServices.accounts.createIdentity();
identity.email = "mochitest@localhost";
account.addIdentity(identity);
account.incomingServer = MailServices.accounts.createIncomingServer(
"user",
"test",
"pop3"
);
MailServices.accounts.defaultAccount = account;
const rootFolder = account.incomingServer.rootFolder.QueryInterface(
Ci.nsIMsgLocalMailFolder
);
testFolder = rootFolder
.createLocalSubfolder("formPickerFolder")
.QueryInterface(Ci.nsIMsgLocalMailFolder);
const message = await IOUtils.readUTF8(
getTestFilePath("files/formContent.eml")
);
testFolder.addMessage(message);
registerCleanupFunction(async () => {
MailServices.accounts.removeAccount(account, false);
});
});
add_task(async function testExtensionPopupWindow() {
const extension = ExtensionTestUtils.loadExtension({
background: async () => {
await browser.windows.create({
url: "formContent.html",
type: "popup",
width: 800,
height: 500,
});
browser.test.notifyPass("ready");
},
files: {
"formContent.html": await IOUtils.readUTF8(
getTestFilePath("files/formContent.html")
),
},
});
await extension.startup();
await extension.awaitFinish("ready");
const extensionPopup = Services.wm.getMostRecentWindow("mail:extensionPopup");
// extensionPopup.xhtml needs time to initialise properly.
await new Promise(resolve => extensionPopup.setTimeout(resolve, 500));
await checkABrowser(extensionPopup.document.getElementById("requestFrame"));
await BrowserTestUtils.closeWindow(extensionPopup);
await extension.unload();
});
add_task(async function testExtensionBrowserAction() {
const extension = ExtensionTestUtils.loadExtension({
files: {
"formContent.html": await IOUtils.readUTF8(
getTestFilePath("files/formContent.html")
),
},
manifest: {
applications: {
gecko: {
id: "formpickers@mochi.test",
},
},
browser_action: {
default_popup: "formContent.html",
},
},
});
await extension.startup();
const { panel, browser } = await openExtensionPopup(
window,
"ext-formpickers@mochi.test"
);
await checkABrowser(browser);
panel.hidePopup();
await extension.unload();
});
add_task(async function testExtensionComposeAction() {
const extension = ExtensionTestUtils.loadExtension({
files: {
"formContent.html": await IOUtils.readUTF8(
getTestFilePath("files/formContent.html")
),
},
manifest: {
applications: {
gecko: {
id: "formpickers@mochi.test",
},
},
compose_action: {
default_popup: "formContent.html",
},
},
});
await extension.startup();
const params = Cc[
"@mozilla.org/messengercompose/composeparams;1"
].createInstance(Ci.nsIMsgComposeParams);
params.composeFields = Cc[
"@mozilla.org/messengercompose/composefields;1"
].createInstance(Ci.nsIMsgCompFields);
const composeWindowPromise = BrowserTestUtils.domWindowOpened();
MailServices.compose.OpenComposeWindowWithParams(null, params);
const composeWindow = await composeWindowPromise;
await BrowserTestUtils.waitForEvent(composeWindow, "load");
const { panel, browser } = await openExtensionPopup(
composeWindow,
"formpickers_mochi_test-composeAction-toolbarbutton"
);
await checkABrowser(browser);
panel.hidePopup();
await extension.unload();
await BrowserTestUtils.closeWindow(composeWindow);
});
add_task(async function testExtensionMessageDisplayAction() {
const extension = ExtensionTestUtils.loadExtension({
files: {
"formContent.html": await IOUtils.readUTF8(
getTestFilePath("files/formContent.html")
),
},
manifest: {
applications: {
gecko: {
id: "formpickers@mochi.test",
},
},
message_display_action: {
default_popup: "formContent.html",
},
},
});
await extension.startup();
const messageWindowPromise = BrowserTestUtils.domWindowOpened();
window.MsgOpenNewWindowForMessage([...testFolder.messages][0]);
const messageWindow = await messageWindowPromise;
const { target: aboutMessage } = await BrowserTestUtils.waitForEvent(
messageWindow,
"aboutMessageLoaded"
);
const { panel, browser } = await openExtensionPopup(
aboutMessage,
"formpickers_mochi_test-messageDisplayAction-toolbarbutton"
);
await checkABrowser(browser);
panel.hidePopup();
await extension.unload();
await BrowserTestUtils.closeWindow(messageWindow);
});