1<!DOCTYPE html> 2<title>Synthetic events are always cancelable by default</title> 3<link rel="help" href="https://dom.spec.whatwg.org/#dictdef-eventinit"> 4<script src="/resources/testharness.js"></script> 5<script src="/resources/testharnessreport.js"></script> 6<script> 7const eventsMap = { 8 wheel: 'WheelEvent', 9 mousewheel: 'WheelEvent', 10 touchstart: 'TouchEvent', 11 touchmove: 'TouchEvent', 12 touchend: 'TouchEvent', 13 touchcancel: 'TouchEvent', 14} 15function isCancelable(eventName, interfaceName) { 16 test(() => { 17 assert_implements(interfaceName in self, `${interfaceName} should be supported`); 18 let defaultPrevented = null; 19 addEventListener(eventName, event => { 20 event.preventDefault(); 21 defaultPrevented = event.defaultPrevented; 22 }); 23 const event = new self[interfaceName](eventName); 24 assert_false(event.cancelable, 'cancelable'); 25 const dispatchEventReturnValue = dispatchEvent(event); 26 assert_false(defaultPrevented, 'defaultPrevented'); 27 assert_true(dispatchEventReturnValue, 'dispatchEvent() return value'); 28 }, `Synthetic ${eventName} event with interface ${interfaceName} is not cancelable`); 29} 30for (const eventName in eventsMap) { 31 isCancelable(eventName, eventsMap[eventName]); 32 isCancelable(eventName, 'Event'); 33} 34</script> 35