observable-event-target.window.js (1460B)
1 test(() => { 2 // See https://dom.spec.whatwg.org/#dom-event-eventphase. 3 const CAPTURING_PHASE = 1; 4 const BUBBLING_PHASE = 3; 5 6 // First, create a div underneath the `<body>` element. It will be the 7 // dispatch target for synthetic click events. 8 const target = 9 document.querySelector('body').appendChild(document.createElement('div')); 10 11 const body = document.querySelector('body'); 12 const captureObservable = body.when('click', {capture: true}); 13 const bubbleObservable = body.when('click', {capture: false}); 14 15 const results = []; 16 captureObservable.subscribe(e => results.push(e.eventPhase)); 17 bubbleObservable.subscribe(e => results.push(e.eventPhase)); 18 19 target.dispatchEvent(new MouseEvent('click', {bubbles: true})); 20 21 assert_array_equals(results, [CAPTURING_PHASE, BUBBLING_PHASE]); 22 }, "EventTarget Observables can listen for events in the capturing or bubbling phase"); 23 24 test(() => { 25 const target = new EventTarget(); 26 27 const observable = target.when('event', {passive: true}); 28 observable.subscribe(event => { 29 assert_false(event.defaultPrevented); 30 // Should do nothing, since `observable` is "passive". 31 event.preventDefault(); 32 assert_false(event.defaultPrevented); 33 }); 34 35 // Create a cancelable event which ordinarily would be able to have its 36 // "default" prevented. 37 const event = new Event('event', {cancelable: true}); 38 target.dispatchEvent(event); 39 }, "EventTarget Observables can be 'passive'");