OLD | NEW |
(Empty) | |
| 1 <!doctype html> |
| 2 <html> |
| 3 <head> |
| 4 <title>Set/Release capture</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 <!-- Additional helper script for common checks across event types --> |
| 10 <script type="text/javascript" src="pointerevent_support.js"></script> |
| 11 </head> |
| 12 <body> |
| 13 <h1>Pointer Events capture test</h1> |
| 14 <h4> |
| 15 Test Description: This test checks if setCapture/releaseCapture func
tions works properly. Complete the following actions: |
| 16 <ol> |
| 17 <li> Move your mouse over the black rectangle. pointermove event
should be logged in the black rectangle</li> |
| 18 <li> Move your mouse over the purple rectangle. pointerover even
t should be logged in the purple rectangle</li> |
| 19 <li> Press and hold left mouse button over "Set Capture" button.
"gotpointercapture" should be logged in the black rectangle</li> |
| 20 <li> Move your mouse anywhere. pointermove should be logged in t
he black rectangle</li> |
| 21 <li> Move your mouse over the purple rectangle. Nothig should ha
ppen</li> |
| 22 <li> Move your mouse over the black rectangle. pointermove shoul
d be logged in the black rectangle</li> |
| 23 <li> Release left mouse button. "lostpointercapture" should be l
ogged in the black rectangle</li> |
| 24 </ol> |
| 25 </h4> |
| 26 Test passes if the proper behaviour of the events is observed. |
| 27 <div id="target0"></div> |
| 28 <br> |
| 29 <div id="target1"></div> |
| 30 <br> |
| 31 <input type="button" id="btnCapture" value="Set Capture"> |
| 32 <script type='text/javascript'> |
| 33 var isPointerCapture = false; |
| 34 var pointermoveNoCaptureGot0 = false; |
| 35 var pointermoveCaptureGot0 = false; |
| 36 var pointermoveNoCaptureGot1 = false; |
| 37 var ownEventForTheCapturedTargetGot = false; |
| 38 var count=0; |
| 39 |
| 40 var detected_pointertypes = {}; |
| 41 add_completion_callback(showPointerTypes); |
| 42 |
| 43 var target0 = document.getElementById('target0'); |
| 44 var target1 = document.getElementById('target1'); |
| 45 var captureButton = document.getElementById('btnCapture'); |
| 46 |
| 47 var test_gotpointercapture = async_test("gotpointercapture event rec
eived"); |
| 48 var test_lostpointercapture = async_test("lostpointercapture event r
eceived"); |
| 49 |
| 50 window.onload = function() { |
| 51 on_event(captureButton, 'pointerdown', function(e) { |
| 52 if(isPointerCapture == false) { |
| 53 isPointerCapture = true; |
| 54 sPointerCapture(e); |
| 55 } |
| 56 }); |
| 57 |
| 58 on_event(target0, 'gotpointercapture', function(e) { |
| 59 test_gotpointercapture.done(); |
| 60 log("gotpointercapture", target0); |
| 61 }); |
| 62 |
| 63 on_event(target0, 'lostpointercapture', function(e) { |
| 64 test_lostpointercapture.done(); |
| 65 isPointerCapture = false; |
| 66 log("lostpointercapture", target0); |
| 67 }); |
| 68 |
| 69 run(); |
| 70 } |
| 71 |
| 72 function run() { |
| 73 var test_pointermove0 = async_test("pointerover event for black
rectangle received") |
| 74 var test_pointermove1 = async_test("pointerover event for purple
rectangle received") |
| 75 |
| 76 on_event(target0, "pointermove", function (event) { |
| 77 detected_pointertypes[ event.pointerType ] = true; |
| 78 if(!pointermoveNoCaptureGot0) { |
| 79 test_pointermove0.done(); |
| 80 log("pointermove", document.getElementById('target0')); |
| 81 pointermoveNoCaptureGot0 = true; |
| 82 } |
| 83 if(isPointerCapture) { |
| 84 if(!pointermoveCaptureGot0) { |
| 85 test(function() { |
| 86 assert_true(event.relatedTarget==null, "relatedT
arget is null when the capture is set") |
| 87 }, "relatedTarget is null when the capture is set. r
elatedTarget is " + event.relatedTarget); |
| 88 test(function() { |
| 89 assert_true((event.clientX < target0.getBounding
ClientRect().left)|| |
| 90 (event.clientX > target0.getBoundingClientRect()
.right)|| |
| 91 (event.clientY < target0.getBoundingClientRect()
.top)|| |
| 92 (event.clientY > target0.getBoundingClientRect()
.bottom), |
| 93 "pointermove received for captured element while
out of it") |
| 94 }, "pointermove received for captured element while
out of it"); |
| 95 log("pointermove", document.getElementById('target0'
)); |
| 96 pointermoveCaptureGot0 = true; |
| 97 } |
| 98 if((event.clientX > target0.getBoundingClientRect().left
)&& |
| 99 (event.clientX < target0.getBoundingClientRect().rig
ht)&& |
| 100 (event.clientY > target0.getBoundingClientRect().top
)&& |
| 101 (event.clientY < target0.getBoundingClientRect().bot
tom)&& |
| 102 !ownEventForTheCapturedTargetGot) { |
| 103 test(function() { |
| 104 assert_true(true, "pointermove received for
captured element while inside of it"); |
| 105 }, "pointermove received for captured element wh
ile inside of it"); |
| 106 log("pointermove", document.getElementById('target0'
)); |
| 107 ownEventForTheCapturedTargetGot = true; |
| 108 } |
| 109 } |
| 110 }); |
| 111 |
| 112 on_event(target1, "pointermove", function (event) { |
| 113 if(isPointerCapture == true) { |
| 114 test(function() { |
| 115 assert_unreached("pointermove shouldn't trigger
for this target when capture is enabled"); |
| 116 }, "pointermove shouldn't trigger for the purple rec
tangle while the black rectangle has capture"); |
| 117 } |
| 118 if(!pointermoveNoCaptureGot1) { |
| 119 test_pointermove1.done(); |
| 120 log("pointermove", document.getElementById('target1')); |
| 121 pointermoveNoCaptureGot1 = true; |
| 122 } |
| 123 }); |
| 124 } |
| 125 </script> |
| 126 <h1>Pointer Events Capture Test</h1> |
| 127 <div id="complete-notice"> |
| 128 <p>The following pointer types were detected: <span id="pointertype-
log"></span>.</p> |
| 129 </div> |
| 130 <div id="log"></div> |
| 131 </body> |
| 132 </html> |
OLD | NEW |