browser/tools/mozscreenshots/mozscreenshots/extension/configurations/AppMenu.jsm
author ui.dev <deniskisavi@gmail.com>
Sat, 25 Mar 2023 22:34:18 +0000
changeset 657948 735b73193dc663078843621b2eeccbc2d4abe328
parent 652497 69b339baa090be0952db00997921390338fc0402
permissions -rw-r--r--
Bug 1823719 - Convert toolkit/components/remotebrowserutils to ES modules. r=Standard8. Differential Revision: https://phabricator.services.mozilla.com/D173631

/* 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/. */

"use strict";

var EXPORTED_SYMBOLS = ["AppMenu"];

const { BrowserTestUtils } = ChromeUtils.importESModule(
  "resource://testing-common/BrowserTestUtils.sys.mjs"
);

var AppMenu = {
  init(libDir) {},

  configurations: {
    appMenuMainView: {
      selectors: ["#appMenu-popup"],
      async applyConfig() {
        let browserWindow = Services.wm.getMostRecentWindow(
          "navigator:browser"
        );
        await reopenAppMenu(browserWindow);
      },
    },

    appMenuHistorySubview: {
      selectors: ["#appMenu-popup"],
      async applyConfig() {
        let browserWindow = Services.wm.getMostRecentWindow(
          "navigator:browser"
        );
        await reopenAppMenu(browserWindow);

        browserWindow.document.getElementById("appMenu-library-button").click();
        let view = browserWindow.document.getElementById("appMenu-libraryView");
        let promiseViewShown = BrowserTestUtils.waitForEvent(view, "ViewShown");
        await promiseViewShown;
      },

      verifyConfig: verifyConfigHelper,
    },

    appMenuHelpSubview: {
      selectors: ["#appMenu-popup"],
      async applyConfig() {
        let browserWindow = Services.wm.getMostRecentWindow(
          "navigator:browser"
        );
        await reopenAppMenu(browserWindow);

        browserWindow.document.getElementById("appMenu-help-button2").click();
        let view = browserWindow.document.getElementById("PanelUI-helpView");
        let promiseViewShown = BrowserTestUtils.waitForEvent(view, "ViewShown");
        await promiseViewShown;
      },

      verifyConfig: verifyConfigHelper,
    },
  },
};

async function reopenAppMenu(browserWindow) {
  browserWindow.PanelUI.hide();
  let promiseViewShown = BrowserTestUtils.waitForEvent(
    browserWindow.PanelUI.panel,
    "ViewShown"
  );
  browserWindow.PanelUI.show();
  await promiseViewShown;
}

function verifyConfigHelper() {
  if (isCustomizing()) {
    return "navigator:browser has the customizing attribute";
  }
  return undefined;
}

function isCustomizing() {
  let browserWindow = Services.wm.getMostRecentWindow("navigator:browser");
  if (browserWindow.document.documentElement.hasAttribute("customizing")) {
    return true;
  }
  return false;
}