1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
/* 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 files = {
"background.js": async () => {
// Message compose window.
let createdWindowPromise = window.waitForEvent("windows.onCreated");
await browser.compose.beginNew();
let [createdWindow] = await createdWindowPromise;
browser.test.assertEq("messageCompose", createdWindow.type);
let windowDetail = await browser.windows.get(createdWindow.id, {
populate: true,
});
browser.test.assertEq("messageCompose", windowDetail.type);
browser.test.assertEq(1, windowDetail.tabs.length);
browser.test.assertEq("messageCompose", windowDetail.tabs[0].type);
// These three properties should not be present, but not fail either.
browser.test.assertEq(undefined, windowDetail.tabs[0].favIconUrl);
browser.test.assertEq(undefined, windowDetail.tabs[0].title);
browser.test.assertEq(undefined, windowDetail.tabs[0].url);
let removedWindowPromise = window.waitForEvent("windows.onRemoved");
await browser.tabs.remove(windowDetail.tabs[0].id);
await removedWindowPromise;
// Message display window.
createdWindowPromise = window.waitForEvent("windows.onCreated");
browser.test.sendMessage("openMessage");
[createdWindow] = await createdWindowPromise;
browser.test.assertEq("messageDisplay", createdWindow.type);
windowDetail = await browser.windows.get(createdWindow.id, {
populate: true,
});
browser.test.assertEq("messageDisplay", windowDetail.type);
browser.test.assertEq(1, windowDetail.tabs.length);
browser.test.assertEq("messageDisplay", windowDetail.tabs[0].type);
browser.test.assertEq("about:blank", windowDetail.tabs[0].url);
// These properties should not be present, but not fail either.
browser.test.assertEq(undefined, windowDetail.tabs[0].favIconUrl);
browser.test.assertEq(undefined, windowDetail.tabs[0].title);
removedWindowPromise = window.waitForEvent("windows.onRemoved");
browser.test.sendMessage("closeMessage");
await removedWindowPromise;
browser.test.notifyPass();
},
"utils.js": await getUtilsJS(),
};
let extension = ExtensionTestUtils.loadExtension({
files,
manifest: {
background: { scripts: ["utils.js", "background.js"] },
permissions: ["addressBooks", "tabs"],
},
});
let account = createAccount();
addIdentity(account);
let rootFolder = account.incomingServer.rootFolder;
rootFolder.createSubfolder("test1", null);
let subFolders = {};
for (let folder of rootFolder.subFolders) {
subFolders[folder.name] = folder;
}
createMessages(subFolders.test1, 1);
await extension.startup();
await extension.awaitMessage("openMessage");
let newWindow = await openMessageInWindow([...subFolders.test1.messages][0]);
await extension.awaitMessage("closeMessage");
newWindow.close();
await extension.awaitFinish();
await extension.unload();
});
add_task(async function test_tabs_of_second_tabmail() {
let files = {
"background.js": async () => {
let testWindow = await browser.windows.create({ type: "normal" });
browser.test.assertEq("normal", testWindow.type);
let tabs = await await browser.tabs.query({ windowId: testWindow.id });
browser.test.assertEq(1, tabs.length);
browser.test.assertEq("mail", tabs[0].type);
await browser.windows.remove(testWindow.id);
browser.test.notifyPass();
},
};
let extension = ExtensionTestUtils.loadExtension({
files,
manifest: {
background: { scripts: ["background.js"] },
},
});
let account = createAccount();
addIdentity(account);
let rootFolder = account.incomingServer.rootFolder;
rootFolder.createSubfolder("test1", null);
let subFolders = {};
for (let folder of rootFolder.subFolders) {
subFolders[folder.name] = folder;
}
createMessages(subFolders.test1, 1);
await extension.startup();
await extension.awaitFinish();
await extension.unload();
});
|