summaryrefslogtreecommitdiffstats
path: root/browser/components/urlbar/tests/browser/browser_switchToTab_closes_newtab.js
blob: 5031491d7e731ac9be0edec68d8cac94c3cd83d4 (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
61
62
63
/* 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 switch to tab from a blank tab switches and then closes
 * the blank tab.
 */

"use strict";

add_task(async function test_switchToTab_closes() {
  let testURL =
    "http://example.org/browser/browser/components/urlbar/tests/browser/dummy_page.html";

  // Open the base tab
  let baseTab = await BrowserTestUtils.openNewForegroundTab(gBrowser, testURL);

  if (baseTab.linkedBrowser.currentURI.spec == "about:blank") {
    return;
  }

  // Open a blank tab to start the test from.
  let testTab = await BrowserTestUtils.openNewForegroundTab(gBrowser);

  // Functions for TabClose and TabSelect
  let tabClosePromise = BrowserTestUtils.waitForEvent(
    gBrowser.tabContainer,
    "TabClose",
    false,
    event => {
      return event.originalTarget == testTab;
    }
  );
  let tabSelectPromise = BrowserTestUtils.waitForEvent(
    gBrowser.tabContainer,
    "TabSelect",
    false,
    event => {
      return event.originalTarget == baseTab;
    }
  );

  await UrlbarTestUtils.promiseAutocompleteResultPopup({
    window,
    value: "dummy",
  });

  // The first result is the heuristic, the second will be the switch to tab.
  let element = await UrlbarTestUtils.waitForAutocompleteResultAt(window, 1);
  EventUtils.synthesizeMouseAtCenter(element, {}, window);

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