tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

head.js (1536B)


      1 async function openSelectPopup(
      2  mode = "key",
      3  selector = "select",
      4  win = window
      5 ) {
      6  info("Opening select popup");
      7  let popupShownPromise = BrowserTestUtils.waitForSelectPopupShown(win);
      8  if (mode == "click" || mode == "mousedown") {
      9    let mousePromise;
     10    if (mode == "click") {
     11      mousePromise = BrowserTestUtils.synthesizeMouseAtCenter(
     12        selector,
     13        {},
     14        win.gBrowser.selectedBrowser
     15      );
     16    } else {
     17      mousePromise = BrowserTestUtils.synthesizeMouse(
     18        selector,
     19        5,
     20        5,
     21        { type: "mousedown" },
     22        win.gBrowser.selectedBrowser
     23      );
     24    }
     25    await mousePromise;
     26  } else {
     27    EventUtils.synthesizeKey("KEY_ArrowDown", { altKey: true }, win);
     28  }
     29  return popupShownPromise;
     30 }
     31 
     32 function hideSelectPopup(mode = "enter", win = window) {
     33  let browser = win.gBrowser.selectedBrowser;
     34  let selectClosedPromise = SpecialPowers.spawn(browser, [], async function () {
     35    let { SelectContentHelper } = ChromeUtils.importESModule(
     36      "resource://gre/actors/SelectChild.sys.mjs"
     37    );
     38    return ContentTaskUtils.waitForCondition(() => !SelectContentHelper.open);
     39  });
     40 
     41  if (mode == "escape") {
     42    EventUtils.synthesizeKey("KEY_Escape", {}, win);
     43  } else if (mode == "enter") {
     44    EventUtils.synthesizeKey("KEY_Enter", {}, win);
     45  } else if (mode == "click") {
     46    let popup = win.document.getElementById("ContentSelectDropdown").menupopup;
     47    EventUtils.synthesizeMouseAtCenter(popup.lastElementChild, {}, win);
     48  }
     49 
     50  return selectClosedPromise;
     51 }