summaryrefslogtreecommitdiffstats
path: root/comm/mail/base/test/browser/browser_tabIcon.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mail/base/test/browser/browser_tabIcon.js')
-rw-r--r--comm/mail/base/test/browser/browser_tabIcon.js99
1 files changed, 99 insertions, 0 deletions
diff --git a/comm/mail/base/test/browser/browser_tabIcon.js b/comm/mail/base/test/browser/browser_tabIcon.js
new file mode 100644
index 0000000000..ae9d3a057f
--- /dev/null
+++ b/comm/mail/base/test/browser/browser_tabIcon.js
@@ -0,0 +1,99 @@
+/* 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/. */
+
+const { GlodaIndexer } = ChromeUtils.import(
+ "resource:///modules/gloda/GlodaIndexer.jsm"
+);
+const { MessageGenerator } = ChromeUtils.import(
+ "resource://testing-common/mailnews/MessageGenerator.jsm"
+);
+const { PromiseTestUtils } = ChromeUtils.import(
+ "resource://testing-common/mailnews/PromiseTestUtils.jsm"
+);
+
+const TEST_DOCUMENT_URL =
+ "http://mochi.test:8888/browser/comm/mail/base/test/browser/files/sampleContent.html";
+const TEST_IMAGE_URL =
+ "http://mochi.test:8888/browser/comm/mail/base/test/browser/files/tb-logo.png";
+
+let tabmail = document.getElementById("tabmail");
+let rootFolder, testFolder, testMessages;
+
+add_setup(async function () {
+ MailServices.accounts.createLocalMailAccount();
+ let account = MailServices.accounts.accounts[0];
+ account.addIdentity(MailServices.accounts.createIdentity());
+ rootFolder = account.incomingServer.rootFolder;
+
+ rootFolder.createSubfolder("tabIcon", null);
+ testFolder = rootFolder
+ .getChildNamed("tabIcon")
+ .QueryInterface(Ci.nsIMsgLocalMailFolder);
+
+ let messageFile = new FileUtils.File(
+ getTestFilePath("files/sampleContent.eml")
+ );
+ Assert.ok(messageFile.exists(), "test data file should exist");
+ let promiseCopyListener = new PromiseTestUtils.PromiseCopyListener();
+ // Copy gIncomingMailFile into the Inbox.
+ MailServices.copy.copyFileMessage(
+ messageFile,
+ testFolder,
+ null,
+ false,
+ 0,
+ "",
+ promiseCopyListener,
+ null
+ );
+ await promiseCopyListener.promise;
+ testMessages = [...testFolder.messages];
+ tabmail.currentAbout3Pane.displayFolder(testFolder);
+
+ registerCleanupFunction(() => {
+ tabmail.closeOtherTabs(0);
+ MailServices.accounts.removeAccount(account, false);
+ });
+});
+
+add_task(async function testMsgInFolder() {
+ tabmail.currentAbout3Pane.threadTree.selectedIndex = 0;
+ await BrowserTestUtils.browserLoaded(
+ tabmail.currentAboutMessage.getMessagePaneBrowser()
+ );
+ let icon = tabmail.tabInfo[0].tabNode.querySelector(".tab-icon-image");
+ await TestUtils.waitForCondition(() => icon.complete, "Icon loaded");
+ Assert.equal(
+ icon.src,
+ "chrome://messenger/skin/icons/new/compact/folder.svg"
+ );
+});
+
+add_task(async function testMsgInTab() {
+ window.OpenMessageInNewTab(testMessages[0], { background: false });
+ await BrowserTestUtils.waitForEvent(
+ tabmail.tabInfo[1].chromeBrowser,
+ "MsgLoaded"
+ );
+ let tab = tabmail.tabInfo[1];
+ let icon = tab.tabNode.querySelector(".tab-icon-image");
+ await TestUtils.waitForCondition(() => icon.complete, "Icon loaded");
+ Assert.equal(icon.src, "chrome://messenger/skin/icons/new/compact/draft.svg");
+});
+
+add_task(async function testContentTab() {
+ let tab = window.openTab("contentTab", {
+ url: TEST_DOCUMENT_URL,
+ background: false,
+ });
+ await BrowserTestUtils.browserLoaded(tab.browser);
+
+ let icon = tab.tabNode.querySelector(".tab-icon-image");
+
+ // Start of TEST_IMAGE_URL as data url.
+ await TestUtils.waitForCondition(
+ () => icon.src.startsWith("data:image/png;base64,iVBORw0KGgoAAAANSUhEU"),
+ "Waited for icon to be correct"
+ );
+});