diff --git a/components/script/dom/event.rs b/components/script/dom/event.rs index 914cf279278..1be80dc7d36 100644 --- a/components/script/dom/event.rs +++ b/components/script/dom/event.rs @@ -309,6 +309,18 @@ impl EventMethods for Event { } } + // https://dom.spec.whatwg.org/#dom-event-cancelbubble + fn CancelBubble(&self) -> bool { + self.stop_propagation.get() + } + + // https://dom.spec.whatwg.org/#dom-event-cancelbubble + fn SetCancelBubble(&self, value: bool) { + if value { + self.stop_propagation.set(true) + } + } + // https://dom.spec.whatwg.org/#dom-event-timestamp fn TimeStamp(&self) -> u64 { self.timestamp diff --git a/components/script/dom/webidls/Event.webidl b/components/script/dom/webidls/Event.webidl index 1a6fd8e4a5c..f6074bd68f3 100644 --- a/components/script/dom/webidls/Event.webidl +++ b/components/script/dom/webidls/Event.webidl @@ -20,6 +20,7 @@ interface Event { readonly attribute unsigned short eventPhase; void stopPropagation(); + attribute boolean cancelBubble; void stopImmediatePropagation(); [Pure] diff --git a/tests/wpt/metadata/dom/events/Event-cancelBubble.html.ini b/tests/wpt/metadata/dom/events/Event-cancelBubble.html.ini deleted file mode 100644 index 266447e4c08..00000000000 --- a/tests/wpt/metadata/dom/events/Event-cancelBubble.html.ini +++ /dev/null @@ -1,26 +0,0 @@ -[Event-cancelBubble.html] - type: testharness - [cancelBubble must be false when an event is initially created.] - expected: FAIL - - [Initializing an event must set cancelBubble to false.] - expected: FAIL - - [stopPropagation() must set cancelBubble to true.] - expected: FAIL - - [stopImmediatePropagation() must set cancelBubble to true.] - expected: FAIL - - [Event.cancelBubble=false must have no effect.] - expected: FAIL - - [Event.cancelBubble=false must have no effect during event propagation.] - expected: FAIL - - [cancelBubble must be false after an event has been dispatched.] - expected: FAIL - - [Event.cancelBubble=true must set the stop propagation flag.] - expected: FAIL - diff --git a/tests/wpt/metadata/dom/events/Event-dispatch-bubble-canceled.html.ini b/tests/wpt/metadata/dom/events/Event-dispatch-bubble-canceled.html.ini deleted file mode 100644 index f98def06bcf..00000000000 --- a/tests/wpt/metadata/dom/events/Event-dispatch-bubble-canceled.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[Event-dispatch-bubble-canceled.html] - type: testharness - [Setting cancelBubble=true prior to dispatchEvent()] - expected: FAIL - diff --git a/tests/wpt/metadata/dom/events/Event-dispatch-multiple-cancelBubble.html.ini b/tests/wpt/metadata/dom/events/Event-dispatch-multiple-cancelBubble.html.ini deleted file mode 100644 index 3b40ae33df9..00000000000 --- a/tests/wpt/metadata/dom/events/Event-dispatch-multiple-cancelBubble.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[Event-dispatch-multiple-cancelBubble.html] - type: testharness - [Multiple dispatchEvent() and cancelBubble] - expected: FAIL - diff --git a/tests/wpt/metadata/dom/events/Event-initEvent.html.ini b/tests/wpt/metadata/dom/events/Event-initEvent.html.ini index f7a1e9dc18c..5426bf5b727 100644 --- a/tests/wpt/metadata/dom/events/Event-initEvent.html.ini +++ b/tests/wpt/metadata/dom/events/Event-initEvent.html.ini @@ -1,7 +1,5 @@ [Event-initEvent.html] type: testharness - [Calling initEvent must unset the stop propagation flag.] - expected: FAIL [Properties of initEvent(type, true, true)] expected: FAIL diff --git a/tests/wpt/metadata/dom/events/Event-propagation.html.ini b/tests/wpt/metadata/dom/events/Event-propagation.html.ini deleted file mode 100644 index a1baee903f0..00000000000 --- a/tests/wpt/metadata/dom/events/Event-propagation.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[Event-propagation.html] - type: testharness - [After cancelBubble=true] - expected: FAIL - diff --git a/tests/wpt/metadata/dom/interfaces.html.ini b/tests/wpt/metadata/dom/interfaces.html.ini index 3803e1734d6..c5fd2b318af 100644 --- a/tests/wpt/metadata/dom/interfaces.html.ini +++ b/tests/wpt/metadata/dom/interfaces.html.ini @@ -1262,18 +1262,6 @@ [Window interface: attribute event] expected: FAIL - [Event interface: attribute cancelBubble] - expected: FAIL - - [Event interface: document.createEvent("Event") must inherit property "cancelBubble" with the proper type] - expected: FAIL - - [Event interface: new Event("foo") must inherit property "cancelBubble" with the proper type] - expected: FAIL - - [Event interface: new CustomEvent("foo") must inherit property "cancelBubble" with the proper type] - expected: FAIL - [Document interface: operation prepend([object Object\],[object Object\])] expected: FAIL