forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			96 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* 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";
 | |
| 
 | |
| const kToolbarName = "test-new-overflowable-toolbar";
 | |
| const kTestWidgetPrefix = "test-widget-for-overflowable-toolbar-";
 | |
| 
 | |
| add_task(async function addOverflowingToolbar() {
 | |
|   let originalWindowWidth = window.outerWidth;
 | |
| 
 | |
|   let widgetIds = [];
 | |
|   registerCleanupFunction(() => {
 | |
|     try {
 | |
|       for (let id of widgetIds) {
 | |
|         CustomizableUI.destroyWidget(id);
 | |
|       }
 | |
|     } catch (ex) {
 | |
|       Cu.reportError(ex);
 | |
|     }
 | |
|   });
 | |
| 
 | |
|   for (let i = 0; i < 10; i++) {
 | |
|     let id = kTestWidgetPrefix + i;
 | |
|     widgetIds.push(id);
 | |
|     let spec = {
 | |
|       id,
 | |
|       type: "button",
 | |
|       removable: true,
 | |
|       label: "test",
 | |
|       tooltiptext: "" + i,
 | |
|     };
 | |
|     CustomizableUI.createWidget(spec);
 | |
|   }
 | |
| 
 | |
|   let toolbarNode = createOverflowableToolbarWithPlacements(
 | |
|     kToolbarName,
 | |
|     widgetIds
 | |
|   );
 | |
|   assertAreaPlacements(kToolbarName, widgetIds);
 | |
| 
 | |
|   for (let id of widgetIds) {
 | |
|     document.getElementById(id).style.minWidth = "200px";
 | |
|   }
 | |
| 
 | |
|   isnot(
 | |
|     toolbarNode.overflowable,
 | |
|     null,
 | |
|     "Toolbar should have overflowable controller"
 | |
|   );
 | |
|   isnot(
 | |
|     CustomizableUI.getCustomizationTarget(toolbarNode),
 | |
|     null,
 | |
|     "Toolbar should have customization target"
 | |
|   );
 | |
|   isnot(
 | |
|     CustomizableUI.getCustomizationTarget(toolbarNode),
 | |
|     toolbarNode,
 | |
|     "Customization target should not be toolbar node"
 | |
|   );
 | |
| 
 | |
|   let oldChildCount = CustomizableUI.getCustomizationTarget(toolbarNode)
 | |
|     .childElementCount;
 | |
|   let overflowableList = document.getElementById(
 | |
|     kToolbarName + "-overflow-list"
 | |
|   );
 | |
|   let oldOverflowCount = overflowableList.childElementCount;
 | |
| 
 | |
|   isnot(oldChildCount, 0, "Toolbar should have non-overflowing widgets");
 | |
| 
 | |
|   window.resizeTo(kForceOverflowWidthPx, window.outerHeight);
 | |
|   await TestUtils.waitForCondition(() =>
 | |
|     toolbarNode.hasAttribute("overflowing")
 | |
|   );
 | |
|   ok(
 | |
|     toolbarNode.hasAttribute("overflowing"),
 | |
|     "Should have an overflowing toolbar."
 | |
|   );
 | |
|   ok(
 | |
|     CustomizableUI.getCustomizationTarget(toolbarNode).childElementCount <
 | |
|       oldChildCount,
 | |
|     "Should have fewer children."
 | |
|   );
 | |
|   ok(
 | |
|     overflowableList.childElementCount > oldOverflowCount,
 | |
|     "Should have more overflowed widgets."
 | |
|   );
 | |
| 
 | |
|   window.resizeTo(originalWindowWidth, window.outerHeight);
 | |
| });
 | |
| 
 | |
| add_task(async function asyncCleanup() {
 | |
|   removeCustomToolbars();
 | |
|   await resetCustomization();
 | |
| });
 | 
