helper_fission_touch.html (2429B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <meta name="viewport" content="width=device-width,initial-scale=1"> 6 <title>Test to ensure touch events for OOP iframes</title> 7 <script src="/tests/SimpleTest/SimpleTest.js"></script> 8 <script src="/tests/SimpleTest/paint_listener.js"></script> 9 <script src="helper_fission_utils.js"></script> 10 <script src="apz_test_utils.js"></script> 11 <script src="apz_test_native_event_utils.js"></script> 12 <script> 13 14 function waitForTouchEvent(aType) { 15 return promiseOneEvent(window, "message", function (e) { 16 return e.data === aType; 17 }); 18 } 19 20 async function test() { 21 const iframe = document.querySelector("iframe"); 22 await setupCrossOriginIFrame(iframe, "helper_fission_plain.html"); 23 24 let readyPromise = new Promise(resolve => { 25 window.addEventListener("message", event => { 26 if (event.data === "listenerready") { 27 resolve(); 28 } 29 }); 30 }); 31 32 let result = await SpecialPowers.spawn(iframe, [], async () => { 33 let listener = function (e) { 34 content.window.parent.postMessage(e.type, "*"); 35 } 36 37 content.document.addEventListener("touchstart", listener, { once: true }); 38 content.document.addEventListener("touchmove", listener, { once: true }); 39 content.document.addEventListener("touchend", listener, { once: true }); 40 41 content.window.parent.postMessage("listenerready", "*"); 42 43 return true; 44 }); 45 ok(result, "Successfully installed event listeners in OOP iframe"); 46 47 await readyPromise; 48 49 let touchPromises = Promise.all( 50 [waitForTouchEvent("touchstart"), 51 waitForTouchEvent("touchmove"), 52 waitForTouchEvent("touchend")] 53 ); 54 55 await synthesizeNativeTouchSequences(document.body, 56 [[{ x: 100, y: 100 }], [{ x: 150, y: 150 }], [{ x: 150, y: 150 }]], function () { 57 dump("Finished synthesizing touch tap, waiting for OOPIF message...\n"); 58 }); 59 60 await touchPromises; 61 } 62 63 waitUntilApzStable() 64 .then(test) 65 .then(subtestDone, subtestFailed); 66 67 </script> 68 <style> 69 body, 70 html { 71 margin: 0; 72 } 73 74 div { 75 width: 500px; 76 } 77 78 iframe { 79 width: 400px; 80 height: 300px; 81 border: solid 1px black; 82 } 83 </style> 84 </head> 85 <body> 86 <div><iframe id="testframe"></iframe></div> 87 </body> 88 </html>