1function waitForCompositorCommit() { 2 return new Promise((resolve) => { 3 // rAF twice. 4 window.requestAnimationFrame(() => { 5 window.requestAnimationFrame(resolve); 6 }); 7 }); 8} 9 10function injectInput(touchDiv) { 11 return new test_driver.Actions() 12 .addPointer("touch_pointer", "touch") 13 .pointerMove(0, 0, {origin: touchDiv}) 14 .pointerDown() 15 .pointerMove(30, 30) 16 .pointerUp() 17 .send(); 18} 19 20function runTest({target, eventName, passive, expectCancelable}) { 21 let touchDiv = document.getElementById("touchDiv"); 22 let cancelable = null; 23 let arrived = false; 24 target.addEventListener(eventName, function (event) { 25 cancelable = event.cancelable; 26 arrived = true; 27 }, {passive}); 28 promise_test(async () => { 29 await waitForCompositorCommit(); 30 await injectInput(touchDiv); 31 await waitFor(() => arrived); 32 assert_equals(cancelable, expectCancelable); 33 }); 34} 35