forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			64 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* Any copyright is dedicated to the public domain.
 | |
|    http://creativecommons.org/publicdomain/zero/1.0/ */
 | |
| 
 | |
| // Test that sendMouseEvent dispatch events.
 | |
| "use strict";
 | |
| 
 | |
| SimpleTest.waitForExplicitFinish();
 | |
| browserElementTestHelpers.setEnabledPref(true);
 | |
| 
 | |
| function runTest() {
 | |
|   var iframe = document.createElement("iframe");
 | |
|   iframe.setAttribute('mozbrowser', 'true');
 | |
|   document.body.appendChild(iframe);
 | |
|   var x = 10;
 | |
|   var y = 10;
 | |
|   // First we force a reflow so that getChildProcessOffset actually returns
 | |
|   // meaningful data.
 | |
|   iframe.getBoundingClientRect();
 | |
|   // We need to make sure the event coordinates are actually inside the iframe,
 | |
|   // relative to the chome window.
 | |
|   var tabParent = SpecialPowers.wrap(iframe)
 | |
|                   .QueryInterface(SpecialPowers.Ci.nsIFrameLoaderOwner)
 | |
|                   .frameLoader.tabParent;
 | |
|   if (tabParent) {
 | |
|     let offsetX = {};
 | |
|     let offsetY = {};
 | |
|     tabParent.getChildProcessOffset(offsetX, offsetY);
 | |
|     x -= offsetX.value;
 | |
|     y -= offsetY.value;
 | |
|   }
 | |
| 
 | |
|   iframe.addEventListener("mozbrowserloadend", function onloadend(e) {
 | |
|     iframe.sendMouseEvent("mousedown", x, y, 0, 1, 0);
 | |
|   });
 | |
| 
 | |
|   iframe.addEventListener("mozbrowserlocationchange", function onlocchange(e) {
 | |
|     var a = document.createElement("a");
 | |
|     a.href = e.detail.url;
 | |
| 
 | |
|     switch (a.hash) {
 | |
|       case "#mousedown":
 | |
|         ok(true, "Receive a mousedown event.");
 | |
|         iframe.sendMouseEvent("mousemove", x, y, 0, 0, 0);
 | |
|         break;
 | |
|       case "#mousemove":
 | |
|         ok(true, "Receive a mousemove event.");
 | |
|         iframe.sendMouseEvent("mouseup", x, y, 0, 1, 0);
 | |
|         break;
 | |
|       case "#mouseup":
 | |
|         ok(true, "Receive a mouseup event.");
 | |
|         break;
 | |
|       case "#click":
 | |
|         ok(true, "Receive a click event.");
 | |
|         iframe.removeEventListener('mozbrowserlocationchange', onlocchange);
 | |
|         SimpleTest.finish();
 | |
|         break;
 | |
|     }
 | |
|   });
 | |
| 
 | |
|   iframe.src = "file_browserElement_SendEvent.html";
 | |
| 
 | |
| }
 | |
| 
 | |
| addEventListener('testready', runTest);
 | 
