pointerevent_pointerrawupdate_in_pointerlock.https.html (5933B)
1 <!doctype html> 2 <html> 3 <head> 4 <title>pointerrawupdate</title> 5 <meta name="viewport" content="width=device-width"> 6 <link rel="stylesheet" type="text/css" href="../pointerevent_styles.css"> 7 <script src="/resources/testharness.js"></script> 8 <script src="/resources/testharnessreport.js"></script> 9 <script src="/resources/testdriver.js"></script> 10 <script src="/resources/testdriver-actions.js"></script> 11 <script src="/resources/testdriver-vendor.js"></script> 12 <!-- Additional helper script for common checks across event types --> 13 <script type="text/javascript" src="../pointerevent_support.js"></script> 14 </head> 15 <body onload="run()"> 16 <h2>pointerrawupdate</h2> 17 <h4>Test Description: This test checks if pointerrawupdate is dispatched correctly while in pointerlock mode. 18 <ol> 19 <li>Click in the black box (and accept the pointerlock permission if asked).</li> 20 <li>Move your mouse.</li> 21 <li>Click in the purple box inside the iframe</li> 22 <li>Move your mouse.</li> 23 </ol> 24 </h4> 25 <div id="target0"></div> 26 <iframe id="innerframe" src="../resources/pointerevent_pointerrawupdate_in_pointerlock-iframe.html"></iframe> 27 <script> 28 window.name="outerframe"; 29 var test_pointerrawupdate = async_test("pointerrawupdate event received"); 30 31 var outerframe_pointerrawupdateReceived = false; 32 var innerframe_pointerrawupdateReceived = false; 33 34 async function run() { 35 var target0 = document.getElementById("target0"); 36 var innerframe = document.getElementById('innerframe'); 37 var target1 = innerframe.contentDocument.getElementById('target1'); 38 39 innerframe.contentWindow.name = "innerframe"; 40 41 on_event(document, "pointerlockchange", function(event) { 42 if (document.pointerLockElement == target0) { 43 on_event(target0, "pointerrawupdate", function (event) { 44 outerframe_pointerrawupdateReceived = true; 45 test_pointerrawupdate.step(function() { 46 assert_equals(event.view.name, "outerframe", "View attribute of pointerrawupdate should be the target frame. target0 pointerrawupdate"); 47 }, "View attribute of pointerrawupdate should be the target frame."); 48 }); 49 on_event(target0, "pointermove", function (event) { 50 test_pointerrawupdate.step(function() { 51 assert_true(outerframe_pointerrawupdateReceived, 52 "Pointerrawupdate event should have been received before pointermove while in pointerlock mode."); 53 assert_equals(event.view.name, "outerframe", "View attribute of pointerrawupdate should be the target frame. target0 pointermove"); 54 }, "Pointerrawupdate event should have been received before pointermove while in pointerlock mode."); 55 document.exitPointerLock(); 56 57 on_event(target1, "click", function(event) { 58 target1.requestPointerLock(); 59 }); 60 61 on_event(innerframe.contentDocument, "pointerlockchange", function(event) { 62 if (innerframe.contentDocument.pointerLockElement == target1) { 63 on_event(target1, "pointerrawupdate", function (event) { 64 innerframe_pointerrawupdateReceived = true; 65 test_pointerrawupdate.step(function() { 66 assert_equals(event.view.name, "innerframe", "View attribute of pointerrawupdate should be the target frame. target1"); 67 }, "View attribute of pointerrawupdate should be the target frame."); 68 }); 69 on_event(target1, "pointermove", function (event) { 70 test_pointerrawupdate.step(function() { 71 assert_true(innerframe_pointerrawupdateReceived, 72 "Pointerrawupdate event should have been received before pointermove while in pointerlock mode."); 73 }, "Pointerrawupdate event should have been received before pointermove while in pointerlock mode."); 74 innerframe.contentDocument.exitPointerLock(); 75 test_pointerrawupdate.done(); 76 }); 77 } 78 }); 79 80 }); 81 } 82 }); 83 on_event(target0, "click", function(event) { 84 target0.requestPointerLock(); 85 }); 86 87 // Inject input 88 var iframeRect = innerframe.getClientRects()[0]; 89 var rect = target1.getClientRects()[0]; 90 var center_x = Math.round(iframeRect.left + (rect.left + rect.right) / 2); 91 var center_y = Math.round(iframeRect.top + (rect.top + rect.bottom) / 2); 92 await new test_driver.Actions() 93 .pointerMove(0, 0, {origin: target0}) 94 .pointerDown() 95 .pointerUp() 96 .pointerMove(10, 0, {origin: target0}) 97 .pointerMove(center_x, center_y) 98 .pointerDown() 99 .pointerUp() 100 .pointerMove(center_x + 10, center_y) 101 .send(); 102 } 103 104 </script> 105 <div id="complete-notice"> 106 </div> 107 </body> 108 </html>