mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-10-31 16:28:05 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			69 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* Any copyright is dedicated to the Public Domain.
 | |
|  * http://creativecommons.org/publicdomain/zero/1.0/
 | |
|  */
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| function getNavBarEndPosition() {
 | |
|   let navBar = document.getElementById("nav-bar");
 | |
|   let boundingRect = navBar.getBoundingClientRect();
 | |
| 
 | |
|   // Find where the nav-bar is vertically.
 | |
|   let y = boundingRect.top + Math.floor(boundingRect.height / 2);
 | |
|   // Use the last pixel of the screen since it is maximized.
 | |
|   let x = boundingRect.width - 1;
 | |
|   return { x, y };
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Clicking the right end of a maximized window should open the hamburger menu.
 | |
|  */
 | |
| add_task(async function test_clicking_hamburger_edge_fitts() {
 | |
|   if (window.windowState != window.STATE_MAXIMIZED) {
 | |
|     info(`Waiting for maximize, current state: ${window.windowState}`);
 | |
|     let resizeDone = BrowserTestUtils.waitForEvent(
 | |
|       window,
 | |
|       "resize",
 | |
|       false,
 | |
|       () => window.outerWidth >= screen.width - 1
 | |
|     );
 | |
|     let maximizeDone = BrowserTestUtils.waitForEvent(window, "sizemodechange");
 | |
|     window.maximize();
 | |
|     await maximizeDone;
 | |
|     await resizeDone;
 | |
|   }
 | |
| 
 | |
|   is(window.windowState, window.STATE_MAXIMIZED, "should be maximized");
 | |
| 
 | |
|   let { x, y } = getNavBarEndPosition();
 | |
|   info(`Clicking in ${x}, ${y}`);
 | |
| 
 | |
|   let popupHiddenResolve;
 | |
|   let popupHiddenPromise = new Promise(resolve => {
 | |
|     popupHiddenResolve = resolve;
 | |
|   });
 | |
|   async function onPopupHidden() {
 | |
|     PanelUI.panel.removeEventListener("popuphidden", onPopupHidden);
 | |
| 
 | |
|     info("Waiting for restore");
 | |
| 
 | |
|     let restoreDone = BrowserTestUtils.waitForEvent(window, "sizemodechange");
 | |
|     window.restore();
 | |
|     await restoreDone;
 | |
| 
 | |
|     popupHiddenResolve();
 | |
|   }
 | |
|   function onPopupShown() {
 | |
|     PanelUI.panel.removeEventListener("popupshown", onPopupShown);
 | |
|     ok(true, "Clicking at the far edge of the window opened the menu popup.");
 | |
|     PanelUI.panel.addEventListener("popuphidden", onPopupHidden);
 | |
|     PanelUI.hide();
 | |
|   }
 | |
|   registerCleanupFunction(function () {
 | |
|     PanelUI.panel.removeEventListener("popupshown", onPopupShown);
 | |
|     PanelUI.panel.removeEventListener("popuphidden", onPopupHidden);
 | |
|   });
 | |
|   PanelUI.panel.addEventListener("popupshown", onPopupShown);
 | |
|   EventUtils.synthesizeMouseAtPoint(x, y, {}, window);
 | |
|   await popupHiddenPromise;
 | |
| });
 | 
