forked from mirrors/gecko-dev
		
	 3e5d710873
			
		
	
	
		3e5d710873
		
	
	
	
	
		
			
			openLinkIn would really benefit from being split up a bit, and adding more globals to the browser window is icky. Also, the story for opening new tabs if you're not inside a window is a nightmare right now. Moving this code to a module is a first step to making that story nicer. I kept wrappers for all the functions I'm moving, and added the `window` as the first argument. In the future we can update these functions to support being called without a `window` ref. The one exception is getTopWin, where I updated the callers in this patch. I had to tweak the parameter detection of the different arguments supported by openUILinkIn because forwarding calls means arguments.length is always larger than 3... but then also removed it in the next commit. Differential Revision: https://phabricator.services.mozilla.com/D170210
		
			
				
	
	
		
			78 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
	
		
			2.6 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/. */
 | |
| 
 | |
| add_task(async function test_eventMatchesKey() {
 | |
|   let eventMatchResult;
 | |
|   let key;
 | |
|   let checkEvent = function(e) {
 | |
|     e.stopPropagation();
 | |
|     e.preventDefault();
 | |
|     eventMatchResult = eventMatchesKey(e, key);
 | |
|   };
 | |
|   document.addEventListener("keypress", checkEvent);
 | |
| 
 | |
|   try {
 | |
|     key = document.createXULElement("key");
 | |
|     let keyset = document.getElementById("mainKeyset");
 | |
|     key.setAttribute("key", "t");
 | |
|     key.setAttribute("modifiers", "accel");
 | |
|     keyset.appendChild(key);
 | |
|     EventUtils.synthesizeKey("t", { accelKey: true });
 | |
|     is(eventMatchResult, true, "eventMatchesKey: one modifier");
 | |
|     keyset.removeChild(key);
 | |
| 
 | |
|     key = document.createXULElement("key");
 | |
|     key.setAttribute("key", "g");
 | |
|     key.setAttribute("modifiers", "accel,shift");
 | |
|     keyset.appendChild(key);
 | |
|     EventUtils.synthesizeKey("g", { accelKey: true, shiftKey: true });
 | |
|     is(eventMatchResult, true, "eventMatchesKey: combination modifiers");
 | |
|     keyset.removeChild(key);
 | |
| 
 | |
|     key = document.createXULElement("key");
 | |
|     key.setAttribute("key", "w");
 | |
|     key.setAttribute("modifiers", "accel");
 | |
|     keyset.appendChild(key);
 | |
|     EventUtils.synthesizeKey("f", { accelKey: true });
 | |
|     is(eventMatchResult, false, "eventMatchesKey: mismatch keys");
 | |
|     keyset.removeChild(key);
 | |
| 
 | |
|     key = document.createXULElement("key");
 | |
|     key.setAttribute("keycode", "VK_DELETE");
 | |
|     keyset.appendChild(key);
 | |
|     EventUtils.synthesizeKey("VK_DELETE", { accelKey: true });
 | |
|     is(eventMatchResult, false, "eventMatchesKey: mismatch modifiers");
 | |
|     keyset.removeChild(key);
 | |
|   } finally {
 | |
|     // Make sure to remove the event listener so future tests don't
 | |
|     // fail when they simulate key presses.
 | |
|     document.removeEventListener("keypress", checkEvent);
 | |
|   }
 | |
| });
 | |
| 
 | |
| add_task(async function test_getTargetWindow() {
 | |
|   is(URILoadingHelper.getTargetWindow(window), window, "got top window");
 | |
| });
 | |
| 
 | |
| add_task(async function test_openUILink() {
 | |
|   const kURL = "https://example.org/";
 | |
|   let tab = await BrowserTestUtils.openNewForegroundTab(
 | |
|     gBrowser,
 | |
|     "about:blank"
 | |
|   );
 | |
|   let loadPromise = BrowserTestUtils.browserLoaded(
 | |
|     tab.linkedBrowser,
 | |
|     false,
 | |
|     kURL
 | |
|   );
 | |
| 
 | |
|   openUILink(kURL, null, {
 | |
|     triggeringPrincipal: Services.scriptSecurityManager.createNullPrincipal({}),
 | |
|   }); // defaults to "current"
 | |
| 
 | |
|   await loadPromise;
 | |
| 
 | |
|   is(tab.linkedBrowser.currentURI.spec, kURL, "example.org loaded");
 | |
|   gBrowser.removeCurrentTab();
 | |
| });
 |