forked from mirrors/gecko-dev
		
	 2a01092c90
			
		
	
	
		2a01092c90
		
	
	
	
	
		
			
			Renames all instances of the snake_case identifier to camelCase to match more closely to idiomatic JavaScript and to existing conventions throughout the code base. Differential Revision: https://phabricator.services.mozilla.com/D198826
		
			
				
	
	
		
			115 lines
		
	
	
	
		
			3.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
	
		
			3.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* Any copyright is dedicated to the Public Domain.
 | |
|    http://creativecommons.org/publicdomain/zero/1.0/ */
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| /**
 | |
|  * Tests that if only hidden widgets are overflowed that the
 | |
|  * OverflowableToolbar won't show the overflow panel anchor.
 | |
|  */
 | |
| 
 | |
| const kHiddenButtonID = "fake-hidden-button";
 | |
| const kDisplayNoneButtonID = "display-none-button";
 | |
| const kWebExtensionButtonID1 = "fake-webextension-button-1";
 | |
| const kWebExtensionButtonID2 = "fake-webextension-button-2";
 | |
| let gWin = null;
 | |
| 
 | |
| add_setup(async function () {
 | |
|   gWin = await BrowserTestUtils.openNewBrowserWindow();
 | |
| 
 | |
|   // To make it easier to write a test where we can control overflowing
 | |
|   // for a test that can run in a bunch of environments with slightly
 | |
|   // different rules on when things will overflow, we'll go ahead and
 | |
|   // just remove everything removable from the nav-bar by default. Then
 | |
|   // we'll add our hidden item, and a single WebExtension item, and
 | |
|   // force toolbar overflow.
 | |
|   let widgetIDs = CustomizableUI.getWidgetIdsInArea(CustomizableUI.AREA_NAVBAR);
 | |
|   for (let widgetID of widgetIDs) {
 | |
|     if (CustomizableUI.isWidgetRemovable(widgetID)) {
 | |
|       CustomizableUI.removeWidgetFromArea(widgetID);
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   CustomizableUI.createWidget({
 | |
|     id: kWebExtensionButtonID1,
 | |
|     label: "Test WebExtension widget 1",
 | |
|     defaultArea: CustomizableUI.AREA_NAVBAR,
 | |
|     webExtension: true,
 | |
|   });
 | |
| 
 | |
|   CustomizableUI.createWidget({
 | |
|     id: kWebExtensionButtonID2,
 | |
|     label: "Test WebExtension widget 2",
 | |
|     defaultArea: CustomizableUI.AREA_NAVBAR,
 | |
|     webExtension: true,
 | |
|   });
 | |
| 
 | |
|   // Let's force the WebExtension widgets to be significantly wider. This
 | |
|   // just makes it easier to ensure that both of these (which are to the left
 | |
|   // of the hidden widget) get overflowed.
 | |
|   for (let webExtID of [kWebExtensionButtonID1, kWebExtensionButtonID2]) {
 | |
|     let webExtNode = CustomizableUI.getWidget(webExtID).forWindow(gWin).node;
 | |
|     webExtNode.style.minWidth = "100px";
 | |
|   }
 | |
| 
 | |
|   CustomizableUI.createWidget({
 | |
|     id: kHiddenButtonID,
 | |
|     label: "Test hidden=true widget",
 | |
|     defaultArea: CustomizableUI.AREA_NAVBAR,
 | |
|   });
 | |
| 
 | |
|   // Now hide the button with hidden=true so that it has no dimensions.
 | |
|   let hiddenButtonNode =
 | |
|     CustomizableUI.getWidget(kHiddenButtonID).forWindow(gWin).node;
 | |
|   hiddenButtonNode.hidden = true;
 | |
| 
 | |
|   CustomizableUI.createWidget({
 | |
|     id: kDisplayNoneButtonID,
 | |
|     label: "Test display:none widget",
 | |
|     defaultArea: CustomizableUI.AREA_NAVBAR,
 | |
|   });
 | |
| 
 | |
|   // Now hide the button with display: none so that it has no dimensions.
 | |
|   let displayNoneButtonNode =
 | |
|     CustomizableUI.getWidget(kDisplayNoneButtonID).forWindow(gWin).node;
 | |
|   displayNoneButtonNode.style.display = "none";
 | |
| 
 | |
|   registerCleanupFunction(async () => {
 | |
|     CustomizableUI.destroyWidget(kWebExtensionButtonID1);
 | |
|     CustomizableUI.destroyWidget(kWebExtensionButtonID2);
 | |
|     CustomizableUI.destroyWidget(kHiddenButtonID);
 | |
|     CustomizableUI.destroyWidget(kDisplayNoneButtonID);
 | |
|     await BrowserTestUtils.closeWindow(gWin);
 | |
|     await CustomizableUI.reset();
 | |
|   });
 | |
| });
 | |
| 
 | |
| add_task(async function test_hidden_widget_overflow() {
 | |
|   gWin.resizeTo(kForceOverflowWidthPx, window.outerHeight);
 | |
| 
 | |
|   // Wait until the left-most fake WebExtension button is overflowing.
 | |
|   let webExtNode = CustomizableUI.getWidget(kWebExtensionButtonID1).forWindow(
 | |
|     gWin
 | |
|   ).node;
 | |
|   await BrowserTestUtils.waitForMutationCondition(
 | |
|     webExtNode,
 | |
|     { attributes: true },
 | |
|     () => {
 | |
|       return webExtNode.hasAttribute("overflowedItem");
 | |
|     }
 | |
|   );
 | |
| 
 | |
|   let hiddenButtonNode =
 | |
|     CustomizableUI.getWidget(kHiddenButtonID).forWindow(gWin).node;
 | |
|   Assert.ok(
 | |
|     hiddenButtonNode.hasAttribute("overflowedItem"),
 | |
|     "Hidden button should be overflowed."
 | |
|   );
 | |
| 
 | |
|   let overflowButton = gWin.document.getElementById("nav-bar-overflow-button");
 | |
| 
 | |
|   Assert.ok(
 | |
|     !BrowserTestUtils.isVisible(overflowButton),
 | |
|     "Overflow panel button should be hidden."
 | |
|   );
 | |
| });
 |