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
|
let testURL = "http://example.org/browser/browser/base/content/test/urlbar/dummy_page.html";
add_task(function*() {
let normalWindow = yield BrowserTestUtils.openNewBrowserWindow();
let privateWindow = yield BrowserTestUtils.openNewBrowserWindow({private: true});
yield runTest(normalWindow, privateWindow, false);
yield BrowserTestUtils.closeWindow(normalWindow);
yield BrowserTestUtils.closeWindow(privateWindow);
normalWindow = yield BrowserTestUtils.openNewBrowserWindow();
privateWindow = yield BrowserTestUtils.openNewBrowserWindow({private: true});
yield runTest(privateWindow, normalWindow, false);
yield BrowserTestUtils.closeWindow(normalWindow);
yield BrowserTestUtils.closeWindow(privateWindow);
privateWindow = yield BrowserTestUtils.openNewBrowserWindow({private: true});
yield runTest(privateWindow, privateWindow, false);
yield BrowserTestUtils.closeWindow(privateWindow);
normalWindow = yield BrowserTestUtils.openNewBrowserWindow();
yield runTest(normalWindow, normalWindow, true);
yield BrowserTestUtils.closeWindow(normalWindow);
});
function* runTest(aSourceWindow, aDestWindow, aExpectSwitch, aCallback) {
yield BrowserTestUtils.openNewForegroundTab(aSourceWindow.gBrowser, testURL);
let testTab = yield BrowserTestUtils.openNewForegroundTab(aDestWindow.gBrowser);
info("waiting for focus on the window");
yield SimpleTest.promiseFocus(aDestWindow);
info("got focus on the window");
// Select the testTab
aDestWindow.gBrowser.selectedTab = testTab;
// Ensure that this tab has no history entries
let sessionHistoryCount = yield new Promise(resolve => {
SessionStore.getSessionHistory(gBrowser.selectedTab, function(sessionHistory) {
resolve(sessionHistory.entries.length);
});
});
ok(sessionHistoryCount < 2,
`The test tab has 1 or fewer history entries. sessionHistoryCount=${sessionHistoryCount}`);
// Ensure that this tab is on about:blank
is(testTab.linkedBrowser.currentURI.spec, "about:blank",
"The test tab is on about:blank");
// Ensure that this tab's document has no child nodes
yield ContentTask.spawn(testTab.linkedBrowser, null, function*() {
ok(!content.document.body.hasChildNodes(),
"The test tab has no child nodes");
});
ok(!testTab.hasAttribute("busy"),
"The test tab doesn't have the busy attribute");
// Wait for the Awesomebar popup to appear.
yield promiseAutocompleteResultPopup(testURL, aDestWindow);
info(`awesomebar popup appeared. aExpectSwitch: ${aExpectSwitch}`);
// Make sure the last match is selected.
let {controller, popup} = aDestWindow.gURLBar;
while (popup.selectedIndex < controller.matchCount - 1) {
info("handling key navigation for DOM_VK_DOWN key");
controller.handleKeyNavigation(KeyEvent.DOM_VK_DOWN);
}
let awaitTabSwitch;
if (aExpectSwitch) {
awaitTabSwitch = BrowserTestUtils.removeTab(testTab, {dontRemove: true})
}
// Execute the selected action.
controller.handleEnter(true);
info("sent Enter command to the controller");
if (aExpectSwitch) {
// If we expect a tab switch then the current tab
// will be closed and we switch to the other tab.
yield awaitTabSwitch;
} else {
// If we don't expect a tab switch then wait for the tab to load.
yield BrowserTestUtils.browserLoaded(testTab.linkedBrowser);
}
}
|