diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index 7610b8442b4d..fe3398417b2c 100644 --- a/components/script/dom/bindings/codegen/CodegenRust.py +++ b/components/script/dom/bindings/codegen/CodegenRust.py @@ -6425,7 +6425,8 @@ def struct(self): mustRoot = "" if self.membersNeedTracing(): mustRoot = "#[unrooted_must_root_lint::must_root]\n" - derive += ["Default"] + if not self.hasRequiredFields(self.dictionary): + derive += ["Default"] return (string.Template( "#[derive(${derive})]\n" @@ -6485,16 +6486,14 @@ def memberInsert(memberInfo): selfName = self.makeClassName(d) if self.membersNeedTracing(): actualType = "RootedTraceableBox<%s>" % selfName - preInitial = "let mut dictionary = RootedTraceableBox::new(%s::default());\n" % selfName - initParent = initParent = ("dictionary.parent = %s;\n" % initParent) if initParent else "" - memberInits = CGList([memberInit(m, False) for m in self.memberInfo]) - postInitial = "" + preInitial = "let dictionary = RootedTraceableBox::new(%s {\n" % selfName + postInitial = "});\n" else: actualType = selfName preInitial = "let dictionary = %s {\n" % selfName postInitial = "};\n" - initParent = ("parent: %s,\n" % initParent) if initParent else "" - memberInits = CGList([memberInit(m, True) for m in self.memberInfo]) + initParent = ("parent: %s,\n" % initParent) if initParent else "" + memberInits = CGList([memberInit(m, True) for m in self.memberInfo]) return string.Template( "impl ${selfName} {\n" @@ -6540,8 +6539,8 @@ def memberInsert(memberInfo): "initParent": CGIndenter(CGGeneric(initParent), indentLevel=16).define(), "initMembers": CGIndenter(memberInits, indentLevel=16).define(), "insertMembers": CGIndenter(memberInserts, indentLevel=8).define(), - "preInitial": CGIndenter(CGGeneric(preInitial), indentLevel=16).define(), - "postInitial": CGIndenter(CGGeneric(postInitial), indentLevel=16).define(), + "preInitial": CGIndenter(CGGeneric(preInitial), indentLevel=8).define(), + "postInitial": CGIndenter(CGGeneric(postInitial), indentLevel=8).define(), }) def membersNeedTracing(self): diff --git a/components/script/dom/promiserejectionevent.rs b/components/script/dom/promiserejectionevent.rs index 4e4a148905a9..19bf96b9b12f 100644 --- a/components/script/dom/promiserejectionevent.rs +++ b/components/script/dom/promiserejectionevent.rs @@ -5,7 +5,7 @@ use crate::dom::bindings::codegen::Bindings::EventBinding::EventMethods; use crate::dom::bindings::codegen::Bindings::PromiseRejectionEventBinding; use crate::dom::bindings::codegen::Bindings::PromiseRejectionEventBinding::PromiseRejectionEventMethods; -use crate::dom::bindings::error::{Error, Fallible}; +use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::reflector::reflect_dom_object; use crate::dom::bindings::root::DomRoot; @@ -72,14 +72,7 @@ impl PromiseRejectionEvent { init: RootedTraceableBox, ) -> Fallible> { let reason = init.reason.handle(); - let promise = match init.promise.as_ref() { - Some(promise) => promise.clone(), - None => { - return Err(Error::Type( - "required member promise is undefined.".to_string(), - )); - }, - }; + let promise = init.promise.clone(); let bubbles = EventBubbles::from(init.parent.bubbles); let cancelable = EventCancelable::from(init.parent.cancelable); diff --git a/components/script/dom/webidls/PromiseRejectionEvent.webidl b/components/script/dom/webidls/PromiseRejectionEvent.webidl index 6ef93b8b1a7c..70d11b1ff33b 100644 --- a/components/script/dom/webidls/PromiseRejectionEvent.webidl +++ b/components/script/dom/webidls/PromiseRejectionEvent.webidl @@ -6,12 +6,12 @@ [Exposed=(Window,Worker)] interface PromiseRejectionEvent : Event { - [Throws] constructor(DOMString type, optional PromiseRejectionEventInit eventInitDict = {}); + [Throws] constructor(DOMString type, PromiseRejectionEventInit eventInitDict); readonly attribute Promise promise; readonly attribute any reason; }; dictionary PromiseRejectionEventInit : EventInit { - /* required */ Promise promise; + required Promise promise; any reason; }; diff --git a/tests/wpt/metadata/html/dom/idlharness.https.html.ini b/tests/wpt/metadata/html/dom/idlharness.https.html.ini index dc99e0c09f1b..692dc849677f 100644 --- a/tests/wpt/metadata/html/dom/idlharness.https.html.ini +++ b/tests/wpt/metadata/html/dom/idlharness.https.html.ini @@ -1163,9 +1163,6 @@ [OffscreenCanvasRenderingContext2D interface: operation closePath()] expected: FAIL - [PromiseRejectionEvent interface object length] - expected: FAIL - [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "textAlign" with the proper type] expected: FAIL diff --git a/tests/wpt/metadata/html/dom/idlharness.worker.js.ini b/tests/wpt/metadata/html/dom/idlharness.worker.js.ini index 9fa9c825549f..518459adb811 100644 --- a/tests/wpt/metadata/html/dom/idlharness.worker.js.ini +++ b/tests/wpt/metadata/html/dom/idlharness.worker.js.ini @@ -68,9 +68,6 @@ [OffscreenCanvasRenderingContext2D interface: operation restore()] expected: FAIL - [PromiseRejectionEvent interface object length] - expected: FAIL - [WorkerGlobalScope interface: calling createImageBitmap(ImageBitmapSource, ImageBitmapOptions) on self with too few arguments must throw TypeError] expected: FAIL