summaryrefslogtreecommitdiffstats
path: root/browser/components/urlbar/tests/browser/browser_switchToTab_fullUrl_repeatedKeydown.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/urlbar/tests/browser/browser_switchToTab_fullUrl_repeatedKeydown.js')
-rw-r--r--browser/components/urlbar/tests/browser/browser_switchToTab_fullUrl_repeatedKeydown.js60
1 files changed, 60 insertions, 0 deletions
diff --git a/browser/components/urlbar/tests/browser/browser_switchToTab_fullUrl_repeatedKeydown.js b/browser/components/urlbar/tests/browser/browser_switchToTab_fullUrl_repeatedKeydown.js
new file mode 100644
index 0000000000..8f80ac5841
--- /dev/null
+++ b/browser/components/urlbar/tests/browser/browser_switchToTab_fullUrl_repeatedKeydown.js
@@ -0,0 +1,60 @@
+/* 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 tests that typing a url and picking a switch to tab actually switches
+ * to the right tab. Also tests repeated keydown/keyup events don't confuse
+ * override.
+ */
+
+"use strict";
+
+add_task(async function test_switchToTab_url() {
+ const TEST_URL = "https://example.org/browser/";
+
+ let baseTab = await BrowserTestUtils.openNewForegroundTab(gBrowser, TEST_URL);
+ let testTab = await BrowserTestUtils.openNewForegroundTab(gBrowser);
+
+ // Functions for TabClose and TabSelect
+ let tabClosePromise = BrowserTestUtils.waitForEvent(
+ gBrowser.tabContainer,
+ "TabClose",
+ false,
+ event => event.target == testTab
+ );
+ let tabSelectPromise = BrowserTestUtils.waitForEvent(
+ gBrowser.tabContainer,
+ "TabSelect",
+ false,
+ event => event.target == baseTab
+ );
+
+ await UrlbarTestUtils.promiseAutocompleteResultPopup({
+ window,
+ value: TEST_URL,
+ fireInputEvent: true,
+ });
+ // The first result is the heuristic, the second will be the switch to tab.
+ await UrlbarTestUtils.waitForAutocompleteResultAt(window, 1);
+
+ // Simulate a long press, on some platforms (Windows) it can generate multiple
+ // keydown events.
+ EventUtils.synthesizeKey("VK_SHIFT", { type: "keydown", repeat: 3 });
+ EventUtils.synthesizeKey("VK_SHIFT", { type: "keyup" });
+
+ // Pick the switch to tab result.
+ EventUtils.synthesizeKey("KEY_ArrowDown");
+ EventUtils.synthesizeKey("KEY_Enter");
+
+ await Promise.all([tabSelectPromise, tabClosePromise]);
+
+ // Confirm that the selected tab is now the base tab
+ Assert.equal(
+ gBrowser.selectedTab,
+ baseTab,
+ "Should have switched to the correct tab"
+ );
+
+ gBrowser.removeTab(baseTab);
+});