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
|
/* 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/. */
/**
* This test ensures that overriding switch-to-tab correctly loads the page
* rather than switching to it.
*/
"use strict";
const TEST_URL = `${TEST_BASE_URL}dummy_page.html`;
add_task(async function test_switchtab_override() {
info("Opening first tab");
let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, TEST_URL);
info("Opening and selecting second tab");
let secondTab = await BrowserTestUtils.openNewForegroundTab(gBrowser);
registerCleanupFunction(() => {
try {
gBrowser.removeTab(tab);
gBrowser.removeTab(secondTab);
} catch (ex) {
/* tabs may have already been closed in case of failure */
}
});
info("Wait for autocomplete");
await UrlbarTestUtils.promiseAutocompleteResultPopup({
window,
value: "dummy_page",
});
info("Select second autocomplete popup entry");
EventUtils.synthesizeKey("KEY_ArrowDown");
let result = await UrlbarTestUtils.getDetailsOfResultAt(
window,
UrlbarTestUtils.getSelectedRowIndex(window)
);
Assert.equal(result.type, UrlbarUtils.RESULT_TYPE.TAB_SWITCH);
// Check to see if the switchtab label is visible and
// all other labels are hidden
const allLabels = document.getElementById("urlbar-label-box").children;
for (let label of allLabels) {
if (label.id == "urlbar-label-switchtab") {
Assert.ok(BrowserTestUtils.is_visible(label));
} else {
Assert.ok(BrowserTestUtils.is_hidden(label));
}
}
info("Override switch-to-tab");
let deferred = PromiseUtils.defer();
// In case of failure this would switch tab.
let onTabSelect = event => {
deferred.reject(new Error("Should have overridden switch to tab"));
};
gBrowser.tabContainer.addEventListener("TabSelect", onTabSelect);
registerCleanupFunction(() => {
gBrowser.tabContainer.removeEventListener("TabSelect", onTabSelect);
});
// Otherwise it would load the page.
BrowserTestUtils.browserLoaded(secondTab.linkedBrowser).then(
deferred.resolve
);
EventUtils.synthesizeKey("KEY_Shift", { type: "keydown" });
// Checks that all labels are hidden when Shift is held down on the SwitchToTab result
for (let label of allLabels) {
Assert.ok(BrowserTestUtils.is_hidden(label));
}
registerCleanupFunction(() => {
// Avoid confusing next tests by leaving a pending keydown.
EventUtils.synthesizeKey("KEY_Shift", { type: "keyup" });
});
let attribute = "actionoverride";
Assert.ok(
gURLBar.view.panel.hasAttribute(attribute),
"We should be overriding"
);
EventUtils.synthesizeKey("KEY_Enter");
info(`gURLBar.value = ${gURLBar.value}`);
await deferred.promise;
// Blurring the urlbar should have cleared the override.
Assert.ok(
!gURLBar.view.panel.hasAttribute(attribute),
"We should not be overriding anymore"
);
await PlacesUtils.history.clear();
gBrowser.removeTab(tab);
gBrowser.removeTab(secondTab);
});
|