| <!DOCTYPE HTML> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="/resources/testdriver.js"></script> |
| <script src="/resources/testdriver-vendor.js"></script> |
| <script src="/resources/testdriver-actions.js"></script> |
| <script type="text/javascript" src="../pointerevent_support.js"></script> |
| |
| <style> |
| #obj { |
| width: 50px; |
| height: 50px; |
| padding: 50px; |
| } |
| </style> |
| |
| <h1>Verifies that mouse activities on an object fire pointerevents. It expected to get pointerup when the pointerdown happened on the object for compatibility with flash objects.</h1> |
| |
| <object id="obj"></object> |
| |
| <button id="done"></button> |
| <div id="log"></div> |
| |
| <script> |
| var target = document.getElementById("obj"); |
| var done = document.getElementById("done"); |
| var rect = target.getBoundingClientRect(); |
| var done_clicked = false; |
| var receivedEvents = []; |
| ["mousedown", "mouseup", "mousemove", "pointerdown", "pointerup", "pointermove"].forEach(function(eventName) { |
| target.addEventListener(eventName, function(event) { |
| receivedEvents.push(event.type); |
| }); |
| }); |
| |
| document.getElementById('done').addEventListener('click', (e) => done_clicked = true); |
| |
| promise_test(async() => { |
| done_clicked = false; |
| receivedEvents = []; |
| |
| await new test_driver.Actions().pointerMove(rect.left+5, rect.top+5).pointerDown(0).pointerUp(0).send().then(() => { |
| return clickInTarget("mouse", done); |
| }); |
| await resolveWhen(()=>{return done_clicked;}); |
| |
| assert_array_equals(receivedEvents, ["pointermove", "mousemove", "pointerdown", "mousedown", "pointerup", "mouseup"], |
| "Click on object should result in the correct sequence of events"); |
| }, "Normal click event sequence within object"); |
| |
| promise_test(async() => { |
| done_clicked = false; |
| receivedEvents = []; |
| |
| await new test_driver.Actions().pointerMove(rect.left+5, rect.top+5).pointerDown(0).pointerMove(rect.left-5, rect.top-5).pointerUp(0).send().then(() => { |
| return clickInTarget("mouse", done); |
| }); |
| await resolveWhen(()=>{return done_clicked;}); |
| |
| assert_array_equals(receivedEvents, ["pointermove", "mousemove", "pointerdown", "mousedown", "pointermove", "mousemove", "pointerup", "mouseup"], |
| "Drag from object should result in the correct sequence of events"); |
| |
| }, "Click and drag outside of object event sequence"); |
| </script> |