forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			56 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!DOCTYPE html>
 | 
						|
<html>
 | 
						|
<head>
 | 
						|
  <meta charset='utf-8'>
 | 
						|
  <script src="/tests/SimpleTest/EventUtils.js"></script>
 | 
						|
</head>
 | 
						|
<body>
 | 
						|
  <input></input><br>
 | 
						|
  <a href="https://example.com" target="test">link</a>
 | 
						|
  <script>
 | 
						|
    const MY_ORIGIN = window.location.origin;
 | 
						|
    const CROSS_ORIGIN = "https://example.org";
 | 
						|
 | 
						|
    // Creates an iframe with message channel to trigger window open and focus
 | 
						|
    window.createIframe = function(id, crossOrigin = false) {
 | 
						|
      return new Promise(resolve => {
 | 
						|
        const origin = crossOrigin ? CROSS_ORIGIN : MY_ORIGIN;
 | 
						|
        let iframe = document.createElement("iframe");
 | 
						|
        iframe.id = id;
 | 
						|
        iframe.src = origin + window.location.pathname;
 | 
						|
        iframe.onload = () => resolve(iframe);
 | 
						|
        document.body.appendChild(iframe);
 | 
						|
      });
 | 
						|
    }
 | 
						|
 | 
						|
    window.sendMessage = function(destWin, msg) {
 | 
						|
      return new Promise(resolve => {
 | 
						|
        let channel = new MessageChannel();
 | 
						|
        channel.port1.onmessage = resolve;
 | 
						|
        destWin.postMessage(msg, "*", [channel.port2]);
 | 
						|
      });
 | 
						|
    }
 | 
						|
 | 
						|
    window.onMessage = function(event) {
 | 
						|
      let canReply = event.ports && !!event.ports.length;
 | 
						|
      if(event.data === "open") {
 | 
						|
        window.openedWindow = window.open('https://example.com' + window.location.pathname);
 | 
						|
        if (canReply) event.ports[0].postMessage('opened');
 | 
						|
      } else if(event.data === "openpopup") {
 | 
						|
        window.openedWindow = window.open('https://example.com' + window.location.pathname, 'test', 'top=0,height=1, width=300');
 | 
						|
        if (canReply) event.ports[0].postMessage('popupopened');
 | 
						|
      } else if(event.data === "focus") {
 | 
						|
        window.openedWindow.focus();
 | 
						|
        if (canReply) event.ports[0].postMessage('focused');
 | 
						|
      } else if(event.data === "elementfocus") {
 | 
						|
        document.querySelector("input").focus();
 | 
						|
        if (canReply) event.ports[0].postMessage('elementfocused');
 | 
						|
      } else if(event.data === "clicklink") {
 | 
						|
        synthesizeMouseAtCenter(document.querySelector("a"), {});
 | 
						|
        if (canReply) event.ports[0].postMessage('linkclicked');
 | 
						|
      }
 | 
						|
    }
 | 
						|
    window.addEventListener('message', window.onMessage);
 | 
						|
  </script>
 | 
						|
</body>
 | 
						|
</html>
 |