forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			69 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* Any copyright is dedicated to the Public Domain.
 | |
|    http://creativecommons.org/publicdomain/zero/1.0/ */
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| Services.scriptloader.loadSubScript(
 | |
|   "chrome://mochitests/content/browser/browser/components/downloads/test/browser/head.js",
 | |
|   this
 | |
| );
 | |
| 
 | |
| add_task(
 | |
|   async function test_opening_panel_and_closing_should_not_leave_vsync() {
 | |
|     await SpecialPowers.pushPrefEnv({
 | |
|       set: [["browser.download.autohideButton", false]],
 | |
|     });
 | |
|     await promiseButtonShown("downloads-button");
 | |
| 
 | |
|     const downloadsButton = document.getElementById("downloads-button");
 | |
|     const shownPromise = promisePanelOpened();
 | |
|     EventUtils.synthesizeNativeMouseEvent({
 | |
|       type: "click",
 | |
|       target: downloadsButton,
 | |
|       atCenter: true,
 | |
|     });
 | |
|     await shownPromise;
 | |
| 
 | |
|     is(DownloadsPanel.panel.state, "open", "Check that panel state is 'open'");
 | |
| 
 | |
|     await TestUtils.waitForCondition(
 | |
|       () => !ChromeUtils.vsyncEnabled(),
 | |
|       "Make sure vsync disabled"
 | |
|     );
 | |
|     // Should not already be using vsync
 | |
|     ok(!ChromeUtils.vsyncEnabled(), "vsync should be off initially");
 | |
| 
 | |
|     if (
 | |
|       AppConstants.platform == "linux" &&
 | |
|       DownloadsPanel.panel.state != "open"
 | |
|     ) {
 | |
|       // Panels sometime receive spurious popuphiding events on Linux.
 | |
|       // Given the main target of this test is Windows, avoid causing
 | |
|       // intermittent failures and just make the test return early.
 | |
|       todo(
 | |
|         false,
 | |
|         "panel should still be 'open', current state: " +
 | |
|           DownloadsPanel.panel.state
 | |
|       );
 | |
|       return;
 | |
|     }
 | |
| 
 | |
|     const hiddenPromise = BrowserTestUtils.waitForEvent(
 | |
|       DownloadsPanel.panel,
 | |
|       "popuphidden"
 | |
|     );
 | |
|     EventUtils.synthesizeKey("VK_ESCAPE", {}, window);
 | |
|     await hiddenPromise;
 | |
|     await TestUtils.waitForCondition(
 | |
|       () => !ChromeUtils.vsyncEnabled(),
 | |
|       "wait for vsync to be disabled again"
 | |
|     );
 | |
| 
 | |
|     ok(!ChromeUtils.vsyncEnabled(), "vsync should still be off");
 | |
|     is(
 | |
|       DownloadsPanel.panel.state,
 | |
|       "closed",
 | |
|       "Check that panel state is 'closed'"
 | |
|     );
 | |
|   }
 | |
| );
 | 
