Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* 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);
});