Implement EventTarget constructor

Resolves #19283
This commit is contained in:
Maxim Novikov 2017-11-19 16:14:57 +01:00
parent c9884604e9
commit 83c7f80baa
4 changed files with 14 additions and 38 deletions

View file

@ -15,18 +15,20 @@ use dom::bindings::codegen::Bindings::EventListenerBinding::EventListener;
use dom::bindings::codegen::Bindings::EventTargetBinding::AddEventListenerOptions; use dom::bindings::codegen::Bindings::EventTargetBinding::AddEventListenerOptions;
use dom::bindings::codegen::Bindings::EventTargetBinding::EventListenerOptions; use dom::bindings::codegen::Bindings::EventTargetBinding::EventListenerOptions;
use dom::bindings::codegen::Bindings::EventTargetBinding::EventTargetMethods; 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::Bindings::WindowBinding::WindowMethods;
use dom::bindings::codegen::UnionTypes::AddEventListenerOptionsOrBoolean; use dom::bindings::codegen::UnionTypes::AddEventListenerOptionsOrBoolean;
use dom::bindings::codegen::UnionTypes::EventListenerOptionsOrBoolean; use dom::bindings::codegen::UnionTypes::EventListenerOptionsOrBoolean;
use dom::bindings::codegen::UnionTypes::EventOrString; use dom::bindings::codegen::UnionTypes::EventOrString;
use dom::bindings::error::{Error, Fallible, report_pending_exception}; use dom::bindings::error::{Error, Fallible, report_pending_exception};
use dom::bindings::inheritance::Castable; 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::root::DomRoot;
use dom::bindings::str::DOMString; use dom::bindings::str::DOMString;
use dom::element::Element; use dom::element::Element;
use dom::errorevent::ErrorEvent; use dom::errorevent::ErrorEvent;
use dom::event::{Event, EventBubbles, EventCancelable, EventStatus}; use dom::event::{Event, EventBubbles, EventCancelable, EventStatus};
use dom::globalscope::GlobalScope;
use dom::node::document_from_node; use dom::node::document_from_node;
use dom::virtualmethods::VirtualMethods; use dom::virtualmethods::VirtualMethods;
use dom::window::Window; use dom::window::Window;
@ -291,6 +293,16 @@ impl EventTarget {
} }
} }
fn new(global: &GlobalScope) -> DomRoot<EventTarget> {
reflect_dom_object(Box::new(EventTarget::new_inherited()),
global,
Wrap)
}
pub fn Constructor(global: &GlobalScope) -> Fallible<DomRoot<EventTarget>> {
Ok(EventTarget::new(global))
}
pub fn get_listeners_for(&self, pub fn get_listeners_for(&self,
type_: &Atom, type_: &Atom,
specific_phase: Option<ListenerPhase>) specific_phase: Option<ListenerPhase>)

View file

@ -5,7 +5,7 @@
* https://dom.spec.whatwg.org/#interface-eventtarget * https://dom.spec.whatwg.org/#interface-eventtarget
*/ */
[Abstract, Exposed=(Window,Worker,Worklet)] [Constructor, Exposed=(Window,Worker,Worklet)]
interface EventTarget { interface EventTarget {
void addEventListener( void addEventListener(
DOMString type, DOMString type,

View file

@ -1,17 +1,11 @@
[EventTarget-constructible.any.worker.html] [EventTarget-constructible.any.worker.html]
type: testharness type: testharness
[A constructed EventTarget can be used as expected]
expected: FAIL
[EventTarget can be subclassed] [EventTarget can be subclassed]
expected: FAIL expected: FAIL
[EventTarget-constructible.any.html] [EventTarget-constructible.any.html]
type: testharness type: testharness
[A constructed EventTarget can be used as expected]
expected: FAIL
[EventTarget can be subclassed] [EventTarget can be subclassed]
expected: FAIL expected: FAIL

View file

@ -354,15 +354,9 @@
[EventTarget interface: document.querySelector("[id\]").attributes[0\] must inherit property "addEventListener" with the proper type (0)] [EventTarget interface: document.querySelector("[id\]").attributes[0\] must inherit property "addEventListener" with the proper type (0)]
expected: FAIL 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)] [EventTarget interface: document.querySelector("[id\]").attributes[0\] must inherit property "removeEventListener" with the proper type (1)]
expected: FAIL 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)] [EventTarget interface: document.querySelector("[id\]").attributes[0\] must inherit property "dispatchEvent" with the proper type (2)]
expected: FAIL expected: FAIL
@ -486,30 +480,6 @@
[CustomEvent interface: operation initCustomEvent(DOMString, boolean, boolean, any)] [CustomEvent interface: operation initCustomEvent(DOMString, boolean, boolean, any)]
expected: FAIL 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] [AbortController interface: existence and properties of interface object]
expected: FAIL expected: FAIL