diff --git a/components/script/dom/eventdispatcher.rs b/components/script/dom/eventdispatcher.rs index 28a269b7429..f80a217658b 100644 --- a/components/script/dom/eventdispatcher.rs +++ b/components/script/dom/eventdispatcher.rs @@ -10,6 +10,7 @@ use dom::bindings::inheritance::Castable; use dom::bindings::js::{JS, Root, RootedReference}; use dom::bindings::reflector::Reflectable; use dom::bindings::trace::RootedVec; +use dom::document::Document; use dom::event::{Event, EventPhase}; use dom::eventtarget::{CompiledEventListener, EventTarget, ListenerPhase}; use dom::node::Node; @@ -153,6 +154,13 @@ pub fn dispatch_event(target: &EventTarget, pseudo_target: Option<&EventTarget>, for ancestor in target_node.ancestors() { chain.push(JS::from_ref(ancestor.upcast())); } + let top_most_ancestor_or_target = + Root::from_ref(chain.r().last().cloned().unwrap_or(target)); + if let Some(document) = Root::downcast::(top_most_ancestor_or_target) { + if event.type_() != atom!("load") && document.browsing_context().is_some() { + chain.push(JS::from_ref(document.window().upcast())); + } + } } dispatch_to_listeners(event, target, chain.r()); diff --git a/tests/wpt/metadata-css/css-transitions-1_dev/html/before-load-001.htm.ini b/tests/wpt/metadata-css/css-transitions-1_dev/html/before-load-001.htm.ini index ed4c2c93660..377e0824655 100644 --- a/tests/wpt/metadata-css/css-transitions-1_dev/html/before-load-001.htm.ini +++ b/tests/wpt/metadata-css/css-transitions-1_dev/html/before-load-001.htm.ini @@ -1,3 +1,5 @@ [before-load-001.htm] type: testharness - expected: TIMEOUT + [transition height from 10px to 100px / events] + expected: FAIL + diff --git a/tests/wpt/metadata/DOMEvents/tests/approved/DOM.event.flow.html.ini b/tests/wpt/metadata/DOMEvents/tests/approved/DOM.event.flow.html.ini deleted file mode 100644 index 841772257c2..00000000000 --- a/tests/wpt/metadata/DOMEvents/tests/approved/DOM.event.flow.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[DOM.event.flow.html] - type: testharness - [Test Description: Dispatch an event in a DOM tree using the DOM event flow.] - expected: FAIL - diff --git a/tests/wpt/metadata/DOMEvents/tests/approved/stopImmediatePropagation.effect.html.ini b/tests/wpt/metadata/DOMEvents/tests/approved/stopImmediatePropagation.effect.html.ini deleted file mode 100644 index 6e5f153d75e..00000000000 --- a/tests/wpt/metadata/DOMEvents/tests/approved/stopImmediatePropagation.effect.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[stopImmediatePropagation.effect.html] - type: testharness - [Test Description: stopImmediatePropagation() prevents other event listeners from being triggered and, unlike Event.stopPropagation(), its effect must be immediate. Once it has been called, further calls to this method have no additional effect.] - expected: FAIL - diff --git a/tests/wpt/metadata/DOMEvents/tests/approved/stopPropagation.deferred.effect.html.ini b/tests/wpt/metadata/DOMEvents/tests/approved/stopPropagation.deferred.effect.html.ini deleted file mode 100644 index 355e0411c1f..00000000000 --- a/tests/wpt/metadata/DOMEvents/tests/approved/stopPropagation.deferred.effect.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[stopPropagation.deferred.effect.html] - type: testharness - [Test Description: stopPropagation() prevents other event listeners from being triggered but its effect must be deferred until all event listeners attached on the Event.currentTarget have been triggered.] - expected: FAIL - diff --git a/tests/wpt/metadata/DOMEvents/tests/submissions/Microsoft/converted/DOM.event.flow.html.ini b/tests/wpt/metadata/DOMEvents/tests/submissions/Microsoft/converted/DOM.event.flow.html.ini deleted file mode 100644 index 841772257c2..00000000000 --- a/tests/wpt/metadata/DOMEvents/tests/submissions/Microsoft/converted/DOM.event.flow.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[DOM.event.flow.html] - type: testharness - [Test Description: Dispatch an event in a DOM tree using the DOM event flow.] - expected: FAIL - diff --git a/tests/wpt/metadata/DOMEvents/tests/submissions/Microsoft/converted/EventListener.dispatch.new.event.html.ini b/tests/wpt/metadata/DOMEvents/tests/submissions/Microsoft/converted/EventListener.dispatch.new.event.html.ini deleted file mode 100644 index 778f1b788b3..00000000000 --- a/tests/wpt/metadata/DOMEvents/tests/submissions/Microsoft/converted/EventListener.dispatch.new.event.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[EventListener.dispatch.new.event.html] - type: testharness - [Test Description: Implementations of the DOM event model must be reentrant. Event listeners may perform actions that cause additional events to be dispatched. Such events are handled in a synchronous manner, the event propagation that causes the event listener to be triggered must resume only after the event dispatch of the new event is completed.] - expected: FAIL - diff --git a/tests/wpt/metadata/DOMEvents/tests/submissions/Microsoft/converted/stopImmediatePropagation.effect.html.ini b/tests/wpt/metadata/DOMEvents/tests/submissions/Microsoft/converted/stopImmediatePropagation.effect.html.ini deleted file mode 100644 index 6e5f153d75e..00000000000 --- a/tests/wpt/metadata/DOMEvents/tests/submissions/Microsoft/converted/stopImmediatePropagation.effect.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[stopImmediatePropagation.effect.html] - type: testharness - [Test Description: stopImmediatePropagation() prevents other event listeners from being triggered and, unlike Event.stopPropagation(), its effect must be immediate. Once it has been called, further calls to this method have no additional effect.] - expected: FAIL - diff --git a/tests/wpt/metadata/DOMEvents/tests/submissions/Microsoft/converted/stopPropagation.deferred.effect.html.ini b/tests/wpt/metadata/DOMEvents/tests/submissions/Microsoft/converted/stopPropagation.deferred.effect.html.ini deleted file mode 100644 index 355e0411c1f..00000000000 --- a/tests/wpt/metadata/DOMEvents/tests/submissions/Microsoft/converted/stopPropagation.deferred.effect.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[stopPropagation.deferred.effect.html] - type: testharness - [Test Description: stopPropagation() prevents other event listeners from being triggered but its effect must be deferred until all event listeners attached on the Event.currentTarget have been triggered.] - expected: FAIL - diff --git a/tests/wpt/metadata/dom/events/Event-dispatch-bubbles-false.html.ini b/tests/wpt/metadata/dom/events/Event-dispatch-bubbles-false.html.ini deleted file mode 100644 index ee6a91dd03f..00000000000 --- a/tests/wpt/metadata/dom/events/Event-dispatch-bubbles-false.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[Event-dispatch-bubbles-false.html] - type: testharness - [Event.dispatchEvent with Event.bubbles set to false.] - expected: FAIL - diff --git a/tests/wpt/metadata/dom/events/Event-dispatch-handlers-changed.html.ini b/tests/wpt/metadata/dom/events/Event-dispatch-handlers-changed.html.ini deleted file mode 100644 index 7cc011a25d1..00000000000 --- a/tests/wpt/metadata/dom/events/Event-dispatch-handlers-changed.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[Event-dispatch-handlers-changed.html] - type: testharness - [ Dispatch additional events inside an event listener ] - expected: FAIL - diff --git a/tests/wpt/metadata/dom/events/Event-dispatch-omitted-capture.html.ini b/tests/wpt/metadata/dom/events/Event-dispatch-omitted-capture.html.ini deleted file mode 100644 index 5108f7dcd51..00000000000 --- a/tests/wpt/metadata/dom/events/Event-dispatch-omitted-capture.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[Event-dispatch-omitted-capture.html] - type: testharness - [EventTarget.addEventListener with the capture argument omitted] - expected: FAIL - diff --git a/tests/wpt/metadata/dom/events/Event-dispatch-reenter.html.ini b/tests/wpt/metadata/dom/events/Event-dispatch-reenter.html.ini deleted file mode 100644 index 4d7f85c0779..00000000000 --- a/tests/wpt/metadata/dom/events/Event-dispatch-reenter.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[Event-dispatch-reenter.html] - type: testharness - [ Dispatch additional events inside an event listener ] - expected: FAIL - diff --git a/tests/wpt/metadata/dom/events/Event-dispatch-target-moved.html.ini b/tests/wpt/metadata/dom/events/Event-dispatch-target-moved.html.ini deleted file mode 100644 index eada02233cf..00000000000 --- a/tests/wpt/metadata/dom/events/Event-dispatch-target-moved.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[Event-dispatch-target-moved.html] - type: testharness - [Event propagation path when an element in it is moved within the DOM] - expected: FAIL - diff --git a/tests/wpt/metadata/dom/events/Event-dispatch-target-removed.html.ini b/tests/wpt/metadata/dom/events/Event-dispatch-target-removed.html.ini deleted file mode 100644 index 8343b0b1bd9..00000000000 --- a/tests/wpt/metadata/dom/events/Event-dispatch-target-removed.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[Event-dispatch-target-removed.html] - type: testharness - [Event propagation path when an element in it is removed from the DOM] - expected: FAIL - diff --git a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/112.html.ini b/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/112.html.ini new file mode 100644 index 00000000000..ae9b23716a9 --- /dev/null +++ b/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/112.html.ini @@ -0,0 +1,5 @@ +[112.html] + type: testharness + [ scheduler: removing async attribute at runtime, script also has defer attribute] + expected: FAIL + diff --git a/tests/wpt/web-platform-tests/dom/events/Event-dispatch-bubbles-false.html b/tests/wpt/web-platform-tests/dom/events/Event-dispatch-bubbles-false.html index c381459f5e4..aaad28a6169 100644 --- a/tests/wpt/web-platform-tests/dom/events/Event-dispatch-bubbles-false.html +++ b/tests/wpt/web-platform-tests/dom/events/Event-dispatch-bubbles-false.html @@ -19,32 +19,21 @@