diff --git a/components/script/dom/eventtarget.rs b/components/script/dom/eventtarget.rs index 558610fc99f..01fbc10c463 100644 --- a/components/script/dom/eventtarget.rs +++ b/components/script/dom/eventtarget.rs @@ -15,18 +15,20 @@ use dom::bindings::codegen::Bindings::EventListenerBinding::EventListener; use dom::bindings::codegen::Bindings::EventTargetBinding::AddEventListenerOptions; use dom::bindings::codegen::Bindings::EventTargetBinding::EventListenerOptions; use dom::bindings::codegen::Bindings::EventTargetBinding::EventTargetMethods; +use dom::bindings::codegen::Bindings::EventTargetBinding::Wrap; use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; use dom::bindings::codegen::UnionTypes::AddEventListenerOptionsOrBoolean; use dom::bindings::codegen::UnionTypes::EventListenerOptionsOrBoolean; use dom::bindings::codegen::UnionTypes::EventOrString; use dom::bindings::error::{Error, Fallible, report_pending_exception}; use dom::bindings::inheritance::Castable; -use dom::bindings::reflector::{DomObject, Reflector}; +use dom::bindings::reflector::{DomObject, Reflector, reflect_dom_object}; use dom::bindings::root::DomRoot; use dom::bindings::str::DOMString; use dom::element::Element; use dom::errorevent::ErrorEvent; use dom::event::{Event, EventBubbles, EventCancelable, EventStatus}; +use dom::globalscope::GlobalScope; use dom::node::document_from_node; use dom::virtualmethods::VirtualMethods; use dom::window::Window; @@ -291,6 +293,16 @@ impl EventTarget { } } + fn new(global: &GlobalScope) -> DomRoot { + reflect_dom_object(Box::new(EventTarget::new_inherited()), + global, + Wrap) + } + + pub fn Constructor(global: &GlobalScope) -> Fallible> { + Ok(EventTarget::new(global)) + } + pub fn get_listeners_for(&self, type_: &Atom, specific_phase: Option) diff --git a/components/script/dom/webidls/EventTarget.webidl b/components/script/dom/webidls/EventTarget.webidl index fbdff52c02c..c586fe7db9a 100644 --- a/components/script/dom/webidls/EventTarget.webidl +++ b/components/script/dom/webidls/EventTarget.webidl @@ -5,7 +5,7 @@ * https://dom.spec.whatwg.org/#interface-eventtarget */ -[Abstract, Exposed=(Window,Worker,Worklet)] +[Constructor, Exposed=(Window,Worker,Worklet)] interface EventTarget { void addEventListener( DOMString type, diff --git a/tests/wpt/metadata/dom/events/EventTarget-constructible.any.js.ini b/tests/wpt/metadata/dom/events/EventTarget-constructible.any.js.ini index 5d2f463627d..b140c115960 100644 --- a/tests/wpt/metadata/dom/events/EventTarget-constructible.any.js.ini +++ b/tests/wpt/metadata/dom/events/EventTarget-constructible.any.js.ini @@ -1,17 +1,11 @@ [EventTarget-constructible.any.worker.html] type: testharness - [A constructed EventTarget can be used as expected] - expected: FAIL - [EventTarget can be subclassed] expected: FAIL [EventTarget-constructible.any.html] type: testharness - [A constructed EventTarget can be used as expected] - expected: FAIL - [EventTarget can be subclassed] expected: FAIL diff --git a/tests/wpt/metadata/dom/interfaces.html.ini b/tests/wpt/metadata/dom/interfaces.html.ini index f523e4876e2..45ca49bad27 100644 --- a/tests/wpt/metadata/dom/interfaces.html.ini +++ b/tests/wpt/metadata/dom/interfaces.html.ini @@ -354,15 +354,9 @@ [EventTarget interface: document.querySelector("[id\]").attributes[0\] must inherit property "addEventListener" with the proper type (0)] expected: FAIL - [EventTarget interface: calling addEventListener(DOMString,EventListener,[object Object\],[object Object\]) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError] - expected: FAIL - [EventTarget interface: document.querySelector("[id\]").attributes[0\] must inherit property "removeEventListener" with the proper type (1)] expected: FAIL - [EventTarget interface: calling removeEventListener(DOMString,EventListener,[object Object\],[object Object\]) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError] - expected: FAIL - [EventTarget interface: document.querySelector("[id\]").attributes[0\] must inherit property "dispatchEvent" with the proper type (2)] expected: FAIL @@ -486,30 +480,6 @@ [CustomEvent interface: operation initCustomEvent(DOMString, boolean, boolean, any)] expected: FAIL - [EventTarget must be primary interface of new EventTarget()] - expected: FAIL - - [Stringification of new EventTarget()] - expected: FAIL - - [EventTarget interface: new EventTarget() must inherit property "addEventListener(DOMString, EventListener, [object Object\],[object Object\])" with the proper type] - expected: FAIL - - [EventTarget interface: calling addEventListener(DOMString, EventListener, [object Object\],[object Object\]) on new EventTarget() with too few arguments must throw TypeError] - expected: FAIL - - [EventTarget interface: new EventTarget() must inherit property "removeEventListener(DOMString, EventListener, [object Object\],[object Object\])" with the proper type] - expected: FAIL - - [EventTarget interface: calling removeEventListener(DOMString, EventListener, [object Object\],[object Object\]) on new EventTarget() with too few arguments must throw TypeError] - expected: FAIL - - [EventTarget interface: new EventTarget() must inherit property "dispatchEvent(Event)" with the proper type] - expected: FAIL - - [EventTarget interface: calling dispatchEvent(Event) on new EventTarget() with too few arguments must throw TypeError] - expected: FAIL - [AbortController interface: existence and properties of interface object] expected: FAIL