summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/urlbar/browser_bug1003461-switchtab-override.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/base/content/test/urlbar/browser_bug1003461-switchtab-override.js')
-rw-r--r--browser/base/content/test/urlbar/browser_bug1003461-switchtab-override.js61
1 files changed, 61 insertions, 0 deletions
diff --git a/browser/base/content/test/urlbar/browser_bug1003461-switchtab-override.js b/browser/base/content/test/urlbar/browser_bug1003461-switchtab-override.js
new file mode 100644
index 000000000..89f604491
--- /dev/null
+++ b/browser/base/content/test/urlbar/browser_bug1003461-switchtab-override.js
@@ -0,0 +1,61 @@
+/* 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(function* test_switchtab_override() {
+ let testURL = "http://example.org/browser/browser/base/content/test/urlbar/dummy_page.html";
+
+ info("Opening first tab");
+ let tab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, testURL);
+
+ info("Opening and selecting second tab");
+ let secondTab = gBrowser.selectedTab = gBrowser.addTab();
+ registerCleanupFunction(() => {
+ try {
+ gBrowser.removeTab(tab);
+ gBrowser.removeTab(secondTab);
+ } catch (ex) { /* tabs may have already been closed in case of failure */ }
+ });
+
+ info("Wait for autocomplete")
+ let deferred = Promise.defer();
+ let onSearchComplete = gURLBar.onSearchComplete;
+ registerCleanupFunction(() => {
+ gURLBar.onSearchComplete = onSearchComplete;
+ });
+ gURLBar.onSearchComplete = function () {
+ ok(gURLBar.popupOpen, "The autocomplete popup is correctly open");
+ onSearchComplete.apply(gURLBar);
+ deferred.resolve();
+ }
+
+ gURLBar.focus();
+ gURLBar.value = "dummy_pag";
+ EventUtils.synthesizeKey("e", {});
+ yield deferred.promise;
+
+ info("Select second autocomplete popup entry");
+ EventUtils.synthesizeKey("VK_DOWN", {});
+ ok(/moz-action:switchtab/.test(gURLBar.value), "switch to tab entry found");
+
+ info("Override switch-to-tab");
+ deferred = Promise.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, false);
+ registerCleanupFunction(() => {
+ gBrowser.tabContainer.removeEventListener("TabSelect", onTabSelect, false);
+ });
+ // Otherwise it would load the page.
+ BrowserTestUtils.browserLoaded(secondTab.linkedBrowser).then(deferred.resolve);
+
+ EventUtils.synthesizeKey("VK_SHIFT", { type: "keydown" });
+ EventUtils.synthesizeKey("VK_RETURN", { });
+ info(`gURLBar.value = ${gURLBar.value}`);
+ EventUtils.synthesizeKey("VK_SHIFT", { type: "keyup" });
+ yield deferred.promise;
+
+ yield PlacesTestUtils.clearHistory();
+});