diff --git a/components/script/dom/compositionevent.rs b/components/script/dom/compositionevent.rs index aa72db95d21..8b00ed1ac9c 100644 --- a/components/script/dom/compositionevent.rs +++ b/components/script/dom/compositionevent.rs @@ -21,6 +21,21 @@ pub struct CompositionEvent { } impl CompositionEvent { + pub fn new_inherited() -> CompositionEvent { + CompositionEvent { + uievent: UIEvent::new_inherited(), + data: DOMString::new(), + } + } + + pub fn new_uninitialized(window: &Window) -> DomRoot { + reflect_dom_object( + Box::new(CompositionEvent::new_inherited()), + window, + CompositionEventBinding::Wrap, + ) + } + pub fn new( window: &Window, type_: DOMString, diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index a7a56665bf1..218554e9a9d 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -3811,6 +3811,9 @@ impl DocumentMethods for Document { "beforeunloadevent" => Ok(DomRoot::upcast(BeforeUnloadEvent::new_uninitialized( &self.window, ))), + "compositionevent" | "textevent" => Ok(DomRoot::upcast( + CompositionEvent::new_uninitialized(&self.window), + )), "closeevent" => Ok(DomRoot::upcast(CloseEvent::new_uninitialized( self.window.upcast(), ))), diff --git a/tests/wpt/metadata/dom/events/EventTarget-dispatchEvent.html.ini b/tests/wpt/metadata/dom/events/EventTarget-dispatchEvent.html.ini index aec746ae879..d0949d1c28c 100644 --- a/tests/wpt/metadata/dom/events/EventTarget-dispatchEvent.html.ini +++ b/tests/wpt/metadata/dom/events/EventTarget-dispatchEvent.html.ini @@ -3,9 +3,6 @@ [If the event's initialized flag is not set, an InvalidStateError must be thrown (AnimationEvent).] expected: FAIL - [If the event's initialized flag is not set, an InvalidStateError must be thrown (CompositionEvent).] - expected: FAIL - [If the event's initialized flag is not set, an InvalidStateError must be thrown (DeviceMotionEvent).] expected: FAIL @@ -24,9 +21,6 @@ [If the event's initialized flag is not set, an InvalidStateError must be thrown (SVGZoomEvents).] expected: FAIL - [If the event's initialized flag is not set, an InvalidStateError must be thrown (TextEvent).] - expected: FAIL - [If the event's initialized flag is not set, an InvalidStateError must be thrown (TrackEvent).] expected: FAIL diff --git a/tests/wpt/metadata/dom/nodes/Document-createEvent.https.html.ini b/tests/wpt/metadata/dom/nodes/Document-createEvent.https.html.ini index 968cd4f1e09..7f1a31d37d3 100644 --- a/tests/wpt/metadata/dom/nodes/Document-createEvent.https.html.ini +++ b/tests/wpt/metadata/dom/nodes/Document-createEvent.https.html.ini @@ -1,10 +1,4 @@ [Document-createEvent.https.html] - [createEvent('TextEvent') should be initialized correctly.] - expected: FAIL - - [compositionevent should be an alias for CompositionEvent.] - expected: FAIL - [createEvent('DRAGEVENT') should be initialized correctly.] expected: FAIL @@ -20,12 +14,6 @@ [Should throw NOT_SUPPORTED_ERR for non-legacy event interface "ProgressEvent"] expected: FAIL - [TEXTEVENT should be an alias for CompositionEvent.] - expected: FAIL - - [createEvent('compositionevent') should be initialized correctly.] - expected: FAIL - [devicemotionevent should be an alias for DeviceMotionEvent.] expected: FAIL @@ -38,24 +26,12 @@ [DRAGEVENT should be an alias for DragEvent.] expected: FAIL - [TextEvent should be an alias for CompositionEvent.] - expected: FAIL - - [createEvent('COMPOSITIONEVENT') should be initialized correctly.] - expected: FAIL - [DEVICEORIENTATIONEVENT should be an alias for DeviceOrientationEvent.] expected: FAIL [createEvent('dragevent') should be initialized correctly.] expected: FAIL - [createEvent('textevent') should be initialized correctly.] - expected: FAIL - - [CompositionEvent should be an alias for CompositionEvent.] - expected: FAIL - [createEvent('DEVICEMOTIONEVENT') should be initialized correctly.] expected: FAIL @@ -68,15 +44,9 @@ [dragevent should be an alias for DragEvent.] expected: FAIL - [textevent should be an alias for CompositionEvent.] - expected: FAIL - [Should throw NOT_SUPPORTED_ERR for non-legacy event interface "PopStateEvent"] expected: FAIL - [createEvent('CompositionEvent') should be initialized correctly.] - expected: FAIL - [deviceorientationevent should be an alias for DeviceOrientationEvent.] expected: FAIL @@ -89,18 +59,12 @@ [createEvent('DEVICEORIENTATIONEVENT') should be initialized correctly.] expected: FAIL - [createEvent('TEXTEVENT') should be initialized correctly.] - expected: FAIL - [createEvent('DragEvent') should be initialized correctly.] expected: FAIL [Should throw NOT_SUPPORTED_ERR for non-legacy event interface "ErrorEvent"] expected: FAIL - [COMPOSITIONEVENT should be an alias for CompositionEvent.] - expected: FAIL - [createEvent('deviceorientationevent') should be initialized correctly.] expected: FAIL