diff options
Diffstat (limited to 'browser/base/content/test/urlbar/browser_tabMatchesInAwesomebar_perwindowpb.js')
-rw-r--r-- | browser/base/content/test/urlbar/browser_tabMatchesInAwesomebar_perwindowpb.js | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/browser/base/content/test/urlbar/browser_tabMatchesInAwesomebar_perwindowpb.js b/browser/base/content/test/urlbar/browser_tabMatchesInAwesomebar_perwindowpb.js new file mode 100644 index 000000000..08a18b38a --- /dev/null +++ b/browser/base/content/test/urlbar/browser_tabMatchesInAwesomebar_perwindowpb.js @@ -0,0 +1,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); + } +} |