summaryrefslogtreecommitdiffstats
path: root/browser/components/urlbar/tests/browser/browser_switchToTab_fullUrl_repeatedKeydown.js
blob: 8f80ac5841a451624242c3c67a0e3eb00358b5bb (plain)
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
/* 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);
});