tor-browser

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

browser_panel_menulist.js (1700B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 const kViewID = "panelview-with-menulist";
      7 
      8 /**
      9 * When there's a menulist inside a panelview, closing it shouldn't close the panel.
     10 */
     11 add_task(async function test_closing_menulist_should_not_close_panel() {
     12  let viewCache = document.getElementById("appMenu-viewCache");
     13  let panelview = document.createXULElement("panelview");
     14  panelview.id = kViewID;
     15  let menulist = document.createXULElement("menulist");
     16  let popup = document.createXULElement("menupopup");
     17  for (let item of ["one", "two"]) {
     18    let menuitem = document.createXULElement("menuitem");
     19    menuitem.id = `menuitem-${item}`;
     20    menuitem.setAttribute("label", item);
     21    popup.append(menuitem);
     22  }
     23  menulist.append(popup);
     24  panelview.append(menulist);
     25  viewCache.append(panelview);
     26  await PanelUI.showSubView(kViewID, PanelUI.menuButton);
     27  let panel = panelview.closest("panel");
     28 
     29  // Ensure that not only has the subview started showing, the panel is
     30  // all the way open:
     31  await BrowserTestUtils.waitForPopupEvent(panel, "shown");
     32 
     33  registerCleanupFunction(async () => {
     34    if (panel && panel.state != "closed") {
     35      let panelGone = BrowserTestUtils.waitForPopupEvent(panel, "hidden");
     36      panel.hidePopup();
     37      await panelGone;
     38    }
     39    panelview.remove();
     40  });
     41 
     42  let shown = BrowserTestUtils.waitForPopupEvent(popup, "shown");
     43  menulist.openMenu(true);
     44  await shown;
     45  let hidden = BrowserTestUtils.waitForPopupEvent(popup, "hidden");
     46  popup.activateItem(popup.firstElementChild);
     47  await hidden;
     48 
     49  Assert.equal(panel?.state, "open", "Panel should still be open.");
     50 });