summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/tabs/browser_tabswitch_contextmenu.js
blob: bd671a86c67ad9fe942a16175758ae06f2dfa542 (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
/* Any copyright is dedicated to the Public Domain.
   http://creativecommons.org/publicdomain/zero/1.0/ */

"use strict";

/**
 * Don't switch tabs via the keyboard while the contextmenu is open.
 */
add_task(async function cant_tabswitch_mid_contextmenu() {
  let tab1 = await BrowserTestUtils.openNewForegroundTab(
    gBrowser,
    "https://example.com/idontexist"
  );
  let tab2 = await BrowserTestUtils.openNewForegroundTab(
    gBrowser,
    "https://example.org/idontexist"
  );

  const contextMenu = document.getElementById("contentAreaContextMenu");
  let promisePopupShown = BrowserTestUtils.waitForPopupEvent(
    contextMenu,
    "shown"
  );
  await BrowserTestUtils.synthesizeMouse(
    "body",
    0,
    0,
    {
      type: "contextmenu",
      button: 2,
    },
    tab2.linkedBrowser
  );
  await promisePopupShown;
  EventUtils.synthesizeKey("VK_TAB", { accelKey: true });
  ok(tab2.selected, "tab2 should stay selected");
  BrowserTestUtils.removeTab(tab1);
  BrowserTestUtils.removeTab(tab2);
  let promisePopupHidden = BrowserTestUtils.waitForPopupEvent(
    contextMenu,
    "hidden"
  );
  contextMenu.hidePopup();
  await promisePopupHidden;
});