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
|
"use strict";
const TEST_SELECTORS = {
selRecords: "#addresses",
btnRemove: "#remove",
btnAdd: "#add",
btnEdit: "#edit",
};
const DIALOG_SIZE = "width=600,height=400";
add_task(async function test_manageAddressesInitialState() {
await BrowserTestUtils.withNewTab(
{ gBrowser, url: MANAGE_ADDRESSES_DIALOG_URL },
async function (browser) {
await SpecialPowers.spawn(browser, [TEST_SELECTORS], args => {
let selRecords = content.document.querySelector(args.selRecords);
let btnRemove = content.document.querySelector(args.btnRemove);
let btnEdit = content.document.querySelector(args.btnEdit);
let btnAdd = content.document.querySelector(args.btnAdd);
is(selRecords.length, 0, "No address");
is(btnAdd.disabled, false, "Add button enabled");
is(btnRemove.disabled, true, "Remove button disabled");
is(btnEdit.disabled, true, "Edit button disabled");
});
}
);
});
add_task(async function test_cancelManageAddressDialogWithESC() {
let win = window.openDialog(MANAGE_ADDRESSES_DIALOG_URL);
await waitForFocusAndFormReady(win);
let unloadPromise = BrowserTestUtils.waitForEvent(win, "unload");
EventUtils.synthesizeKey("VK_ESCAPE", {}, win);
await unloadPromise;
ok(true, "Manage addresses dialog is closed with ESC key");
});
add_task(async function test_removingSingleAndMultipleAddresses() {
await setStorage(TEST_ADDRESS_1, TEST_ADDRESS_2, TEST_ADDRESS_3);
let win = window.openDialog(MANAGE_ADDRESSES_DIALOG_URL, null, DIALOG_SIZE);
await waitForFocusAndFormReady(win);
let selRecords = win.document.querySelector(TEST_SELECTORS.selRecords);
let btnRemove = win.document.querySelector(TEST_SELECTORS.btnRemove);
let btnEdit = win.document.querySelector(TEST_SELECTORS.btnEdit);
is(selRecords.length, 3, "Three addresses");
EventUtils.synthesizeMouseAtCenter(selRecords.children[0], {}, win);
is(btnRemove.disabled, false, "Remove button enabled");
is(btnEdit.disabled, false, "Edit button enabled");
EventUtils.synthesizeMouseAtCenter(btnRemove, {}, win);
await BrowserTestUtils.waitForEvent(selRecords, "RecordsRemoved");
is(selRecords.length, 2, "Two addresses left");
EventUtils.synthesizeMouseAtCenter(selRecords.children[0], {}, win);
EventUtils.synthesizeMouseAtCenter(
selRecords.children[1],
{ shiftKey: true },
win
);
is(btnEdit.disabled, true, "Edit button disabled when multi-select");
EventUtils.synthesizeMouseAtCenter(btnRemove, {}, win);
await BrowserTestUtils.waitForEvent(selRecords, "RecordsRemoved");
is(selRecords.length, 0, "All addresses are removed");
win.close();
});
add_task(async function test_removingAdressViaKeyboardDelete() {
await setStorage(TEST_ADDRESS_1);
let win = window.openDialog(MANAGE_ADDRESSES_DIALOG_URL, null, DIALOG_SIZE);
await waitForFocusAndFormReady(win);
let selRecords = win.document.querySelector(TEST_SELECTORS.selRecords);
is(selRecords.length, 1, "One address");
EventUtils.synthesizeMouseAtCenter(selRecords.children[0], {}, win);
EventUtils.synthesizeKey("VK_DELETE", {}, win);
await BrowserTestUtils.waitForEvent(selRecords, "RecordsRemoved");
is(selRecords.length, 0, "No addresses left");
win.close();
});
add_task(async function test_addressesDialogWatchesStorageChanges() {
let win = window.openDialog(MANAGE_ADDRESSES_DIALOG_URL, null, DIALOG_SIZE);
await waitForFocusAndFormReady(win);
let selRecords = win.document.querySelector(TEST_SELECTORS.selRecords);
await setStorage(TEST_ADDRESS_1);
await BrowserTestUtils.waitForEvent(selRecords, "RecordsLoaded");
is(selRecords.length, 1, "One address is shown");
await removeAddresses([selRecords.options[0].value]);
await BrowserTestUtils.waitForEvent(selRecords, "RecordsLoaded");
is(selRecords.length, 0, "Address is removed");
win.close();
});
|