forked from mirrors/gecko-dev
		
	 d2109610fb
			
		
	
	
		d2109610fb
		
	
	
	
	
		
			
			MozReview-Commit-ID: 5lO0uAjHMsw --HG-- extra : rebase_source : 8607b3964da207a6076c79b6f1d75b40503cdd7d
		
			
				
	
	
		
			80 lines
		
	
	
	
		
			3.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
	
		
			3.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* eslint-disable mozilla/no-arbitrary-setTimeout */
 | |
| // Test for bug 1170531
 | |
| // https://bugzilla.mozilla.org/show_bug.cgi?id=1170531
 | |
| 
 | |
| add_task(async function() {
 | |
|   // Get a bunch of DOM nodes
 | |
|   let editMenu = document.getElementById("edit-menu");
 | |
|   let menuPopup = editMenu.menupopup;
 | |
| 
 | |
|   let closeMenu = function(aCallback) {
 | |
|     if (OS.Constants.Sys.Name == "Darwin") {
 | |
|       executeSoon(aCallback);
 | |
|       return;
 | |
|     }
 | |
| 
 | |
|     menuPopup.addEventListener("popuphidden", function() {
 | |
|       executeSoon(aCallback);
 | |
|     }, {once: true});
 | |
| 
 | |
|     executeSoon(function() {
 | |
|       editMenu.open = false;
 | |
|     });
 | |
|   };
 | |
| 
 | |
|   let openMenu = function(aCallback) {
 | |
|     if (OS.Constants.Sys.Name == "Darwin") {
 | |
|       goUpdateGlobalEditMenuItems();
 | |
|       // On OSX, we have a native menu, so it has to be updated. In single process browsers,
 | |
|       // this happens synchronously, but in e10s, we have to wait for the main thread
 | |
|       // to deal with it for us. 1 second should be plenty of time.
 | |
|       setTimeout(aCallback, 1000);
 | |
|       return;
 | |
|     }
 | |
| 
 | |
|     menuPopup.addEventListener("popupshown", function() {
 | |
|       executeSoon(aCallback);
 | |
|     }, {once: true});
 | |
| 
 | |
|     executeSoon(function() {
 | |
|       editMenu.open = true;
 | |
|     });
 | |
|   };
 | |
| 
 | |
|   await BrowserTestUtils.withNewTab({ gBrowser, url: "about:blank" }, async function(browser) {
 | |
|     let menu_cut_disabled, menu_copy_disabled;
 | |
| 
 | |
|     await BrowserTestUtils.loadURI(browser, "data:text/html,<div>hello!</div>");
 | |
|     await BrowserTestUtils.browserLoaded(browser);
 | |
|     browser.focus();
 | |
|     await new Promise(resolve => waitForFocus(resolve, window));
 | |
|     await new Promise(openMenu);
 | |
|     menu_cut_disabled = menuPopup.querySelector("#menu_cut").getAttribute("disabled") == "true";
 | |
|     is(menu_cut_disabled, false, "menu_cut should be enabled");
 | |
|     menu_copy_disabled = menuPopup.querySelector("#menu_copy").getAttribute("disabled") == "true";
 | |
|     is(menu_copy_disabled, false, "menu_copy should be enabled");
 | |
|     await new Promise(closeMenu);
 | |
| 
 | |
|     await BrowserTestUtils.loadURI(browser, "data:text/html,<div contentEditable='true'>hello!</div>");
 | |
|     await BrowserTestUtils.browserLoaded(browser);
 | |
|     browser.focus();
 | |
|     await new Promise(resolve => waitForFocus(resolve, window));
 | |
|     await new Promise(openMenu);
 | |
|     menu_cut_disabled = menuPopup.querySelector("#menu_cut").getAttribute("disabled") == "true";
 | |
|     is(menu_cut_disabled, false, "menu_cut should be enabled");
 | |
|     menu_copy_disabled = menuPopup.querySelector("#menu_copy").getAttribute("disabled") == "true";
 | |
|     is(menu_copy_disabled, false, "menu_copy should be enabled");
 | |
|     await new Promise(closeMenu);
 | |
| 
 | |
|     await BrowserTestUtils.loadURI(browser, "about:preferences");
 | |
|     await BrowserTestUtils.browserLoaded(browser);
 | |
|     browser.focus();
 | |
|     await new Promise(resolve => waitForFocus(resolve, window));
 | |
|     await new Promise(openMenu);
 | |
|     menu_cut_disabled = menuPopup.querySelector("#menu_cut").getAttribute("disabled") == "true";
 | |
|     is(menu_cut_disabled, true, "menu_cut should be disabled");
 | |
|     menu_copy_disabled = menuPopup.querySelector("#menu_copy").getAttribute("disabled") == "true";
 | |
|     is(menu_copy_disabled, true, "menu_copy should be disabled");
 | |
|     await new Promise(closeMenu);
 | |
|   });
 | |
| });
 |