forked from mirrors/gecko-dev
		
	 04a7b8f7ca
			
		
	
	
		04a7b8f7ca
		
	
	
	
	
		
			
			MozReview-Commit-ID: 4epuVQVCJPH --HG-- extra : rebase_source : aef306464344009feb0e28295a0159cc9aab19ad
		
			
				
	
	
		
			82 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| 
 | |
| var overflowPanel = document.getElementById("widget-overflow");
 | |
| 
 | |
| const isOSX = (Services.appinfo.OS === "Darwin");
 | |
| 
 | |
| var originalWindowWidth;
 | |
| registerCleanupFunction(function() {
 | |
|   overflowPanel.removeAttribute("animate");
 | |
|   window.resizeTo(originalWindowWidth, window.outerHeight);
 | |
| });
 | |
| 
 | |
| // Right-click on an item within the overflow panel should
 | |
| // show a context menu with options to move it.
 | |
| add_task(async function() {
 | |
|   await SpecialPowers.pushPrefEnv({set: [["browser.photon.structure.enabled", false]]});
 | |
| 
 | |
|   overflowPanel.setAttribute("animate", "false");
 | |
| 
 | |
|   originalWindowWidth = window.outerWidth;
 | |
|   let navbar = document.getElementById(CustomizableUI.AREA_NAVBAR);
 | |
|   ok(!navbar.hasAttribute("overflowing"), "Should start with a non-overflowing toolbar.");
 | |
|   window.resizeTo(400, window.outerHeight);
 | |
| 
 | |
|   await waitForCondition(() => navbar.hasAttribute("overflowing"));
 | |
|   ok(navbar.hasAttribute("overflowing"), "Should have an overflowing toolbar.");
 | |
| 
 | |
|   let chevron = document.getElementById("nav-bar-overflow-button");
 | |
|   let shownPanelPromise = promisePanelElementShown(window, overflowPanel);
 | |
|   chevron.click();
 | |
|   await shownPanelPromise;
 | |
| 
 | |
|   let contextMenu = document.getElementById("toolbar-context-menu");
 | |
|   let shownContextPromise = popupShown(contextMenu);
 | |
|   let sidebarButton = document.getElementById("sidebar-button");
 | |
|   ok(sidebarButton, "sidebar-button was found");
 | |
|   is(sidebarButton.getAttribute("overflowedItem"), "true", "Sidebar button is overflowing");
 | |
|   EventUtils.synthesizeMouse(sidebarButton, 2, 2, {type: "contextmenu", button: 2});
 | |
|   await shownContextPromise;
 | |
| 
 | |
|   is(overflowPanel.state, "open", "The widget overflow panel should still be open.");
 | |
| 
 | |
|   let expectedEntries = [
 | |
|     [".customize-context-moveToPanel", true],
 | |
|     [".customize-context-removeFromToolbar", true],
 | |
|     ["---"]
 | |
|   ];
 | |
|   if (!isOSX) {
 | |
|     expectedEntries.push(["#toggle_toolbar-menubar", true]);
 | |
|   }
 | |
|   expectedEntries.push(
 | |
|     ["#toggle_PersonalToolbar", true],
 | |
|     ["---"],
 | |
|     [".viewCustomizeToolbar", true]
 | |
|   );
 | |
|   checkContextMenu(contextMenu, expectedEntries);
 | |
| 
 | |
|   let hiddenContextPromise = popupHidden(contextMenu);
 | |
|   let hiddenPromise = promisePanelElementHidden(window, overflowPanel);
 | |
|   let moveToPanel = contextMenu.querySelector(".customize-context-moveToPanel");
 | |
|   if (moveToPanel) {
 | |
|     moveToPanel.click();
 | |
|   }
 | |
|   contextMenu.hidePopup();
 | |
|   await hiddenContextPromise;
 | |
|   await hiddenPromise;
 | |
| 
 | |
|   let sidebarButtonPlacement = CustomizableUI.getPlacementOfWidget("sidebar-button");
 | |
|   ok(sidebarButtonPlacement, "Sidebar button should still have a placement");
 | |
|   is(sidebarButtonPlacement && sidebarButtonPlacement.area, "PanelUI-contents", "Sidebar button should be in the panel now");
 | |
|   CustomizableUI.reset();
 | |
| 
 | |
|   // In some cases, it can take a tick for the navbar to overflow again. Wait for it:
 | |
|   await waitForCondition(() => navbar.hasAttribute("overflowing"));
 | |
|   ok(navbar.hasAttribute("overflowing"), "Should have an overflowing toolbar.");
 | |
| 
 | |
|   sidebarButtonPlacement = CustomizableUI.getPlacementOfWidget("sidebar-button");
 | |
|   ok(sidebarButtonPlacement, "Sidebar button should still have a placement");
 | |
|   is(sidebarButtonPlacement && sidebarButtonPlacement.area, "nav-bar", "Sidebar button should be back in the navbar now");
 | |
| 
 | |
|   is(sidebarButton.getAttribute("overflowedItem"), "true", "Sidebar button should still be overflowed");
 | |
| });
 |