test_mouse_capture_iframe.html (2318B)
1 <!doctype html> 2 <meta charset="utf-8"> 3 <title>Test mouse capture for iframe</title> 4 <script src="/tests/SimpleTest/SimpleTest.js"></script> 5 <script src="/tests/SimpleTest/EventUtils.js"></script> 6 <script src="/tests/SimpleTest/paint_listener.js"></script> 7 <script src="/tests/gfx/layers/apz/test/mochitest/apz_test_utils.js"></script> 8 <link rel="stylesheet" href="/tests/SimpleTest/test.css"/> 9 <style> 10 #target { 11 width: 150px; 12 height: 150px; 13 } 14 </style> 15 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1680405">Mozilla Bug 1680405</a> 16 <iframe id="target" frameborder="0" scrolling="no"></iframe> 17 <script> 18 19 function waitForMessage(aEventType) { 20 return new Promise(function(aResolve, aReject) { 21 window.addEventListener("message", function listener(aEvent) { 22 is(aEvent.data, aEventType, `check received message ${aEvent.data}`); 23 aResolve(); 24 }, { once: true }); 25 }); 26 } 27 28 let iframe = document.getElementById("target"); 29 30 add_setup(async function() { 31 await SimpleTest.promiseFocus(); 32 disableNonTestMouseEvents(true); 33 SimpleTest.registerCleanupFunction(() => { 34 disableNonTestMouseEvents(false); 35 }); 36 37 iframe.src = "http://example.com/tests/dom/events/test/file_empty.html"; 38 await waitForMessage("ready"); 39 40 await SpecialPowers.spawn(iframe, [], () => { 41 let handler = function(e) { 42 content.parent.postMessage(e.type, "*"); 43 }; 44 content.document.addEventListener("mousedown", handler); 45 content.document.addEventListener("mousemove", handler); 46 content.document.addEventListener("mouseup", handler); 47 }); 48 49 await waitUntilApzStable(); 50 }); 51 52 add_task(async function testMouseCaptureOnXoriginIframe() { 53 let unexpectedHandler = function(e) { 54 ok(false, `receive unexpected ${e.type} event`); 55 }; 56 document.addEventListener("mousedown", unexpectedHandler); 57 document.addEventListener("mousemove", unexpectedHandler); 58 document.addEventListener("mouseup", unexpectedHandler); 59 60 synthesizeMouseAtCenter(iframe, { type: "mousedown", asyncEnabled: true }); 61 await waitForMessage("mousedown"); 62 63 synthesizeMouse(iframe, 200, 200, { type: "mousemove", asyncEnabled: true }); 64 await waitForMessage("mousemove"); 65 66 synthesizeMouse(iframe, 200, 200, { type: "mouseup", asyncEnabled: true }); 67 await waitForMessage("mouseup"); 68 }); 69 </script>