test_bug1728171.html (2343B)
1 <!DOCTYPE html> 2 <meta charset="utf-8"> 3 <title>Bug 1728171</title> 4 <script src="/tests/SimpleTest/SimpleTest.js"></script> 5 <script src="/tests/SimpleTest/paint_listener.js"></script> 6 <script src="/tests/gfx/layers/apz/test/mochitest/apz_test_utils.js"></script> 7 <script src="/tests/gfx/layers/apz/test/mochitest/apz_test_native_event_utils.js"></script> 8 <link rel="stylesheet" href="/tests/SimpleTest/test.css" /> 9 10 <style> 11 #container { 12 width: 100px; 13 height: 100px; 14 } 15 </style> 16 17 <div id="container"></div> 18 19 <script> 20 const container = document.getElementById("container"); 21 22 add_task(async function testPenContextMenu() { 23 await SpecialPowers.pushPrefEnv({ 24 set: [ 25 ["dom.w3c_pointer_events.dispatch_by_pointer_messages", true], 26 ...getPrefs("TOUCH_EVENTS:PAN"), 27 ], 28 }); 29 30 await waitUntilApzStable(); 31 32 let pointerUpSeen = false 33 container.addEventListener("pointerup", () => { 34 pointerUpSeen = true; 35 }, { once: true }); 36 const contextMenuPromise = promiseOneEvent(container, "contextmenu"); 37 await promiseNativePointerTap(container, "pen", 50, 50, { button: 2 }); 38 39 const contextmenu = await contextMenuPromise; 40 ok(pointerUpSeen, "pointerup event was seen"); 41 is(contextmenu.button, 2, ".button indicates secondary button"); 42 43 // Close the context menu. 44 await promiseNativePointerTap(container, "pen", 30, 30); 45 }); 46 47 add_task(async function testPenContextMenuWhenButtonChange() { 48 await SpecialPowers.pushPrefEnv({ 49 set: [ 50 ["dom.w3c_pointer_events.dispatch_by_pointer_messages", true], 51 ...getPrefs("TOUCH_EVENTS:PAN"), 52 ], 53 }); 54 55 await waitUntilApzStable(); 56 57 const contextMenuPromise = promiseOneEvent(container, "contextmenu"); 58 59 await promiseNativePointerInput(container, "pen", SpecialPowers.DOMWindowUtils.TOUCH_CONTACT, 50, 50, { button: 2 }); 60 // no button 61 await promiseNativePointerInput(container, "pen", SpecialPowers.DOMWindowUtils.TOUCH_CONTACT, 50, 50); 62 await promiseNativePointerInput(container, "pen", SpecialPowers.DOMWindowUtils.TOUCH_REMOVE, 50, 50); 63 64 const contextmenu = await contextMenuPromise; 65 is(contextmenu.button, 2, ".button still indicates secondary button"); 66 67 // Close the context menu. 68 await promiseNativePointerTap(container, "pen", 30, 30); 69 }); 70 </script>