forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			150 lines
		
	
	
	
		
			5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			150 lines
		
	
	
	
		
			5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* Any copyright is dedicated to the Public Domain.
 | 
						|
 * http://creativecommons.org/publicdomain/zero/1.0/ */
 | 
						|
 | 
						|
"use strict";
 | 
						|
 | 
						|
var gTestTab;
 | 
						|
var gContentAPI;
 | 
						|
 | 
						|
function test() {
 | 
						|
  UITourTest();
 | 
						|
}
 | 
						|
 | 
						|
var tests = [
 | 
						|
  function test_info_addons_auto_open_close(done) {
 | 
						|
    let popup = document.getElementById("UITourTooltip");
 | 
						|
    gContentAPI.showInfo("addons", "Addons", "Let's get addons!");
 | 
						|
 | 
						|
    let shownPromise = promisePanelShown(window);
 | 
						|
    shownPromise.then(() => {
 | 
						|
      UITour.getTarget(window, "addons").then(addonsTarget => {
 | 
						|
        waitForPopupAtAnchor(
 | 
						|
          popup,
 | 
						|
          addonsTarget.node,
 | 
						|
          function checkPanelIsOpen() {
 | 
						|
            isnot(
 | 
						|
              PanelUI.panel.state,
 | 
						|
              "closed",
 | 
						|
              "Panel should have opened before the popup anchored"
 | 
						|
            );
 | 
						|
            ok(
 | 
						|
              PanelUI.panel.hasAttribute("noautohide"),
 | 
						|
              "@noautohide on the menu panel should have been set"
 | 
						|
            );
 | 
						|
 | 
						|
            // Move the info outside which should close the app menu.
 | 
						|
            gContentAPI.showInfo("appMenu", "Open Me", "You know you want to");
 | 
						|
            UITour.getTarget(window, "appMenu").then(target => {
 | 
						|
              waitForPopupAtAnchor(
 | 
						|
                popup,
 | 
						|
                target.node,
 | 
						|
                function checkPanelIsClosed() {
 | 
						|
                  isnot(
 | 
						|
                    PanelUI.panel.state,
 | 
						|
                    "open",
 | 
						|
                    "Panel should have closed after the info moved elsewhere."
 | 
						|
                  );
 | 
						|
                  ok(
 | 
						|
                    !PanelUI.panel.hasAttribute("noautohide"),
 | 
						|
                    "@noautohide on the menu panel should have been cleaned up on close"
 | 
						|
                  );
 | 
						|
                  done();
 | 
						|
                },
 | 
						|
                "Info should move to the appMenu button"
 | 
						|
              );
 | 
						|
            });
 | 
						|
          },
 | 
						|
          "Info panel should be anchored to the addons button"
 | 
						|
        );
 | 
						|
      });
 | 
						|
    });
 | 
						|
  },
 | 
						|
  function test_info_addons_manual_open_close(done) {
 | 
						|
    let popup = document.getElementById("UITourTooltip");
 | 
						|
    // Manually open the app menu then show an info panel there. The menu should remain open.
 | 
						|
    let shownPromise = promisePanelShown(window);
 | 
						|
    gContentAPI.showMenu("appMenu");
 | 
						|
    shownPromise
 | 
						|
      .then(() => {
 | 
						|
        isnot(PanelUI.panel.state, "closed", "Panel should have opened");
 | 
						|
        ok(
 | 
						|
          PanelUI.panel.hasAttribute("noautohide"),
 | 
						|
          "@noautohide on the menu panel should have been set"
 | 
						|
        );
 | 
						|
        gContentAPI.showInfo("addons", "Addons", "Let's get addons!");
 | 
						|
 | 
						|
        UITour.getTarget(window, "addons").then(customizeTarget => {
 | 
						|
          waitForPopupAtAnchor(
 | 
						|
            popup,
 | 
						|
            customizeTarget.node,
 | 
						|
            function() {
 | 
						|
              isnot(
 | 
						|
                PanelUI.panel.state,
 | 
						|
                "closed",
 | 
						|
                "Panel should still be open"
 | 
						|
              );
 | 
						|
              ok(
 | 
						|
                PanelUI.panel.hasAttribute("noautohide"),
 | 
						|
                "@noautohide on the menu panel should still be set"
 | 
						|
              );
 | 
						|
 | 
						|
              // Move the info outside which shouldn't close the app menu since it was manually opened.
 | 
						|
              gContentAPI.showInfo(
 | 
						|
                "appMenu",
 | 
						|
                "Open Me",
 | 
						|
                "You know you want to"
 | 
						|
              );
 | 
						|
              UITour.getTarget(window, "appMenu").then(target => {
 | 
						|
                waitForPopupAtAnchor(
 | 
						|
                  popup,
 | 
						|
                  target.node,
 | 
						|
                  function() {
 | 
						|
                    isnot(
 | 
						|
                      PanelUI.panel.state,
 | 
						|
                      "closed",
 | 
						|
                      "Menu should remain open since UITour didn't open it in the first place"
 | 
						|
                    );
 | 
						|
                    waitForElementToBeHidden(window.PanelUI.panel, () => {
 | 
						|
                      ok(
 | 
						|
                        !PanelUI.panel.hasAttribute("noautohide"),
 | 
						|
                        "@noautohide on the menu panel should have been cleaned up on close"
 | 
						|
                      );
 | 
						|
                      done();
 | 
						|
                    });
 | 
						|
                    gContentAPI.hideMenu("appMenu");
 | 
						|
                  },
 | 
						|
                  "Info should move to the appMenu button"
 | 
						|
                );
 | 
						|
              });
 | 
						|
            },
 | 
						|
            "Info should be shown after showInfo() for fixed menu panel items"
 | 
						|
          );
 | 
						|
        });
 | 
						|
      })
 | 
						|
      .catch(console.error);
 | 
						|
  },
 | 
						|
  taskify(async function test_bookmarks_menu() {
 | 
						|
    CustomizableUI.addWidgetToArea(
 | 
						|
      "bookmarks-menu-button",
 | 
						|
      CustomizableUI.AREA_NAVBAR,
 | 
						|
      0
 | 
						|
    );
 | 
						|
    registerCleanupFunction(() =>
 | 
						|
      CustomizableUI.removeWidgetFromArea("bookmarks-menu-button")
 | 
						|
    );
 | 
						|
 | 
						|
    let bookmarksMenuButton = document.getElementById("bookmarks-menu-button");
 | 
						|
 | 
						|
    is(bookmarksMenuButton.open, false, "Menu should initially be closed");
 | 
						|
    gContentAPI.showMenu("bookmarks");
 | 
						|
 | 
						|
    await waitForConditionPromise(() => {
 | 
						|
      return bookmarksMenuButton.open;
 | 
						|
    }, "Menu should be visible after showMenu()");
 | 
						|
 | 
						|
    gContentAPI.hideMenu("bookmarks");
 | 
						|
    await waitForConditionPromise(() => {
 | 
						|
      return !bookmarksMenuButton.open;
 | 
						|
    }, "Menu should be hidden after hideMenu()");
 | 
						|
  }),
 | 
						|
];
 |