test_bug1637259.html (2030B)
1 <!DOCTYPE html> 2 <meta charset="utf-8"> 3 <title>Bug 1692277</title> 4 <script src="/tests/SimpleTest/SimpleTest.js"></script> 5 <script src="/tests/gfx/layers/apz/test/mochitest/apz_test_utils.js"></script> 6 <script src="/tests/gfx/layers/apz/test/mochitest/apz_test_native_event_utils.js"></script> 7 <link rel="stylesheet" href="/tests/SimpleTest/test.css" /> 8 9 <style> 10 #container { 11 width: 100px; 12 height: 100px; 13 overflow: scroll; 14 } 15 16 #child { 17 width: 200px; 18 height: 200px; 19 } 20 </style> 21 22 <div id="container"> 23 <div id="child"></div> 24 </div> 25 26 <script> 27 /** 28 * @template {keyof HTMLElementEventMap} K 29 * @param {HTMLElemnt} target 30 * @param {K} eventName 31 * @return {HTMLElementEventMap[K]} 32 */ 33 function waitForEvent(target, eventName) { 34 return new Promise(resolve => { 35 target.addEventListener(eventName, resolve, { once: true }); 36 }); 37 } 38 39 add_task(async function testPenDrag() { 40 await SpecialPowers.pushPrefEnv({ 41 set: [ 42 ["dom.w3c_pointer_events.dispatch_by_pointer_messages", true], 43 ["dom.w3c_pointer_events.scroll_by_pen.enabled", true], 44 ], 45 }); 46 47 await SimpleTest.promiseFocus(); 48 const container = document.getElementById("container"); 49 const scrollPromise = waitForEvent(container, "scroll"); 50 const pointerPromise = waitForEvent(container, "pointerdown"); 51 await promiseNativePointerDrag(container, "pen", 50, 50, -50, -50, 0, { 52 pressure: 0.25, 53 tiltX: 40, 54 tiltY: 50, 55 twist: 80, 56 }); 57 await scrollPromise; 58 59 const pointerdown = await pointerPromise; 60 is(pointerdown.pointerType, "pen"); 61 is(pointerdown.type, "pointerdown", ".type"); 62 is(pointerdown.button, 0, ".button"); 63 is(pointerdown.buttons, 1, ".buttons"); 64 is(pointerdown.layerX, 50, ".layerX"); 65 is(pointerdown.layerY, 50, ".layerY"); 66 is(pointerdown.pressure, 0.25, ".pressure"); 67 is(pointerdown.tiltX, 40, ".tiltX"); 68 is(pointerdown.tiltY, 50, ".tiltY"); 69 is(pointerdown.twist, 80, ".twist"); 70 }); 71 </script>