From d9600ff50f3c1bdd8c44e2dfc15a18416d80cb82 Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Thu, 25 May 2023 23:59:02 -0400 Subject: [PATCH 1/9] Support arbitrary protos when wrapping EventTarget objects. --- Cargo.lock | 4 +- .../dom/bindings/codegen/CodegenRust.py | 55 ++++++-- components/script/dom/bindings/interface.rs | 122 +++++++++++++++++- components/script/dom/bindings/iterable.rs | 4 +- components/script/dom/bindings/reflector.rs | 14 +- components/script/dom/bindings/utils.rs | 4 + components/script/dom/eventtarget.rs | 8 +- .../EventTarget-constructible.any.js.ini | 11 -- 8 files changed, 187 insertions(+), 35 deletions(-) delete mode 100644 tests/wpt/metadata/dom/events/EventTarget-constructible.any.js.ini diff --git a/Cargo.lock b/Cargo.lock index 46e692b30b3..a83f90fdee4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3752,7 +3752,7 @@ dependencies = [ [[package]] name = "mozjs" version = "0.14.1" -source = "git+https://github.com/servo/mozjs#d2a3526611cc123139d01f9ac4ff915f805f9e74" +source = "git+https://github.com/servo/mozjs#b9edc816b6662a5986e190cdf53ae295049acb92" dependencies = [ "cc", "lazy_static", @@ -3765,7 +3765,7 @@ dependencies = [ [[package]] name = "mozjs_sys" version = "0.68.2" -source = "git+https://github.com/servo/mozjs#d2a3526611cc123139d01f9ac4ff915f805f9e74" +source = "git+https://github.com/servo/mozjs#b9edc816b6662a5986e190cdf53ae295049acb92" dependencies = [ "bindgen", "cc", diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index 24cf71d8820..5ed330083b9 100644 --- a/components/script/dom/bindings/codegen/CodegenRust.py +++ b/components/script/dom/bindings/codegen/CodegenRust.py @@ -2313,10 +2313,11 @@ def DOMClass(descriptor): return """\ DOMClass { interface_chain: [ %s ], + depth: %d, type_id: %s, malloc_size_of: %s as unsafe fn(&mut _, _) -> _, global: InterfaceObjectMap::Globals::%s, -}""" % (prototypeChainString, DOMClassTypeId(descriptor), mallocSizeOf, globals_) +}""" % (prototypeChainString, descriptor.prototypeDepth, DOMClassTypeId(descriptor), mallocSizeOf, globals_) class CGDOMJSClass(CGThing): @@ -2865,7 +2866,7 @@ ensure_expando_object(*cx, obj.handle().into(), expando.handle_mut()); copyFunc = "JS_InitializePropertiesFromCompatibleNativeObject" copyCode += """\ let mut slot = UndefinedValue(); -JS_GetReservedSlot(proto.get(), DOM_PROTO_UNFORGEABLE_HOLDER_SLOT, &mut slot); +JS_GetReservedSlot(canonical_proto.get(), DOM_PROTO_UNFORGEABLE_HOLDER_SLOT, &mut slot); rooted!(in(*cx) let mut unforgeable_holder = ptr::null_mut::()); unforgeable_holder.handle_mut().set(slot.to_object()); assert!(%(copyFunc)s(*cx, %(obj)s.handle(), unforgeable_holder.handle())); @@ -2884,6 +2885,7 @@ class CGWrapMethod(CGAbstractMethod): assert not descriptor.isGlobal() args = [Argument('SafeJSContext', 'cx'), Argument('&GlobalScope', 'scope'), + Argument('Option', 'given_proto'), Argument("Box<%s>" % descriptor.concreteType, 'object')] retval = 'DomRoot<%s>' % descriptor.concreteType CGAbstractMethod.__init__(self, descriptor, 'Wrap', retval, args, @@ -2896,7 +2898,7 @@ class CGWrapMethod(CGAbstractMethod): proto = "ptr::null_mut()" lazyProto = "true" # Our proxy handler will manage the prototype else: - proto = "proto.get()" + proto = "canonical_proto.get()" lazyProto = "false" create = """ @@ -2924,6 +2926,15 @@ SetProxyReservedSlot( else: lazyProto = None create = """ +rooted!(in(*cx) let mut proto = ptr::null_mut::()); +if let Some(given) = given_proto { + *proto = *given; + if get_context_realm(*cx) != get_object_realm(*given) { + assert!(JS_WrapObject(*cx, proto.handle_mut())); + } +} else { + *proto = *canonical_proto; +} rooted!(in(*cx) let obj = JS_NewObjectWithGivenProto( *cx, &Class.base, @@ -2951,9 +2962,9 @@ assert!(!scope.get().is_null()); assert!(((*get_object_class(scope.get())).flags & JSCLASS_IS_GLOBAL) != 0); let _ac = JSAutoRealm::new(*cx, scope.get()); -rooted!(in(*cx) let mut proto = ptr::null_mut::()); -GetProtoObject(cx, scope, proto.handle_mut()); -assert!(!proto.is_null()); +rooted!(in(*cx) let mut canonical_proto = ptr::null_mut::()); +GetProtoObject(cx, scope, canonical_proto.handle_mut()); +assert!(!canonical_proto.is_null()); %(createObject)s let root = raw.reflect_with(obj.get()); @@ -3010,9 +3021,9 @@ assert!(!obj.is_null()); let root = raw.reflect_with(obj.get()); let _ac = JSAutoRealm::new(*cx, obj.get()); -rooted!(in(*cx) let mut proto = ptr::null_mut::()); -GetProtoObject(cx, obj.handle(), proto.handle_mut()); -assert!(JS_SetPrototype(*cx, obj.handle(), proto.handle())); +rooted!(in(*cx) let mut canonical_proto = ptr::null_mut::()); +GetProtoObject(cx, obj.handle(), canonical_proto.handle_mut()); +assert!(JS_SetPrototype(*cx, obj.handle(), canonical_proto.handle())); let mut immutable = false; assert!(JS_SetImmutablePrototype(*cx, obj.handle(), &mut immutable)); assert!(immutable); @@ -3076,6 +3087,7 @@ impl DomObjectWrap for %s { const WRAP: unsafe fn( SafeJSContext, &GlobalScope, + Option, Box, ) -> Root> = Wrap; } @@ -3098,6 +3110,7 @@ impl DomObjectIteratorWrap for %s { const ITER_WRAP: unsafe fn( SafeJSContext, &GlobalScope, + Option, Box>, ) -> Root>> = Wrap; } @@ -6102,13 +6115,25 @@ class CGClassConstructHook(CGAbstractExternMethod): def definition_body(self): preamble = """let cx = SafeJSContext::from_ptr(cx); +let args = CallArgs::from_vp(vp, argc); let global = GlobalScope::from_object(JS_CALLEE(*cx, vp).to_object()); -""" +rooted!(in(*cx) let mut desired_proto = ptr::null_mut::()); +let proto_result = get_desired_proto( + cx, + &args, + PrototypeList::ID::%s, + CreateInterfaceObjects, + desired_proto.handle_mut(), +); + assert!(proto_result.is_ok()); +if proto_result.is_err() { + return false; +} +""" % (MakeNativeName(self.descriptor.name)) if len(self.exposureSet) == 1: preamble += """\ let global = DomRoot::downcast::(global).unwrap(); """ % list(self.exposureSet)[0] - preamble += """let args = CallArgs::from_vp(vp, argc);\n""" preamble = CGGeneric(preamble) if self.constructor.isHTMLConstructor(): signatures = self.constructor.signatures() @@ -6122,7 +6147,10 @@ let global = DomRoot::downcast::(global).unwrap(); else: name = self.constructor.identifier.name nativeName = MakeNativeName(self.descriptor.binaryNameFor(name)) - constructorCall = CGMethodCall(["&global"], nativeName, True, + args = ["&global"] + if self.descriptor.interface.identifier.name == "EventTarget": + args += ["desired_proto.handle()"] + constructorCall = CGMethodCall(args, nativeName, True, self.descriptor, self.constructor) return CGList([preamble, constructorCall]) @@ -6295,6 +6323,8 @@ def generate_imports(config, cgthings, descriptors, callbacks=None, dictionaries 'js::jsapi::CallArgs', 'js::jsapi::CurrentGlobalOrNull', 'js::rust::wrappers::GetPropertyKeys', + 'js::rust::get_object_realm', + 'js::rust::get_context_realm', 'js::jsapi::GCContext', 'js::jsapi::GetWellKnownSymbol', 'js::rust::Handle', @@ -6439,6 +6469,7 @@ def generate_imports(config, cgthings, descriptors, callbacks=None, dictionaries 'crate::dom::bindings::interface::define_guarded_properties', 'crate::dom::bindings::interface::is_exposed_in', 'crate::dom::bindings::interface::get_per_interface_object_handle', + 'crate::dom::bindings::interface::get_desired_proto', 'crate::dom::bindings::htmlconstructor::pop_current_element_queue', 'crate::dom::bindings::htmlconstructor::push_new_element_queue', 'crate::dom::bindings::iterable::Iterable', diff --git a/components/script/dom/bindings/interface.rs b/components/script/dom/bindings/interface.rs index 86b8f464629..14546d214ea 100644 --- a/components/script/dom/bindings/interface.rs +++ b/components/script/dom/bindings/interface.rs @@ -12,6 +12,7 @@ use crate::dom::bindings::guard::Guard; use crate::dom::bindings::principals::ServoJSPrincipals; use crate::dom::bindings::utils::{ get_proto_or_iface_array, ProtoOrIfaceArray, DOM_PROTOTYPE_SLOT, JSCLASS_DOM_GLOBAL, + DOMJSClass, }; use crate::script_runtime::JSContext as SafeJSContext; use js::error::throw_type_error; @@ -21,7 +22,7 @@ use js::jsapi::HandleObject as RawHandleObject; use js::jsapi::{jsid, JSClass, JSClassOps}; use js::jsapi::{ Compartment, CompartmentSpecifier, IsSharableCompartment, IsSystemCompartment, - JS_IterateCompartments, JS::CompartmentIterResult, + JS_IterateCompartments, JS::CompartmentIterResult, CallArgs, }; use js::jsapi::{JSAutoRealm, JSContext, JSFunctionSpec, JSObject, JSFUN_CONSTRUCTOR}; use js::jsapi::{JSPropertySpec, JSString, JSTracer, JS_AtomizeAndPinString}; @@ -31,13 +32,22 @@ use js::jsapi::{JS_NewStringCopyN, JS_SetReservedSlot}; use js::jsapi::{ObjectOps, OnNewGlobalHookOption, SymbolCode}; use js::jsapi::{TrueHandleValue, Value}; use js::jsapi::{JSPROP_PERMANENT, JSPROP_READONLY, JSPROP_RESOLVING}; +use js::jsapi::CheckedUnwrapStatic; +use js::jsapi::JS_GetProperty; +use js::jsapi::GetFunctionRealm; +use js::jsapi::GetRealmGlobalOrNull; +use js::jsapi::GetNonCCWObjectGlobal; +use js::jsapi::JS_WrapObject; +use js::jsapi::CurrentGlobalOrNull; use js::jsval::{JSVal, PrivateValue}; +use js::jsval::NullValue; +use js::rust::is_dom_class; use js::rust::wrappers::JS_FireOnNewGlobalObject; use js::rust::wrappers::RUST_SYMBOL_TO_JSID; use js::rust::wrappers::{JS_DefineProperty, JS_DefineProperty5}; use js::rust::wrappers::{JS_DefineProperty3, JS_DefineProperty4, JS_DefinePropertyById5}; use js::rust::wrappers::{JS_LinkConstructorAndPrototype, JS_NewObjectWithGivenProto}; -use js::rust::{define_methods, define_properties, get_object_class}; +use js::rust::{define_methods, define_properties, get_object_class, maybe_wrap_object}; use js::rust::{HandleObject, HandleValue, MutableHandleObject, RealmOptions}; use servo_url::MutableOrigin; use std::convert::TryFrom; @@ -592,3 +602,111 @@ pub fn define_dom_interface( get_per_interface_object_handle(cx, global, id, creator, proto.handle_mut()); assert!(!proto.is_null()); } + +fn get_proto_id_for_new_target( + new_target: HandleObject, +) -> Option { + unsafe { + let new_target_class = get_object_class(*new_target); + if is_dom_class(&*new_target_class) { + let domjsclass: *const DOMJSClass = new_target_class as *const DOMJSClass; + let dom_class = &(*domjsclass).dom_class; + return Some(dom_class.interface_chain[dom_class.depth as usize]); + } + return None; + } +} + +pub fn get_desired_proto( + cx: SafeJSContext, + args: &CallArgs, + proto_id: PrototypeList::ID, + creator: unsafe fn(SafeJSContext, HandleObject, *mut ProtoOrIfaceArray), + mut desired_proto: MutableHandleObject, +) -> Result<(), ()> { + unsafe { + // This basically implements + // https://heycam.github.io/webidl/#internally-create-a-new-object-implementing-the-interface + // step 3. + + //assert!(args.is_constructing()) + + // The desired prototype depends on the actual constructor that was invoked, + // which is passed to us as the newTarget in the callargs. We want to do + // something akin to the ES6 specification's GetProtototypeFromConstructor (so + // get .prototype on the newTarget, with a fallback to some sort of default). + + // First, a fast path for the case when the the constructor is in fact one of + // our DOM constructors. This is safe because on those the "constructor" + // property is non-configurable and non-writable, so we don't have to do the + // slow JS_GetProperty call. + rooted!(in(*cx) let mut new_target = args.new_target().to_object()); + rooted!(in(*cx) let original_new_target = *new_target); + // See whether we have a known DOM constructor here, such that we can take a + // fast path. + let target_proto_id = get_proto_id_for_new_target(new_target.handle()) + .or_else(|| { + // We might still have a cross-compartment wrapper for a known DOM + // constructor. CheckedUnwrapStatic is fine here, because we're looking for + // DOM constructors and those can't be cross-origin objects. + *new_target = CheckedUnwrapStatic(*new_target); + if !new_target.is_null() && &*new_target != &*original_new_target { + get_proto_id_for_new_target(new_target.handle()) + } else { + None + } + }); + + if let Some(proto_id) = target_proto_id { + let global = GetNonCCWObjectGlobal(*new_target); + let proto_or_iface_cache = get_proto_or_iface_array(global); + desired_proto.set((*proto_or_iface_cache)[proto_id as usize]); + if &*new_target != &*original_new_target { + if !JS_WrapObject(*cx, desired_proto.into()) { + return Err(()); + } + } + return Ok(()); + } + + // Slow path. This basically duplicates the ES6 spec's + // GetPrototypeFromConstructor except that instead of taking a string naming + // the fallback prototype we determine the fallback based on the proto id we + // were handed. + rooted!(in(*cx) let mut proto_val = NullValue()); + if !JS_GetProperty(*cx, original_new_target.handle().into(), b"prototype\0".as_ptr() as *const libc::c_char, proto_val.handle_mut().into()) { + return Err(()); + } + + if proto_val.is_object() { + desired_proto.set(proto_val.to_object()); + return Ok(()); + } + + // Fall back to getting the proto for our given proto id in the realm that + // GetFunctionRealm(newTarget) returns. + rooted!(in(*cx) let realm = GetFunctionRealm(*cx, new_target.handle().into())); + + if (*realm).is_null() { + return Err(()); + } + + { + let _realm = JSAutoRealm::new(*cx, GetRealmGlobalOrNull(*realm)); + rooted!(in(*cx) let global = CurrentGlobalOrNull(*cx)); + get_per_interface_object_handle( + cx, + global.handle(), + ProtoOrIfaceIndex::ID(proto_id), + creator, + desired_proto + ); + if desired_proto.is_null() { + return Err(()); + } + } + + maybe_wrap_object(*cx, desired_proto); + return Ok(()) + } +} diff --git a/components/script/dom/bindings/iterable.rs b/components/script/dom/bindings/iterable.rs index 2eac830a4bb..9c7da60b037 100644 --- a/components/script/dom/bindings/iterable.rs +++ b/components/script/dom/bindings/iterable.rs @@ -20,7 +20,7 @@ use dom_struct::dom_struct; use js::conversions::ToJSValConvertible; use js::jsapi::{Heap, JSObject}; use js::jsval::UndefinedValue; -use js::rust::{HandleValue, MutableHandleObject}; +use js::rust::{HandleValue, MutableHandleObject, HandleObject}; use std::cell::Cell; use std::ptr; use std::ptr::NonNull; @@ -118,7 +118,7 @@ impl IterableIterator { } impl DomObjectWrap for IterableIterator { - const WRAP: unsafe fn(JSContext, &GlobalScope, Box) -> Root> = T::ITER_WRAP; + const WRAP: unsafe fn(JSContext, &GlobalScope, Option, Box) -> Root> = T::ITER_WRAP; } fn dict_return( diff --git a/components/script/dom/bindings/reflector.rs b/components/script/dom/bindings/reflector.rs index 8176989ed36..32c3d7645e1 100644 --- a/components/script/dom/bindings/reflector.rs +++ b/components/script/dom/bindings/reflector.rs @@ -23,7 +23,16 @@ where U: DerivedFrom, { let global_scope = global.upcast(); - unsafe { T::WRAP(GlobalScope::get_cx(), global_scope, obj) } + unsafe { T::WRAP(GlobalScope::get_cx(), global_scope, None, obj) } +} + +pub fn reflect_dom_object2(obj: Box, global: &U, proto: HandleObject) -> DomRoot +where + T: DomObject + DomObjectWrap, + U: DerivedFrom, +{ + let global_scope = global.upcast(); + unsafe { T::WRAP(GlobalScope::get_cx(), global_scope, Some(proto), obj) } } /// A struct to store a reference to the reflector of a DOM object. @@ -109,7 +118,7 @@ impl MutDomObject for Reflector { /// A trait to provide a function pointer to wrap function for DOM objects. pub trait DomObjectWrap: Sized + DomObject { /// Function pointer to the general wrap function type - const WRAP: unsafe fn(JSContext, &GlobalScope, Box) -> Root>; + const WRAP: unsafe fn(JSContext, &GlobalScope, Option, Box) -> Root>; } /// A trait to provide a function pointer to wrap function for @@ -119,6 +128,7 @@ pub trait DomObjectIteratorWrap: DomObjectWrap + JSTraceable + Iterable { const ITER_WRAP: unsafe fn( JSContext, &GlobalScope, + Option, Box>, ) -> Root>>; } diff --git a/components/script/dom/bindings/utils.rs b/components/script/dom/bindings/utils.rs index a0d3f75315d..87748da1ec4 100644 --- a/components/script/dom/bindings/utils.rs +++ b/components/script/dom/bindings/utils.rs @@ -99,6 +99,9 @@ pub struct DOMClass { /// derivedness. pub interface_chain: [PrototypeList::ID; MAX_PROTO_CHAIN_LENGTH], + /// The last valid index of `interface_chain`. + pub depth: u8, + /// The type ID of that interface. pub type_id: TopTypeId, @@ -112,6 +115,7 @@ unsafe impl Sync for DOMClass {} /// The JSClass used for DOM object reflectors. #[derive(Copy)] +#[repr(C)] pub struct DOMJSClass { /// The actual JSClass. pub base: js::jsapi::JSClass, diff --git a/components/script/dom/eventtarget.rs b/components/script/dom/eventtarget.rs index 9e9bf816c72..dd0079c47dd 100644 --- a/components/script/dom/eventtarget.rs +++ b/components/script/dom/eventtarget.rs @@ -21,7 +21,7 @@ use crate::dom::bindings::codegen::UnionTypes::EventListenerOptionsOrBoolean; use crate::dom::bindings::codegen::UnionTypes::EventOrString; use crate::dom::bindings::error::{report_pending_exception, Error, Fallible}; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object, reflect_dom_object2, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::element::Element; @@ -39,7 +39,7 @@ use fnv::FnvHasher; use js::jsapi::JS_GetFunctionObject; use js::rust::transform_u16_to_source_text; use js::rust::wrappers::CompileFunction; -use js::rust::{CompileOptionsWrapper, RootedObjectVectorWrapper}; +use js::rust::{CompileOptionsWrapper, RootedObjectVectorWrapper, HandleObject}; use libc::c_char; use servo_atoms::Atom; use servo_url::ServoUrl; @@ -360,8 +360,8 @@ impl EventTarget { } #[allow(non_snake_case)] - pub fn Constructor(global: &GlobalScope) -> Fallible> { - Ok(EventTarget::new(global)) + pub fn Constructor(global: &GlobalScope, proto: HandleObject) -> Fallible> { + Ok(reflect_dom_object2(Box::new(EventTarget::new_inherited()), global, proto)) } pub fn has_listeners_for(&self, type_: &Atom) -> bool { diff --git a/tests/wpt/metadata/dom/events/EventTarget-constructible.any.js.ini b/tests/wpt/metadata/dom/events/EventTarget-constructible.any.js.ini deleted file mode 100644 index b140c115960..00000000000 --- a/tests/wpt/metadata/dom/events/EventTarget-constructible.any.js.ini +++ /dev/null @@ -1,11 +0,0 @@ -[EventTarget-constructible.any.worker.html] - type: testharness - [EventTarget can be subclassed] - expected: FAIL - - -[EventTarget-constructible.any.html] - type: testharness - [EventTarget can be subclassed] - expected: FAIL - From dbff26bce05d404027ef5bbfd85fb5995e4726bc Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Sun, 28 May 2023 22:43:55 -0400 Subject: [PATCH 2/9] Support arbitrary protos when wrapping DOM objects with constructors. --- components/script/dom/analysernode.rs | 20 +++++-- components/script/dom/animationevent.rs | 12 +++- components/script/dom/audiobuffer.rs | 22 +++++-- .../script/dom/audiobuffersourcenode.rs | 19 ++++-- components/script/dom/audiocontext.rs | 10 ++-- .../dom/bindings/codegen/CodegenRust.py | 4 +- .../script/dom/bindings/htmlconstructor.rs | 6 +- components/script/dom/bindings/reflector.rs | 4 +- components/script/dom/biquadfilternode.rs | 19 ++++-- components/script/dom/blob.rs | 12 +++- .../script/dom/bluetoothadvertisingevent.rs | 11 +++- components/script/dom/broadcastchannel.rs | 12 ++-- components/script/dom/channelmergernode.rs | 19 ++++-- components/script/dom/channelsplitternode.rs | 19 ++++-- components/script/dom/characterdata.rs | 2 +- components/script/dom/closeevent.rs | 31 +++++++++- components/script/dom/comment.rs | 9 +-- components/script/dom/compositionevent.rs | 32 +++++++++- components/script/dom/constantsourcenode.rs | 19 ++++-- components/script/dom/create.rs | 29 +++++---- components/script/dom/customevent.rs | 17 ++++-- components/script/dom/document.rs | 53 +++++++++++++++-- components/script/dom/documentfragment.rs | 12 +++- components/script/dom/domexception.rs | 7 ++- components/script/dom/domimplementation.rs | 7 ++- components/script/dom/dommatrix.rs | 21 ++++--- components/script/dom/dommatrixreadonly.rs | 21 ++++--- components/script/dom/domparser.rs | 11 ++-- components/script/dom/dompoint.rs | 12 +++- components/script/dom/dompointreadonly.rs | 13 +++- components/script/dom/domquad.rs | 20 ++++++- components/script/dom/domrect.rs | 13 +++- components/script/dom/domrectreadonly.rs | 12 ++-- components/script/dom/element.rs | 11 +++- components/script/dom/errorevent.rs | 40 +++++++++++-- components/script/dom/event.rs | 24 ++++++-- components/script/dom/eventsource.rs | 10 +++- components/script/dom/eventtarget.rs | 10 ++-- components/script/dom/extendableevent.rs | 21 +++++-- .../script/dom/extendablemessageevent.rs | 34 +++++++++-- components/script/dom/file.rs | 22 +++++-- components/script/dom/filereader.rs | 11 ++-- components/script/dom/filereadersync.rs | 11 ++-- components/script/dom/focusevent.rs | 37 ++++++++++-- components/script/dom/formdata.rs | 14 +++-- components/script/dom/formdataevent.rs | 28 ++++++++- components/script/dom/gainnode.rs | 19 ++++-- components/script/dom/gamepadevent.rs | 20 ++++++- components/script/dom/gpuoutofmemoryerror.rs | 13 ++-- .../script/dom/gpuuncapturederrorevent.rs | 18 +++++- components/script/dom/gpuvalidationerror.rs | 13 ++-- components/script/dom/hashchangeevent.rs | 29 +++++++-- components/script/dom/headers.rs | 12 +++- components/script/dom/htmlanchorelement.rs | 5 +- components/script/dom/htmlareaelement.rs | 5 +- components/script/dom/htmlaudioelement.rs | 8 ++- components/script/dom/htmlbaseelement.rs | 5 +- components/script/dom/htmlbodyelement.rs | 5 +- components/script/dom/htmlbrelement.rs | 5 +- components/script/dom/htmlbuttonelement.rs | 5 +- components/script/dom/htmlcanvaselement.rs | 6 +- components/script/dom/htmldataelement.rs | 5 +- components/script/dom/htmldatalistelement.rs | 5 +- components/script/dom/htmldetailselement.rs | 5 +- components/script/dom/htmldialogelement.rs | 5 +- components/script/dom/htmldirectoryelement.rs | 5 +- components/script/dom/htmldivelement.rs | 5 +- components/script/dom/htmldlistelement.rs | 5 +- components/script/dom/htmlelement.rs | 7 ++- components/script/dom/htmlembedelement.rs | 5 +- components/script/dom/htmlfieldsetelement.rs | 5 +- components/script/dom/htmlfontelement.rs | 5 +- components/script/dom/htmlformelement.rs | 5 +- components/script/dom/htmlframeelement.rs | 5 +- components/script/dom/htmlframesetelement.rs | 5 +- components/script/dom/htmlheadelement.rs | 5 +- components/script/dom/htmlheadingelement.rs | 5 +- components/script/dom/htmlhrelement.rs | 5 +- components/script/dom/htmlhtmlelement.rs | 5 +- components/script/dom/htmliframeelement.rs | 5 +- components/script/dom/htmlimageelement.rs | 7 ++- components/script/dom/htmlinputelement.rs | 4 +- components/script/dom/htmllabelelement.rs | 5 +- components/script/dom/htmllegendelement.rs | 5 +- components/script/dom/htmllielement.rs | 5 +- components/script/dom/htmllinkelement.rs | 5 +- components/script/dom/htmlmapelement.rs | 5 +- components/script/dom/htmlmediaelement.rs | 2 + components/script/dom/htmlmenuelement.rs | 5 +- components/script/dom/htmlmetaelement.rs | 5 +- components/script/dom/htmlmeterelement.rs | 5 +- components/script/dom/htmlmodelement.rs | 5 +- components/script/dom/htmlobjectelement.rs | 5 +- components/script/dom/htmlolistelement.rs | 5 +- components/script/dom/htmloptgroupelement.rs | 5 +- components/script/dom/htmloptionelement.rs | 7 ++- .../script/dom/htmloptionscollection.rs | 2 +- components/script/dom/htmloutputelement.rs | 5 +- components/script/dom/htmlparagraphelement.rs | 5 +- components/script/dom/htmlparamelement.rs | 5 +- components/script/dom/htmlpictureelement.rs | 5 +- components/script/dom/htmlpreelement.rs | 5 +- components/script/dom/htmlprogresselement.rs | 5 +- components/script/dom/htmlquoteelement.rs | 5 +- components/script/dom/htmlscriptelement.rs | 5 +- components/script/dom/htmlselectelement.rs | 5 +- components/script/dom/htmlsourceelement.rs | 5 +- components/script/dom/htmlspanelement.rs | 5 +- components/script/dom/htmlstyleelement.rs | 5 +- .../script/dom/htmltablecaptionelement.rs | 5 +- components/script/dom/htmltablecellelement.rs | 5 +- components/script/dom/htmltablecolelement.rs | 5 +- components/script/dom/htmltableelement.rs | 12 ++-- components/script/dom/htmltablerowelement.rs | 7 ++- .../script/dom/htmltablesectionelement.rs | 7 ++- components/script/dom/htmltemplateelement.rs | 5 +- components/script/dom/htmltextareaelement.rs | 5 +- components/script/dom/htmltimeelement.rs | 5 +- components/script/dom/htmltitleelement.rs | 5 +- components/script/dom/htmltrackelement.rs | 5 +- components/script/dom/htmlulistelement.rs | 5 +- components/script/dom/htmlunknownelement.rs | 5 +- components/script/dom/htmlvideoelement.rs | 5 +- components/script/dom/imagedata.rs | 21 ++++--- components/script/dom/inputevent.rs | 11 +++- components/script/dom/keyboardevent.rs | 51 ++++++++++++++-- .../script/dom/mediaelementaudiosourcenode.rs | 19 ++++-- components/script/dom/mediametadata.rs | 12 +++- components/script/dom/mediaquerylistevent.rs | 26 ++++++-- components/script/dom/mediastream.rs | 28 ++++++--- .../dom/mediastreamaudiodestinationnode.rs | 19 ++++-- .../script/dom/mediastreamaudiosourcenode.rs | 19 ++++-- .../dom/mediastreamtrackaudiosourcenode.rs | 19 ++++-- components/script/dom/messagechannel.rs | 12 ++-- components/script/dom/messageevent.rs | 46 +++++++++++++-- components/script/dom/mouseevent.rs | 59 +++++++++++++++++-- components/script/dom/mutationobserver.rs | 10 ++-- components/script/dom/node.rs | 13 +++- .../script/dom/offlineaudiocompletionevent.rs | 20 ++++++- components/script/dom/offlineaudiocontext.rs | 11 +++- components/script/dom/offscreencanvas.rs | 13 ++-- components/script/dom/oscillatornode.rs | 19 ++++-- components/script/dom/pagetransitionevent.rs | 24 ++++++-- components/script/dom/pannernode.rs | 19 ++++-- components/script/dom/performanceobserver.rs | 19 ++++-- components/script/dom/popstateevent.rs | 17 +++--- components/script/dom/progressevent.rs | 33 ++++++++++- .../script/dom/promiserejectionevent.rs | 25 ++++++-- components/script/dom/range.rs | 32 ++++++++-- components/script/dom/request.rs | 16 ++--- components/script/dom/response.rs | 12 +++- components/script/dom/rtcdatachannelevent.rs | 21 ++++++- components/script/dom/rtcerror.rs | 13 +++- components/script/dom/rtcerrorevent.rs | 20 ++++++- components/script/dom/rtcicecandidate.rs | 21 ++++++- components/script/dom/rtcpeerconnection.rs | 15 ++--- .../script/dom/rtcpeerconnectioniceevent.rs | 21 ++++++- .../script/dom/rtcsessiondescription.rs | 11 +++- components/script/dom/rtctrackevent.rs | 20 ++++++- .../script/dom/servoparser/async_html.rs | 2 +- components/script/dom/servoparser/mod.rs | 6 +- components/script/dom/stereopannernode.rs | 19 ++++-- components/script/dom/storageevent.rs | 43 ++++++++++++-- components/script/dom/submitevent.rs | 20 ++++++- components/script/dom/svgelement.rs | 5 +- components/script/dom/svgsvgelement.rs | 5 +- components/script/dom/testbinding.rs | 18 +++--- components/script/dom/testbindingiterable.rs | 12 ++-- .../script/dom/testbindingpairiterable.rs | 12 ++-- components/script/dom/testworklet.rs | 11 ++-- components/script/dom/text.rs | 11 +++- components/script/dom/textdecoder.rs | 11 +++- components/script/dom/textencoder.rs | 11 ++-- components/script/dom/trackevent.rs | 20 ++++++- components/script/dom/transitionevent.rs | 17 +++++- components/script/dom/uievent.rs | 27 +++++++-- components/script/dom/url.rs | 10 ++-- components/script/dom/urlsearchparams.rs | 12 +++- components/script/dom/vttcue.rs | 12 ++-- components/script/dom/vttregion.rs | 13 ++-- components/script/dom/webglcontextevent.rs | 23 ++++++-- components/script/dom/websocket.rs | 10 ++-- components/script/dom/wheelevent.rs | 41 +++++++++++-- components/script/dom/worker.rs | 12 ++-- components/script/dom/xmlhttprequest.rs | 12 ++-- components/script/dom/xmlserializer.rs | 11 ++-- components/script/dom/xrinputsourceevent.rs | 22 ++++++- .../script/dom/xrinputsourceschangeevent.rs | 34 +++++++++-- components/script/dom/xrlayerevent.rs | 10 ++-- components/script/dom/xrmediabinding.rs | 11 ++-- components/script/dom/xrray.rs | 14 +++-- components/script/dom/xrrigidtransform.rs | 12 +++- components/script/dom/xrsessionevent.rs | 20 ++++++- components/script/dom/xrwebglbinding.rs | 12 ++-- components/script/dom/xrwebgllayer.rs | 11 +++- components/script/fetch.rs | 2 +- components/script/webdriver_handlers.rs | 2 +- 197 files changed, 2028 insertions(+), 586 deletions(-) diff --git a/components/script/dom/analysernode.rs b/components/script/dom/analysernode.rs index d09dd61d9f3..ac703adcea7 100644 --- a/components/script/dom/analysernode.rs +++ b/components/script/dom/analysernode.rs @@ -14,14 +14,14 @@ use crate::dom::bindings::codegen::Bindings::AudioNodeBinding::{ use crate::dom::bindings::error::{Error, Fallible}; use crate::dom::bindings::num::Finite; use crate::dom::bindings::refcounted::Trusted; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::DomRoot; use crate::dom::window::Window; use crate::task_source::TaskSource; use dom_struct::dom_struct; use ipc_channel::ipc::{self, IpcReceiver}; use ipc_channel::router::ROUTER; -use js::rust::CustomAutoRooterGuard; +use js::rust::{CustomAutoRooterGuard, HandleObject}; use js::typedarray::{Float32Array, Uint8Array}; use servo_media::audio::analyser_node::AnalysisEngine; use servo_media::audio::block::Block; @@ -89,14 +89,23 @@ impl AnalyserNode { )) } - #[allow(unrooted_must_root)] pub fn new( window: &Window, context: &BaseAudioContext, options: &AnalyserOptions, + ) -> Fallible> { + Self::new_with_proto(window, None, context, options) + } + + #[allow(unrooted_must_root)] + pub fn new_with_proto( + window: &Window, + proto: Option, + context: &BaseAudioContext, + options: &AnalyserOptions, ) -> Fallible> { let (node, recv) = AnalyserNode::new_inherited(window, context, options)?; - let object = reflect_dom_object(Box::new(node), window); + let object = reflect_dom_object2(Box::new(node), window, proto); let (source, canceller) = window .task_manager() .dom_manipulation_task_source_with_canceller(); @@ -122,10 +131,11 @@ impl AnalyserNode { #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, context: &BaseAudioContext, options: &AnalyserOptions, ) -> Fallible> { - AnalyserNode::new(window, context, options) + AnalyserNode::new_with_proto(window, proto, context, options) } pub fn push_block(&self, block: Block) { diff --git a/components/script/dom/animationevent.rs b/components/script/dom/animationevent.rs index 191b460228d..1a5179c7ebe 100644 --- a/components/script/dom/animationevent.rs +++ b/components/script/dom/animationevent.rs @@ -8,12 +8,13 @@ use crate::dom::bindings::codegen::Bindings::AnimationEventBinding::{ use crate::dom::bindings::codegen::Bindings::EventBinding::EventMethods; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::num::Finite; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_atoms::Atom; #[dom_struct] @@ -35,7 +36,11 @@ impl AnimationEvent { } pub fn new(window: &Window, type_: Atom, init: &AnimationEventInit) -> DomRoot { - let ev = reflect_dom_object(Box::new(AnimationEvent::new_inherited(init)), window); + Self::new_with_proto(window, None, type_, init) + } + + fn new_with_proto(window: &Window, proto: Option, type_: Atom, init: &AnimationEventInit) -> DomRoot { + let ev = reflect_dom_object2(Box::new(AnimationEvent::new_inherited(init)), window, proto); { let event = ev.upcast::(); event.init_event(type_, init.parent.bubbles, init.parent.cancelable); @@ -46,10 +51,11 @@ impl AnimationEvent { #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, type_: DOMString, init: &AnimationEventInit, ) -> DomRoot { - AnimationEvent::new(window, Atom::from(type_), init) + AnimationEvent::new_with_proto(window, proto, Atom::from(type_), init) } } diff --git a/components/script/dom/audiobuffer.rs b/components/script/dom/audiobuffer.rs index 268424d1c4b..9d1e011066a 100644 --- a/components/script/dom/audiobuffer.rs +++ b/components/script/dom/audiobuffer.rs @@ -9,7 +9,7 @@ use crate::dom::bindings::codegen::Bindings::AudioBufferBinding::{ }; use crate::dom::bindings::error::{Error, Fallible}; use crate::dom::bindings::num::Finite; -use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::globalscope::GlobalScope; use crate::dom::window::Window; @@ -20,6 +20,7 @@ use js::jsapi::JS_GetArrayBufferViewBuffer; use js::jsapi::{Heap, JSObject}; use js::rust::wrappers::DetachArrayBuffer; use js::rust::CustomAutoRooterGuard; +use js::rust::HandleObject; use js::typedarray::{CreateWith, Float32Array}; use servo_media::audio::buffer_source_node::AudioBuffer as ServoMediaAudioBuffer; use std::cmp::min; @@ -76,16 +77,27 @@ impl AudioBuffer { } } - #[allow(unrooted_must_root)] pub fn new( global: &Window, number_of_channels: u32, length: u32, sample_rate: f32, initial_data: Option<&[Vec]>, + ) -> DomRoot { + Self::new_with_proto(global, None, number_of_channels, length, sample_rate, initial_data) + } + + #[allow(unrooted_must_root)] + fn new_with_proto( + global: &Window, + proto: Option, + number_of_channels: u32, + length: u32, + sample_rate: f32, + initial_data: Option<&[Vec]>, ) -> DomRoot { let buffer = AudioBuffer::new_inherited(number_of_channels, length, sample_rate); - let buffer = reflect_dom_object(Box::new(buffer), global); + let buffer = reflect_dom_object2(Box::new(buffer), global, proto); buffer.set_initial_data(initial_data); buffer } @@ -94,6 +106,7 @@ impl AudioBuffer { #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, options: &AudioBufferOptions, ) -> Fallible> { if options.length <= 0 || @@ -104,8 +117,9 @@ impl AudioBuffer { { return Err(Error::NotSupported); } - Ok(AudioBuffer::new( + Ok(AudioBuffer::new_with_proto( window, + proto, options.numberOfChannels, options.length, *options.sampleRate, diff --git a/components/script/dom/audiobuffersourcenode.rs b/components/script/dom/audiobuffersourcenode.rs index 683f32f4ec0..affbe4797fe 100644 --- a/components/script/dom/audiobuffersourcenode.rs +++ b/components/script/dom/audiobuffersourcenode.rs @@ -13,10 +13,11 @@ use crate::dom::bindings::codegen::Bindings::AudioScheduledSourceNodeBinding::Au use crate::dom::bindings::error::{Error, Fallible}; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::num::Finite; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::{Dom, DomRoot, MutNullableDom}; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_media::audio::buffer_source_node::AudioBufferSourceNodeMessage; use servo_media::audio::buffer_source_node::AudioBufferSourceNodeOptions; use servo_media::audio::node::{AudioNodeInit, AudioNodeMessage}; @@ -92,23 +93,33 @@ impl AudioBufferSourceNode { Ok(node) } - #[allow(unrooted_must_root)] pub fn new( window: &Window, context: &BaseAudioContext, options: &AudioBufferSourceOptions, + ) -> Fallible> { + Self::new_with_proto(window, None, context, options) + } + + #[allow(unrooted_must_root)] + fn new_with_proto( + window: &Window, + proto: Option, + context: &BaseAudioContext, + options: &AudioBufferSourceOptions, ) -> Fallible> { let node = AudioBufferSourceNode::new_inherited(window, context, options)?; - Ok(reflect_dom_object(Box::new(node), window)) + Ok(reflect_dom_object2(Box::new(node), window, proto)) } #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, context: &BaseAudioContext, options: &AudioBufferSourceOptions, ) -> Fallible> { - AudioBufferSourceNode::new(window, context, options) + AudioBufferSourceNode::new_with_proto(window, proto, context, options) } } diff --git a/components/script/dom/audiocontext.rs b/components/script/dom/audiocontext.rs index 4f0d10285fa..1dac9a00cf6 100644 --- a/components/script/dom/audiocontext.rs +++ b/components/script/dom/audiocontext.rs @@ -17,7 +17,7 @@ use crate::dom::bindings::error::{Error, Fallible}; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::num::Finite; use crate::dom::bindings::refcounted::{Trusted, TrustedPromise}; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; use crate::dom::bindings::root::DomRoot; use crate::dom::htmlmediaelement::HTMLMediaElement; use crate::dom::mediaelementaudiosourcenode::MediaElementAudioSourceNode; @@ -31,6 +31,7 @@ use crate::dom::window::Window; use crate::realms::InRealm; use crate::task_source::TaskSource; use dom_struct::dom_struct; +use js::rust::HandleObject; use msg::constellation_msg::PipelineId; use servo_media::audio::context::{LatencyCategory, ProcessingState, RealTimeAudioContextOptions}; use std::rc::Rc; @@ -79,10 +80,10 @@ impl AudioContext { } #[allow(unrooted_must_root)] - pub fn new(window: &Window, options: &AudioContextOptions) -> DomRoot { + fn new(window: &Window, proto: Option, options: &AudioContextOptions) -> DomRoot { let pipeline_id = window.pipeline_id(); let context = AudioContext::new_inherited(options, pipeline_id); - let context = reflect_dom_object(Box::new(context), window); + let context = reflect_dom_object2(Box::new(context), window, proto); context.resume(); context } @@ -91,9 +92,10 @@ impl AudioContext { #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, options: &AudioContextOptions, ) -> Fallible> { - Ok(AudioContext::new(window, options)) + Ok(AudioContext::new(window, proto, options)) } fn resume(&self) { diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index 5ed330083b9..b0f89c6a1d3 100644 --- a/components/script/dom/bindings/codegen/CodegenRust.py +++ b/components/script/dom/bindings/codegen/CodegenRust.py @@ -6147,9 +6147,7 @@ let global = DomRoot::downcast::(global).unwrap(); else: name = self.constructor.identifier.name nativeName = MakeNativeName(self.descriptor.binaryNameFor(name)) - args = ["&global"] - if self.descriptor.interface.identifier.name == "EventTarget": - args += ["desired_proto.handle()"] + args = ["&global", "Some(desired_proto.handle())"] constructorCall = CGMethodCall(args, nativeName, True, self.descriptor, self.constructor) return CGList([preamble, constructorCall]) diff --git a/components/script/dom/bindings/htmlconstructor.rs b/components/script/dom/bindings/htmlconstructor.rs index 76d717ff4b7..5d74f153c8b 100644 --- a/components/script/dom/bindings/htmlconstructor.rs +++ b/components/script/dom/bindings/htmlconstructor.rs @@ -225,10 +225,12 @@ unsafe fn html_constructor( None => { // Step 8.1 let name = QualName::new(None, ns!(html), definition.local_name.clone()); + // Any prototype used to create these elements will be overwritten before returning + // from this function, so we don't bother overwriting the defaults here. let element = if definition.is_autonomous() { - DomRoot::upcast(HTMLElement::new(name.local, None, &*document)) + DomRoot::upcast(HTMLElement::new(name.local, None, &*document, None)) } else { - create_native_html_element(name, None, &*document, ElementCreator::ScriptCreated) + create_native_html_element(name, None, &*document, ElementCreator::ScriptCreated, None) }; // Step 8.2 is performed in the generated caller code. diff --git a/components/script/dom/bindings/reflector.rs b/components/script/dom/bindings/reflector.rs index 32c3d7645e1..418cad032e3 100644 --- a/components/script/dom/bindings/reflector.rs +++ b/components/script/dom/bindings/reflector.rs @@ -26,13 +26,13 @@ where unsafe { T::WRAP(GlobalScope::get_cx(), global_scope, None, obj) } } -pub fn reflect_dom_object2(obj: Box, global: &U, proto: HandleObject) -> DomRoot +pub fn reflect_dom_object2(obj: Box, global: &U, proto: Option) -> DomRoot where T: DomObject + DomObjectWrap, U: DerivedFrom, { let global_scope = global.upcast(); - unsafe { T::WRAP(GlobalScope::get_cx(), global_scope, Some(proto), obj) } + unsafe { T::WRAP(GlobalScope::get_cx(), global_scope, proto, obj) } } /// A struct to store a reference to the reflector of a DOM object. diff --git a/components/script/dom/biquadfilternode.rs b/components/script/dom/biquadfilternode.rs index 540f094bfe5..6359383d2ac 100644 --- a/components/script/dom/biquadfilternode.rs +++ b/components/script/dom/biquadfilternode.rs @@ -13,10 +13,11 @@ use crate::dom::bindings::codegen::Bindings::BiquadFilterNodeBinding::BiquadFilt use crate::dom::bindings::codegen::Bindings::BiquadFilterNodeBinding::BiquadFilterOptions; use crate::dom::bindings::codegen::Bindings::BiquadFilterNodeBinding::BiquadFilterType; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_media::audio::biquad_filter_node::BiquadFilterNodeMessage; use servo_media::audio::biquad_filter_node::{BiquadFilterNodeOptions, FilterType}; use servo_media::audio::node::{AudioNodeInit, AudioNodeMessage}; @@ -104,23 +105,33 @@ impl BiquadFilterNode { }) } - #[allow(unrooted_must_root)] pub fn new( window: &Window, context: &BaseAudioContext, options: &BiquadFilterOptions, + ) -> Fallible> { + Self::new_with_proto(window, None, context, options) + } + + #[allow(unrooted_must_root)] + fn new_with_proto( + window: &Window, + proto: Option, + context: &BaseAudioContext, + options: &BiquadFilterOptions, ) -> Fallible> { let node = BiquadFilterNode::new_inherited(window, context, options)?; - Ok(reflect_dom_object(Box::new(node), window)) + Ok(reflect_dom_object2(Box::new(node), window, proto)) } #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, context: &BaseAudioContext, options: &BiquadFilterOptions, ) -> Fallible> { - BiquadFilterNode::new(window, context, options) + BiquadFilterNode::new_with_proto(window, proto, context, options) } } diff --git a/components/script/dom/blob.rs b/components/script/dom/blob.rs index 4cc0149d008..fe0bd2647a4 100644 --- a/components/script/dom/blob.rs +++ b/components/script/dom/blob.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::BlobBinding; use crate::dom::bindings::codegen::Bindings::BlobBinding::BlobMethods; use crate::dom::bindings::codegen::UnionTypes::ArrayBufferOrArrayBufferViewOrBlobOrString; use crate::dom::bindings::error::{Error, Fallible}; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::serializable::{Serializable, StorageKey}; use crate::dom::bindings::str::DOMString; @@ -20,6 +20,7 @@ use crate::script_runtime::JSContext; use dom_struct::dom_struct; use encoding_rs::UTF_8; use js::jsapi::JSObject; +use js::rust::HandleObject; use msg::constellation_msg::{BlobId, BlobIndex, PipelineNamespaceId}; use net_traits::filemanager_thread::RelativePos; use script_traits::serializable::BlobImpl; @@ -38,7 +39,11 @@ pub struct Blob { impl Blob { pub fn new(global: &GlobalScope, blob_impl: BlobImpl) -> DomRoot { - let dom_blob = reflect_dom_object(Box::new(Blob::new_inherited(&blob_impl)), global); + Self::new_with_proto(global, None, blob_impl) + } + + fn new_with_proto(global: &GlobalScope, proto: Option, blob_impl: BlobImpl) -> DomRoot { + let dom_blob = reflect_dom_object2(Box::new(Blob::new_inherited(&blob_impl)), global, proto); global.track_blob(&dom_blob, blob_impl); dom_blob } @@ -55,6 +60,7 @@ impl Blob { #[allow(non_snake_case)] pub fn Constructor( global: &GlobalScope, + proto: Option, blobParts: Option>, blobPropertyBag: &BlobBinding::BlobPropertyBag, ) -> Fallible> { @@ -69,7 +75,7 @@ impl Blob { let type_string = normalize_type_string(&blobPropertyBag.type_.to_string()); let blob_impl = BlobImpl::new_from_bytes(bytes, type_string); - Ok(Blob::new(global, blob_impl)) + Ok(Blob::new_with_proto(global, proto, blob_impl)) } /// Get a slice to inner data, this might incur synchronous read and caching diff --git a/components/script/dom/bluetoothadvertisingevent.rs b/components/script/dom/bluetoothadvertisingevent.rs index 7d31fad2dc7..0110b898222 100644 --- a/components/script/dom/bluetoothadvertisingevent.rs +++ b/components/script/dom/bluetoothadvertisingevent.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::BluetoothAdvertisingEventBinding::B use crate::dom::bindings::codegen::Bindings::EventBinding::EventBinding::EventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::bluetoothdevice::BluetoothDevice; @@ -15,6 +15,7 @@ use crate::dom::event::{Event, EventBubbles, EventCancelable}; use crate::dom::globalscope::GlobalScope; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_atoms::Atom; // https://webbluetoothcg.github.io/web-bluetooth/#bluetoothadvertisingevent @@ -47,8 +48,9 @@ impl BluetoothAdvertisingEvent { } } - pub fn new( + fn new( global: &GlobalScope, + proto: Option, type_: Atom, bubbles: EventBubbles, cancelable: EventCancelable, @@ -58,11 +60,12 @@ impl BluetoothAdvertisingEvent { txPower: Option, rssi: Option, ) -> DomRoot { - let ev = reflect_dom_object( + let ev = reflect_dom_object2( Box::new(BluetoothAdvertisingEvent::new_inherited( device, name, appearance, txPower, rssi, )), global, + proto, ); { let event = ev.upcast::(); @@ -74,6 +77,7 @@ impl BluetoothAdvertisingEvent { // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothadvertisingevent-bluetoothadvertisingevent pub fn Constructor( window: &Window, + proto: Option, type_: DOMString, init: &BluetoothAdvertisingEventInit, ) -> Fallible> { @@ -86,6 +90,7 @@ impl BluetoothAdvertisingEvent { let cancelable = EventCancelable::from(init.parent.cancelable); Ok(BluetoothAdvertisingEvent::new( global, + proto, Atom::from(type_), bubbles, cancelable, diff --git a/components/script/dom/broadcastchannel.rs b/components/script/dom/broadcastchannel.rs index 701f71b27cd..57aa572e652 100644 --- a/components/script/dom/broadcastchannel.rs +++ b/components/script/dom/broadcastchannel.rs @@ -4,7 +4,7 @@ use crate::dom::bindings::codegen::Bindings::BroadcastChannelBinding::BroadcastChannelMethods; use crate::dom::bindings::error::{Error, ErrorResult}; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::bindings::structuredclone; @@ -12,7 +12,7 @@ use crate::dom::eventtarget::EventTarget; use crate::dom::globalscope::GlobalScope; use crate::script_runtime::JSContext as SafeJSContext; use dom_struct::dom_struct; -use js::rust::HandleValue; +use js::rust::{HandleValue, HandleObject}; use script_traits::BroadcastMsg; use std::cell::Cell; use uuid::Uuid; @@ -28,12 +28,12 @@ pub struct BroadcastChannel { impl BroadcastChannel { /// #[allow(non_snake_case)] - pub fn Constructor(global: &GlobalScope, name: DOMString) -> DomRoot { - BroadcastChannel::new(global, name) + pub fn Constructor(global: &GlobalScope, proto: Option, name: DOMString) -> DomRoot { + BroadcastChannel::new(global, proto, name) } - pub fn new(global: &GlobalScope, name: DOMString) -> DomRoot { - let channel = reflect_dom_object(Box::new(BroadcastChannel::new_inherited(name)), global); + fn new(global: &GlobalScope, proto: Option, name: DOMString) -> DomRoot { + let channel = reflect_dom_object2(Box::new(BroadcastChannel::new_inherited(name)), global, proto); global.track_broadcast_channel(&*channel); channel } diff --git a/components/script/dom/channelmergernode.rs b/components/script/dom/channelmergernode.rs index 7e8bccd885e..e57543019f6 100644 --- a/components/script/dom/channelmergernode.rs +++ b/components/script/dom/channelmergernode.rs @@ -9,10 +9,11 @@ use crate::dom::bindings::codegen::Bindings::AudioNodeBinding::{ }; use crate::dom::bindings::codegen::Bindings::ChannelMergerNodeBinding::ChannelMergerOptions; use crate::dom::bindings::error::{Error, Fallible}; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::DomRoot; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_media::audio::channel_node::ChannelNodeOptions; use servo_media::audio::node::AudioNodeInit; @@ -52,23 +53,33 @@ impl ChannelMergerNode { Ok(ChannelMergerNode { node }) } - #[allow(unrooted_must_root)] pub fn new( window: &Window, context: &BaseAudioContext, options: &ChannelMergerOptions, + ) -> Fallible> { + Self::new_with_proto(window, None, context, options) + } + + #[allow(unrooted_must_root)] + fn new_with_proto( + window: &Window, + proto: Option, + context: &BaseAudioContext, + options: &ChannelMergerOptions, ) -> Fallible> { let node = ChannelMergerNode::new_inherited(window, context, options)?; - Ok(reflect_dom_object(Box::new(node), window)) + Ok(reflect_dom_object2(Box::new(node), window, proto)) } #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, context: &BaseAudioContext, options: &ChannelMergerOptions, ) -> Fallible> { - ChannelMergerNode::new(window, context, options) + ChannelMergerNode::new_with_proto(window, proto, context, options) } } diff --git a/components/script/dom/channelsplitternode.rs b/components/script/dom/channelsplitternode.rs index 3efd3b2465c..ca9477be9fa 100644 --- a/components/script/dom/channelsplitternode.rs +++ b/components/script/dom/channelsplitternode.rs @@ -9,10 +9,11 @@ use crate::dom::bindings::codegen::Bindings::AudioNodeBinding::{ }; use crate::dom::bindings::codegen::Bindings::ChannelSplitterNodeBinding::ChannelSplitterOptions; use crate::dom::bindings::error::{Error, Fallible}; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::DomRoot; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_media::audio::node::AudioNodeInit; #[dom_struct] @@ -54,22 +55,32 @@ impl ChannelSplitterNode { Ok(ChannelSplitterNode { node }) } - #[allow(unrooted_must_root)] pub fn new( window: &Window, context: &BaseAudioContext, options: &ChannelSplitterOptions, + ) -> Fallible> { + Self::new_with_proto(window, None, context, options) + } + + #[allow(unrooted_must_root)] + fn new_with_proto( + window: &Window, + proto: Option, + context: &BaseAudioContext, + options: &ChannelSplitterOptions, ) -> Fallible> { let node = ChannelSplitterNode::new_inherited(window, context, options)?; - Ok(reflect_dom_object(Box::new(node), window)) + Ok(reflect_dom_object2(Box::new(node), window, proto)) } #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, context: &BaseAudioContext, options: &ChannelSplitterOptions, ) -> Fallible> { - ChannelSplitterNode::new(window, context, options) + ChannelSplitterNode::new_with_proto(window, proto, context, options) } } diff --git a/components/script/dom/characterdata.rs b/components/script/dom/characterdata.rs index f8c5acb5a8f..cbaa847e8ee 100644 --- a/components/script/dom/characterdata.rs +++ b/components/script/dom/characterdata.rs @@ -43,7 +43,7 @@ impl CharacterData { pub fn clone_with_data(&self, data: DOMString, document: &Document) -> DomRoot { match self.upcast::().type_id() { NodeTypeId::CharacterData(CharacterDataTypeId::Comment) => { - DomRoot::upcast(Comment::new(data, &document)) + DomRoot::upcast(Comment::new(data, &document, None)) }, NodeTypeId::CharacterData(CharacterDataTypeId::ProcessingInstruction) => { let pi = self.downcast::().unwrap(); diff --git a/components/script/dom/closeevent.rs b/components/script/dom/closeevent.rs index abc579d8df9..81bf60c99af 100644 --- a/components/script/dom/closeevent.rs +++ b/components/script/dom/closeevent.rs @@ -7,12 +7,13 @@ use crate::dom::bindings::codegen::Bindings::CloseEventBinding::CloseEventMethod use crate::dom::bindings::codegen::Bindings::EventBinding::EventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::event::{Event, EventBubbles, EventCancelable}; use crate::dom::globalscope::GlobalScope; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_atoms::Atom; #[dom_struct] @@ -42,9 +43,31 @@ impl CloseEvent { wasClean: bool, code: u16, reason: DOMString, + ) -> DomRoot { + Self::new_with_proto( + global, + None, + type_, + bubbles, + cancelable, + wasClean, + code, + reason, + ) + } + + fn new_with_proto( + global: &GlobalScope, + proto: Option, + type_: Atom, + bubbles: EventBubbles, + cancelable: EventCancelable, + wasClean: bool, + code: u16, + reason: DOMString, ) -> DomRoot { let event = Box::new(CloseEvent::new_inherited(wasClean, code, reason)); - let ev = reflect_dom_object(event, global); + let ev = reflect_dom_object2(event, global, proto); { let event = ev.upcast::(); event.init_event(type_, bool::from(bubbles), bool::from(cancelable)); @@ -54,13 +77,15 @@ impl CloseEvent { pub fn Constructor( global: &GlobalScope, + proto: Option, type_: DOMString, init: &CloseEventBinding::CloseEventInit, ) -> Fallible> { let bubbles = EventBubbles::from(init.parent.bubbles); let cancelable = EventCancelable::from(init.parent.cancelable); - Ok(CloseEvent::new( + Ok(CloseEvent::new_with_proto( global, + proto, Atom::from(type_), bubbles, cancelable, diff --git a/components/script/dom/comment.rs b/components/script/dom/comment.rs index d87f4d77094..96df242a5df 100644 --- a/components/script/dom/comment.rs +++ b/components/script/dom/comment.rs @@ -11,6 +11,7 @@ use crate::dom::document::Document; use crate::dom::node::Node; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; /// An HTML comment. #[dom_struct] @@ -25,13 +26,13 @@ impl Comment { } } - pub fn new(text: DOMString, document: &Document) -> DomRoot { - Node::reflect_node(Box::new(Comment::new_inherited(text, document)), document) + pub fn new(text: DOMString, document: &Document, proto: Option) -> DomRoot { + Node::reflect_node_with_proto(Box::new(Comment::new_inherited(text, document)), document, proto) } #[allow(non_snake_case)] - pub fn Constructor(window: &Window, data: DOMString) -> Fallible> { + pub fn Constructor(window: &Window, proto: Option, data: DOMString) -> Fallible> { let document = window.Document(); - Ok(Comment::new(data, &document)) + Ok(Comment::new(data, &document, proto)) } } diff --git a/components/script/dom/compositionevent.rs b/components/script/dom/compositionevent.rs index 1cdc1cd8dcc..58c31c6e215 100644 --- a/components/script/dom/compositionevent.rs +++ b/components/script/dom/compositionevent.rs @@ -7,12 +7,13 @@ use crate::dom::bindings::codegen::Bindings::CompositionEventBinding::{ }; use crate::dom::bindings::codegen::Bindings::UIEventBinding::UIEventBinding::UIEventMethods; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::{reflect_dom_object, reflect_dom_object2}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::uievent::UIEvent; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; #[dom_struct] pub struct CompositionEvent { @@ -41,12 +42,35 @@ impl CompositionEvent { detail: i32, data: DOMString, ) -> DomRoot { - let ev = reflect_dom_object( + Self::new_with_proto( + window, + None, + type_, + can_bubble, + cancelable, + view, + detail, + data, + ) + } + + fn new_with_proto( + window: &Window, + proto: Option, + type_: DOMString, + can_bubble: bool, + cancelable: bool, + view: Option<&Window>, + detail: i32, + data: DOMString, + ) -> DomRoot { + let ev = reflect_dom_object2( Box::new(CompositionEvent { uievent: UIEvent::new_inherited(), data: data, }), window, + proto, ); ev.uievent .InitUIEvent(type_, can_bubble, cancelable, view, detail); @@ -56,11 +80,13 @@ impl CompositionEvent { #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, type_: DOMString, init: &CompositionEventBinding::CompositionEventInit, ) -> Fallible> { - let event = CompositionEvent::new( + let event = CompositionEvent::new_with_proto( window, + proto, type_, init.parent.parent.bubbles, init.parent.parent.cancelable, diff --git a/components/script/dom/constantsourcenode.rs b/components/script/dom/constantsourcenode.rs index 90851da88c2..be1125bb283 100644 --- a/components/script/dom/constantsourcenode.rs +++ b/components/script/dom/constantsourcenode.rs @@ -9,10 +9,11 @@ use crate::dom::bindings::codegen::Bindings::AudioParamBinding::AutomationRate; use crate::dom::bindings::codegen::Bindings::ConstantSourceNodeBinding::ConstantSourceNodeMethods; use crate::dom::bindings::codegen::Bindings::ConstantSourceNodeBinding::ConstantSourceOptions; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_media::audio::constant_source_node::ConstantSourceNodeOptions as ServoMediaConstantSourceOptions; use servo_media::audio::node::AudioNodeInit; use servo_media::audio::param::ParamType; @@ -57,23 +58,33 @@ impl ConstantSourceNode { }) } - #[allow(unrooted_must_root)] pub fn new( window: &Window, context: &BaseAudioContext, options: &ConstantSourceOptions, + ) -> Fallible> { + Self::new_with_proto(window, None, context, options) + } + + #[allow(unrooted_must_root)] + fn new_with_proto( + window: &Window, + proto: Option, + context: &BaseAudioContext, + options: &ConstantSourceOptions, ) -> Fallible> { let node = ConstantSourceNode::new_inherited(window, context, options)?; - Ok(reflect_dom_object(Box::new(node), window)) + Ok(reflect_dom_object2(Box::new(node), window, proto)) } #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, context: &BaseAudioContext, options: &ConstantSourceOptions, ) -> Fallible> { - ConstantSourceNode::new(window, context, options) + ConstantSourceNode::new_with_proto(window, proto, context, options) } } diff --git a/components/script/dom/create.rs b/components/script/dom/create.rs index 1a4815d1179..087148cb037 100644 --- a/components/script/dom/create.rs +++ b/components/script/dom/create.rs @@ -85,28 +85,30 @@ use crate::dom::svgsvgelement::SVGSVGElement; use crate::realms::{enter_realm, InRealm}; use crate::script_thread::ScriptThread; use html5ever::{LocalName, Prefix, QualName}; +use js::rust::HandleObject; use servo_config::pref; fn create_svg_element( name: QualName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { assert_eq!(name.ns, ns!(svg)); macro_rules! make( ($ctor:ident) => ({ - let obj = $ctor::new(name.local, prefix, document); + let obj = $ctor::new(name.local, prefix, document, proto); DomRoot::upcast(obj) }); ($ctor:ident, $($arg:expr),+) => ({ - let obj = $ctor::new(name.local, prefix, document, $($arg),+); + let obj = $ctor::new(name.local, prefix, document, proto, $($arg),+); DomRoot::upcast(obj) }) ); if !pref!(dom.svg.enabled) { - return Element::new(name.local, name.ns, prefix, document); + return Element::new(name.local, name.ns, prefix, document, proto); } match name.local { @@ -124,6 +126,7 @@ fn create_html_element( document: &Document, creator: ElementCreator, mode: CustomElementCreationMode, + proto: Option, ) -> DomRoot { assert_eq!(name.ns, ns!(html)); @@ -138,6 +141,7 @@ fn create_html_element( name.local.clone(), prefix.clone(), document, + proto, )); result.set_custom_element_state(CustomElementState::Undefined); ScriptThread::enqueue_upgrade_reaction(&*result, definition); @@ -145,6 +149,7 @@ fn create_html_element( }, CustomElementCreationMode::Synchronous => { let local_name = name.local.clone(); + //TODO(jdm) Pass proto to create_element? return match definition.create_element(document, prefix.clone()) { Ok(element) => { element.set_custom_element_definition(definition.clone()); @@ -165,7 +170,7 @@ fn create_html_element( // Step 6.1.2 let element = DomRoot::upcast::(HTMLUnknownElement::new( - local_name, prefix, document, + local_name, prefix, document, proto, )); element.set_custom_element_state(CustomElementState::Failed); element @@ -175,7 +180,7 @@ fn create_html_element( } } else { // Steps 5.1-5.2 - let element = create_native_html_element(name, prefix, document, creator); + let element = create_native_html_element(name, prefix, document, creator, proto); element.set_is(definition.name.clone()); element.set_custom_element_state(CustomElementState::Undefined); match mode { @@ -191,7 +196,7 @@ fn create_html_element( } // Steps 7.1-7.3 - let result = create_native_html_element(name.clone(), prefix, document, creator); + let result = create_native_html_element(name.clone(), prefix, document, creator, proto); match is { Some(is) => { result.set_is(is); @@ -215,16 +220,17 @@ pub fn create_native_html_element( prefix: Option, document: &Document, creator: ElementCreator, + proto: Option, ) -> DomRoot { assert_eq!(name.ns, ns!(html)); macro_rules! make( ($ctor:ident) => ({ - let obj = $ctor::new(name.local, prefix, document); + let obj = $ctor::new(name.local, prefix, document, proto); DomRoot::upcast(obj) }); ($ctor:ident, $($arg:expr),+) => ({ - let obj = $ctor::new(name.local, prefix, document, $($arg),+); + let obj = $ctor::new(name.local, prefix, document, proto, $($arg),+); DomRoot::upcast(obj) }) ); @@ -386,11 +392,12 @@ pub fn create_element( document: &Document, creator: ElementCreator, mode: CustomElementCreationMode, + proto: Option, ) -> DomRoot { let prefix = name.prefix.clone(); match name.ns { - ns!(html) => create_html_element(name, prefix, is, document, creator, mode), - ns!(svg) => create_svg_element(name, prefix, document), - _ => Element::new(name.local, name.ns, prefix, document), + ns!(html) => create_html_element(name, prefix, is, document, creator, mode, proto), + ns!(svg) => create_svg_element(name, prefix, document, proto), + _ => Element::new(name.local, name.ns, prefix, document, proto), } } diff --git a/components/script/dom/customevent.rs b/components/script/dom/customevent.rs index 7dadacee375..c3f6afd26a8 100644 --- a/components/script/dom/customevent.rs +++ b/components/script/dom/customevent.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::CustomEventBinding::CustomEventMeth use crate::dom::bindings::codegen::Bindings::EventBinding::EventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::bindings::trace::RootedTraceableBox; @@ -17,6 +17,7 @@ use crate::script_runtime::JSContext; use dom_struct::dom_struct; use js::jsapi::Heap; use js::jsval::JSVal; +use js::rust::HandleObject; use js::rust::HandleValue; use servo_atoms::Atom; @@ -37,16 +38,22 @@ impl CustomEvent { } pub fn new_uninitialized(global: &GlobalScope) -> DomRoot { - reflect_dom_object(Box::new(CustomEvent::new_inherited()), global) + Self::new_uninitialized_with_proto(global, None) } - pub fn new( + + fn new_uninitialized_with_proto(global: &GlobalScope, proto: Option) -> DomRoot { + reflect_dom_object2(Box::new(CustomEvent::new_inherited()), global, proto) + } + + fn new( global: &GlobalScope, + proto: Option, type_: Atom, bubbles: bool, cancelable: bool, detail: HandleValue, ) -> DomRoot { - let ev = CustomEvent::new_uninitialized(global); + let ev = CustomEvent::new_uninitialized_with_proto(global, proto); ev.init_custom_event(type_, bubbles, cancelable, detail); ev } @@ -54,11 +61,13 @@ impl CustomEvent { #[allow(unsafe_code, non_snake_case)] pub fn Constructor( global: &GlobalScope, + proto: Option, type_: DOMString, init: RootedTraceableBox, ) -> Fallible> { Ok(CustomEvent::new( global, + proto, Atom::from(type_), init.parent.bubbles, init.parent.cancelable, diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index cb2d43dd62c..4e8d1283c4d 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -31,7 +31,7 @@ use crate::dom::bindings::error::{Error, ErrorResult, Fallible}; use crate::dom::bindings::inheritance::{Castable, ElementTypeId, HTMLElementTypeId, NodeTypeId}; use crate::dom::bindings::num::Finite; use crate::dom::bindings::refcounted::{Trusted, TrustedPromise}; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; use crate::dom::bindings::root::{Dom, DomRoot, DomSlice, LayoutDom, MutNullableDom}; use crate::dom::bindings::str::{DOMString, USVString}; use crate::dom::bindings::xmlname::XMLName::InvalidXMLName; @@ -123,6 +123,7 @@ use html5ever::{LocalName, Namespace, QualName}; use hyper_serde::Serde; use ipc_channel::ipc::{self, IpcSender}; use js::jsapi::JSObject; +use js::rust::HandleObject; use keyboard_types::{Code, Key, KeyState}; use metrics::{ InteractiveFlag, InteractiveMetrics, InteractiveWindow, ProfilerMetadataFactory, @@ -3248,11 +3249,12 @@ impl Document { // https://dom.spec.whatwg.org/#dom-document-document #[allow(non_snake_case)] - pub fn Constructor(window: &Window) -> Fallible> { + pub fn Constructor(window: &Window, proto: Option) -> Fallible> { let doc = window.Document(); let docloader = DocumentLoader::new(&*doc.loader()); - Ok(Document::new( + Ok(Document::new_with_proto( window, + proto, HasBrowsingContext::No, None, doc.origin().clone(), @@ -3283,7 +3285,41 @@ impl Document { referrer_policy: Option, canceller: FetchCanceller, ) -> DomRoot { - let document = reflect_dom_object( + Self::new_with_proto( + window, + None, + has_browsing_context, + url, + origin, + doctype, + content_type, + last_modified, + activity, + source, + doc_loader, + referrer, + referrer_policy, + canceller, + ) + } + + fn new_with_proto( + window: &Window, + proto: Option, + has_browsing_context: HasBrowsingContext, + url: Option, + origin: MutableOrigin, + doctype: IsHTMLDocument, + content_type: Option, + last_modified: Option, + activity: DocumentActivity, + source: DocumentSource, + doc_loader: DocumentLoader, + referrer: Option, + referrer_policy: Option, + canceller: FetchCanceller, + ) -> DomRoot { + let document = reflect_dom_object2( Box::new(Document::new_inherited( window, has_browsing_context, @@ -3300,6 +3336,7 @@ impl Document { canceller, )), window, + proto, ); { let node = document.upcast::(); @@ -4143,6 +4180,7 @@ impl DocumentMethods for Document { self, ElementCreator::ScriptCreated, CustomElementCreationMode::Synchronous, + None, )) } @@ -4167,6 +4205,7 @@ impl DocumentMethods for Document { self, ElementCreator::ScriptCreated, CustomElementCreationMode::Synchronous, + None, )) } @@ -4241,7 +4280,7 @@ impl DocumentMethods for Document { // https://dom.spec.whatwg.org/#dom-document-createcomment fn CreateComment(&self, data: DOMString) -> DomRoot { - Comment::new(data, self) + Comment::new(data, self, None) } // https://dom.spec.whatwg.org/#dom-document-createprocessinginstruction @@ -4361,7 +4400,7 @@ impl DocumentMethods for Document { // https://dom.spec.whatwg.org/#dom-document-createrange fn CreateRange(&self) -> DomRoot { - Range::new_with_doc(self) + Range::new_with_doc(self, None) } // https://dom.spec.whatwg.org/#dom-document-createnodeiteratorroot-whattoshow-filter @@ -4434,6 +4473,7 @@ impl DocumentMethods for Document { self, ElementCreator::ScriptCreated, CustomElementCreationMode::Synchronous, + None, ); let parent = root.upcast::(); let child = elem.upcast::(); @@ -4458,6 +4498,7 @@ impl DocumentMethods for Document { self, ElementCreator::ScriptCreated, CustomElementCreationMode::Synchronous, + None, ); head.upcast::().AppendChild(elem.upcast()).unwrap() }, diff --git a/components/script/dom/documentfragment.rs b/components/script/dom/documentfragment.rs index ac87a9a786e..716f3dabcb5 100644 --- a/components/script/dom/documentfragment.rs +++ b/components/script/dom/documentfragment.rs @@ -17,6 +17,7 @@ use crate::dom::node::{window_from_node, Node}; use crate::dom::nodelist::NodeList; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_atoms::Atom; use std::collections::HashMap; @@ -38,17 +39,22 @@ impl DocumentFragment { } pub fn new(document: &Document) -> DomRoot { - Node::reflect_node( + Self::new_with_proto(document, None) + } + + fn new_with_proto(document: &Document, proto: Option) -> DomRoot { + Node::reflect_node_with_proto( Box::new(DocumentFragment::new_inherited(document)), document, + proto, ) } #[allow(non_snake_case)] - pub fn Constructor(window: &Window) -> Fallible> { + pub fn Constructor(window: &Window, proto: Option) -> Fallible> { let document = window.Document(); - Ok(DocumentFragment::new(&document)) + Ok(DocumentFragment::new_with_proto(&document, proto)) } pub fn id_map(&self) -> &DomRefCell>>> { diff --git a/components/script/dom/domexception.rs b/components/script/dom/domexception.rs index c2533cd7932..6252837b66c 100644 --- a/components/script/dom/domexception.rs +++ b/components/script/dom/domexception.rs @@ -5,11 +5,12 @@ use crate::dom::bindings::codegen::Bindings::DOMExceptionBinding::DOMExceptionConstants; use crate::dom::bindings::codegen::Bindings::DOMExceptionBinding::DOMExceptionMethods; use crate::dom::bindings::error::Error; -use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object, reflect_dom_object2, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::globalscope::GlobalScope; use dom_struct::dom_struct; +use js::rust::HandleObject; #[repr(u16)] #[derive(Clone, Copy, Debug, Eq, JSTraceable, MallocSizeOf, Ord, PartialEq, PartialOrd)] @@ -139,12 +140,14 @@ impl DOMException { #[allow(non_snake_case)] pub fn Constructor( global: &GlobalScope, + proto: Option, message: DOMString, name: DOMString, ) -> Result, Error> { - Ok(reflect_dom_object( + Ok(reflect_dom_object2( Box::new(DOMException::new_inherited(message, name)), global, + proto, )) } diff --git a/components/script/dom/domimplementation.rs b/components/script/dom/domimplementation.rs index d5a3f07bde2..31d1d116959 100644 --- a/components/script/dom/domimplementation.rs +++ b/components/script/dom/domimplementation.rs @@ -168,13 +168,13 @@ impl DOMImplementationMethods for DOMImplementation { // Step 4. let doc_node = doc.upcast::(); let doc_html = - DomRoot::upcast::(HTMLHtmlElement::new(local_name!("html"), None, &doc)); + DomRoot::upcast::(HTMLHtmlElement::new(local_name!("html"), None, &doc, None)); doc_node.AppendChild(&doc_html).expect("Appending failed"); { // Step 5. let doc_head = - DomRoot::upcast::(HTMLHeadElement::new(local_name!("head"), None, &doc)); + DomRoot::upcast::(HTMLHeadElement::new(local_name!("head"), None, &doc, None)); doc_html.AppendChild(&doc_head).unwrap(); // Step 6. @@ -184,6 +184,7 @@ impl DOMImplementationMethods for DOMImplementation { local_name!("title"), None, &doc, + None, )); doc_head.AppendChild(&doc_title).unwrap(); @@ -194,7 +195,7 @@ impl DOMImplementationMethods for DOMImplementation { } // Step 7. - let doc_body = HTMLBodyElement::new(local_name!("body"), None, &doc); + let doc_body = HTMLBodyElement::new(local_name!("body"), None, &doc, None); doc_html.AppendChild(doc_body.upcast()).unwrap(); } diff --git a/components/script/dom/dommatrix.rs b/components/script/dom/dommatrix.rs index c5520c7d6a7..2cbc9aa011c 100644 --- a/components/script/dom/dommatrix.rs +++ b/components/script/dom/dommatrix.rs @@ -8,7 +8,7 @@ use crate::dom::bindings::codegen::UnionTypes::StringOrUnrestrictedDoubleSequenc use crate::dom::bindings::error; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::DomRoot; use crate::dom::dommatrixreadonly::{ dommatrixinit_to_matrix, entries_to_matrix, transform_to_matrix, DOMMatrixReadOnly, @@ -17,7 +17,7 @@ use crate::dom::globalscope::GlobalScope; use crate::dom::window::Window; use dom_struct::dom_struct; use euclid::default::Transform3D; -use js::rust::CustomAutoRooterGuard; +use js::rust::{CustomAutoRooterGuard, HandleObject}; use js::typedarray::{Float32Array, Float64Array}; #[dom_struct] @@ -27,10 +27,14 @@ pub struct DOMMatrix { #[allow(non_snake_case)] impl DOMMatrix { - #[allow(unrooted_must_root)] pub fn new(global: &GlobalScope, is2D: bool, matrix: Transform3D) -> DomRoot { + Self::new_with_proto(global, None, is2D, matrix) + } + + #[allow(unrooted_must_root)] + fn new_with_proto(global: &GlobalScope, proto: Option, is2D: bool, matrix: Transform3D) -> DomRoot { let dommatrix = Self::new_inherited(is2D, matrix); - reflect_dom_object(Box::new(dommatrix), global) + reflect_dom_object2(Box::new(dommatrix), global, proto) } pub fn new_inherited(is2D: bool, matrix: Transform3D) -> Self { @@ -42,10 +46,11 @@ impl DOMMatrix { // https://drafts.fxtf.org/geometry-1/#dom-dommatrixreadonly-dommatrixreadonly pub fn Constructor( global: &GlobalScope, + proto: Option, init: Option, ) -> Fallible> { if init.is_none() { - return Ok(Self::new(global, true, Transform3D::identity())); + return Ok(Self::new_with_proto(global, proto, true, Transform3D::identity())); } match init.unwrap() { StringOrUnrestrictedDoubleSequence::String(ref s) => { @@ -58,11 +63,11 @@ impl DOMMatrix { return Ok(Self::new(global, true, Transform3D::identity())); } transform_to_matrix(s.to_string()) - .map(|(is2D, matrix)| Self::new(global, is2D, matrix)) + .map(|(is2D, matrix)| Self::new_with_proto(global, proto, is2D, matrix)) }, StringOrUnrestrictedDoubleSequence::UnrestrictedDoubleSequence(ref entries) => { entries_to_matrix(&entries[..]) - .map(|(is2D, matrix)| Self::new(global, is2D, matrix)) + .map(|(is2D, matrix)| Self::new_with_proto(global, proto, is2D, matrix)) }, } } @@ -84,6 +89,7 @@ impl DOMMatrix { let vec: Vec = array.to_vec().iter().map(|&x| x as f64).collect(); DOMMatrix::Constructor( global, + None, Some(StringOrUnrestrictedDoubleSequence::UnrestrictedDoubleSequence(vec)), ) } @@ -96,6 +102,7 @@ impl DOMMatrix { let vec: Vec = array.to_vec(); DOMMatrix::Constructor( global, + None, Some(StringOrUnrestrictedDoubleSequence::UnrestrictedDoubleSequence(vec)), ) } diff --git a/components/script/dom/dommatrixreadonly.rs b/components/script/dom/dommatrixreadonly.rs index 84ef18fd8fc..dd78a3935ae 100644 --- a/components/script/dom/dommatrixreadonly.rs +++ b/components/script/dom/dommatrixreadonly.rs @@ -10,7 +10,7 @@ use crate::dom::bindings::codegen::UnionTypes::StringOrUnrestrictedDoubleSequenc use crate::dom::bindings::error; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::dommatrix::DOMMatrix; use crate::dom::dompoint::DOMPoint; @@ -21,7 +21,7 @@ use cssparser::{Parser, ParserInput}; use dom_struct::dom_struct; use euclid::{default::Transform3D, Angle}; use js::jsapi::JSObject; -use js::rust::CustomAutoRooterGuard; +use js::rust::{CustomAutoRooterGuard, HandleObject}; use js::typedarray::CreateWith; use js::typedarray::{Float32Array, Float64Array}; use std::cell::Cell; @@ -40,10 +40,14 @@ pub struct DOMMatrixReadOnly { #[allow(non_snake_case)] impl DOMMatrixReadOnly { - #[allow(unrooted_must_root)] pub fn new(global: &GlobalScope, is2D: bool, matrix: Transform3D) -> DomRoot { + Self::new_with_proto(global, None, is2D, matrix) + } + + #[allow(unrooted_must_root)] + fn new_with_proto(global: &GlobalScope, proto: Option, is2D: bool, matrix: Transform3D) -> DomRoot { let dommatrix = Self::new_inherited(is2D, matrix); - reflect_dom_object(Box::new(dommatrix), global) + reflect_dom_object2(Box::new(dommatrix), global, proto) } pub fn new_inherited(is2D: bool, matrix: Transform3D) -> Self { @@ -57,10 +61,11 @@ impl DOMMatrixReadOnly { // https://drafts.fxtf.org/geometry-1/#dom-dommatrixreadonly-dommatrixreadonly pub fn Constructor( global: &GlobalScope, + proto: Option, init: Option, ) -> Fallible> { if init.is_none() { - return Ok(Self::new(global, true, Transform3D::identity())); + return Ok(Self::new_with_proto(global, proto, true, Transform3D::identity())); } match init.unwrap() { StringOrUnrestrictedDoubleSequence::String(ref s) => { @@ -73,11 +78,11 @@ impl DOMMatrixReadOnly { return Ok(Self::new(global, true, Transform3D::identity())); } transform_to_matrix(s.to_string()) - .map(|(is2D, matrix)| Self::new(global, is2D, matrix)) + .map(|(is2D, matrix)| Self::new_with_proto(global, proto, is2D, matrix)) }, StringOrUnrestrictedDoubleSequence::UnrestrictedDoubleSequence(ref entries) => { entries_to_matrix(&entries[..]) - .map(|(is2D, matrix)| Self::new(global, is2D, matrix)) + .map(|(is2D, matrix)| Self::new_with_proto(global, proto, is2D, matrix)) }, } } @@ -392,6 +397,7 @@ impl DOMMatrixReadOnly { let vec: Vec = array.to_vec().iter().map(|&x| x as f64).collect(); DOMMatrixReadOnly::Constructor( global, + None, Some(StringOrUnrestrictedDoubleSequence::UnrestrictedDoubleSequence(vec)), ) } @@ -405,6 +411,7 @@ impl DOMMatrixReadOnly { let vec: Vec = array.to_vec(); DOMMatrixReadOnly::Constructor( global, + None, Some(StringOrUnrestrictedDoubleSequence::UnrestrictedDoubleSequence(vec)), ) } diff --git a/components/script/dom/domparser.rs b/components/script/dom/domparser.rs index 876d87eef25..6e08fb10c4f 100644 --- a/components/script/dom/domparser.rs +++ b/components/script/dom/domparser.rs @@ -12,7 +12,7 @@ use crate::dom::bindings::codegen::Bindings::DOMParserBinding::SupportedType::Te use crate::dom::bindings::codegen::Bindings::DocumentBinding::DocumentReadyState; use crate::dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::document::DocumentSource; @@ -20,6 +20,7 @@ use crate::dom::document::{Document, HasBrowsingContext, IsHTMLDocument}; use crate::dom::servoparser::ServoParser; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use script_traits::DocumentActivity; #[dom_struct] @@ -36,13 +37,13 @@ impl DOMParser { } } - pub fn new(window: &Window) -> DomRoot { - reflect_dom_object(Box::new(DOMParser::new_inherited(window)), window) + fn new(window: &Window, proto: Option) -> DomRoot { + reflect_dom_object2(Box::new(DOMParser::new_inherited(window)), window, proto) } #[allow(non_snake_case)] - pub fn Constructor(window: &Window) -> Fallible> { - Ok(DOMParser::new(window)) + pub fn Constructor(window: &Window, proto: Option) -> Fallible> { + Ok(DOMParser::new(window, proto)) } } diff --git a/components/script/dom/dompoint.rs b/components/script/dom/dompoint.rs index fe523b8e766..2e580d57457 100644 --- a/components/script/dom/dompoint.rs +++ b/components/script/dom/dompoint.rs @@ -5,11 +5,12 @@ use crate::dom::bindings::codegen::Bindings::DOMPointBinding::{DOMPointInit, DOMPointMethods}; use crate::dom::bindings::codegen::Bindings::DOMPointReadOnlyBinding::DOMPointReadOnlyMethods; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::DomRoot; use crate::dom::dompointreadonly::{DOMPointReadOnly, DOMPointWriteMethods}; use crate::dom::globalscope::GlobalScope; use dom_struct::dom_struct; +use js::rust::HandleObject; // http://dev.w3.org/fxtf/geometry/Overview.html#dompoint #[dom_struct] @@ -26,17 +27,22 @@ impl DOMPoint { } pub fn new(global: &GlobalScope, x: f64, y: f64, z: f64, w: f64) -> DomRoot { - reflect_dom_object(Box::new(DOMPoint::new_inherited(x, y, z, w)), global) + Self::new_with_proto(global, None, x, y, z, w) + } + + fn new_with_proto(global: &GlobalScope, proto: Option, x: f64, y: f64, z: f64, w: f64) -> DomRoot { + reflect_dom_object2(Box::new(DOMPoint::new_inherited(x, y, z, w)), global, proto) } pub fn Constructor( global: &GlobalScope, + proto: Option, x: f64, y: f64, z: f64, w: f64, ) -> Fallible> { - Ok(DOMPoint::new(global, x, y, z, w)) + Ok(DOMPoint::new_with_proto(global, proto, x, y, z, w)) } // https://drafts.fxtf.org/geometry/#dom-dompoint-frompoint diff --git a/components/script/dom/dompointreadonly.rs b/components/script/dom/dompointreadonly.rs index 9d093db2b81..453642c0a00 100644 --- a/components/script/dom/dompointreadonly.rs +++ b/components/script/dom/dompointreadonly.rs @@ -5,10 +5,11 @@ use crate::dom::bindings::codegen::Bindings::DOMPointBinding::DOMPointInit; use crate::dom::bindings::codegen::Bindings::DOMPointReadOnlyBinding::DOMPointReadOnlyMethods; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::globalscope::GlobalScope; use dom_struct::dom_struct; +use js::rust::HandleObject; use std::cell::Cell; // http://dev.w3.org/fxtf/geometry/Overview.html#dompointreadonly @@ -34,20 +35,26 @@ impl DOMPointReadOnly { } pub fn new(global: &GlobalScope, x: f64, y: f64, z: f64, w: f64) -> DomRoot { - reflect_dom_object( + Self::new_with_proto(global, None, x, y, z, w) + } + + fn new_with_proto(global: &GlobalScope, proto: Option, x: f64, y: f64, z: f64, w: f64) -> DomRoot { + reflect_dom_object2( Box::new(DOMPointReadOnly::new_inherited(x, y, z, w)), global, + proto, ) } pub fn Constructor( global: &GlobalScope, + proto: Option, x: f64, y: f64, z: f64, w: f64, ) -> Fallible> { - Ok(DOMPointReadOnly::new(global, x, y, z, w)) + Ok(DOMPointReadOnly::new_with_proto(global, proto, x, y, z, w)) } // https://drafts.fxtf.org/geometry/#dom-dompointreadonly-frompoint diff --git a/components/script/dom/domquad.rs b/components/script/dom/domquad.rs index e6decd7e1b2..775dbf7321f 100644 --- a/components/script/dom/domquad.rs +++ b/components/script/dom/domquad.rs @@ -6,12 +6,13 @@ use crate::dom::bindings::codegen::Bindings::DOMPointBinding::{DOMPointInit, DOM use crate::dom::bindings::codegen::Bindings::DOMQuadBinding::{DOMQuadInit, DOMQuadMethods}; use crate::dom::bindings::codegen::Bindings::DOMRectReadOnlyBinding::DOMRectInit; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject, Reflector}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::dompoint::DOMPoint; use crate::dom::domrect::DOMRect; use crate::dom::globalscope::GlobalScope; use dom_struct::dom_struct; +use js::rust::HandleObject; // https://drafts.fxtf.org/geometry/#DOMQuad #[dom_struct] @@ -42,18 +43,31 @@ impl DOMQuad { p3: &DOMPoint, p4: &DOMPoint, ) -> DomRoot { - reflect_dom_object(Box::new(DOMQuad::new_inherited(p1, p2, p3, p4)), global) + Self::new_with_proto(global, None, p1, p2, p3, p4) + } + + fn new_with_proto( + global: &GlobalScope, + proto: Option, + p1: &DOMPoint, + p2: &DOMPoint, + p3: &DOMPoint, + p4: &DOMPoint, + ) -> DomRoot { + reflect_dom_object2(Box::new(DOMQuad::new_inherited(p1, p2, p3, p4)), global, proto) } pub fn Constructor( global: &GlobalScope, + proto: Option, p1: &DOMPointInit, p2: &DOMPointInit, p3: &DOMPointInit, p4: &DOMPointInit, ) -> Fallible> { - Ok(DOMQuad::new( + Ok(DOMQuad::new_with_proto( global, + proto, &*DOMPoint::new_from_init(global, p1), &*DOMPoint::new_from_init(global, p2), &*DOMPoint::new_from_init(global, p3), diff --git a/components/script/dom/domrect.rs b/components/script/dom/domrect.rs index d925176f96d..8ab7daa2b57 100644 --- a/components/script/dom/domrect.rs +++ b/components/script/dom/domrect.rs @@ -5,11 +5,12 @@ use crate::dom::bindings::codegen::Bindings::DOMRectBinding::DOMRectMethods; use crate::dom::bindings::codegen::Bindings::DOMRectReadOnlyBinding::DOMRectReadOnlyMethods; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::DomRoot; use crate::dom::domrectreadonly::DOMRectReadOnly; use crate::dom::globalscope::GlobalScope; use dom_struct::dom_struct; +use js::rust::HandleObject; #[dom_struct] pub struct DOMRect { @@ -24,21 +25,27 @@ impl DOMRect { } pub fn new(global: &GlobalScope, x: f64, y: f64, width: f64, height: f64) -> DomRoot { - reflect_dom_object( + Self::new_with_proto(global, None, x, y, width, height) + } + + fn new_with_proto(global: &GlobalScope, proto: Option, x: f64, y: f64, width: f64, height: f64) -> DomRoot { + reflect_dom_object2( Box::new(DOMRect::new_inherited(x, y, width, height)), global, + proto, ) } #[allow(non_snake_case)] pub fn Constructor( global: &GlobalScope, + proto: Option, x: f64, y: f64, width: f64, height: f64, ) -> Fallible> { - Ok(DOMRect::new(global, x, y, width, height)) + Ok(DOMRect::new_with_proto(global, proto, x, y, width, height)) } } diff --git a/components/script/dom/domrectreadonly.rs b/components/script/dom/domrectreadonly.rs index 49eed59ac58..80bb793857d 100644 --- a/components/script/dom/domrectreadonly.rs +++ b/components/script/dom/domrectreadonly.rs @@ -4,10 +4,11 @@ use crate::dom::bindings::codegen::Bindings::DOMRectReadOnlyBinding::DOMRectReadOnlyMethods; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::globalscope::GlobalScope; use dom_struct::dom_struct; +use js::rust::HandleObject; use std::cell::Cell; #[dom_struct] @@ -30,28 +31,31 @@ impl DOMRectReadOnly { } } - pub fn new( + fn new( global: &GlobalScope, + proto: Option, x: f64, y: f64, width: f64, height: f64, ) -> DomRoot { - reflect_dom_object( + reflect_dom_object2( Box::new(DOMRectReadOnly::new_inherited(x, y, width, height)), global, + proto, ) } #[allow(non_snake_case)] pub fn Constructor( global: &GlobalScope, + proto: Option, x: f64, y: f64, width: f64, height: f64, ) -> Fallible> { - Ok(DOMRectReadOnly::new(global, x, y, width, height)) + Ok(DOMRectReadOnly::new(global, proto, x, y, width, height)) } pub fn set_x(&self, value: f64) { diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index 1ceec50281d..dc4b4096469 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -95,6 +95,7 @@ use html5ever::serialize::TraversalScope::{ChildrenOnly, IncludeNode}; use html5ever::{LocalName, Namespace, Prefix, QualName}; use js::jsapi::Heap; use js::jsval::JSVal; +use js::rust::HandleObject; use msg::constellation_msg::InputMethodType; use net_traits::request::CorsSettings; use net_traits::ReferrerPolicy; @@ -241,8 +242,9 @@ impl Element { document: &Document, creator: ElementCreator, mode: CustomElementCreationMode, + proto: Option, ) -> DomRoot { - create_element(name, is, document, creator, mode) + create_element(name, is, document, creator, mode, proto) } pub fn new_inherited( @@ -290,12 +292,14 @@ impl Element { namespace: Namespace, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(Element::new_inherited( local_name, namespace, prefix, document, )), document, + proto, ) } @@ -1817,7 +1821,7 @@ impl Element { { DomRoot::from_ref(elem) }, - _ => DomRoot::upcast(HTMLBodyElement::new(local_name!("body"), None, owner_doc)), + _ => DomRoot::upcast(HTMLBodyElement::new(local_name!("body"), None, owner_doc, None)), } } @@ -2588,6 +2592,7 @@ impl ElementMethods for Element { &context_document, ElementCreator::ScriptCreated, CustomElementCreationMode::Synchronous, + None, ); DomRoot::upcast(body_elem) }, diff --git a/components/script/dom/errorevent.rs b/components/script/dom/errorevent.rs index 129f96dc910..cee89cae434 100644 --- a/components/script/dom/errorevent.rs +++ b/components/script/dom/errorevent.rs @@ -8,7 +8,7 @@ use crate::dom::bindings::codegen::Bindings::ErrorEventBinding::ErrorEventMethod use crate::dom::bindings::codegen::Bindings::EventBinding::EventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::bindings::trace::RootedTraceableBox; @@ -18,7 +18,7 @@ use crate::script_runtime::JSContext; use dom_struct::dom_struct; use js::jsapi::Heap; use js::jsval::JSVal; -use js::rust::HandleValue; +use js::rust::{HandleObject, HandleValue}; use servo_atoms::Atom; use std::cell::Cell; @@ -45,8 +45,8 @@ impl ErrorEvent { } } - pub fn new_uninitialized(global: &GlobalScope) -> DomRoot { - reflect_dom_object(Box::new(ErrorEvent::new_inherited()), global) + fn new_uninitialized(global: &GlobalScope, proto: Option) -> DomRoot { + reflect_dom_object2(Box::new(ErrorEvent::new_inherited()), global, proto) } pub fn new( @@ -60,7 +60,33 @@ impl ErrorEvent { colno: u32, error: HandleValue, ) -> DomRoot { - let ev = ErrorEvent::new_uninitialized(global); + Self::new_with_proto( + global, + None, + type_, + bubbles, + cancelable, + message, + filename, + lineno, + colno, + error, + ) + } + + fn new_with_proto( + global: &GlobalScope, + proto: Option, + type_: Atom, + bubbles: EventBubbles, + cancelable: EventCancelable, + message: DOMString, + filename: DOMString, + lineno: u32, + colno: u32, + error: HandleValue, + ) -> DomRoot { + let ev = ErrorEvent::new_uninitialized(global, proto); { let event = ev.upcast::(); event.init_event(type_, bool::from(bubbles), bool::from(cancelable)); @@ -76,6 +102,7 @@ impl ErrorEvent { #[allow(non_snake_case)] pub fn Constructor( global: &GlobalScope, + proto: Option, type_: DOMString, init: RootedTraceableBox, ) -> Fallible> { @@ -97,8 +124,9 @@ impl ErrorEvent { let cancelable = EventCancelable::from(init.parent.cancelable); - let event = ErrorEvent::new( + let event = ErrorEvent::new_with_proto( global, + proto, Atom::from(type_), bubbles, cancelable, diff --git a/components/script/dom/event.rs b/components/script/dom/event.rs index 8093bd852a9..205bf58e37e 100644 --- a/components/script/dom/event.rs +++ b/components/script/dom/event.rs @@ -12,7 +12,7 @@ use crate::dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::refcounted::Trusted; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject, Reflector}; use crate::dom::bindings::root::{DomRoot, MutNullableDom}; use crate::dom::bindings::str::DOMString; use crate::dom::document::Document; @@ -28,6 +28,7 @@ use crate::dom::window::Window; use crate::task::TaskOnce; use devtools_traits::{TimelineMarker, TimelineMarkerType}; use dom_struct::dom_struct; +use js::rust::HandleObject; use metrics::ToMs; use servo_atoms::Atom; use std::cell::Cell; @@ -72,7 +73,11 @@ impl Event { } pub fn new_uninitialized(global: &GlobalScope) -> DomRoot { - reflect_dom_object(Box::new(Event::new_inherited()), global) + Self::new_uninitialized_with_proto(global, None) + } + + pub fn new_uninitialized_with_proto(global: &GlobalScope, proto: Option) -> DomRoot { + reflect_dom_object2(Box::new(Event::new_inherited()), global, proto) } pub fn new( @@ -81,7 +86,17 @@ impl Event { bubbles: EventBubbles, cancelable: EventCancelable, ) -> DomRoot { - let event = Event::new_uninitialized(global); + Self::new_with_proto(global, None, type_, bubbles, cancelable) + } + + fn new_with_proto( + global: &GlobalScope, + proto: Option, + type_: Atom, + bubbles: EventBubbles, + cancelable: EventCancelable, + ) -> DomRoot { + let event = Event::new_uninitialized_with_proto(global, proto); event.init_event(type_, bool::from(bubbles), bool::from(cancelable)); event } @@ -89,12 +104,13 @@ impl Event { #[allow(non_snake_case)] pub fn Constructor( global: &GlobalScope, + proto: Option, type_: DOMString, init: &EventBinding::EventInit, ) -> Fallible> { let bubbles = EventBubbles::from(init.bubbles); let cancelable = EventCancelable::from(init.cancelable); - Ok(Event::new(global, Atom::from(type_), bubbles, cancelable)) + Ok(Event::new_with_proto(global, proto, Atom::from(type_), bubbles, cancelable)) } pub fn init_event(&self, type_: Atom, bubbles: bool, cancelable: bool) { diff --git a/components/script/dom/eventsource.rs b/components/script/dom/eventsource.rs index 9be9962378e..7897c5b79fd 100644 --- a/components/script/dom/eventsource.rs +++ b/components/script/dom/eventsource.rs @@ -9,7 +9,7 @@ use crate::dom::bindings::codegen::Bindings::EventSourceBinding::{ use crate::dom::bindings::error::{Error, Fallible}; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::refcounted::Trusted; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; @@ -30,6 +30,7 @@ use ipc_channel::ipc; use ipc_channel::router::ROUTER; use js::conversions::ToJSValConvertible; use js::jsval::UndefinedValue; +use js::rust::HandleObject; use mime::{self, Mime}; use net_traits::request::{CacheMode, CorsSettings, Destination, RequestBuilder}; use net_traits::{CoreResourceMsg, FetchChannels, FetchMetadata, FilteredMetadata}; @@ -459,10 +460,11 @@ impl EventSource { } } - fn new(global: &GlobalScope, url: ServoUrl, with_credentials: bool) -> DomRoot { - reflect_dom_object( + fn new(global: &GlobalScope, proto: Option, url: ServoUrl, with_credentials: bool) -> DomRoot { + reflect_dom_object2( Box::new(EventSource::new_inherited(url, with_credentials)), global, + proto, ) } @@ -501,6 +503,7 @@ impl EventSource { #[allow(non_snake_case)] pub fn Constructor( global: &GlobalScope, + proto: Option, url: DOMString, event_source_init: &EventSourceInit, ) -> Fallible> { @@ -515,6 +518,7 @@ impl EventSource { // Step 1, 5 let ev = EventSource::new( global, + proto, url_record.clone(), event_source_init.withCredentials, ); diff --git a/components/script/dom/eventtarget.rs b/components/script/dom/eventtarget.rs index dd0079c47dd..861e113f6ed 100644 --- a/components/script/dom/eventtarget.rs +++ b/components/script/dom/eventtarget.rs @@ -21,7 +21,7 @@ use crate::dom::bindings::codegen::UnionTypes::EventListenerOptionsOrBoolean; use crate::dom::bindings::codegen::UnionTypes::EventOrString; use crate::dom::bindings::error::{report_pending_exception, Error, Fallible}; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::{reflect_dom_object, reflect_dom_object2, DomObject, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::element::Element; @@ -355,13 +355,13 @@ impl EventTarget { } } - fn new(global: &GlobalScope) -> DomRoot { - reflect_dom_object(Box::new(EventTarget::new_inherited()), global) + fn new(global: &GlobalScope, proto: Option) -> DomRoot { + reflect_dom_object2(Box::new(EventTarget::new_inherited()), global, proto) } #[allow(non_snake_case)] - pub fn Constructor(global: &GlobalScope, proto: HandleObject) -> Fallible> { - Ok(reflect_dom_object2(Box::new(EventTarget::new_inherited()), global, proto)) + pub fn Constructor(global: &GlobalScope, proto: Option) -> Fallible> { + Ok(EventTarget::new(global, proto)) } pub fn has_listeners_for(&self, type_: &Atom) -> bool { diff --git a/components/script/dom/extendableevent.rs b/components/script/dom/extendableevent.rs index deb2dce4dfa..a19190ebd03 100644 --- a/components/script/dom/extendableevent.rs +++ b/components/script/dom/extendableevent.rs @@ -6,14 +6,14 @@ use crate::dom::bindings::codegen::Bindings::EventBinding::{self, EventMethods}; use crate::dom::bindings::codegen::Bindings::ExtendableEventBinding; use crate::dom::bindings::error::{Error, ErrorResult, Fallible}; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; use crate::dom::serviceworkerglobalscope::ServiceWorkerGlobalScope; use crate::script_runtime::JSContext; use dom_struct::dom_struct; -use js::rust::HandleValue; +use js::rust::{HandleObject, HandleValue}; use servo_atoms::Atom; // https://w3c.github.io/ServiceWorker/#extendable-event @@ -31,13 +31,24 @@ impl ExtendableEvent { extensions_allowed: true, } } + pub fn new( worker: &ServiceWorkerGlobalScope, type_: Atom, bubbles: bool, cancelable: bool, ) -> DomRoot { - let ev = reflect_dom_object(Box::new(ExtendableEvent::new_inherited()), worker); + Self::new_with_proto(worker, None, type_, bubbles, cancelable) + } + + fn new_with_proto( + worker: &ServiceWorkerGlobalScope, + proto: Option, + type_: Atom, + bubbles: bool, + cancelable: bool, + ) -> DomRoot { + let ev = reflect_dom_object2(Box::new(ExtendableEvent::new_inherited()), worker, proto); { let event = ev.upcast::(); event.init_event(type_, bubbles, cancelable); @@ -47,11 +58,13 @@ impl ExtendableEvent { pub fn Constructor( worker: &ServiceWorkerGlobalScope, + proto: Option, type_: DOMString, init: &ExtendableEventBinding::ExtendableEventInit, ) -> Fallible> { - Ok(ExtendableEvent::new( + Ok(ExtendableEvent::new_with_proto( worker, + proto, Atom::from(type_), init.parent.bubbles, init.parent.cancelable, diff --git a/components/script/dom/extendablemessageevent.rs b/components/script/dom/extendablemessageevent.rs index 19bca33c6ca..2d22e00be94 100644 --- a/components/script/dom/extendablemessageevent.rs +++ b/components/script/dom/extendablemessageevent.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::ExtendableMessageEventBinding; use crate::dom::bindings::codegen::Bindings::ExtendableMessageEventBinding::ExtendableMessageEventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::bindings::trace::RootedTraceableBox; @@ -22,7 +22,7 @@ use crate::script_runtime::JSContext; use dom_struct::dom_struct; use js::jsapi::Heap; use js::jsval::JSVal; -use js::rust::HandleValue; +use js::rust::{HandleObject, HandleValue}; use servo_atoms::Atom; #[dom_struct] @@ -72,13 +72,37 @@ impl ExtendableMessageEvent { origin: DOMString, lastEventId: DOMString, ports: Vec>, + ) -> DomRoot { + Self::new_with_proto( + global, + None, + type_, + bubbles, + cancelable, + data, + origin, + lastEventId, + ports, + ) + } + + fn new_with_proto( + global: &GlobalScope, + proto: Option, + type_: Atom, + bubbles: bool, + cancelable: bool, + data: HandleValue, + origin: DOMString, + lastEventId: DOMString, + ports: Vec>, ) -> DomRoot { let ev = Box::new(ExtendableMessageEvent::new_inherited( origin, lastEventId, ports, )); - let ev = reflect_dom_object(ev, global); + let ev = reflect_dom_object2(ev, global, proto); { let event = ev.upcast::(); event.init_event(type_, bubbles, cancelable); @@ -90,12 +114,14 @@ impl ExtendableMessageEvent { pub fn Constructor( worker: &ServiceWorkerGlobalScope, + proto: Option, type_: DOMString, init: RootedTraceableBox, ) -> Fallible> { let global = worker.upcast::(); - let ev = ExtendableMessageEvent::new( + let ev = ExtendableMessageEvent::new_with_proto( global, + proto, Atom::from(type_), init.parent.parent.bubbles, init.parent.parent.cancelable, diff --git a/components/script/dom/file.rs b/components/script/dom/file.rs index cbbc16bd264..946677d5b35 100644 --- a/components/script/dom/file.rs +++ b/components/script/dom/file.rs @@ -7,13 +7,14 @@ use crate::dom::bindings::codegen::Bindings::FileBinding::FileMethods; use crate::dom::bindings::codegen::UnionTypes::ArrayBufferOrArrayBufferViewOrBlobOrString; use crate::dom::bindings::error::{Error, Fallible}; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::blob::{blob_parts_to_bytes, normalize_type_string, Blob}; use crate::dom::globalscope::GlobalScope; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use net_traits::filemanager_thread::SelectedFile; use script_traits::serializable::BlobImpl; @@ -41,16 +42,27 @@ impl File { } } - #[allow(unrooted_must_root)] pub fn new( global: &GlobalScope, blob_impl: BlobImpl, name: DOMString, modified: Option, ) -> DomRoot { - let file = reflect_dom_object( + Self::new_with_proto(global, None, blob_impl, name, modified) + } + + #[allow(unrooted_must_root)] + fn new_with_proto( + global: &GlobalScope, + proto: Option, + blob_impl: BlobImpl, + name: DOMString, + modified: Option, + ) -> DomRoot { + let file = reflect_dom_object2( Box::new(File::new_inherited(&blob_impl, name, modified)), global, + proto, ); global.track_file(&file, blob_impl); file @@ -82,6 +94,7 @@ impl File { #[allow(non_snake_case)] pub fn Constructor( global: &GlobalScope, + proto: Option, fileBits: Vec, filename: DOMString, filePropertyBag: &FileBinding::FilePropertyBag, @@ -98,8 +111,9 @@ impl File { // see https://github.com/w3c/FileAPI/issues/41 let replaced_filename = DOMString::from_string(filename.replace("/", ":")); let type_string = normalize_type_string(&blobPropertyBag.type_.to_string()); - Ok(File::new( + Ok(File::new_with_proto( global, + proto, BlobImpl::new_from_bytes(bytes, type_string), replaced_filename, modified, diff --git a/components/script/dom/filereader.rs b/components/script/dom/filereader.rs index 2e56f48079c..bc5024cb1fa 100644 --- a/components/script/dom/filereader.rs +++ b/components/script/dom/filereader.rs @@ -11,7 +11,7 @@ use crate::dom::bindings::codegen::UnionTypes::StringOrObject; use crate::dom::bindings::error::{Error, ErrorResult, Fallible}; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::refcounted::Trusted; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; use crate::dom::bindings::root::{DomRoot, MutNullableDom}; use crate::dom::bindings::str::DOMString; use crate::dom::bindings::trace::RootedTraceableBox; @@ -31,6 +31,7 @@ use encoding_rs::{Encoding, UTF_8}; use js::jsapi::Heap; use js::jsapi::JSObject; use js::jsval::{self, JSVal}; +use js::rust::HandleObject; use js::typedarray::{ArrayBuffer, CreateWith}; use mime::{self, Mime}; use servo_atoms::Atom; @@ -151,13 +152,13 @@ impl FileReader { } } - pub fn new(global: &GlobalScope) -> DomRoot { - reflect_dom_object(Box::new(FileReader::new_inherited()), global) + fn new(global: &GlobalScope, proto: Option) -> DomRoot { + reflect_dom_object2(Box::new(FileReader::new_inherited()), global, proto) } #[allow(non_snake_case)] - pub fn Constructor(global: &GlobalScope) -> Fallible> { - Ok(FileReader::new(global)) + pub fn Constructor(global: &GlobalScope, proto: Option) -> Fallible> { + Ok(FileReader::new(global, proto)) } //https://w3c.github.io/FileAPI/#dfn-error-steps diff --git a/components/script/dom/filereadersync.rs b/components/script/dom/filereadersync.rs index 044cb48c27d..0f74ed504bd 100644 --- a/components/script/dom/filereadersync.rs +++ b/components/script/dom/filereadersync.rs @@ -5,7 +5,7 @@ use crate::dom::bindings::codegen::Bindings::BlobBinding::BlobMethods; use crate::dom::bindings::codegen::Bindings::FileReaderSyncBinding::FileReaderSyncMethods; use crate::dom::bindings::error::{Error, Fallible}; -use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::blob::Blob; @@ -14,6 +14,7 @@ use crate::dom::globalscope::GlobalScope; use crate::script_runtime::JSContext; use dom_struct::dom_struct; use js::jsapi::JSObject; +use js::rust::HandleObject; use js::typedarray::{ArrayBuffer, CreateWith}; use std::ptr; use std::ptr::NonNull; @@ -30,13 +31,13 @@ impl FileReaderSync { } } - pub fn new(global: &GlobalScope) -> DomRoot { - reflect_dom_object(Box::new(FileReaderSync::new_inherited()), global) + fn new(global: &GlobalScope, proto: Option) -> DomRoot { + reflect_dom_object2(Box::new(FileReaderSync::new_inherited()), global, proto) } #[allow(non_snake_case)] - pub fn Constructor(global: &GlobalScope) -> Fallible> { - Ok(FileReaderSync::new(global)) + pub fn Constructor(global: &GlobalScope, proto: Option) -> Fallible> { + Ok(FileReaderSync::new(global, proto)) } fn get_blob_bytes(blob: &Blob) -> Result, Error> { diff --git a/components/script/dom/focusevent.rs b/components/script/dom/focusevent.rs index 2d983bcc881..76d546a541e 100644 --- a/components/script/dom/focusevent.rs +++ b/components/script/dom/focusevent.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::FocusEventBinding::FocusEventMethod use crate::dom::bindings::codegen::Bindings::UIEventBinding::UIEventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::{DomRoot, MutNullableDom}; use crate::dom::bindings::str::DOMString; use crate::dom::event::{EventBubbles, EventCancelable}; @@ -15,6 +15,7 @@ use crate::dom::eventtarget::EventTarget; use crate::dom::uievent::UIEvent; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use std::default::Default; #[dom_struct] @@ -32,7 +33,11 @@ impl FocusEvent { } pub fn new_uninitialized(window: &Window) -> DomRoot { - reflect_dom_object(Box::new(FocusEvent::new_inherited()), window) + Self::new_uninitialized_with_proto(window, None) + } + + pub fn new_uninitialized_with_proto(window: &Window, proto: Option) -> DomRoot { + reflect_dom_object2(Box::new(FocusEvent::new_inherited()), window, proto) } pub fn new( @@ -44,7 +49,29 @@ impl FocusEvent { detail: i32, related_target: Option<&EventTarget>, ) -> DomRoot { - let ev = FocusEvent::new_uninitialized(window); + Self::new_with_proto( + window, + None, + type_, + can_bubble, + cancelable, + view, + detail, + related_target, + ) + } + + fn new_with_proto( + window: &Window, + proto: Option, + type_: DOMString, + can_bubble: EventBubbles, + cancelable: EventCancelable, + view: Option<&Window>, + detail: i32, + related_target: Option<&EventTarget>, + ) -> DomRoot { + let ev = FocusEvent::new_uninitialized_with_proto(window, proto); ev.upcast::().InitUIEvent( type_, bool::from(can_bubble), @@ -59,13 +86,15 @@ impl FocusEvent { #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, type_: DOMString, init: &FocusEventBinding::FocusEventInit, ) -> Fallible> { let bubbles = EventBubbles::from(init.parent.parent.bubbles); let cancelable = EventCancelable::from(init.parent.parent.cancelable); - let event = FocusEvent::new( + let event = FocusEvent::new_with_proto( window, + proto, type_, bubbles, cancelable, diff --git a/components/script/dom/formdata.rs b/components/script/dom/formdata.rs index 3a8f3ce4b5b..3d1d28a0ddc 100644 --- a/components/script/dom/formdata.rs +++ b/components/script/dom/formdata.rs @@ -8,7 +8,7 @@ use crate::dom::bindings::codegen::UnionTypes::FileOrUSVString; use crate::dom::bindings::error::{Error, Fallible}; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::iterable::Iterable; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::{DOMString, USVString}; use crate::dom::blob::Blob; @@ -17,6 +17,7 @@ use crate::dom::globalscope::GlobalScope; use crate::dom::htmlformelement::{FormDatum, FormDatumValue, HTMLFormElement}; use dom_struct::dom_struct; use html5ever::LocalName; +use js::rust::HandleObject; use script_traits::serializable::BlobImpl; #[dom_struct] @@ -42,23 +43,28 @@ impl FormData { } pub fn new(form_datums: Option>, global: &GlobalScope) -> DomRoot { - reflect_dom_object(Box::new(FormData::new_inherited(form_datums)), global) + Self::new_with_proto(form_datums, global, None) + } + + fn new_with_proto(form_datums: Option>, global: &GlobalScope, proto: Option) -> DomRoot { + reflect_dom_object2(Box::new(FormData::new_inherited(form_datums)), global, proto) } // https://xhr.spec.whatwg.org/#dom-formdata #[allow(non_snake_case)] pub fn Constructor( global: &GlobalScope, + proto: Option, form: Option<&HTMLFormElement>, ) -> Fallible> { if let Some(opt_form) = form { return match opt_form.get_form_dataset(None, None) { - Some(form_datums) => Ok(FormData::new(Some(form_datums), global)), + Some(form_datums) => Ok(FormData::new_with_proto(Some(form_datums), global, proto)), None => Err(Error::InvalidState), }; } - Ok(FormData::new(None, global)) + Ok(FormData::new_with_proto(None, global, proto)) } } diff --git a/components/script/dom/formdataevent.rs b/components/script/dom/formdataevent.rs index 263d176f66f..00b6c0718b3 100644 --- a/components/script/dom/formdataevent.rs +++ b/components/script/dom/formdataevent.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::FormDataEventBinding; use crate::dom::bindings::codegen::Bindings::FormDataEventBinding::FormDataEventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; @@ -16,6 +16,7 @@ use crate::dom::formdata::FormData; use crate::dom::globalscope::GlobalScope; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_atoms::Atom; #[dom_struct] @@ -32,12 +33,31 @@ impl FormDataEvent { cancelable: EventCancelable, form_data: &FormData, ) -> DomRoot { - let ev = reflect_dom_object( + Self::new_with_proto( + global, + None, + type_, + can_bubble, + cancelable, + form_data, + ) + } + + fn new_with_proto( + global: &GlobalScope, + proto: Option, + type_: Atom, + can_bubble: EventBubbles, + cancelable: EventCancelable, + form_data: &FormData, + ) -> DomRoot { + let ev = reflect_dom_object2( Box::new(FormDataEvent { event: Event::new_inherited(), form_data: Dom::from_ref(form_data), }), global, + proto, ); { @@ -50,14 +70,16 @@ impl FormDataEvent { #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, type_: DOMString, init: &FormDataEventBinding::FormDataEventInit, ) -> Fallible> { let bubbles = EventBubbles::from(init.parent.bubbles); let cancelable = EventCancelable::from(init.parent.cancelable); - let event = FormDataEvent::new( + let event = FormDataEvent::new_with_proto( &window.global(), + proto, Atom::from(type_), bubbles, cancelable, diff --git a/components/script/dom/gainnode.rs b/components/script/dom/gainnode.rs index 86a957734dd..9b3910cf31a 100644 --- a/components/script/dom/gainnode.rs +++ b/components/script/dom/gainnode.rs @@ -11,10 +11,11 @@ use crate::dom::bindings::codegen::Bindings::AudioNodeBinding::{ use crate::dom::bindings::codegen::Bindings::AudioParamBinding::AutomationRate; use crate::dom::bindings::codegen::Bindings::GainNodeBinding::{GainNodeMethods, GainOptions}; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_media::audio::gain_node::GainNodeOptions; use servo_media::audio::node::AudioNodeInit; use servo_media::audio::param::ParamType; @@ -60,23 +61,33 @@ impl GainNode { }) } - #[allow(unrooted_must_root)] pub fn new( window: &Window, context: &BaseAudioContext, options: &GainOptions, + ) -> Fallible> { + Self::new_with_proto(window, None, context, options) + } + + #[allow(unrooted_must_root)] + fn new_with_proto( + window: &Window, + proto: Option, + context: &BaseAudioContext, + options: &GainOptions, ) -> Fallible> { let node = GainNode::new_inherited(window, context, options)?; - Ok(reflect_dom_object(Box::new(node), window)) + Ok(reflect_dom_object2(Box::new(node), window, proto)) } #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, context: &BaseAudioContext, options: &GainOptions, ) -> Fallible> { - GainNode::new(window, context, options) + GainNode::new_with_proto(window, proto, context, options) } } diff --git a/components/script/dom/gamepadevent.rs b/components/script/dom/gamepadevent.rs index a6a3ad9e57c..effacc6eeb2 100644 --- a/components/script/dom/gamepadevent.rs +++ b/components/script/dom/gamepadevent.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::GamepadEventBinding; use crate::dom::bindings::codegen::Bindings::GamepadEventBinding::GamepadEventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; @@ -15,6 +15,7 @@ use crate::dom::gamepad::Gamepad; use crate::dom::globalscope::GlobalScope; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_atoms::Atom; #[dom_struct] @@ -43,7 +44,18 @@ impl GamepadEvent { cancelable: bool, gamepad: &Gamepad, ) -> DomRoot { - let ev = reflect_dom_object(Box::new(GamepadEvent::new_inherited(&gamepad)), global); + Self::new_with_proto(global, None, type_, bubbles, cancelable, gamepad) + } + + fn new_with_proto( + global: &GlobalScope, + proto: Option, + type_: Atom, + bubbles: bool, + cancelable: bool, + gamepad: &Gamepad, + ) -> DomRoot { + let ev = reflect_dom_object2(Box::new(GamepadEvent::new_inherited(&gamepad)), global, proto); { let event = ev.upcast::(); event.init_event(type_, bubbles, cancelable); @@ -68,11 +80,13 @@ impl GamepadEvent { #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, type_: DOMString, init: &GamepadEventBinding::GamepadEventInit, ) -> Fallible> { - Ok(GamepadEvent::new( + Ok(GamepadEvent::new_with_proto( &window.global(), + proto, Atom::from(type_), init.parent.bubbles, init.parent.cancelable, diff --git a/components/script/dom/gpuoutofmemoryerror.rs b/components/script/dom/gpuoutofmemoryerror.rs index fb0b2e11d86..0689e8df3bb 100644 --- a/components/script/dom/gpuoutofmemoryerror.rs +++ b/components/script/dom/gpuoutofmemoryerror.rs @@ -2,10 +2,11 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::globalscope::GlobalScope; use dom_struct::dom_struct; +use js::rust::HandleObject; #[dom_struct] pub struct GPUOutOfMemoryError { @@ -20,12 +21,16 @@ impl GPUOutOfMemoryError { } pub fn new(global: &GlobalScope) -> DomRoot { - reflect_dom_object(Box::new(GPUOutOfMemoryError::new_inherited()), global) + Self::new_with_proto(global, None) + } + + fn new_with_proto(global: &GlobalScope, proto: Option) -> DomRoot { + reflect_dom_object2(Box::new(GPUOutOfMemoryError::new_inherited()), global, proto) } /// https://gpuweb.github.io/gpuweb/#dom-gpuoutofmemoryerror-gpuoutofmemoryerror #[allow(non_snake_case)] - pub fn Constructor(global: &GlobalScope) -> DomRoot { - GPUOutOfMemoryError::new(global) + pub fn Constructor(global: &GlobalScope, proto: Option) -> DomRoot { + GPUOutOfMemoryError::new_with_proto(global, proto) } } diff --git a/components/script/dom/gpuuncapturederrorevent.rs b/components/script/dom/gpuuncapturederrorevent.rs index 30c9692a27d..bdf62162dfe 100644 --- a/components/script/dom/gpuuncapturederrorevent.rs +++ b/components/script/dom/gpuuncapturederrorevent.rs @@ -7,12 +7,13 @@ use crate::dom::bindings::codegen::Bindings::GPUUncapturedErrorEventBinding::{ GPUUncapturedErrorEventInit, GPUUncapturedErrorEventMethods, }; use crate::dom::bindings::codegen::Bindings::GPUValidationErrorBinding::GPUError; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; use crate::dom::globalscope::GlobalScope; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_atoms::Atom; #[dom_struct] @@ -35,9 +36,19 @@ impl GPUUncapturedErrorEvent { type_: DOMString, init: &GPUUncapturedErrorEventInit, ) -> DomRoot { - let ev = reflect_dom_object( + Self::new_with_proto(global, None, type_, init) + } + + fn new_with_proto( + global: &GlobalScope, + proto: Option, + type_: DOMString, + init: &GPUUncapturedErrorEventInit, + ) -> DomRoot { + let ev = reflect_dom_object2( Box::new(GPUUncapturedErrorEvent::new_inherited(init)), global, + proto, ); ev.event.init_event( Atom::from(type_), @@ -51,10 +62,11 @@ impl GPUUncapturedErrorEvent { #[allow(non_snake_case)] pub fn Constructor( global: &GlobalScope, + proto: Option, type_: DOMString, init: &GPUUncapturedErrorEventInit, ) -> DomRoot { - GPUUncapturedErrorEvent::new(global, type_, init) + GPUUncapturedErrorEvent::new_with_proto(global, proto, type_, init) } } diff --git a/components/script/dom/gpuvalidationerror.rs b/components/script/dom/gpuvalidationerror.rs index 4b0b6ec1627..e1456b510a6 100644 --- a/components/script/dom/gpuvalidationerror.rs +++ b/components/script/dom/gpuvalidationerror.rs @@ -3,11 +3,12 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ use crate::dom::bindings::codegen::Bindings::GPUValidationErrorBinding::GPUValidationErrorMethods; -use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::globalscope::GlobalScope; use dom_struct::dom_struct; +use js::rust::HandleObject; #[dom_struct] pub struct GPUValidationError { @@ -24,13 +25,17 @@ impl GPUValidationError { } pub fn new(global: &GlobalScope, message: DOMString) -> DomRoot { - reflect_dom_object(Box::new(GPUValidationError::new_inherited(message)), global) + Self::new_with_proto(global, None, message) + } + + fn new_with_proto(global: &GlobalScope, proto: Option, message: DOMString) -> DomRoot { + reflect_dom_object2(Box::new(GPUValidationError::new_inherited(message)), global, proto) } /// https://gpuweb.github.io/gpuweb/#dom-gpuvalidationerror-gpuvalidationerror #[allow(non_snake_case)] - pub fn Constructor(global: &GlobalScope, message: DOMString) -> DomRoot { - GPUValidationError::new(global, message) + pub fn Constructor(global: &GlobalScope, proto: Option, message: DOMString) -> DomRoot { + GPUValidationError::new_with_proto(global, proto, message) } } diff --git a/components/script/dom/hashchangeevent.rs b/components/script/dom/hashchangeevent.rs index 046500b9b6d..8dbb2fd704a 100644 --- a/components/script/dom/hashchangeevent.rs +++ b/components/script/dom/hashchangeevent.rs @@ -7,12 +7,13 @@ use crate::dom::bindings::codegen::Bindings::HashChangeEventBinding; use crate::dom::bindings::codegen::Bindings::HashChangeEventBinding::HashChangeEventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::{DOMString, USVString}; use crate::dom::event::Event; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_atoms::Atom; // https://html.spec.whatwg.org/multipage/#hashchangeevent @@ -33,9 +34,14 @@ impl HashChangeEvent { } pub fn new_uninitialized(window: &Window) -> DomRoot { - reflect_dom_object( + Self::new_uninitialized_with_proto(window, None) + } + + fn new_uninitialized_with_proto(window: &Window, proto: Option) -> DomRoot { + reflect_dom_object2( Box::new(HashChangeEvent::new_inherited(String::new(), String::new())), window, + proto, ) } @@ -47,9 +53,22 @@ impl HashChangeEvent { old_url: String, new_url: String, ) -> DomRoot { - let ev = reflect_dom_object( + Self::new_with_proto(window, None, type_, bubbles, cancelable, old_url, new_url) + } + + fn new_with_proto( + window: &Window, + proto: Option, + type_: Atom, + bubbles: bool, + cancelable: bool, + old_url: String, + new_url: String, + ) -> DomRoot { + let ev = reflect_dom_object2( Box::new(HashChangeEvent::new_inherited(old_url, new_url)), window, + proto, ); { let event = ev.upcast::(); @@ -61,11 +80,13 @@ impl HashChangeEvent { #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, type_: DOMString, init: &HashChangeEventBinding::HashChangeEventInit, ) -> Fallible> { - Ok(HashChangeEvent::new( + Ok(HashChangeEvent::new_with_proto( window, + proto, Atom::from(type_), init.parent.bubbles, init.parent.cancelable, diff --git a/components/script/dom/headers.rs b/components/script/dom/headers.rs index 6d466ea0c61..8cae2df36a1 100644 --- a/components/script/dom/headers.rs +++ b/components/script/dom/headers.rs @@ -6,13 +6,14 @@ use crate::dom::bindings::cell::DomRefCell; use crate::dom::bindings::codegen::Bindings::HeadersBinding::{HeadersInit, HeadersMethods}; use crate::dom::bindings::error::{Error, ErrorResult, Fallible}; use crate::dom::bindings::iterable::Iterable; -use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::{is_token, ByteString}; use crate::dom::globalscope::GlobalScope; use data_url::mime::Mime as DataUrlMime; use dom_struct::dom_struct; use http::header::{HeaderMap as HyperHeaders, HeaderName, HeaderValue}; +use js::rust::HandleObject; use net_traits::{ fetch::headers::get_value_from_header_list, request::is_cors_safelisted_request_header, }; @@ -47,16 +48,21 @@ impl Headers { } pub fn new(global: &GlobalScope) -> DomRoot { - reflect_dom_object(Box::new(Headers::new_inherited()), global) + Self::new_with_proto(global, None) + } + + fn new_with_proto(global: &GlobalScope, proto: Option) -> DomRoot { + reflect_dom_object2(Box::new(Headers::new_inherited()), global, proto) } // https://fetch.spec.whatwg.org/#dom-headers #[allow(non_snake_case)] pub fn Constructor( global: &GlobalScope, + proto: Option, init: Option, ) -> Fallible> { - let dom_headers_new = Headers::new(global); + let dom_headers_new = Headers::new_with_proto(global, proto); dom_headers_new.fill(init)?; Ok(dom_headers_new) } diff --git a/components/script/dom/htmlanchorelement.rs b/components/script/dom/htmlanchorelement.rs index bd9a526cd16..e36119dd790 100644 --- a/components/script/dom/htmlanchorelement.rs +++ b/components/script/dom/htmlanchorelement.rs @@ -29,6 +29,7 @@ use crate::dom::virtualmethods::VirtualMethods; use crate::task_source::TaskSource; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; use net_traits::request::Referrer; use num_traits::ToPrimitive; use script_traits::{HistoryEntryReplacement, LoadData, LoadOrigin}; @@ -62,12 +63,14 @@ impl HTMLAnchorElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLAnchorElement::new_inherited( local_name, prefix, document, )), document, + proto, ) } diff --git a/components/script/dom/htmlareaelement.rs b/components/script/dom/htmlareaelement.rs index ef85bb8791e..0df17d1b857 100644 --- a/components/script/dom/htmlareaelement.rs +++ b/components/script/dom/htmlareaelement.rs @@ -19,6 +19,7 @@ use crate::dom::virtualmethods::VirtualMethods; use dom_struct::dom_struct; use euclid::default::Point2D; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; use servo_atoms::Atom; use std::default::Default; use std::f32; @@ -253,10 +254,12 @@ impl HTMLAreaElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLAreaElement::new_inherited(local_name, prefix, document)), document, + proto, ) } diff --git a/components/script/dom/htmlaudioelement.rs b/components/script/dom/htmlaudioelement.rs index db8f1877a6d..661f882944a 100644 --- a/components/script/dom/htmlaudioelement.rs +++ b/components/script/dom/htmlaudioelement.rs @@ -15,6 +15,7 @@ use crate::dom::node::Node; use crate::dom::window::Window; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix, QualName}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLAudioElement { @@ -37,24 +38,27 @@ impl HTMLAudioElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLAudioElement::new_inherited( local_name, prefix, document, )), document, + proto, ) } // https://html.spec.whatwg.org/multipage/#dom-audio #[allow(non_snake_case)] - pub fn Audio(window: &Window, src: Option) -> Fallible> { + pub fn Audio(window: &Window, proto: Option, src: Option) -> Fallible> { let element = Element::create( QualName::new(None, ns!(html), local_name!("audio")), None, &window.Document(), ElementCreator::ScriptCreated, CustomElementCreationMode::Synchronous, + proto, ); let audio = DomRoot::downcast::(element).unwrap(); diff --git a/components/script/dom/htmlbaseelement.rs b/components/script/dom/htmlbaseelement.rs index e6568716e1f..29fd459458a 100644 --- a/components/script/dom/htmlbaseelement.rs +++ b/components/script/dom/htmlbaseelement.rs @@ -14,6 +14,7 @@ use crate::dom::node::{document_from_node, BindContext, Node, UnbindContext}; use crate::dom::virtualmethods::VirtualMethods; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; use servo_url::ServoUrl; #[dom_struct] @@ -37,10 +38,12 @@ impl HTMLBaseElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLBaseElement::new_inherited(local_name, prefix, document)), document, + proto, ) } diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index 775af6a686c..d3408db6386 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -18,6 +18,7 @@ use cssparser::RGBA; use dom_struct::dom_struct; use embedder_traits::EmbedderMsg; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; use servo_url::ServoUrl; use style::attr::AttrValue; @@ -46,10 +47,12 @@ impl HTMLBodyElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLBodyElement::new_inherited(local_name, prefix, document)), document, + proto, ) } diff --git a/components/script/dom/htmlbrelement.rs b/components/script/dom/htmlbrelement.rs index d087dfffb02..a1388218ecb 100644 --- a/components/script/dom/htmlbrelement.rs +++ b/components/script/dom/htmlbrelement.rs @@ -8,6 +8,7 @@ use crate::dom::htmlelement::HTMLElement; use crate::dom::node::Node; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLBRElement { @@ -30,10 +31,12 @@ impl HTMLBRElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLBRElement::new_inherited(local_name, prefix, document)), document, + proto, ) } } diff --git a/components/script/dom/htmlbuttonelement.rs b/components/script/dom/htmlbuttonelement.rs index 9e9898f328c..6b22c542681 100755 --- a/components/script/dom/htmlbuttonelement.rs +++ b/components/script/dom/htmlbuttonelement.rs @@ -24,6 +24,7 @@ use crate::dom::validitystate::ValidityState; use crate::dom::virtualmethods::VirtualMethods; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; use std::cell::Cell; use std::default::Default; use style::element_state::ElementState; @@ -69,12 +70,14 @@ impl HTMLButtonElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLButtonElement::new_inherited( local_name, prefix, document, )), document, + proto, ) } diff --git a/components/script/dom/htmlcanvaselement.rs b/components/script/dom/htmlcanvaselement.rs index 33f0c6c6a34..d12a7847d02 100644 --- a/components/script/dom/htmlcanvaselement.rs +++ b/components/script/dom/htmlcanvaselement.rs @@ -41,7 +41,7 @@ use image::codecs::png::PngEncoder; use image::{ColorType, ImageEncoder}; use ipc_channel::ipc::{self as ipcchan, IpcSharedMemory}; use js::error::throw_type_error; -use js::rust::HandleValue; +use js::rust::{HandleObject, HandleValue}; use profile_traits::ipc; use script_layout_interface::{HTMLCanvasData, HTMLCanvasDataSource}; use script_traits::ScriptMsg; @@ -84,12 +84,14 @@ impl HTMLCanvasElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLCanvasElement::new_inherited( local_name, prefix, document, )), document, + proto, ) } diff --git a/components/script/dom/htmldataelement.rs b/components/script/dom/htmldataelement.rs index 93594ec8816..70fdb2f95fd 100644 --- a/components/script/dom/htmldataelement.rs +++ b/components/script/dom/htmldataelement.rs @@ -10,6 +10,7 @@ use crate::dom::htmlelement::HTMLElement; use crate::dom::node::Node; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLDataElement { @@ -32,10 +33,12 @@ impl HTMLDataElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLDataElement::new_inherited(local_name, prefix, document)), document, + proto, ) } } diff --git a/components/script/dom/htmldatalistelement.rs b/components/script/dom/htmldatalistelement.rs index 6bddb2800e4..9323a627c15 100644 --- a/components/script/dom/htmldatalistelement.rs +++ b/components/script/dom/htmldatalistelement.rs @@ -13,6 +13,7 @@ use crate::dom::htmloptionelement::HTMLOptionElement; use crate::dom::node::{window_from_node, Node}; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLDataListElement { @@ -35,12 +36,14 @@ impl HTMLDataListElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLDataListElement::new_inherited( local_name, prefix, document, )), document, + proto, ) } } diff --git a/components/script/dom/htmldetailselement.rs b/components/script/dom/htmldetailselement.rs index 5ec9ab68604..6996164fe00 100644 --- a/components/script/dom/htmldetailselement.rs +++ b/components/script/dom/htmldetailselement.rs @@ -16,6 +16,7 @@ use crate::dom::virtualmethods::VirtualMethods; use crate::task_source::TaskSource; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; use std::cell::Cell; #[dom_struct] @@ -41,12 +42,14 @@ impl HTMLDetailsElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLDetailsElement::new_inherited( local_name, prefix, document, )), document, + proto, ) } diff --git a/components/script/dom/htmldialogelement.rs b/components/script/dom/htmldialogelement.rs index 135f7afe035..b907e3d3912 100644 --- a/components/script/dom/htmldialogelement.rs +++ b/components/script/dom/htmldialogelement.rs @@ -14,6 +14,7 @@ use crate::dom::htmlelement::HTMLElement; use crate::dom::node::{window_from_node, Node}; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLDialogElement { @@ -38,12 +39,14 @@ impl HTMLDialogElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLDialogElement::new_inherited( local_name, prefix, document, )), document, + proto, ) } } diff --git a/components/script/dom/htmldirectoryelement.rs b/components/script/dom/htmldirectoryelement.rs index ce2472be3d3..697607e8336 100644 --- a/components/script/dom/htmldirectoryelement.rs +++ b/components/script/dom/htmldirectoryelement.rs @@ -8,6 +8,7 @@ use crate::dom::htmlelement::HTMLElement; use crate::dom::node::Node; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLDirectoryElement { @@ -30,12 +31,14 @@ impl HTMLDirectoryElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLDirectoryElement::new_inherited( local_name, prefix, document, )), document, + proto, ) } } diff --git a/components/script/dom/htmldivelement.rs b/components/script/dom/htmldivelement.rs index 0bd558210a0..284e1af3690 100644 --- a/components/script/dom/htmldivelement.rs +++ b/components/script/dom/htmldivelement.rs @@ -10,6 +10,7 @@ use crate::dom::htmlelement::HTMLElement; use crate::dom::node::Node; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLDivElement { @@ -32,10 +33,12 @@ impl HTMLDivElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLDivElement::new_inherited(local_name, prefix, document)), document, + proto, ) } } diff --git a/components/script/dom/htmldlistelement.rs b/components/script/dom/htmldlistelement.rs index 356c30c8c94..1477c95668c 100644 --- a/components/script/dom/htmldlistelement.rs +++ b/components/script/dom/htmldlistelement.rs @@ -8,6 +8,7 @@ use crate::dom::htmlelement::HTMLElement; use crate::dom::node::Node; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLDListElement { @@ -30,12 +31,14 @@ impl HTMLDListElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLDListElement::new_inherited( local_name, prefix, document, )), document, + proto, ) } } diff --git a/components/script/dom/htmlelement.rs b/components/script/dom/htmlelement.rs index 0b1cb499fe2..c2c2bb29a7f 100644 --- a/components/script/dom/htmlelement.rs +++ b/components/script/dom/htmlelement.rs @@ -36,6 +36,7 @@ use crate::dom::text::Text; use crate::dom::virtualmethods::VirtualMethods; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; use script_layout_interface::message::QueryMsg; use std::collections::HashSet; use std::default::Default; @@ -83,10 +84,12 @@ impl HTMLElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLElement::new_inherited(local_name, prefix, document)), document, + proto, ) } @@ -487,7 +490,7 @@ impl HTMLElementMethods for HTMLElement { text = String::new(); } - let br = HTMLBRElement::new(local_name!("br"), None, &document); + let br = HTMLBRElement::new(local_name!("br"), None, &document, None); fragment.upcast::().AppendChild(&br.upcast()).unwrap(); }, _ => { diff --git a/components/script/dom/htmlembedelement.rs b/components/script/dom/htmlembedelement.rs index e21b8f5ce35..ac7097e0331 100644 --- a/components/script/dom/htmlembedelement.rs +++ b/components/script/dom/htmlembedelement.rs @@ -8,6 +8,7 @@ use crate::dom::htmlelement::HTMLElement; use crate::dom::node::Node; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLEmbedElement { @@ -30,12 +31,14 @@ impl HTMLEmbedElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLEmbedElement::new_inherited( local_name, prefix, document, )), document, + proto, ) } } diff --git a/components/script/dom/htmlfieldsetelement.rs b/components/script/dom/htmlfieldsetelement.rs index cefee026751..f6629b5860b 100644 --- a/components/script/dom/htmlfieldsetelement.rs +++ b/components/script/dom/htmlfieldsetelement.rs @@ -19,6 +19,7 @@ use crate::dom::validitystate::ValidityState; use crate::dom::virtualmethods::VirtualMethods; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; use std::default::Default; use style::element_state::ElementState; @@ -52,12 +53,14 @@ impl HTMLFieldSetElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLFieldSetElement::new_inherited( local_name, prefix, document, )), document, + proto, ) } } diff --git a/components/script/dom/htmlfontelement.rs b/components/script/dom/htmlfontelement.rs index f9b1575577e..8ec432cf504 100644 --- a/components/script/dom/htmlfontelement.rs +++ b/components/script/dom/htmlfontelement.rs @@ -15,6 +15,7 @@ use crate::dom::virtualmethods::VirtualMethods; use cssparser::RGBA; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; use servo_atoms::Atom; use style::attr::AttrValue; use style::str::{read_numbers, HTML_SPACE_CHARACTERS}; @@ -40,10 +41,12 @@ impl HTMLFontElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLFontElement::new_inherited(local_name, prefix, document)), document, + proto, ) } } diff --git a/components/script/dom/htmlformelement.rs b/components/script/dom/htmlformelement.rs index 404f3f4b648..5d8d83d6783 100644 --- a/components/script/dom/htmlformelement.rs +++ b/components/script/dom/htmlformelement.rs @@ -62,6 +62,7 @@ use encoding_rs::{Encoding, UTF_8}; use headers::{ContentType, HeaderMapExt}; use html5ever::{LocalName, Prefix}; use http::Method; +use js::rust::HandleObject; use mime::{self, Mime}; use net_traits::http_percent_encode; use net_traits::request::Referrer; @@ -120,10 +121,12 @@ impl HTMLFormElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLFormElement::new_inherited(local_name, prefix, document)), document, + proto, ) } diff --git a/components/script/dom/htmlframeelement.rs b/components/script/dom/htmlframeelement.rs index fa3ad51393e..4128a50841c 100644 --- a/components/script/dom/htmlframeelement.rs +++ b/components/script/dom/htmlframeelement.rs @@ -8,6 +8,7 @@ use crate::dom::htmlelement::HTMLElement; use crate::dom::node::Node; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLFrameElement { @@ -30,12 +31,14 @@ impl HTMLFrameElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLFrameElement::new_inherited( local_name, prefix, document, )), document, + proto, ) } } diff --git a/components/script/dom/htmlframesetelement.rs b/components/script/dom/htmlframesetelement.rs index dc071b47074..0b7f209c677 100644 --- a/components/script/dom/htmlframesetelement.rs +++ b/components/script/dom/htmlframesetelement.rs @@ -11,6 +11,7 @@ use crate::dom::htmlelement::HTMLElement; use crate::dom::node::{document_from_node, Node}; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLFrameSetElement { @@ -33,12 +34,14 @@ impl HTMLFrameSetElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - let n = Node::reflect_node( + let n = Node::reflect_node_with_proto( Box::new(HTMLFrameSetElement::new_inherited( local_name, prefix, document, )), document, + proto, ); n.upcast::().set_weird_parser_insertion_mode(); n diff --git a/components/script/dom/htmlheadelement.rs b/components/script/dom/htmlheadelement.rs index 1bd6e5e1148..81c0f4bd777 100644 --- a/components/script/dom/htmlheadelement.rs +++ b/components/script/dom/htmlheadelement.rs @@ -14,6 +14,7 @@ use crate::dom::userscripts::load_script; use crate::dom::virtualmethods::VirtualMethods; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLHeadElement { @@ -36,10 +37,12 @@ impl HTMLHeadElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - let n = Node::reflect_node( + let n = Node::reflect_node_with_proto( Box::new(HTMLHeadElement::new_inherited(local_name, prefix, document)), document, + proto, ); n.upcast::().set_weird_parser_insertion_mode(); diff --git a/components/script/dom/htmlheadingelement.rs b/components/script/dom/htmlheadingelement.rs index 659cf14f4d2..f990883498e 100644 --- a/components/script/dom/htmlheadingelement.rs +++ b/components/script/dom/htmlheadingelement.rs @@ -8,6 +8,7 @@ use crate::dom::htmlelement::HTMLElement; use crate::dom::node::Node; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[derive(JSTraceable, MallocSizeOf)] pub enum HeadingLevel { @@ -43,13 +44,15 @@ impl HTMLHeadingElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, level: HeadingLevel, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLHeadingElement::new_inherited( local_name, prefix, document, level, )), document, + proto, ) } } diff --git a/components/script/dom/htmlhrelement.rs b/components/script/dom/htmlhrelement.rs index 69fa8887bb1..d553e8f3261 100644 --- a/components/script/dom/htmlhrelement.rs +++ b/components/script/dom/htmlhrelement.rs @@ -14,6 +14,7 @@ use crate::dom::virtualmethods::VirtualMethods; use cssparser::RGBA; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; use style::attr::{AttrValue, LengthOrPercentageOrAuto}; #[dom_struct] @@ -37,10 +38,12 @@ impl HTMLHRElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLHRElement::new_inherited(local_name, prefix, document)), document, + proto, ) } } diff --git a/components/script/dom/htmlhtmlelement.rs b/components/script/dom/htmlhtmlelement.rs index da77d3464d9..171a071ee8d 100644 --- a/components/script/dom/htmlhtmlelement.rs +++ b/components/script/dom/htmlhtmlelement.rs @@ -9,6 +9,7 @@ use crate::dom::htmlelement::HTMLElement; use crate::dom::node::Node; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLHtmlElement { @@ -32,10 +33,12 @@ impl HTMLHtmlElement { localName: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - let n = Node::reflect_node( + let n = Node::reflect_node_with_proto( Box::new(HTMLHtmlElement::new_inherited(localName, prefix, document)), document, + proto, ); n.upcast::().set_weird_parser_insertion_mode(); diff --git a/components/script/dom/htmliframeelement.rs b/components/script/dom/htmliframeelement.rs index 1fe04c04518..e0fe53317ce 100644 --- a/components/script/dom/htmliframeelement.rs +++ b/components/script/dom/htmliframeelement.rs @@ -28,6 +28,7 @@ use crate::script_thread::ScriptThread; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; use ipc_channel::ipc; +use js::rust::HandleObject; use msg::constellation_msg::{BrowsingContextId, PipelineId, TopLevelBrowsingContextId}; use profile_traits::ipc as ProfiledIpc; use script_layout_interface::message::ReflowGoal; @@ -441,12 +442,14 @@ impl HTMLIFrameElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLIFrameElement::new_inherited( local_name, prefix, document, )), document, + proto, ) } diff --git a/components/script/dom/htmlimageelement.rs b/components/script/dom/htmlimageelement.rs index 1c898d1dc98..1598dbd7e2d 100644 --- a/components/script/dom/htmlimageelement.rs +++ b/components/script/dom/htmlimageelement.rs @@ -58,6 +58,7 @@ use ipc_channel::ipc; use ipc_channel::ipc::IpcSender; use ipc_channel::router::ROUTER; use js::jsapi::JSAutoRealm; +use js::rust::HandleObject; use mime::{self, Mime}; use msg::constellation_msg::PipelineId; use net_traits::image::base::{Image, ImageMetadata}; @@ -1246,17 +1247,20 @@ impl HTMLImageElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLImageElement::new_inherited( local_name, prefix, document, )), document, + proto, ) } pub fn Image( window: &Window, + proto: Option, width: Option, height: Option, ) -> Fallible> { @@ -1266,6 +1270,7 @@ impl HTMLImageElement { &window.Document(), ElementCreator::ScriptCreated, CustomElementCreationMode::Synchronous, + proto, ); let image = DomRoot::downcast::(element).unwrap(); diff --git a/components/script/dom/htmlinputelement.rs b/components/script/dom/htmlinputelement.rs index e81e07e9643..046f90dbad8 100755 --- a/components/script/dom/htmlinputelement.rs +++ b/components/script/dom/htmlinputelement.rs @@ -330,12 +330,14 @@ impl HTMLInputElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLInputElement::new_inherited( local_name, prefix, document, )), document, + proto, ) } diff --git a/components/script/dom/htmllabelelement.rs b/components/script/dom/htmllabelelement.rs index 970f4a97b7a..e42bc8b508d 100644 --- a/components/script/dom/htmllabelelement.rs +++ b/components/script/dom/htmllabelelement.rs @@ -22,6 +22,7 @@ use crate::dom::node::{Node, ShadowIncluding}; use crate::dom::virtualmethods::VirtualMethods; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; use style::attr::AttrValue; #[dom_struct] @@ -45,12 +46,14 @@ impl HTMLLabelElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLLabelElement::new_inherited( local_name, prefix, document, )), document, + proto, ) } } diff --git a/components/script/dom/htmllegendelement.rs b/components/script/dom/htmllegendelement.rs index bfb0f0701c8..32fa5e88808 100644 --- a/components/script/dom/htmllegendelement.rs +++ b/components/script/dom/htmllegendelement.rs @@ -15,6 +15,7 @@ use crate::dom::node::{BindContext, Node, UnbindContext}; use crate::dom::virtualmethods::VirtualMethods; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLLegendElement { @@ -39,12 +40,14 @@ impl HTMLLegendElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLLegendElement::new_inherited( local_name, prefix, document, )), document, + proto, ) } } diff --git a/components/script/dom/htmllielement.rs b/components/script/dom/htmllielement.rs index 2697f6643e8..e2e2248272d 100644 --- a/components/script/dom/htmllielement.rs +++ b/components/script/dom/htmllielement.rs @@ -12,6 +12,7 @@ use crate::dom::node::Node; use crate::dom::virtualmethods::VirtualMethods; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; use style::attr::AttrValue; #[dom_struct] @@ -35,10 +36,12 @@ impl HTMLLIElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLLIElement::new_inherited(local_name, prefix, document)), document, + proto, ) } } diff --git a/components/script/dom/htmllinkelement.rs b/components/script/dom/htmllinkelement.rs index 30a45471203..5b8ed9e2250 100644 --- a/components/script/dom/htmllinkelement.rs +++ b/components/script/dom/htmllinkelement.rs @@ -29,6 +29,7 @@ use cssparser::{Parser as CssParser, ParserInput}; use dom_struct::dom_struct; use embedder_traits::EmbedderMsg; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; use net_traits::ReferrerPolicy; use servo_arc::Arc; use servo_atoms::Atom; @@ -94,13 +95,15 @@ impl HTMLLinkElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, creator: ElementCreator, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLLinkElement::new_inherited( local_name, prefix, document, creator, )), document, + proto, ) } diff --git a/components/script/dom/htmlmapelement.rs b/components/script/dom/htmlmapelement.rs index d3024bb6e95..3e1b19be48a 100644 --- a/components/script/dom/htmlmapelement.rs +++ b/components/script/dom/htmlmapelement.rs @@ -10,6 +10,7 @@ use crate::dom::htmlelement::HTMLElement; use crate::dom::node::{Node, ShadowIncluding}; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLMapElement { @@ -32,10 +33,12 @@ impl HTMLMapElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLMapElement::new_inherited(local_name, prefix, document)), document, + proto, ) } diff --git a/components/script/dom/htmlmediaelement.rs b/components/script/dom/htmlmediaelement.rs index 5eb9f709838..2d404cf2d49 100644 --- a/components/script/dom/htmlmediaelement.rs +++ b/components/script/dom/htmlmediaelement.rs @@ -1865,6 +1865,7 @@ impl HTMLMediaElement { local_name!("script"), None, &document, + None, ElementCreator::ScriptCreated, ); let mut media_controls_script = resources::read_string(EmbedderResource::MediaControlsJS); @@ -1892,6 +1893,7 @@ impl HTMLMediaElement { local_name!("script"), None, &document, + None, ElementCreator::ScriptCreated, ); style diff --git a/components/script/dom/htmlmenuelement.rs b/components/script/dom/htmlmenuelement.rs index 43e0ff07ed9..9698a058fb1 100644 --- a/components/script/dom/htmlmenuelement.rs +++ b/components/script/dom/htmlmenuelement.rs @@ -9,6 +9,7 @@ use crate::dom::htmlelement::HTMLElement; use crate::dom::node::Node; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLMenuElement { @@ -31,10 +32,12 @@ impl HTMLMenuElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLMenuElement::new_inherited(local_name, prefix, document)), document, + proto, ) } } diff --git a/components/script/dom/htmlmetaelement.rs b/components/script/dom/htmlmetaelement.rs index 168c29cdb0b..a6be8e1747b 100644 --- a/components/script/dom/htmlmetaelement.rs +++ b/components/script/dom/htmlmetaelement.rs @@ -21,6 +21,7 @@ use crate::dom::node::{ use crate::dom::virtualmethods::VirtualMethods; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; use servo_arc::Arc; use servo_config::pref; use std::sync::atomic::AtomicBool; @@ -54,10 +55,12 @@ impl HTMLMetaElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLMetaElement::new_inherited(local_name, prefix, document)), document, + proto, ) } diff --git a/components/script/dom/htmlmeterelement.rs b/components/script/dom/htmlmeterelement.rs index 01f3b0dc94c..42fb531614c 100644 --- a/components/script/dom/htmlmeterelement.rs +++ b/components/script/dom/htmlmeterelement.rs @@ -11,6 +11,7 @@ use crate::dom::node::Node; use crate::dom::nodelist::NodeList; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLMeterElement { @@ -35,12 +36,14 @@ impl HTMLMeterElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLMeterElement::new_inherited( local_name, prefix, document, )), document, + proto, ) } } diff --git a/components/script/dom/htmlmodelement.rs b/components/script/dom/htmlmodelement.rs index d54156bbbc8..f271c0e25d1 100644 --- a/components/script/dom/htmlmodelement.rs +++ b/components/script/dom/htmlmodelement.rs @@ -8,6 +8,7 @@ use crate::dom::htmlelement::HTMLElement; use crate::dom::node::Node; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLModElement { @@ -30,10 +31,12 @@ impl HTMLModElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLModElement::new_inherited(local_name, prefix, document)), document, + proto, ) } } diff --git a/components/script/dom/htmlobjectelement.rs b/components/script/dom/htmlobjectelement.rs index 928c593cec6..a6f78b6ec70 100755 --- a/components/script/dom/htmlobjectelement.rs +++ b/components/script/dom/htmlobjectelement.rs @@ -18,6 +18,7 @@ use crate::dom::validitystate::ValidityState; use crate::dom::virtualmethods::VirtualMethods; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; use net_traits::image::base::Image; use servo_arc::Arc; use std::default::Default; @@ -50,12 +51,14 @@ impl HTMLObjectElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLObjectElement::new_inherited( local_name, prefix, document, )), document, + proto, ) } } diff --git a/components/script/dom/htmlolistelement.rs b/components/script/dom/htmlolistelement.rs index 456625d6447..05f8bb69bba 100644 --- a/components/script/dom/htmlolistelement.rs +++ b/components/script/dom/htmlolistelement.rs @@ -8,6 +8,7 @@ use crate::dom::htmlelement::HTMLElement; use crate::dom::node::Node; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLOListElement { @@ -30,12 +31,14 @@ impl HTMLOListElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLOListElement::new_inherited( local_name, prefix, document, )), document, + proto, ) } } diff --git a/components/script/dom/htmloptgroupelement.rs b/components/script/dom/htmloptgroupelement.rs index 4ee3263c9ac..03e379055f6 100644 --- a/components/script/dom/htmloptgroupelement.rs +++ b/components/script/dom/htmloptgroupelement.rs @@ -14,6 +14,7 @@ use crate::dom::node::Node; use crate::dom::virtualmethods::VirtualMethods; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; use style::element_state::ElementState; #[dom_struct] @@ -42,12 +43,14 @@ impl HTMLOptGroupElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLOptGroupElement::new_inherited( local_name, prefix, document, )), document, + proto, ) } } diff --git a/components/script/dom/htmloptionelement.rs b/components/script/dom/htmloptionelement.rs index 0ba7eadcf11..8e22d8edbaf 100644 --- a/components/script/dom/htmloptionelement.rs +++ b/components/script/dom/htmloptionelement.rs @@ -26,6 +26,7 @@ use crate::dom::virtualmethods::VirtualMethods; use crate::dom::window::Window; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix, QualName}; +use js::rust::HandleObject; use std::cell::Cell; use std::convert::TryInto; use style::element_state::ElementState; @@ -65,12 +66,14 @@ impl HTMLOptionElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLOptionElement::new_inherited( local_name, prefix, document, )), document, + proto, ) } @@ -78,6 +81,7 @@ impl HTMLOptionElement { #[allow(non_snake_case)] pub fn Option( window: &Window, + proto: Option, text: DOMString, value: Option, default_selected: bool, @@ -89,6 +93,7 @@ impl HTMLOptionElement { &window.Document(), ElementCreator::ScriptCreated, CustomElementCreationMode::Synchronous, + proto, ); let option = DomRoot::downcast::(element).unwrap(); diff --git a/components/script/dom/htmloptionscollection.rs b/components/script/dom/htmloptionscollection.rs index 2a79c83d55e..a4b47a2b49b 100644 --- a/components/script/dom/htmloptionscollection.rs +++ b/components/script/dom/htmloptionscollection.rs @@ -54,7 +54,7 @@ impl HTMLOptionsCollection { let document = document_from_node(&*root); for _ in 0..count { - let element = HTMLOptionElement::new(local_name!("option"), None, &document); + let element = HTMLOptionElement::new(local_name!("option"), None, &document, None); let node = element.upcast::(); root.AppendChild(node)?; } diff --git a/components/script/dom/htmloutputelement.rs b/components/script/dom/htmloutputelement.rs index e20dbcc29b2..533fc953d5c 100644 --- a/components/script/dom/htmloutputelement.rs +++ b/components/script/dom/htmloutputelement.rs @@ -19,6 +19,7 @@ use crate::dom::validitystate::ValidityState; use crate::dom::virtualmethods::VirtualMethods; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLOutputElement { @@ -49,12 +50,14 @@ impl HTMLOutputElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLOutputElement::new_inherited( local_name, prefix, document, )), document, + proto, ) } diff --git a/components/script/dom/htmlparagraphelement.rs b/components/script/dom/htmlparagraphelement.rs index 101f7058138..82defe4113b 100644 --- a/components/script/dom/htmlparagraphelement.rs +++ b/components/script/dom/htmlparagraphelement.rs @@ -8,6 +8,7 @@ use crate::dom::htmlelement::HTMLElement; use crate::dom::node::Node; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLParagraphElement { @@ -30,12 +31,14 @@ impl HTMLParagraphElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLParagraphElement::new_inherited( local_name, prefix, document, )), document, + proto, ) } } diff --git a/components/script/dom/htmlparamelement.rs b/components/script/dom/htmlparamelement.rs index fd1a139a84d..a2b30e7ecd1 100644 --- a/components/script/dom/htmlparamelement.rs +++ b/components/script/dom/htmlparamelement.rs @@ -8,6 +8,7 @@ use crate::dom::htmlelement::HTMLElement; use crate::dom::node::Node; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLParamElement { @@ -30,12 +31,14 @@ impl HTMLParamElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLParamElement::new_inherited( local_name, prefix, document, )), document, + proto, ) } } diff --git a/components/script/dom/htmlpictureelement.rs b/components/script/dom/htmlpictureelement.rs index 726f7afd5f8..62de53ef704 100644 --- a/components/script/dom/htmlpictureelement.rs +++ b/components/script/dom/htmlpictureelement.rs @@ -8,6 +8,7 @@ use crate::dom::htmlelement::HTMLElement; use crate::dom::node::Node; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLPictureElement { @@ -30,12 +31,14 @@ impl HTMLPictureElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLPictureElement::new_inherited( local_name, prefix, document, )), document, + proto, ) } } diff --git a/components/script/dom/htmlpreelement.rs b/components/script/dom/htmlpreelement.rs index 36e2706e168..0243be8d4ae 100644 --- a/components/script/dom/htmlpreelement.rs +++ b/components/script/dom/htmlpreelement.rs @@ -8,6 +8,7 @@ use crate::dom::htmlelement::HTMLElement; use crate::dom::node::Node; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLPreElement { @@ -30,10 +31,12 @@ impl HTMLPreElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLPreElement::new_inherited(local_name, prefix, document)), document, + proto, ) } } diff --git a/components/script/dom/htmlprogresselement.rs b/components/script/dom/htmlprogresselement.rs index 718d1999256..917ed3f592e 100644 --- a/components/script/dom/htmlprogresselement.rs +++ b/components/script/dom/htmlprogresselement.rs @@ -13,6 +13,7 @@ use crate::dom::node::Node; use crate::dom::nodelist::NodeList; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLProgressElement { @@ -37,12 +38,14 @@ impl HTMLProgressElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLProgressElement::new_inherited( local_name, prefix, document, )), document, + proto, ) } } diff --git a/components/script/dom/htmlquoteelement.rs b/components/script/dom/htmlquoteelement.rs index 4ad38f78338..f6f42dc4231 100644 --- a/components/script/dom/htmlquoteelement.rs +++ b/components/script/dom/htmlquoteelement.rs @@ -8,6 +8,7 @@ use crate::dom::htmlelement::HTMLElement; use crate::dom::node::Node; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLQuoteElement { @@ -30,12 +31,14 @@ impl HTMLQuoteElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLQuoteElement::new_inherited( local_name, prefix, document, )), document, + proto, ) } } diff --git a/components/script/dom/htmlscriptelement.rs b/components/script/dom/htmlscriptelement.rs index 1a0afeb1c84..9fe67db44a0 100644 --- a/components/script/dom/htmlscriptelement.rs +++ b/components/script/dom/htmlscriptelement.rs @@ -46,6 +46,7 @@ use js::jsapi::{CanCompileOffThread, CompileToStencilOffThread1, OffThreadToken} use js::jsval::UndefinedValue; use js::rust::{ transform_str_to_source_text, CompileOptionsWrapper, FinishOffThreadStencil, Stencil, + HandleObject, }; use msg::constellation_msg::PipelineId; use net_traits::request::{ @@ -194,13 +195,15 @@ impl HTMLScriptElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, creator: ElementCreator, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLScriptElement::new_inherited( local_name, prefix, document, creator, )), document, + proto, ) } diff --git a/components/script/dom/htmlselectelement.rs b/components/script/dom/htmlselectelement.rs index 9d36413e4b5..00bd8b76f91 100755 --- a/components/script/dom/htmlselectelement.rs +++ b/components/script/dom/htmlselectelement.rs @@ -31,6 +31,7 @@ use crate::dom::validitystate::{ValidationFlags, ValidityState}; use crate::dom::virtualmethods::VirtualMethods; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; use std::default::Default; use std::iter; use style::attr::AttrValue; @@ -92,12 +93,14 @@ impl HTMLSelectElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - let n = Node::reflect_node( + let n = Node::reflect_node_with_proto( Box::new(HTMLSelectElement::new_inherited( local_name, prefix, document, )), document, + proto, ); n.upcast::().set_weird_parser_insertion_mode(); diff --git a/components/script/dom/htmlsourceelement.rs b/components/script/dom/htmlsourceelement.rs index 5b581e466b5..e8b542c7a4c 100644 --- a/components/script/dom/htmlsourceelement.rs +++ b/components/script/dom/htmlsourceelement.rs @@ -18,6 +18,7 @@ use crate::dom::node::{BindContext, Node, UnbindContext}; use crate::dom::virtualmethods::VirtualMethods; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLSourceElement { @@ -40,12 +41,14 @@ impl HTMLSourceElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLSourceElement::new_inherited( local_name, prefix, document, )), document, + proto, ) } diff --git a/components/script/dom/htmlspanelement.rs b/components/script/dom/htmlspanelement.rs index e8a374f5f9b..ac9a711d716 100644 --- a/components/script/dom/htmlspanelement.rs +++ b/components/script/dom/htmlspanelement.rs @@ -8,6 +8,7 @@ use crate::dom::htmlelement::HTMLElement; use crate::dom::node::Node; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLSpanElement { @@ -30,10 +31,12 @@ impl HTMLSpanElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLSpanElement::new_inherited(local_name, prefix, document)), document, + proto, ) } } diff --git a/components/script/dom/htmlstyleelement.rs b/components/script/dom/htmlstyleelement.rs index 83d35fc78c8..6dd0ee24ab4 100644 --- a/components/script/dom/htmlstyleelement.rs +++ b/components/script/dom/htmlstyleelement.rs @@ -21,6 +21,7 @@ use crate::stylesheet_loader::{StylesheetLoader, StylesheetOwner}; use cssparser::{Parser as CssParser, ParserInput}; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; use net_traits::ReferrerPolicy; use servo_arc::Arc; use std::cell::Cell; @@ -67,13 +68,15 @@ impl HTMLStyleElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, creator: ElementCreator, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLStyleElement::new_inherited( local_name, prefix, document, creator, )), document, + proto, ) } diff --git a/components/script/dom/htmltablecaptionelement.rs b/components/script/dom/htmltablecaptionelement.rs index b89b647691e..c7c91ae359e 100644 --- a/components/script/dom/htmltablecaptionelement.rs +++ b/components/script/dom/htmltablecaptionelement.rs @@ -9,6 +9,7 @@ use crate::dom::htmlelement::HTMLElement; use crate::dom::node::Node; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLTableCaptionElement { @@ -31,12 +32,14 @@ impl HTMLTableCaptionElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - let n = Node::reflect_node( + let n = Node::reflect_node_with_proto( Box::new(HTMLTableCaptionElement::new_inherited( local_name, prefix, document, )), document, + proto, ); n.upcast::().set_weird_parser_insertion_mode(); diff --git a/components/script/dom/htmltablecellelement.rs b/components/script/dom/htmltablecellelement.rs index 75a2140a090..68daaa76614 100644 --- a/components/script/dom/htmltablecellelement.rs +++ b/components/script/dom/htmltablecellelement.rs @@ -17,6 +17,7 @@ use crate::dom::virtualmethods::VirtualMethods; use cssparser::RGBA; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; use style::attr::{AttrValue, LengthOrPercentageOrAuto}; use style::context::QuirksMode; @@ -44,12 +45,14 @@ impl HTMLTableCellElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - let n = Node::reflect_node( + let n = Node::reflect_node_with_proto( Box::new(HTMLTableCellElement::new_inherited( local_name, prefix, document, )), document, + proto, ); n.upcast::().set_weird_parser_insertion_mode(); diff --git a/components/script/dom/htmltablecolelement.rs b/components/script/dom/htmltablecolelement.rs index 86382e1c2cb..2700defb19a 100644 --- a/components/script/dom/htmltablecolelement.rs +++ b/components/script/dom/htmltablecolelement.rs @@ -9,6 +9,7 @@ use crate::dom::htmlelement::HTMLElement; use crate::dom::node::Node; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLTableColElement { @@ -31,12 +32,14 @@ impl HTMLTableColElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - let n = Node::reflect_node( + let n = Node::reflect_node_with_proto( Box::new(HTMLTableColElement::new_inherited( local_name, prefix, document, )), document, + proto, ); n.upcast::().set_weird_parser_insertion_mode(); diff --git a/components/script/dom/htmltableelement.rs b/components/script/dom/htmltableelement.rs index 2fa44f3ad37..d807d14890c 100644 --- a/components/script/dom/htmltableelement.rs +++ b/components/script/dom/htmltableelement.rs @@ -23,6 +23,7 @@ use crate::dom::virtualmethods::VirtualMethods; use cssparser::RGBA; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; use std::cell::Cell; use style::attr::{parse_unsigned_integer, AttrValue, LengthOrPercentageOrAuto}; @@ -69,12 +70,14 @@ impl HTMLTableElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - let n = Node::reflect_node( + let n = Node::reflect_node_with_proto( Box::new(HTMLTableElement::new_inherited( local_name, prefix, document, )), document, + proto, ); n.upcast::().set_weird_parser_insertion_mode(); @@ -135,7 +138,7 @@ impl HTMLTableElement { return section; } - let section = HTMLTableSectionElement::new(atom.clone(), None, &document_from_node(self)); + let section = HTMLTableSectionElement::new(atom.clone(), None, &document_from_node(self), None); match atom { &local_name!("thead") => self.SetTHead(Some(§ion)), &local_name!("tfoot") => self.SetTFoot(Some(§ion)), @@ -205,6 +208,7 @@ impl HTMLTableElementMethods for HTMLTableElement { local_name!("caption"), None, &document_from_node(self), + None, ); self.SetCaption(Some(&caption)); caption @@ -296,7 +300,7 @@ impl HTMLTableElementMethods for HTMLTableElement { // https://html.spec.whatwg.org/multipage/#dom-table-createtbody fn CreateTBody(&self) -> DomRoot { let tbody = - HTMLTableSectionElement::new(local_name!("tbody"), None, &document_from_node(self)); + HTMLTableSectionElement::new(local_name!("tbody"), None, &document_from_node(self), None); let node = self.upcast::(); let last_tbody = node .rev_children() @@ -318,7 +322,7 @@ impl HTMLTableElementMethods for HTMLTableElement { return Err(Error::IndexSize); } - let new_row = HTMLTableRowElement::new(local_name!("tr"), None, &document_from_node(self)); + let new_row = HTMLTableRowElement::new(local_name!("tr"), None, &document_from_node(self), None); let node = self.upcast::(); if number_of_row_elements == 0 { diff --git a/components/script/dom/htmltablerowelement.rs b/components/script/dom/htmltablerowelement.rs index 5da05be4019..6e8eb34899e 100644 --- a/components/script/dom/htmltablerowelement.rs +++ b/components/script/dom/htmltablerowelement.rs @@ -22,6 +22,7 @@ use crate::dom::virtualmethods::VirtualMethods; use cssparser::RGBA; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; use style::attr::AttrValue; #[derive(JSTraceable)] @@ -56,12 +57,14 @@ impl HTMLTableRowElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - let n = Node::reflect_node( + let n = Node::reflect_node_with_proto( Box::new(HTMLTableRowElement::new_inherited( local_name, prefix, document, )), document, + proto, ); n.upcast::().set_weird_parser_insertion_mode(); @@ -100,7 +103,7 @@ impl HTMLTableRowElementMethods for HTMLTableRowElement { node.insert_cell_or_row( index, || self.Cells(), - || HTMLTableCellElement::new(local_name!("td"), None, &node.owner_doc()), + || HTMLTableCellElement::new(local_name!("td"), None, &node.owner_doc(), None), ) } diff --git a/components/script/dom/htmltablesectionelement.rs b/components/script/dom/htmltablesectionelement.rs index 5787546f2be..03cddf7bdd4 100644 --- a/components/script/dom/htmltablesectionelement.rs +++ b/components/script/dom/htmltablesectionelement.rs @@ -18,6 +18,7 @@ use crate::dom::virtualmethods::VirtualMethods; use cssparser::RGBA; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; use style::attr::AttrValue; #[dom_struct] @@ -41,12 +42,14 @@ impl HTMLTableSectionElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - let n = Node::reflect_node( + let n = Node::reflect_node_with_proto( Box::new(HTMLTableSectionElement::new_inherited( local_name, prefix, document, )), document, + proto, ); n.upcast::().set_weird_parser_insertion_mode(); @@ -75,7 +78,7 @@ impl HTMLTableSectionElementMethods for HTMLTableSectionElement { node.insert_cell_or_row( index, || self.Rows(), - || HTMLTableRowElement::new(local_name!("tr"), None, &node.owner_doc()), + || HTMLTableRowElement::new(local_name!("tr"), None, &node.owner_doc(), None), ) } diff --git a/components/script/dom/htmltemplateelement.rs b/components/script/dom/htmltemplateelement.rs index 673f6e0c98a..1a542171ef0 100644 --- a/components/script/dom/htmltemplateelement.rs +++ b/components/script/dom/htmltemplateelement.rs @@ -14,6 +14,7 @@ use crate::dom::node::{document_from_node, CloneChildrenFlag, Node}; use crate::dom::virtualmethods::VirtualMethods; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLTemplateElement { @@ -40,12 +41,14 @@ impl HTMLTemplateElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - let n = Node::reflect_node( + let n = Node::reflect_node_with_proto( Box::new(HTMLTemplateElement::new_inherited( local_name, prefix, document, )), document, + proto, ); n.upcast::().set_weird_parser_insertion_mode(); diff --git a/components/script/dom/htmltextareaelement.rs b/components/script/dom/htmltextareaelement.rs index aee9c1eadff..f3656664239 100755 --- a/components/script/dom/htmltextareaelement.rs +++ b/components/script/dom/htmltextareaelement.rs @@ -37,6 +37,7 @@ use crate::textinput::{ }; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; use script_traits::ScriptToConstellationChan; use std::cell::Cell; use std::default::Default; @@ -174,12 +175,14 @@ impl HTMLTextAreaElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLTextAreaElement::new_inherited( local_name, prefix, document, )), document, + proto, ) } diff --git a/components/script/dom/htmltimeelement.rs b/components/script/dom/htmltimeelement.rs index 2b0974dd76c..712983f8460 100644 --- a/components/script/dom/htmltimeelement.rs +++ b/components/script/dom/htmltimeelement.rs @@ -10,6 +10,7 @@ use crate::dom::htmlelement::HTMLElement; use crate::dom::node::Node; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLTimeElement { @@ -32,10 +33,12 @@ impl HTMLTimeElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLTimeElement::new_inherited(local_name, prefix, document)), document, + proto, ) } } diff --git a/components/script/dom/htmltitleelement.rs b/components/script/dom/htmltitleelement.rs index 7fce947e626..464bbaab2e0 100644 --- a/components/script/dom/htmltitleelement.rs +++ b/components/script/dom/htmltitleelement.rs @@ -13,6 +13,7 @@ use crate::dom::node::{BindContext, ChildrenMutation, Node}; use crate::dom::virtualmethods::VirtualMethods; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLTitleElement { @@ -35,12 +36,14 @@ impl HTMLTitleElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLTitleElement::new_inherited( local_name, prefix, document, )), document, + proto, ) } } diff --git a/components/script/dom/htmltrackelement.rs b/components/script/dom/htmltrackelement.rs index c068bd88295..05ceed14f1e 100644 --- a/components/script/dom/htmltrackelement.rs +++ b/components/script/dom/htmltrackelement.rs @@ -15,6 +15,7 @@ use crate::dom::node::Node; use crate::dom::texttrack::TextTrack; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[derive(Clone, Copy, JSTraceable, MallocSizeOf, PartialEq)] #[repr(u16)] @@ -51,6 +52,7 @@ impl HTMLTrackElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { let track = TextTrack::new( &document.window(), @@ -61,11 +63,12 @@ impl HTMLTrackElement { Default::default(), None, ); - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLTrackElement::new_inherited( local_name, prefix, document, &track, )), document, + proto, ) } } diff --git a/components/script/dom/htmlulistelement.rs b/components/script/dom/htmlulistelement.rs index aab11124365..73704e70418 100644 --- a/components/script/dom/htmlulistelement.rs +++ b/components/script/dom/htmlulistelement.rs @@ -8,6 +8,7 @@ use crate::dom::htmlelement::HTMLElement; use crate::dom::node::Node; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLUListElement { @@ -30,12 +31,14 @@ impl HTMLUListElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLUListElement::new_inherited( local_name, prefix, document, )), document, + proto, ) } } diff --git a/components/script/dom/htmlunknownelement.rs b/components/script/dom/htmlunknownelement.rs index 27fa932e936..c59b4d81e8c 100644 --- a/components/script/dom/htmlunknownelement.rs +++ b/components/script/dom/htmlunknownelement.rs @@ -8,6 +8,7 @@ use crate::dom::htmlelement::HTMLElement; use crate::dom::node::Node; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; #[dom_struct] pub struct HTMLUnknownElement { @@ -30,12 +31,14 @@ impl HTMLUnknownElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLUnknownElement::new_inherited( local_name, prefix, document, )), document, + proto, ) } } diff --git a/components/script/dom/htmlvideoelement.rs b/components/script/dom/htmlvideoelement.rs index eb1b35ee07a..4a288607be7 100644 --- a/components/script/dom/htmlvideoelement.rs +++ b/components/script/dom/htmlvideoelement.rs @@ -26,6 +26,7 @@ use euclid::default::Size2D; use html5ever::{LocalName, Prefix}; use ipc_channel::ipc; use ipc_channel::router::ROUTER; +use js::rust::HandleObject; use net_traits::image_cache::{ ImageCache, ImageCacheResult, ImageOrMetadataAvailable, ImageResponse, PendingImageId, UsePlaceholder, @@ -84,12 +85,14 @@ impl HTMLVideoElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(HTMLVideoElement::new_inherited( local_name, prefix, document, )), document, + proto, ) } diff --git a/components/script/dom/imagedata.rs b/components/script/dom/imagedata.rs index 43df0951492..42638f40351 100644 --- a/components/script/dom/imagedata.rs +++ b/components/script/dom/imagedata.rs @@ -4,7 +4,7 @@ use crate::dom::bindings::codegen::Bindings::ImageDataBinding::ImageDataMethods; use crate::dom::bindings::error::{Error, Fallible}; -use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::globalscope::GlobalScope; use crate::script_runtime::JSContext; @@ -12,7 +12,7 @@ use dom_struct::dom_struct; use euclid::default::{Rect, Size2D}; use ipc_channel::ipc::IpcSharedMemory; use js::jsapi::{Heap, JSObject}; -use js::rust::Runtime; +use js::rust::{HandleObject, Runtime}; use js::typedarray::{CreateWith, Uint8ClampedArray}; use std::borrow::Cow; use std::default::Default; @@ -45,9 +45,9 @@ impl ImageData { d.resize(len as usize, 0); let data = CreateWith::Slice(&d[..]); Uint8ClampedArray::create(*cx, data, js_object.handle_mut()).unwrap(); - Self::new_with_jsobject(global, width, Some(height), js_object.get()) + Self::new_with_jsobject(global, None, width, Some(height), js_object.get()) } else { - Self::new_without_jsobject(global, width, height) + Self::new_without_jsobject(global, None, width, height) } } } @@ -55,6 +55,7 @@ impl ImageData { #[allow(unsafe_code)] unsafe fn new_with_jsobject( global: &GlobalScope, + proto: Option, width: u32, opt_height: Option, jsobject: *mut JSObject, @@ -90,12 +91,13 @@ impl ImageData { (*imagedata).data.set(jsobject); - Ok(reflect_dom_object(imagedata, global)) + Ok(reflect_dom_object2(imagedata, global, proto)) } #[allow(unsafe_code)] unsafe fn new_without_jsobject( global: &GlobalScope, + proto: Option, width: u32, height: u32, ) -> Fallible> { @@ -117,12 +119,12 @@ impl ImageData { .unwrap(); (*imagedata).data.set(array.get()); - Ok(reflect_dom_object(imagedata, global)) + Ok(reflect_dom_object2(imagedata, global, proto)) } // https://html.spec.whatwg.org/multipage/#pixel-manipulation:dom-imagedata-3 #[allow(unsafe_code, non_snake_case)] - pub fn Constructor(global: &GlobalScope, width: u32, height: u32) -> Fallible> { - unsafe { Self::new_without_jsobject(global, width, height) } + pub fn Constructor(global: &GlobalScope, proto: Option, width: u32, height: u32) -> Fallible> { + unsafe { Self::new_without_jsobject(global, proto, width, height) } } // https://html.spec.whatwg.org/multipage/#pixel-manipulation:dom-imagedata-4 @@ -130,11 +132,12 @@ impl ImageData { pub unsafe fn Constructor_( cx: JSContext, global: &GlobalScope, + proto: Option, jsobject: *mut JSObject, width: u32, opt_height: Option, ) -> Fallible> { - Self::new_with_jsobject(global, width, opt_height, jsobject) + Self::new_with_jsobject(global, proto, width, opt_height, jsobject) } /// Nothing must change the array on the JS side while the slice is live. diff --git a/components/script/dom/inputevent.rs b/components/script/dom/inputevent.rs index 33a4ed3bbdb..2c1ee15cbae 100644 --- a/components/script/dom/inputevent.rs +++ b/components/script/dom/inputevent.rs @@ -5,12 +5,13 @@ use crate::dom::bindings::codegen::Bindings::InputEventBinding::{self, InputEventMethods}; use crate::dom::bindings::codegen::Bindings::UIEventBinding::UIEventBinding::UIEventMethods; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::uievent::UIEvent; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; #[dom_struct] pub struct InputEvent { @@ -20,8 +21,9 @@ pub struct InputEvent { } impl InputEvent { - pub fn new( + fn new( window: &Window, + proto: Option, type_: DOMString, can_bubble: bool, cancelable: bool, @@ -30,13 +32,14 @@ impl InputEvent { data: Option, is_composing: bool, ) -> DomRoot { - let ev = reflect_dom_object( + let ev = reflect_dom_object2( Box::new(InputEvent { uievent: UIEvent::new_inherited(), data: data, is_composing: is_composing, }), window, + proto, ); ev.uievent .InitUIEvent(type_, can_bubble, cancelable, view, detail); @@ -46,11 +49,13 @@ impl InputEvent { #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, type_: DOMString, init: &InputEventBinding::InputEventInit, ) -> Fallible> { let event = InputEvent::new( window, + proto, type_, init.parent.parent.bubbles, init.parent.parent.cancelable, diff --git a/components/script/dom/keyboardevent.rs b/components/script/dom/keyboardevent.rs index 12668a6c214..a3dd23bfb21 100644 --- a/components/script/dom/keyboardevent.rs +++ b/components/script/dom/keyboardevent.rs @@ -8,7 +8,7 @@ use crate::dom::bindings::codegen::Bindings::KeyboardEventBinding::KeyboardEvent use crate::dom::bindings::codegen::Bindings::UIEventBinding::UIEventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; @@ -16,6 +16,7 @@ use crate::dom::uievent::UIEvent; use crate::dom::window::Window; use dom_struct::dom_struct; use keyboard_types::{Key, Modifiers}; +use js::rust::HandleObject; use std::cell::Cell; unsafe_no_jsmanaged_fields!(Key); @@ -52,7 +53,11 @@ impl KeyboardEvent { } pub fn new_uninitialized(window: &Window) -> DomRoot { - reflect_dom_object(Box::new(KeyboardEvent::new_inherited()), window) + Self::new_uninitialized_with_proto(window, None) + } + + fn new_uninitialized_with_proto(window: &Window, proto: Option) -> DomRoot { + reflect_dom_object2(Box::new(KeyboardEvent::new_inherited()), window, proto) } pub fn new( @@ -61,6 +66,42 @@ impl KeyboardEvent { can_bubble: bool, cancelable: bool, view: Option<&Window>, + detail: i32, + key: Key, + code: DOMString, + location: u32, + repeat: bool, + is_composing: bool, + modifiers: Modifiers, + char_code: u32, + key_code: u32, + ) -> DomRoot { + Self::new_with_proto( + window, + None, + type_, + can_bubble, + cancelable, + view, + detail, + key, + code, + location, + repeat, + is_composing, + modifiers, + char_code, + key_code, + ) + } + + fn new_with_proto( + window: &Window, + proto: Option, + type_: DOMString, + can_bubble: bool, + cancelable: bool, + view: Option<&Window>, _detail: i32, key: Key, code: DOMString, @@ -71,7 +112,7 @@ impl KeyboardEvent { char_code: u32, key_code: u32, ) -> DomRoot { - let ev = KeyboardEvent::new_uninitialized(window); + let ev = KeyboardEvent::new_uninitialized_with_proto(window, proto); ev.InitKeyboardEvent( type_, can_bubble, @@ -95,6 +136,7 @@ impl KeyboardEvent { #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, type_: DOMString, init: &KeyboardEventBinding::KeyboardEventInit, ) -> Fallible> { @@ -103,8 +145,9 @@ impl KeyboardEvent { modifiers.set(Modifiers::ALT, init.parent.altKey); modifiers.set(Modifiers::SHIFT, init.parent.shiftKey); modifiers.set(Modifiers::META, init.parent.metaKey); - let event = KeyboardEvent::new( + let event = KeyboardEvent::new_with_proto( window, + proto, type_, init.parent.parent.parent.bubbles, init.parent.parent.parent.cancelable, diff --git a/components/script/dom/mediaelementaudiosourcenode.rs b/components/script/dom/mediaelementaudiosourcenode.rs index 29737fc3bc0..98f43a063be 100644 --- a/components/script/dom/mediaelementaudiosourcenode.rs +++ b/components/script/dom/mediaelementaudiosourcenode.rs @@ -7,11 +7,12 @@ use crate::dom::audionode::AudioNode; use crate::dom::bindings::codegen::Bindings::MediaElementAudioSourceNodeBinding::MediaElementAudioSourceNodeMethods; use crate::dom::bindings::codegen::Bindings::MediaElementAudioSourceNodeBinding::MediaElementAudioSourceOptions; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::htmlmediaelement::HTMLMediaElement; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_media::audio::media_element_source_node::MediaElementSourceNodeMessage; use servo_media::audio::node::{AudioNodeInit, AudioNodeMessage}; use std::sync::mpsc; @@ -48,23 +49,33 @@ impl MediaElementAudioSourceNode { }) } - #[allow(unrooted_must_root)] pub fn new( window: &Window, context: &AudioContext, media_element: &HTMLMediaElement, + ) -> Fallible> { + Self::new_with_proto(window, None, context, media_element) + } + + #[allow(unrooted_must_root)] + fn new_with_proto( + window: &Window, + proto: Option, + context: &AudioContext, + media_element: &HTMLMediaElement, ) -> Fallible> { let node = MediaElementAudioSourceNode::new_inherited(context, media_element)?; - Ok(reflect_dom_object(Box::new(node), window)) + Ok(reflect_dom_object2(Box::new(node), window, proto)) } #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, context: &AudioContext, options: &MediaElementAudioSourceOptions, ) -> Fallible> { - MediaElementAudioSourceNode::new(window, context, &*options.mediaElement) + MediaElementAudioSourceNode::new_with_proto(window, proto, context, &*options.mediaElement) } } diff --git a/components/script/dom/mediametadata.rs b/components/script/dom/mediametadata.rs index 3abe0a1a20c..24f9a31120c 100644 --- a/components/script/dom/mediametadata.rs +++ b/components/script/dom/mediametadata.rs @@ -6,12 +6,13 @@ use crate::dom::bindings::cell::DomRefCell; use crate::dom::bindings::codegen::Bindings::MediaMetadataBinding::MediaMetadataInit; use crate::dom::bindings::codegen::Bindings::MediaMetadataBinding::MediaMetadataMethods; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; use crate::dom::bindings::root::{DomRoot, MutNullableDom}; use crate::dom::bindings::str::DOMString; use crate::dom::mediasession::MediaSession; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; #[dom_struct] pub struct MediaMetadata { @@ -34,16 +35,21 @@ impl MediaMetadata { } pub fn new(global: &Window, init: &MediaMetadataInit) -> DomRoot { - reflect_dom_object(Box::new(MediaMetadata::new_inherited(init)), global) + Self::new_with_proto(global, None, init) + } + + fn new_with_proto(global: &Window, proto: Option, init: &MediaMetadataInit) -> DomRoot { + reflect_dom_object2(Box::new(MediaMetadata::new_inherited(init)), global, proto) } /// https://w3c.github.io/mediasession/#dom-mediametadata-mediametadata #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, init: &MediaMetadataInit, ) -> Fallible> { - Ok(MediaMetadata::new(window, init)) + Ok(MediaMetadata::new_with_proto(window, proto, init)) } fn queue_update_metadata_algorithm(&self) { diff --git a/components/script/dom/mediaquerylistevent.rs b/components/script/dom/mediaquerylistevent.rs index c34c3d5116f..fdeedc93052 100644 --- a/components/script/dom/mediaquerylistevent.rs +++ b/components/script/dom/mediaquerylistevent.rs @@ -7,13 +7,14 @@ use crate::dom::bindings::codegen::Bindings::MediaQueryListEventBinding::MediaQu use crate::dom::bindings::codegen::Bindings::MediaQueryListEventBinding::MediaQueryListEventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; use crate::dom::globalscope::GlobalScope; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_atoms::Atom; use std::cell::Cell; @@ -26,8 +27,9 @@ pub struct MediaQueryListEvent { } impl MediaQueryListEvent { - pub fn new_initialized( + fn new_initialized( global: &GlobalScope, + proto: Option, media: DOMString, matches: bool, ) -> DomRoot { @@ -36,7 +38,7 @@ impl MediaQueryListEvent { media: media, matches: Cell::new(matches), }); - reflect_dom_object(ev, global) + reflect_dom_object2(ev, global, proto) } pub fn new( @@ -47,7 +49,19 @@ impl MediaQueryListEvent { media: DOMString, matches: bool, ) -> DomRoot { - let ev = MediaQueryListEvent::new_initialized(global, media, matches); + Self::new_with_proto(global, None, type_, bubbles, cancelable, media, matches) + } + + fn new_with_proto( + global: &GlobalScope, + proto: Option, + type_: Atom, + bubbles: bool, + cancelable: bool, + media: DOMString, + matches: bool, + ) -> DomRoot { + let ev = MediaQueryListEvent::new_initialized(global, proto, media, matches); { let event = ev.upcast::(); event.init_event(type_, bubbles, cancelable); @@ -58,12 +72,14 @@ impl MediaQueryListEvent { #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, type_: DOMString, init: &MediaQueryListEventInit, ) -> Fallible> { let global = window.upcast::(); - Ok(MediaQueryListEvent::new( + Ok(MediaQueryListEvent::new_with_proto( global, + proto, Atom::from(type_), init.parent.bubbles, init.parent.cancelable, diff --git a/components/script/dom/mediastream.rs b/components/script/dom/mediastream.rs index ff2c8f3a990..812552d3793 100644 --- a/components/script/dom/mediastream.rs +++ b/components/script/dom/mediastream.rs @@ -5,7 +5,7 @@ use crate::dom::bindings::cell::{DomRefCell, Ref}; use crate::dom::bindings::codegen::Bindings::MediaStreamBinding::MediaStreamMethods; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::eventtarget::EventTarget; @@ -13,6 +13,7 @@ use crate::dom::globalscope::GlobalScope; use crate::dom::mediastreamtrack::MediaStreamTrack; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_media::streams::registry::MediaStreamId; use servo_media::streams::MediaStreamType; @@ -32,7 +33,11 @@ impl MediaStream { } pub fn new(global: &GlobalScope) -> DomRoot { - reflect_dom_object(Box::new(MediaStream::new_inherited()), global) + Self::new_with_proto(global, None) + } + + fn new_with_proto(global: &GlobalScope, proto: Option) -> DomRoot { + reflect_dom_object2(Box::new(MediaStream::new_inherited()), global, proto) } pub fn new_single( @@ -46,19 +51,20 @@ impl MediaStream { this } - pub fn Constructor(global: &Window) -> Fallible> { - Ok(MediaStream::new(&global.global())) + pub fn Constructor(global: &Window, proto: Option) -> Fallible> { + Ok(MediaStream::new_with_proto(&global.global(), proto)) } - pub fn Constructor_(_: &Window, stream: &MediaStream) -> Fallible> { - Ok(stream.Clone()) + pub fn Constructor_(_: &Window, proto: Option, stream: &MediaStream) -> Fallible> { + Ok(stream.clone_with_proto(proto)) } pub fn Constructor__( global: &Window, + proto: Option, tracks: Vec>, ) -> Fallible> { - let new = MediaStream::new(&global.global()); + let new = MediaStream::new_with_proto(&global.global(), proto); for track in tracks { // this is quadratic, but shouldn't matter much // if this becomes a problem we can use a hash map @@ -132,7 +138,13 @@ impl MediaStreamMethods for MediaStream { /// https://w3c.github.io/mediacapture-main/#dom-mediastream-clone fn Clone(&self) -> DomRoot { - let new = MediaStream::new(&self.global()); + self.clone_with_proto(None) + } +} + +impl MediaStream { + fn clone_with_proto(&self, proto: Option) -> DomRoot { + let new = MediaStream::new_with_proto(&self.global(), proto); for track in &*self.tracks.borrow() { new.add_track(&track) } diff --git a/components/script/dom/mediastreamaudiodestinationnode.rs b/components/script/dom/mediastreamaudiodestinationnode.rs index d402f07b590..b42fb9d89f8 100644 --- a/components/script/dom/mediastreamaudiodestinationnode.rs +++ b/components/script/dom/mediastreamaudiodestinationnode.rs @@ -11,11 +11,12 @@ use crate::dom::bindings::codegen::Bindings::AudioNodeBinding::{ use crate::dom::bindings::codegen::Bindings::MediaStreamAudioDestinationNodeBinding::MediaStreamAudioDestinationNodeMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::mediastream::MediaStream; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_media::audio::node::AudioNodeInit; use servo_media::streams::MediaStreamType; use servo_media::ServoMedia; @@ -53,23 +54,33 @@ impl MediaStreamAudioDestinationNode { }) } - #[allow(unrooted_must_root)] pub fn new( window: &Window, context: &AudioContext, options: &AudioNodeOptions, + ) -> Fallible> { + Self::new_with_proto(window, None, context, options) + } + + #[allow(unrooted_must_root)] + fn new_with_proto( + window: &Window, + proto: Option, + context: &AudioContext, + options: &AudioNodeOptions, ) -> Fallible> { let node = MediaStreamAudioDestinationNode::new_inherited(context, options)?; - Ok(reflect_dom_object(Box::new(node), window)) + Ok(reflect_dom_object2(Box::new(node), window, proto)) } #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, context: &AudioContext, options: &AudioNodeOptions, ) -> Fallible> { - MediaStreamAudioDestinationNode::new(window, context, options) + MediaStreamAudioDestinationNode::new_with_proto(window, proto, context, options) } } diff --git a/components/script/dom/mediastreamaudiosourcenode.rs b/components/script/dom/mediastreamaudiosourcenode.rs index f6925af75c3..4137b0c2896 100644 --- a/components/script/dom/mediastreamaudiosourcenode.rs +++ b/components/script/dom/mediastreamaudiosourcenode.rs @@ -9,11 +9,12 @@ use crate::dom::bindings::codegen::Bindings::MediaStreamAudioSourceNodeBinding:: }; use crate::dom::bindings::error::{Error, Fallible}; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::mediastream::MediaStream; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_media::audio::node::AudioNodeInit; use servo_media::streams::MediaStreamType; @@ -48,23 +49,33 @@ impl MediaStreamAudioSourceNode { }) } - #[allow(unrooted_must_root)] pub fn new( window: &Window, context: &AudioContext, stream: &MediaStream, + ) -> Fallible> { + Self::new_with_proto(window, None, context, stream) + } + + #[allow(unrooted_must_root)] + fn new_with_proto( + window: &Window, + proto: Option, + context: &AudioContext, + stream: &MediaStream, ) -> Fallible> { let node = MediaStreamAudioSourceNode::new_inherited(context, stream)?; - Ok(reflect_dom_object(Box::new(node), window)) + Ok(reflect_dom_object2(Box::new(node), window, proto)) } #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, context: &AudioContext, options: &MediaStreamAudioSourceOptions, ) -> Fallible> { - MediaStreamAudioSourceNode::new(window, context, &options.mediaStream) + MediaStreamAudioSourceNode::new_with_proto(window, proto, context, &options.mediaStream) } } diff --git a/components/script/dom/mediastreamtrackaudiosourcenode.rs b/components/script/dom/mediastreamtrackaudiosourcenode.rs index 6399ee5f6a4..387ad20d741 100644 --- a/components/script/dom/mediastreamtrackaudiosourcenode.rs +++ b/components/script/dom/mediastreamtrackaudiosourcenode.rs @@ -7,11 +7,12 @@ use crate::dom::audionode::AudioNode; use crate::dom::bindings::codegen::Bindings::MediaStreamTrackAudioSourceNodeBinding::MediaStreamTrackAudioSourceOptions; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::mediastreamtrack::MediaStreamTrack; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_media::audio::node::AudioNodeInit; #[dom_struct] @@ -39,22 +40,32 @@ impl MediaStreamTrackAudioSourceNode { }) } - #[allow(unrooted_must_root)] pub fn new( window: &Window, context: &AudioContext, track: &MediaStreamTrack, + ) -> Fallible> { + Self::new_with_proto(window, None, context, track) + } + + #[allow(unrooted_must_root)] + fn new_with_proto( + window: &Window, + proto: Option, + context: &AudioContext, + track: &MediaStreamTrack, ) -> Fallible> { let node = MediaStreamTrackAudioSourceNode::new_inherited(context, track)?; - Ok(reflect_dom_object(Box::new(node), window)) + Ok(reflect_dom_object2(Box::new(node), window, proto)) } #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, context: &AudioContext, options: &MediaStreamTrackAudioSourceOptions, ) -> Fallible> { - MediaStreamTrackAudioSourceNode::new(window, context, &options.mediaStreamTrack) + MediaStreamTrackAudioSourceNode::new_with_proto(window, proto, context, &options.mediaStreamTrack) } } diff --git a/components/script/dom/messagechannel.rs b/components/script/dom/messagechannel.rs index 3075dac3088..f3df61924a5 100644 --- a/components/script/dom/messagechannel.rs +++ b/components/script/dom/messagechannel.rs @@ -3,11 +3,12 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use crate::dom::bindings::codegen::Bindings::MessageChannelBinding::MessageChannelMethods; -use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::globalscope::GlobalScope; use crate::dom::messageport::MessagePort; use dom_struct::dom_struct; +use js::rust::HandleObject; #[dom_struct] pub struct MessageChannel { @@ -19,12 +20,12 @@ pub struct MessageChannel { impl MessageChannel { /// #[allow(non_snake_case)] - pub fn Constructor(global: &GlobalScope) -> DomRoot { - MessageChannel::new(global) + pub fn Constructor(global: &GlobalScope, proto: Option) -> DomRoot { + MessageChannel::new(global, proto) } /// - pub fn new(incumbent: &GlobalScope) -> DomRoot { + fn new(incumbent: &GlobalScope, proto: Option) -> DomRoot { // Step 1 let port1 = MessagePort::new(&incumbent); @@ -41,9 +42,10 @@ impl MessageChannel { ); // Steps 4-6 - reflect_dom_object( + reflect_dom_object2( Box::new(MessageChannel::new_inherited(&*port1, &*port2)), incumbent, + proto, ) } diff --git a/components/script/dom/messageevent.rs b/components/script/dom/messageevent.rs index c00e2bc5dec..9c2428912f8 100644 --- a/components/script/dom/messageevent.rs +++ b/components/script/dom/messageevent.rs @@ -9,7 +9,7 @@ use crate::dom::bindings::codegen::Bindings::MessageEventBinding::MessageEventMe use crate::dom::bindings::codegen::UnionTypes::WindowProxyOrMessagePortOrServiceWorker; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::bindings::trace::RootedTraceableBox; @@ -24,7 +24,7 @@ use crate::script_runtime::JSContext; use dom_struct::dom_struct; use js::jsapi::Heap; use js::jsval::JSVal; -use js::rust::HandleValue; +use js::rust::{HandleObject, HandleValue}; use servo_atoms::Atom; #[unrooted_must_root_lint::must_root] @@ -91,8 +91,13 @@ impl MessageEvent { } pub fn new_uninitialized(global: &GlobalScope) -> DomRoot { + Self::new_uninitialized_with_proto(global, None) + } + + fn new_uninitialized_with_proto(global: &GlobalScope, proto: Option) -> DomRoot { MessageEvent::new_initialized( global, + proto, HandleValue::undefined(), DOMString::new(), None, @@ -101,8 +106,9 @@ impl MessageEvent { ) } - pub fn new_initialized( + fn new_initialized( global: &GlobalScope, + proto: Option, data: HandleValue, origin: DOMString, source: Option<&WindowProxyOrMessagePortOrServiceWorker>, @@ -115,7 +121,7 @@ impl MessageEvent { lastEventId, ports, )); - let ev = reflect_dom_object(ev, global); + let ev = reflect_dom_object2(ev, global, proto); ev.data.set(data.get()); ev @@ -132,7 +138,33 @@ impl MessageEvent { lastEventId: DOMString, ports: Vec>, ) -> DomRoot { - let ev = MessageEvent::new_initialized(global, data, origin, source, lastEventId, ports); + Self::new_with_proto( + global, + None, + type_, + bubbles, + cancelable, + data, + origin, + source, + lastEventId, + ports, + ) + } + + fn new_with_proto( + global: &GlobalScope, + proto: Option, + type_: Atom, + bubbles: bool, + cancelable: bool, + data: HandleValue, + origin: DOMString, + source: Option<&WindowProxyOrMessagePortOrServiceWorker>, + lastEventId: DOMString, + ports: Vec>, + ) -> DomRoot { + let ev = MessageEvent::new_initialized(global, proto, data, origin, source, lastEventId, ports); { let event = ev.upcast::(); event.init_event(type_, bubbles, cancelable); @@ -142,11 +174,13 @@ impl MessageEvent { pub fn Constructor( global: &GlobalScope, + proto: Option, type_: DOMString, init: RootedTraceableBox, ) -> Fallible> { - let ev = MessageEvent::new( + let ev = MessageEvent::new_with_proto( global, + proto, Atom::from(type_), init.parent.bubbles, init.parent.cancelable, diff --git a/components/script/dom/mouseevent.rs b/components/script/dom/mouseevent.rs index d5fbe6b15e8..97399e5ea07 100644 --- a/components/script/dom/mouseevent.rs +++ b/components/script/dom/mouseevent.rs @@ -8,7 +8,7 @@ use crate::dom::bindings::codegen::Bindings::MouseEventBinding::MouseEventMethod use crate::dom::bindings::codegen::Bindings::UIEventBinding::UIEventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; use crate::dom::bindings::root::{DomRoot, MutNullableDom}; use crate::dom::bindings::str::DOMString; use crate::dom::event::{Event, EventBubbles, EventCancelable}; @@ -18,6 +18,7 @@ use crate::dom::uievent::UIEvent; use crate::dom::window::Window; use dom_struct::dom_struct; use euclid::default::Point2D; +use js::rust::HandleObject; use servo_config::pref; use std::cell::Cell; use std::default::Default; @@ -71,7 +72,11 @@ impl MouseEvent { } pub fn new_uninitialized(window: &Window) -> DomRoot { - reflect_dom_object(Box::new(MouseEvent::new_inherited()), window) + Self::new_uninitialized_with_proto(window, None) + } + + fn new_uninitialized_with_proto(window: &Window, proto: Option) -> DomRoot { + reflect_dom_object2(Box::new(MouseEvent::new_inherited()), window, proto) } pub fn new( @@ -94,7 +99,51 @@ impl MouseEvent { related_target: Option<&EventTarget>, point_in_target: Option>, ) -> DomRoot { - let ev = MouseEvent::new_uninitialized(window); + Self::new_with_proto( + window, + None, + type_, + can_bubble, + cancelable, + view, + detail, + screen_x, + screen_y, + client_x, + client_y, + ctrl_key, + alt_key, + shift_key, + meta_key, + button, + buttons, + related_target, + point_in_target, + ) + } + + fn new_with_proto( + window: &Window, + proto: Option, + type_: DOMString, + can_bubble: EventBubbles, + cancelable: EventCancelable, + view: Option<&Window>, + detail: i32, + screen_x: i32, + screen_y: i32, + client_x: i32, + client_y: i32, + ctrl_key: bool, + alt_key: bool, + shift_key: bool, + meta_key: bool, + button: i16, + buttons: u16, + related_target: Option<&EventTarget>, + point_in_target: Option>, + ) -> DomRoot { + let ev = MouseEvent::new_uninitialized_with_proto(window, proto); ev.InitMouseEvent( type_, bool::from(can_bubble), @@ -123,13 +172,15 @@ impl MouseEvent { #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, type_: DOMString, init: &MouseEventBinding::MouseEventInit, ) -> Fallible> { let bubbles = EventBubbles::from(init.parent.parent.parent.bubbles); let cancelable = EventCancelable::from(init.parent.parent.parent.cancelable); - let event = MouseEvent::new( + let event = MouseEvent::new_with_proto( window, + proto, type_, bubbles, cancelable, diff --git a/components/script/dom/mutationobserver.rs b/components/script/dom/mutationobserver.rs index e4141af14a6..c822fd9a290 100644 --- a/components/script/dom/mutationobserver.rs +++ b/components/script/dom/mutationobserver.rs @@ -8,7 +8,7 @@ use crate::dom::bindings::codegen::Bindings::MutationObserverBinding::MutationCa use crate::dom::bindings::codegen::Bindings::MutationObserverBinding::MutationObserverBinding::MutationObserverMethods; use crate::dom::bindings::codegen::Bindings::MutationObserverBinding::MutationObserverInit; use crate::dom::bindings::error::{Error, Fallible}; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::mutationrecord::MutationRecord; @@ -18,6 +18,7 @@ use crate::microtask::Microtask; use crate::script_thread::ScriptThread; use dom_struct::dom_struct; use html5ever::{LocalName, Namespace}; +use js::rust::HandleObject; use std::rc::Rc; #[dom_struct] @@ -64,9 +65,9 @@ pub struct ObserverOptions { } impl MutationObserver { - fn new(global: &Window, callback: Rc) -> DomRoot { + fn new_with_proto(global: &Window, proto: Option, callback: Rc) -> DomRoot { let boxed_observer = Box::new(MutationObserver::new_inherited(callback)); - reflect_dom_object(boxed_observer, global) + reflect_dom_object2(boxed_observer, global, proto) } fn new_inherited(callback: Rc) -> MutationObserver { @@ -81,10 +82,11 @@ impl MutationObserver { #[allow(non_snake_case)] pub fn Constructor( global: &Window, + proto: Option, callback: Rc, ) -> Fallible> { global.set_exists_mut_observer(); - let observer = MutationObserver::new(global, callback); + let observer = MutationObserver::new_with_proto(global, proto, callback); ScriptThread::add_mutation_observer(&*observer); Ok(observer) } diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index a7186806785..4908fc65e9b 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -26,7 +26,7 @@ use crate::dom::bindings::error::{Error, ErrorResult, Fallible}; use crate::dom::bindings::inheritance::{Castable, CharacterDataTypeId, ElementTypeId}; use crate::dom::bindings::inheritance::{EventTargetTypeId, HTMLElementTypeId, NodeTypeId}; use crate::dom::bindings::inheritance::{SVGElementTypeId, SVGGraphicsElementTypeId, TextTypeId}; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, DomObjectWrap}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject, DomObjectWrap}; use crate::dom::bindings::root::{Dom, DomRoot, DomSlice, LayoutDom, MutNullableDom}; use crate::dom::bindings::str::{DOMString, USVString}; use crate::dom::bindings::xmlname::namespace_from_domstring; @@ -70,6 +70,7 @@ use dom_struct::dom_struct; use euclid::default::{Point2D, Rect, Size2D, Vector2D}; use html5ever::{Namespace, Prefix, QualName}; use js::jsapi::JSObject; +use js::rust::HandleObject; use libc::{self, c_void, uintptr_t}; use malloc_size_of::{MallocSizeOf, MallocSizeOfOps}; use msg::constellation_msg::{BrowsingContextId, PipelineId}; @@ -1753,11 +1754,18 @@ fn as_uintptr(t: &T) -> uintptr_t { impl Node { pub fn reflect_node(node: Box, document: &Document) -> DomRoot + where + N: DerivedFrom + DomObject + DomObjectWrap, + { + Self::reflect_node_with_proto(node, document, None) + } + + pub fn reflect_node_with_proto(node: Box, document: &Document, proto: Option) -> DomRoot where N: DerivedFrom + DomObject + DomObjectWrap, { let window = document.window(); - reflect_dom_object(node, window) + reflect_dom_object2(node, window, proto) } pub fn new_inherited(doc: &Document) -> Node { @@ -2290,6 +2298,7 @@ impl Node { &document, ElementCreator::ScriptCreated, CustomElementCreationMode::Asynchronous, + None, ); DomRoot::upcast::(element) }, diff --git a/components/script/dom/offlineaudiocompletionevent.rs b/components/script/dom/offlineaudiocompletionevent.rs index 5162f4e9671..ae77c5e96d3 100644 --- a/components/script/dom/offlineaudiocompletionevent.rs +++ b/components/script/dom/offlineaudiocompletionevent.rs @@ -8,12 +8,13 @@ use crate::dom::bindings::codegen::Bindings::OfflineAudioCompletionEventBinding: use crate::dom::bindings::codegen::Bindings::OfflineAudioCompletionEventBinding::OfflineAudioCompletionEventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::event::{Event, EventBubbles, EventCancelable}; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_atoms::Atom; #[dom_struct] @@ -36,9 +37,20 @@ impl OfflineAudioCompletionEvent { bubbles: EventBubbles, cancelable: EventCancelable, rendered_buffer: &AudioBuffer, + ) -> DomRoot { + Self::new_with_proto(window, None, type_, bubbles, cancelable, rendered_buffer) + } + + fn new_with_proto( + window: &Window, + proto: Option, + type_: Atom, + bubbles: EventBubbles, + cancelable: EventCancelable, + rendered_buffer: &AudioBuffer, ) -> DomRoot { let event = Box::new(OfflineAudioCompletionEvent::new_inherited(rendered_buffer)); - let ev = reflect_dom_object(event, window); + let ev = reflect_dom_object2(event, window, proto); { let event = ev.upcast::(); event.init_event(type_, bool::from(bubbles), bool::from(cancelable)); @@ -49,13 +61,15 @@ impl OfflineAudioCompletionEvent { #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, type_: DOMString, init: &OfflineAudioCompletionEventInit, ) -> Fallible> { let bubbles = EventBubbles::from(init.parent.bubbles); let cancelable = EventCancelable::from(init.parent.cancelable); - Ok(OfflineAudioCompletionEvent::new( + Ok(OfflineAudioCompletionEvent::new_with_proto( window, + proto, Atom::from(type_), bubbles, cancelable, diff --git a/components/script/dom/offlineaudiocontext.rs b/components/script/dom/offlineaudiocontext.rs index 798abe76f7d..243020f213e 100644 --- a/components/script/dom/offlineaudiocontext.rs +++ b/components/script/dom/offlineaudiocontext.rs @@ -13,7 +13,7 @@ use crate::dom::bindings::error::{Error, Fallible}; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::num::Finite; use crate::dom::bindings::refcounted::Trusted; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; use crate::dom::bindings::root::DomRoot; use crate::dom::event::{Event, EventBubbles, EventCancelable}; use crate::dom::offlineaudiocompletionevent::OfflineAudioCompletionEvent; @@ -22,6 +22,7 @@ use crate::dom::window::Window; use crate::realms::InRealm; use crate::task_source::TaskSource; use dom_struct::dom_struct; +use js::rust::HandleObject; use msg::constellation_msg::PipelineId; use servo_media::audio::context::OfflineAudioContextOptions as ServoMediaOfflineAudioContextOptions; use std::cell::Cell; @@ -70,6 +71,7 @@ impl OfflineAudioContext { #[allow(unrooted_must_root)] fn new( window: &Window, + proto: Option, channel_count: u32, length: u32, sample_rate: f32, @@ -85,15 +87,17 @@ impl OfflineAudioContext { let pipeline_id = window.pipeline_id(); let context = OfflineAudioContext::new_inherited(channel_count, length, sample_rate, pipeline_id); - Ok(reflect_dom_object(Box::new(context), window)) + Ok(reflect_dom_object2(Box::new(context), window, proto)) } pub fn Constructor( window: &Window, + proto: Option, options: &OfflineAudioContextOptions, ) -> Fallible> { OfflineAudioContext::new( window, + proto, options.numberOfChannels, options.length, *options.sampleRate, @@ -102,11 +106,12 @@ impl OfflineAudioContext { pub fn Constructor_( window: &Window, + proto: Option, number_of_channels: u32, length: u32, sample_rate: Finite, ) -> Fallible> { - OfflineAudioContext::new(window, number_of_channels, length, *sample_rate) + OfflineAudioContext::new(window, proto, number_of_channels, length, *sample_rate) } } diff --git a/components/script/dom/offscreencanvas.rs b/components/script/dom/offscreencanvas.rs index b381c245cfa..c607099e04c 100644 --- a/components/script/dom/offscreencanvas.rs +++ b/components/script/dom/offscreencanvas.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::OffscreenCanvasBinding::{ OffscreenCanvasMethods, OffscreenRenderingContext, }; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::reflector::DomObject; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; @@ -20,7 +20,7 @@ use canvas_traits::canvas::{CanvasMsg, FromScriptMsg}; use dom_struct::dom_struct; use euclid::default::Size2D; use ipc_channel::ipc::IpcSharedMemory; -use js::rust::HandleValue; +use js::rust::{HandleObject, HandleValue}; use profile_traits::ipc; use std::cell::Cell; @@ -56,25 +56,28 @@ impl OffscreenCanvas { } } - pub fn new( + fn new( global: &GlobalScope, + proto: Option, width: u64, height: u64, placeholder: Option<&HTMLCanvasElement>, ) -> DomRoot { - reflect_dom_object( + reflect_dom_object2( Box::new(OffscreenCanvas::new_inherited(width, height, placeholder)), global, + proto, ) } #[allow(non_snake_case)] pub fn Constructor( global: &GlobalScope, + proto: Option, width: u64, height: u64, ) -> Fallible> { - let offscreencanvas = OffscreenCanvas::new(global, width, height, None); + let offscreencanvas = OffscreenCanvas::new(global, proto, width, height, None); Ok(offscreencanvas) } diff --git a/components/script/dom/oscillatornode.rs b/components/script/dom/oscillatornode.rs index 948603ca6e2..febc8f95d01 100644 --- a/components/script/dom/oscillatornode.rs +++ b/components/script/dom/oscillatornode.rs @@ -14,10 +14,11 @@ use crate::dom::bindings::codegen::Bindings::OscillatorNodeBinding::{ OscillatorOptions, OscillatorType, }; use crate::dom::bindings::error::{Error, ErrorResult, Fallible}; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_media::audio::node::{AudioNodeInit, AudioNodeMessage}; use servo_media::audio::oscillator_node::OscillatorNodeMessage; use servo_media::audio::oscillator_node::OscillatorNodeOptions as ServoMediaOscillatorOptions; @@ -81,23 +82,33 @@ impl OscillatorNode { }) } - #[allow(unrooted_must_root)] pub fn new( window: &Window, context: &BaseAudioContext, options: &OscillatorOptions, + ) -> Fallible> { + Self::new_with_proto(window, None, context, options) + } + + #[allow(unrooted_must_root)] + fn new_with_proto( + window: &Window, + proto: Option, + context: &BaseAudioContext, + options: &OscillatorOptions, ) -> Fallible> { let node = OscillatorNode::new_inherited(window, context, options)?; - Ok(reflect_dom_object(Box::new(node), window)) + Ok(reflect_dom_object2(Box::new(node), window, proto)) } #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, context: &BaseAudioContext, options: &OscillatorOptions, ) -> Fallible> { - OscillatorNode::new(window, context, options) + OscillatorNode::new_with_proto(window, proto, context, options) } } diff --git a/components/script/dom/pagetransitionevent.rs b/components/script/dom/pagetransitionevent.rs index 5d11fb62540..8a9ec07978f 100644 --- a/components/script/dom/pagetransitionevent.rs +++ b/components/script/dom/pagetransitionevent.rs @@ -7,12 +7,13 @@ use crate::dom::bindings::codegen::Bindings::PageTransitionEventBinding; use crate::dom::bindings::codegen::Bindings::PageTransitionEventBinding::PageTransitionEventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_atoms::Atom; use std::cell::Cell; @@ -31,8 +32,8 @@ impl PageTransitionEvent { } } - pub fn new_uninitialized(window: &Window) -> DomRoot { - reflect_dom_object(Box::new(PageTransitionEvent::new_inherited()), window) + fn new_uninitialized(window: &Window, proto: Option) -> DomRoot { + reflect_dom_object2(Box::new(PageTransitionEvent::new_inherited()), window, proto) } pub fn new( @@ -42,7 +43,18 @@ impl PageTransitionEvent { cancelable: bool, persisted: bool, ) -> DomRoot { - let ev = PageTransitionEvent::new_uninitialized(window); + Self::new_with_proto(window, None, type_, bubbles, cancelable, persisted) + } + + fn new_with_proto( + window: &Window, + proto: Option, + type_: Atom, + bubbles: bool, + cancelable: bool, + persisted: bool, + ) -> DomRoot { + let ev = PageTransitionEvent::new_uninitialized(window, proto); ev.persisted.set(persisted); { let event = ev.upcast::(); @@ -54,11 +66,13 @@ impl PageTransitionEvent { #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, type_: DOMString, init: &PageTransitionEventBinding::PageTransitionEventInit, ) -> Fallible> { - Ok(PageTransitionEvent::new( + Ok(PageTransitionEvent::new_with_proto( window, + proto, Atom::from(type_), init.parent.bubbles, init.parent.cancelable, diff --git a/components/script/dom/pannernode.rs b/components/script/dom/pannernode.rs index 98b9226287b..22d411878d9 100644 --- a/components/script/dom/pannernode.rs +++ b/components/script/dom/pannernode.rs @@ -20,10 +20,11 @@ use crate::dom::bindings::codegen::Bindings::PannerNodeBinding::{ use crate::dom::bindings::error::{Error, Fallible}; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::num::Finite; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_media::audio::node::{AudioNodeInit, AudioNodeMessage}; use servo_media::audio::panner_node::PannerNodeMessage; use servo_media::audio::panner_node::{DistanceModel, PannerNodeOptions, PanningModel}; @@ -170,23 +171,33 @@ impl PannerNode { }) } - #[allow(unrooted_must_root)] pub fn new( window: &Window, context: &BaseAudioContext, options: &PannerOptions, + ) -> Fallible> { + Self::new_with_proto(window, None, context, options) + } + + #[allow(unrooted_must_root)] + fn new_with_proto( + window: &Window, + proto: Option, + context: &BaseAudioContext, + options: &PannerOptions, ) -> Fallible> { let node = PannerNode::new_inherited(window, context, options)?; - Ok(reflect_dom_object(Box::new(node), window)) + Ok(reflect_dom_object2(Box::new(node), window, proto)) } #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, context: &BaseAudioContext, options: &PannerOptions, ) -> Fallible> { - PannerNode::new(window, context, options) + PannerNode::new_with_proto(window, proto, context, options) } } diff --git a/components/script/dom/performanceobserver.rs b/components/script/dom/performanceobserver.rs index 8d689a35785..c3349dd3d87 100644 --- a/components/script/dom/performanceobserver.rs +++ b/components/script/dom/performanceobserver.rs @@ -9,7 +9,7 @@ use crate::dom::bindings::codegen::Bindings::PerformanceObserverBinding::Perform use crate::dom::bindings::codegen::Bindings::PerformanceObserverBinding::PerformanceObserverInit; use crate::dom::bindings::codegen::Bindings::PerformanceObserverBinding::PerformanceObserverMethods; use crate::dom::bindings::error::{Error, Fallible}; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::console::Console; @@ -20,6 +20,7 @@ use crate::dom::performanceobserverentrylist::PerformanceObserverEntryList; use crate::script_runtime::JSContext; use dom_struct::dom_struct; use js::jsval::JSVal; +use js::rust::HandleObject; use std::cell::Cell; use std::rc::Rc; @@ -63,22 +64,32 @@ impl PerformanceObserver { } } - #[allow(unrooted_must_root)] pub fn new( global: &GlobalScope, callback: Rc, entries: DOMPerformanceEntryList, + ) -> DomRoot { + Self::new_with_proto(global, None, callback, entries) + } + + #[allow(unrooted_must_root)] + fn new_with_proto( + global: &GlobalScope, + proto: Option, + callback: Rc, + entries: DOMPerformanceEntryList, ) -> DomRoot { let observer = PerformanceObserver::new_inherited(callback, DomRefCell::new(entries)); - reflect_dom_object(Box::new(observer), global) + reflect_dom_object2(Box::new(observer), global, proto) } #[allow(non_snake_case)] pub fn Constructor( global: &GlobalScope, + proto: Option, callback: Rc, ) -> Fallible> { - Ok(PerformanceObserver::new(global, callback, Vec::new())) + Ok(PerformanceObserver::new_with_proto(global, proto, callback, Vec::new())) } /// Buffer a new performance entry. diff --git a/components/script/dom/popstateevent.rs b/components/script/dom/popstateevent.rs index 851064df389..b6095389791 100644 --- a/components/script/dom/popstateevent.rs +++ b/components/script/dom/popstateevent.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::PopStateEventBinding; use crate::dom::bindings::codegen::Bindings::PopStateEventBinding::PopStateEventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::bindings::trace::RootedTraceableBox; @@ -18,7 +18,7 @@ use crate::script_runtime::JSContext; use dom_struct::dom_struct; use js::jsapi::Heap; use js::jsval::JSVal; -use js::rust::HandleValue; +use js::rust::{HandleObject, HandleValue}; use servo_atoms::Atom; // https://html.spec.whatwg.org/multipage/#the-popstateevent-interface @@ -37,18 +37,19 @@ impl PopStateEvent { } } - pub fn new_uninitialized(window: &Window) -> DomRoot { - reflect_dom_object(Box::new(PopStateEvent::new_inherited()), window) + fn new_uninitialized(window: &Window, proto: Option) -> DomRoot { + reflect_dom_object2(Box::new(PopStateEvent::new_inherited()), window, proto) } - pub fn new( + fn new( window: &Window, + proto: Option, type_: Atom, bubbles: bool, cancelable: bool, state: HandleValue, ) -> DomRoot { - let ev = PopStateEvent::new_uninitialized(window); + let ev = PopStateEvent::new_uninitialized(window, proto); ev.state.set(state.get()); { let event = ev.upcast::(); @@ -60,11 +61,13 @@ impl PopStateEvent { #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, type_: DOMString, init: RootedTraceableBox, ) -> Fallible> { Ok(PopStateEvent::new( window, + proto, Atom::from(type_), init.parent.bubbles, init.parent.cancelable, @@ -73,7 +76,7 @@ impl PopStateEvent { } pub fn dispatch_jsval(target: &EventTarget, window: &Window, state: HandleValue) { - let event = PopStateEvent::new(window, atom!("popstate"), false, false, state); + let event = PopStateEvent::new(window, None, atom!("popstate"), false, false, state); event.upcast::().fire(target); } } diff --git a/components/script/dom/progressevent.rs b/components/script/dom/progressevent.rs index 32e6917a15d..e70d3e1db07 100644 --- a/components/script/dom/progressevent.rs +++ b/components/script/dom/progressevent.rs @@ -7,12 +7,13 @@ use crate::dom::bindings::codegen::Bindings::ProgressEventBinding; use crate::dom::bindings::codegen::Bindings::ProgressEventBinding::ProgressEventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::event::{Event, EventBubbles, EventCancelable}; use crate::dom::globalscope::GlobalScope; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_atoms::Atom; #[dom_struct] @@ -32,6 +33,7 @@ impl ProgressEvent { total: total, } } + pub fn new( global: &GlobalScope, type_: Atom, @@ -41,13 +43,36 @@ impl ProgressEvent { loaded: u64, total: u64, ) -> DomRoot { - let ev = reflect_dom_object( + Self::new_with_proto( + global, + None, + type_, + can_bubble, + cancelable, + length_computable, + loaded, + total, + ) + } + + fn new_with_proto( + global: &GlobalScope, + proto: Option, + type_: Atom, + can_bubble: EventBubbles, + cancelable: EventCancelable, + length_computable: bool, + loaded: u64, + total: u64, + ) -> DomRoot { + let ev = reflect_dom_object2( Box::new(ProgressEvent::new_inherited( length_computable, loaded, total, )), global, + proto, ); { let event = ev.upcast::(); @@ -59,13 +84,15 @@ impl ProgressEvent { #[allow(non_snake_case)] pub fn Constructor( global: &GlobalScope, + proto: Option, type_: DOMString, init: &ProgressEventBinding::ProgressEventInit, ) -> Fallible> { let bubbles = EventBubbles::from(init.parent.bubbles); let cancelable = EventCancelable::from(init.parent.cancelable); - let ev = ProgressEvent::new( + let ev = ProgressEvent::new_with_proto( global, + proto, Atom::from(type_), bubbles, cancelable, diff --git a/components/script/dom/promiserejectionevent.rs b/components/script/dom/promiserejectionevent.rs index 92d67725ca0..c136cf8d46a 100644 --- a/components/script/dom/promiserejectionevent.rs +++ b/components/script/dom/promiserejectionevent.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::PromiseRejectionEventBinding; use crate::dom::bindings::codegen::Bindings::PromiseRejectionEventBinding::PromiseRejectionEventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::bindings::trace::RootedTraceableBox; @@ -18,7 +18,7 @@ use crate::script_runtime::JSContext; use dom_struct::dom_struct; use js::jsapi::Heap; use js::jsval::JSVal; -use js::rust::HandleValue; +use js::rust::{HandleObject, HandleValue}; use servo_atoms::Atom; use std::rc::Rc; @@ -41,7 +41,6 @@ impl PromiseRejectionEvent { } } - #[allow(unrooted_must_root)] pub fn new( global: &GlobalScope, type_: Atom, @@ -50,9 +49,23 @@ impl PromiseRejectionEvent { promise: Rc, reason: HandleValue, ) -> DomRoot { - let ev = reflect_dom_object( + Self::new_with_proto(global, None, type_, bubbles, cancelable, promise, reason) + } + + #[allow(unrooted_must_root)] + fn new_with_proto( + global: &GlobalScope, + proto: Option, + type_: Atom, + bubbles: EventBubbles, + cancelable: EventCancelable, + promise: Rc, + reason: HandleValue, + ) -> DomRoot { + let ev = reflect_dom_object2( Box::new(PromiseRejectionEvent::new_inherited(promise)), global, + proto, ); { @@ -67,6 +80,7 @@ impl PromiseRejectionEvent { #[allow(unrooted_must_root, non_snake_case)] pub fn Constructor( global: &GlobalScope, + proto: Option, type_: DOMString, init: RootedTraceableBox, ) -> Fallible> { @@ -75,8 +89,9 @@ impl PromiseRejectionEvent { let bubbles = EventBubbles::from(init.parent.bubbles); let cancelable = EventCancelable::from(init.parent.cancelable); - let event = PromiseRejectionEvent::new( + let event = PromiseRejectionEvent::new_with_proto( global, + proto, Atom::from(type_), bubbles, cancelable, diff --git a/components/script/dom/range.rs b/components/script/dom/range.rs index b48e186bc3f..e5d731702ad 100644 --- a/components/script/dom/range.rs +++ b/components/script/dom/range.rs @@ -14,7 +14,7 @@ use crate::dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; use crate::dom::bindings::error::{Error, ErrorResult, Fallible}; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::inheritance::{CharacterDataTypeId, NodeTypeId}; -use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; use crate::dom::bindings::root::{Dom, DomRoot, MutDom}; use crate::dom::bindings::str::DOMString; use crate::dom::bindings::trace::JSTraceable; @@ -30,6 +30,7 @@ use crate::dom::text::Text; use crate::dom::window::Window; use dom_struct::dom_struct; use js::jsapi::JSTracer; +use js::rust::HandleObject; use malloc_size_of::{MallocSizeOf, MallocSizeOfOps}; use std::cell::{Cell, UnsafeCell}; use std::cmp::{Ord, Ordering, PartialEq, PartialOrd}; @@ -66,9 +67,9 @@ impl Range { } } - pub fn new_with_doc(document: &Document) -> DomRoot { + pub fn new_with_doc(document: &Document, proto: Option) -> DomRoot { let root = document.upcast(); - Range::new(document, root, 0, root, 0) + Range::new_with_proto(document, proto, root, 0, root, 0) } pub fn new( @@ -78,7 +79,25 @@ impl Range { end_container: &Node, end_offset: u32, ) -> DomRoot { - let range = reflect_dom_object( + Self::new_with_proto( + document, + None, + start_container, + start_offset, + end_container, + end_offset, + ) + } + + fn new_with_proto( + document: &Document, + proto: Option, + start_container: &Node, + start_offset: u32, + end_container: &Node, + end_offset: u32, + ) -> DomRoot { + let range = reflect_dom_object2( Box::new(Range::new_inherited( start_container, start_offset, @@ -86,6 +105,7 @@ impl Range { end_offset, )), document.window(), + proto, ); start_container.ranges().push(WeakRef::new(&range)); if start_container != end_container { @@ -96,9 +116,9 @@ impl Range { // https://dom.spec.whatwg.org/#dom-range #[allow(non_snake_case)] - pub fn Constructor(window: &Window) -> Fallible> { + pub fn Constructor(window: &Window, proto: Option) -> Fallible> { let document = window.Document(); - Ok(Range::new_with_doc(&document)) + Ok(Range::new_with_doc(&document, proto)) } // https://dom.spec.whatwg.org/#contained diff --git a/components/script/dom/request.rs b/components/script/dom/request.rs index 7bd89875b6f..1ddf1c7742a 100644 --- a/components/script/dom/request.rs +++ b/components/script/dom/request.rs @@ -16,7 +16,7 @@ use crate::dom::bindings::codegen::Bindings::RequestBinding::RequestMethods; use crate::dom::bindings::codegen::Bindings::RequestBinding::RequestMode; use crate::dom::bindings::codegen::Bindings::RequestBinding::RequestRedirect; use crate::dom::bindings::error::{Error, Fallible}; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject, Reflector}; use crate::dom::bindings::root::{DomRoot, MutNullableDom}; use crate::dom::bindings::str::{ByteString, DOMString, USVString}; use crate::dom::bindings::trace::RootedTraceableBox; @@ -30,6 +30,7 @@ use http::header::{HeaderName, HeaderValue}; use http::method::InvalidMethod; use http::Method as HttpMethod; use js::jsapi::JSObject; +use js::rust::HandleObject; use net_traits::request::CacheMode as NetTraitsRequestCache; use net_traits::request::CredentialsMode as NetTraitsRequestCredentials; use net_traits::request::Destination as NetTraitsRequestDestination; @@ -62,14 +63,15 @@ impl Request { } } - pub fn new(global: &GlobalScope, url: ServoUrl) -> DomRoot { - reflect_dom_object(Box::new(Request::new_inherited(global, url)), global) + fn new(global: &GlobalScope, proto: Option, url: ServoUrl) -> DomRoot { + reflect_dom_object2(Box::new(Request::new_inherited(global, url)), global, proto) } // https://fetch.spec.whatwg.org/#dom-request #[allow(non_snake_case)] pub fn Constructor( global: &GlobalScope, + proto: Option, mut input: RequestInfo, init: RootedTraceableBox, ) -> Fallible> { @@ -289,7 +291,7 @@ impl Request { // Step 27 TODO: "If init["priority"] exists..." // Step 28 - let r = Request::from_net_request(global, request); + let r = Request::from_net_request(global, proto, request); // Step 29 TODO: "Set this's signal to new AbortSignal object..." // Step 30 TODO: "If signal is not null..." @@ -438,8 +440,8 @@ impl Request { } impl Request { - fn from_net_request(global: &GlobalScope, net_request: NetTraitsRequest) -> DomRoot { - let r = Request::new(global, net_request.current_url()); + fn from_net_request(global: &GlobalScope, proto: Option, net_request: NetTraitsRequest) -> DomRoot { + let r = Request::new(global, proto, net_request.current_url()); *r.request.borrow_mut() = net_request; r } @@ -448,7 +450,7 @@ impl Request { let req = r.request.borrow(); let url = req.url(); let headers_guard = r.Headers().get_guard(); - let r_clone = Request::new(&r.global(), url); + let r_clone = Request::new(&r.global(), None, url); r_clone.request.borrow_mut().pipeline_id = req.pipeline_id; { let mut borrowed_r_request = r_clone.request.borrow_mut(); diff --git a/components/script/dom/response.rs b/components/script/dom/response.rs index d7e4486afd5..b42f3cc014f 100644 --- a/components/script/dom/response.rs +++ b/components/script/dom/response.rs @@ -12,7 +12,7 @@ use crate::dom::bindings::codegen::Bindings::ResponseBinding::{ }; use crate::dom::bindings::codegen::Bindings::XMLHttpRequestBinding::BodyInit; use crate::dom::bindings::error::{Error, Fallible}; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject, Reflector}; use crate::dom::bindings::root::{DomRoot, MutNullableDom}; use crate::dom::bindings::str::{ByteString, USVString}; use crate::dom::globalscope::GlobalScope; @@ -27,6 +27,7 @@ use http::header::HeaderMap as HyperHeaders; use http::StatusCode; use hyper_serde::Serde; use js::jsapi::JSObject; +use js::rust::HandleObject; use servo_url::ServoUrl; use std::ptr::NonNull; use std::rc::Rc; @@ -74,12 +75,17 @@ impl Response { // https://fetch.spec.whatwg.org/#dom-response pub fn new(global: &GlobalScope) -> DomRoot { - reflect_dom_object(Box::new(Response::new_inherited(global)), global) + Self::new_with_proto(global, None) + } + + fn new_with_proto(global: &GlobalScope, proto: Option) -> DomRoot { + reflect_dom_object2(Box::new(Response::new_inherited(global)), global, proto) } // https://fetch.spec.whatwg.org/#initialize-a-response pub fn Constructor( global: &GlobalScope, + proto: Option, body: Option, init: &ResponseBinding::ResponseInit, ) -> Fallible> { @@ -99,7 +105,7 @@ impl Response { )); } - let r = Response::new(global); + let r = Response::new_with_proto(global, proto); // Step 3 *r.status.borrow_mut() = Some(StatusCode::from_u16(init.status).unwrap()); diff --git a/components/script/dom/rtcdatachannelevent.rs b/components/script/dom/rtcdatachannelevent.rs index 95935f68107..c8e5ab8c457 100644 --- a/components/script/dom/rtcdatachannelevent.rs +++ b/components/script/dom/rtcdatachannelevent.rs @@ -6,7 +6,7 @@ use crate::dom::bindings::codegen::Bindings::EventBinding::EventMethods; use crate::dom::bindings::codegen::Bindings::RTCDataChannelEventBinding::RTCDataChannelEventInit; use crate::dom::bindings::codegen::Bindings::RTCDataChannelEventBinding::RTCDataChannelEventMethods; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; @@ -14,6 +14,7 @@ use crate::dom::globalscope::GlobalScope; use crate::dom::rtcdatachannel::RTCDataChannel; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_atoms::Atom; #[dom_struct] @@ -37,9 +38,21 @@ impl RTCDataChannelEvent { cancelable: bool, channel: &RTCDataChannel, ) -> DomRoot { - let event = reflect_dom_object( + Self::new_with_proto(global, None, type_, bubbles, cancelable, channel) + } + + fn new_with_proto( + global: &GlobalScope, + proto: Option, + type_: Atom, + bubbles: bool, + cancelable: bool, + channel: &RTCDataChannel, + ) -> DomRoot { + let event = reflect_dom_object2( Box::new(RTCDataChannelEvent::new_inherited(&channel)), global, + proto, ); { let event = event.upcast::(); @@ -51,11 +64,13 @@ impl RTCDataChannelEvent { #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, type_: DOMString, init: &RTCDataChannelEventInit, ) -> DomRoot { - RTCDataChannelEvent::new( + RTCDataChannelEvent::new_with_proto( &window.global(), + proto, Atom::from(type_), init.parent.bubbles, init.parent.cancelable, diff --git a/components/script/dom/rtcerror.rs b/components/script/dom/rtcerror.rs index 615cd267c9f..de9a6e8645b 100644 --- a/components/script/dom/rtcerror.rs +++ b/components/script/dom/rtcerror.rs @@ -5,13 +5,14 @@ use crate::dom::bindings::codegen::Bindings::RTCErrorBinding::RTCErrorDetailType; use crate::dom::bindings::codegen::Bindings::RTCErrorBinding::RTCErrorInit; use crate::dom::bindings::codegen::Bindings::RTCErrorBinding::RTCErrorMethods; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::domexception::{DOMErrorName, DOMException}; use crate::dom::globalscope::GlobalScope; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; #[dom_struct] pub struct RTCError { @@ -41,19 +42,25 @@ impl RTCError { } pub fn new(global: &GlobalScope, init: &RTCErrorInit, message: DOMString) -> DomRoot { - reflect_dom_object( + Self::new_with_proto(global, None, init, message) + } + + fn new_with_proto(global: &GlobalScope, proto: Option, init: &RTCErrorInit, message: DOMString) -> DomRoot { + reflect_dom_object2( Box::new(RTCError::new_inherited(global, init, message)), global, + proto, ) } #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, init: &RTCErrorInit, message: DOMString, ) -> DomRoot { - RTCError::new(&window.global(), init, message) + RTCError::new_with_proto(&window.global(), proto, init, message) } } diff --git a/components/script/dom/rtcerrorevent.rs b/components/script/dom/rtcerrorevent.rs index 2d40844423a..48f4224df95 100644 --- a/components/script/dom/rtcerrorevent.rs +++ b/components/script/dom/rtcerrorevent.rs @@ -6,7 +6,7 @@ use crate::dom::bindings::codegen::Bindings::EventBinding::EventMethods; use crate::dom::bindings::codegen::Bindings::RTCErrorEventBinding::RTCErrorEventInit; use crate::dom::bindings::codegen::Bindings::RTCErrorEventBinding::RTCErrorEventMethods; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; @@ -14,6 +14,7 @@ use crate::dom::globalscope::GlobalScope; use crate::dom::rtcerror::RTCError; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_atoms::Atom; #[dom_struct] @@ -37,7 +38,18 @@ impl RTCErrorEvent { cancelable: bool, error: &RTCError, ) -> DomRoot { - let event = reflect_dom_object(Box::new(RTCErrorEvent::new_inherited(&error)), global); + Self::new_with_proto(global, None, type_, bubbles, cancelable, error) + } + + fn new_with_proto( + global: &GlobalScope, + proto: Option, + type_: Atom, + bubbles: bool, + cancelable: bool, + error: &RTCError, + ) -> DomRoot { + let event = reflect_dom_object2(Box::new(RTCErrorEvent::new_inherited(&error)), global, proto); { let event = event.upcast::(); event.init_event(type_, bubbles, cancelable); @@ -48,11 +60,13 @@ impl RTCErrorEvent { #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, type_: DOMString, init: &RTCErrorEventInit, ) -> DomRoot { - RTCErrorEvent::new( + RTCErrorEvent::new_with_proto( &window.global(), + proto, Atom::from(type_), init.parent.bubbles, init.parent.cancelable, diff --git a/components/script/dom/rtcicecandidate.rs b/components/script/dom/rtcicecandidate.rs index 371f3d7693a..fc60867d5e2 100644 --- a/components/script/dom/rtcicecandidate.rs +++ b/components/script/dom/rtcicecandidate.rs @@ -5,13 +5,14 @@ use crate::dom::bindings::codegen::Bindings::RTCIceCandidateBinding::RTCIceCandidateInit; use crate::dom::bindings::codegen::Bindings::RTCIceCandidateBinding::RTCIceCandidateMethods; use crate::dom::bindings::error::{Error, Fallible}; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::reflector::{DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::globalscope::GlobalScope; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; #[dom_struct] pub struct RTCIceCandidate { @@ -45,7 +46,18 @@ impl RTCIceCandidate { sdp_m_line_index: Option, username_fragment: Option, ) -> DomRoot { - reflect_dom_object( + Self::new_with_proto(global, None, candidate, sdp_m_id, sdp_m_line_index, username_fragment) + } + + fn new_with_proto( + global: &GlobalScope, + proto: Option, + candidate: DOMString, + sdp_m_id: Option, + sdp_m_line_index: Option, + username_fragment: Option, + ) -> DomRoot { + reflect_dom_object2( Box::new(RTCIceCandidate::new_inherited( candidate, sdp_m_id, @@ -53,12 +65,14 @@ impl RTCIceCandidate { username_fragment, )), global, + proto, ) } #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, config: &RTCIceCandidateInit, ) -> Fallible> { if config.sdpMid.is_none() && config.sdpMLineIndex.is_none() { @@ -66,8 +80,9 @@ impl RTCIceCandidate { "one of sdpMid and sdpMLineIndex must be set" ))); } - Ok(RTCIceCandidate::new( + Ok(RTCIceCandidate::new_with_proto( &window.global(), + proto, config.candidate.clone(), config.sdpMid.clone(), config.sdpMLineIndex, diff --git a/components/script/dom/rtcpeerconnection.rs b/components/script/dom/rtcpeerconnection.rs index 2342dd6730e..aad751dbfe2 100644 --- a/components/script/dom/rtcpeerconnection.rs +++ b/components/script/dom/rtcpeerconnection.rs @@ -18,7 +18,7 @@ use crate::dom::bindings::error::Error; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::refcounted::{Trusted, TrustedPromise}; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::reflector::DomObject; use crate::dom::bindings::root::{Dom, DomRoot, MutNullableDom}; use crate::dom::bindings::str::USVString; @@ -41,7 +41,7 @@ use crate::task::TaskCanceller; use crate::task_source::networking::NetworkingTaskSource; use crate::task_source::TaskSource; use dom_struct::dom_struct; - +use js::rust::HandleObject; use servo_media::streams::registry::MediaStreamId; use servo_media::streams::MediaStreamType; use servo_media::webrtc::{ @@ -193,8 +193,8 @@ impl RTCPeerConnection { } } - pub fn new(global: &GlobalScope, config: &RTCConfiguration) -> DomRoot { - let this = reflect_dom_object(Box::new(RTCPeerConnection::new_inherited()), global); + fn new(global: &GlobalScope, proto: Option, config: &RTCConfiguration) -> DomRoot { + let this = reflect_dom_object2(Box::new(RTCPeerConnection::new_inherited()), global, proto); let signaller = this.make_signaller(); *this.controller.borrow_mut() = Some(ServoMedia::get().unwrap().create_webrtc(signaller)); if let Some(ref servers) = config.iceServers { @@ -223,9 +223,10 @@ impl RTCPeerConnection { #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, config: &RTCConfiguration, ) -> Fallible> { - Ok(RTCPeerConnection::new(&window.global(), config)) + Ok(RTCPeerConnection::new(&window.global(), proto, config)) } pub fn get_webrtc_controller(&self) -> &DomRefCell> { @@ -638,7 +639,7 @@ impl RTCPeerConnectionMethods for RTCPeerConnection { // dance between pending/current local/remote descriptions let this = this.root(); let desc = desc.into(); - let desc = RTCSessionDescription::Constructor(&this.global().as_window(), &desc).unwrap(); + let desc = RTCSessionDescription::Constructor(&this.global().as_window(), None, &desc).unwrap(); this.local_description.set(Some(&desc)); trusted_promise.root().resolve_native(&()) }), @@ -671,7 +672,7 @@ impl RTCPeerConnectionMethods for RTCPeerConnection { // dance between pending/current local/remote descriptions let this = this.root(); let desc = desc.into(); - let desc = RTCSessionDescription::Constructor(&this.global().as_window(), &desc).unwrap(); + let desc = RTCSessionDescription::Constructor(&this.global().as_window(), None, &desc).unwrap(); this.remote_description.set(Some(&desc)); trusted_promise.root().resolve_native(&()) }), diff --git a/components/script/dom/rtcpeerconnectioniceevent.rs b/components/script/dom/rtcpeerconnectioniceevent.rs index e88222e34ad..8fbe1564960 100644 --- a/components/script/dom/rtcpeerconnectioniceevent.rs +++ b/components/script/dom/rtcpeerconnectioniceevent.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::RTCPeerConnectionIceEventBinding::R use crate::dom::bindings::codegen::Bindings::RTCPeerConnectionIceEventBinding::RTCPeerConnectionIceEventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::reflector::DomObject; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; @@ -16,6 +16,7 @@ use crate::dom::globalscope::GlobalScope; use crate::dom::rtcicecandidate::RTCIceCandidate; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_atoms::Atom; #[dom_struct] @@ -44,9 +45,21 @@ impl RTCPeerConnectionIceEvent { url: Option, trusted: bool, ) -> DomRoot { - let e = reflect_dom_object( + Self::new_with_proto(global, None, ty, candidate, url, trusted) + } + + fn new_with_proto( + global: &GlobalScope, + proto: Option, + ty: Atom, + candidate: Option<&RTCIceCandidate>, + url: Option, + trusted: bool, + ) -> DomRoot { + let e = reflect_dom_object2( Box::new(RTCPeerConnectionIceEvent::new_inherited(candidate, url)), global, + proto, ); let evt = e.upcast::(); evt.init_event(ty, false, false); // XXXManishearth bubbles/cancelable? @@ -57,11 +70,13 @@ impl RTCPeerConnectionIceEvent { #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, ty: DOMString, init: &RTCPeerConnectionIceEventInit, ) -> Fallible> { - Ok(RTCPeerConnectionIceEvent::new( + Ok(RTCPeerConnectionIceEvent::new_with_proto( &window.global(), + proto, ty.into(), init.candidate .as_ref() diff --git a/components/script/dom/rtcsessiondescription.rs b/components/script/dom/rtcsessiondescription.rs index 2ff7157e5d4..83a5e9d998c 100644 --- a/components/script/dom/rtcsessiondescription.rs +++ b/components/script/dom/rtcsessiondescription.rs @@ -7,13 +7,14 @@ use crate::dom::bindings::codegen::Bindings::RTCSessionDescriptionBinding::{ RTCSdpType, RTCSessionDescriptionInit, }; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::reflector::{DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::globalscope::GlobalScope; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; #[dom_struct] pub struct RTCSessionDescription { @@ -31,24 +32,28 @@ impl RTCSessionDescription { } } - pub fn new( + fn new( global: &GlobalScope, + proto: Option, ty: RTCSdpType, sdp: DOMString, ) -> DomRoot { - reflect_dom_object( + reflect_dom_object2( Box::new(RTCSessionDescription::new_inherited(ty, sdp)), global, + proto, ) } #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, config: &RTCSessionDescriptionInit, ) -> Fallible> { Ok(RTCSessionDescription::new( &window.global(), + proto, config.type_, config.sdp.clone(), )) diff --git a/components/script/dom/rtctrackevent.rs b/components/script/dom/rtctrackevent.rs index 0cf8605170b..77dae80a4ca 100644 --- a/components/script/dom/rtctrackevent.rs +++ b/components/script/dom/rtctrackevent.rs @@ -6,7 +6,7 @@ use crate::dom::bindings::codegen::Bindings::EventBinding::EventBinding::EventMe use crate::dom::bindings::codegen::Bindings::RTCTrackEventBinding::{self, RTCTrackEventMethods}; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; @@ -14,6 +14,7 @@ use crate::dom::globalscope::GlobalScope; use crate::dom::mediastreamtrack::MediaStreamTrack; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_atoms::Atom; #[dom_struct] @@ -38,7 +39,18 @@ impl RTCTrackEvent { cancelable: bool, track: &MediaStreamTrack, ) -> DomRoot { - let trackevent = reflect_dom_object(Box::new(RTCTrackEvent::new_inherited(&track)), global); + Self::new_with_proto(global, None, type_, bubbles, cancelable, track) + } + + fn new_with_proto( + global: &GlobalScope, + proto: Option, + type_: Atom, + bubbles: bool, + cancelable: bool, + track: &MediaStreamTrack, + ) -> DomRoot { + let trackevent = reflect_dom_object2(Box::new(RTCTrackEvent::new_inherited(&track)), global, proto); { let event = trackevent.upcast::(); event.init_event(type_, bubbles, cancelable); @@ -49,11 +61,13 @@ impl RTCTrackEvent { #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, type_: DOMString, init: &RTCTrackEventBinding::RTCTrackEventInit, ) -> Fallible> { - Ok(RTCTrackEvent::new( + Ok(RTCTrackEvent::new_with_proto( &window.global(), + proto, Atom::from(type_), init.parent.bubbles, init.parent.cancelable, diff --git a/components/script/dom/servoparser/async_html.rs b/components/script/dom/servoparser/async_html.rs index 538007d9057..4a2e34316eb 100644 --- a/components/script/dom/servoparser/async_html.rs +++ b/components/script/dom/servoparser/async_html.rs @@ -420,7 +420,7 @@ impl Tokenizer { self.insert_node(node, Dom::from_ref(element.upcast())); }, ParseOperation::CreateComment { text, node } => { - let comment = Comment::new(DOMString::from(text), document); + let comment = Comment::new(DOMString::from(text), document, None); self.insert_node(node, Dom::from_ref(&comment.upcast())); }, ParseOperation::AppendBeforeSibling { sibling, node } => { diff --git a/components/script/dom/servoparser/mod.rs b/components/script/dom/servoparser/mod.rs index c4b52a038ea..6bfed4d8dea 100644 --- a/components/script/dom/servoparser/mod.rs +++ b/components/script/dom/servoparser/mod.rs @@ -857,7 +857,7 @@ impl FetchResponseListener for ParserContext { let doc = &parser.document; let doc_body = DomRoot::upcast::(doc.GetBody().unwrap()); - let img = HTMLImageElement::new(local_name!("img"), None, doc); + let img = HTMLImageElement::new(local_name!("img"), None, doc, None); img.SetSrc(USVString(self.url.to_string())); doc_body .AppendChild(&DomRoot::upcast::(img)) @@ -1119,7 +1119,7 @@ impl TreeSink for Sink { } fn create_comment(&mut self, text: StrTendril) -> Dom { - let comment = Comment::new(DOMString::from(String::from(text)), &*self.document); + let comment = Comment::new(DOMString::from(String::from(text)), &*self.document, None); Dom::from_ref(comment.upcast()) } @@ -1329,7 +1329,7 @@ fn create_element_for_token( CustomElementCreationMode::Asynchronous }; - let element = Element::create(name, is, document, creator, creation_mode); + let element = Element::create(name, is, document, creator, creation_mode, None); // https://html.spec.whatwg.org/multipage#the-input-element:value-sanitization-algorithm-3 // says to invoke sanitization "when an input element is first created"; diff --git a/components/script/dom/stereopannernode.rs b/components/script/dom/stereopannernode.rs index cc71c69593b..318308f6abf 100644 --- a/components/script/dom/stereopannernode.rs +++ b/components/script/dom/stereopannernode.rs @@ -12,10 +12,11 @@ use crate::dom::bindings::codegen::Bindings::AudioParamBinding::AutomationRate; use crate::dom::bindings::codegen::Bindings::StereoPannerNodeBinding::StereoPannerNodeMethods; use crate::dom::bindings::codegen::Bindings::StereoPannerNodeBinding::StereoPannerOptions; use crate::dom::bindings::error::{Error, Fallible}; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_media::audio::node::AudioNodeInit; use servo_media::audio::param::ParamType; use servo_media::audio::stereo_panner::StereoPannerOptions as ServoMediaStereoPannerOptions; @@ -69,23 +70,33 @@ impl StereoPannerNode { }) } - #[allow(unrooted_must_root)] pub fn new( window: &Window, context: &BaseAudioContext, options: &StereoPannerOptions, + ) -> Fallible> { + Self::new_with_proto(window, None, context, options) + } + + #[allow(unrooted_must_root)] + fn new_with_proto( + window: &Window, + proto: Option, + context: &BaseAudioContext, + options: &StereoPannerOptions, ) -> Fallible> { let node = StereoPannerNode::new_inherited(window, context, options)?; - Ok(reflect_dom_object(Box::new(node), window)) + Ok(reflect_dom_object2(Box::new(node), window, proto)) } #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, context: &BaseAudioContext, options: &StereoPannerOptions, ) -> Fallible> { - StereoPannerNode::new(window, context, options) + StereoPannerNode::new_with_proto(window, proto, context, options) } } diff --git a/components/script/dom/storageevent.rs b/components/script/dom/storageevent.rs index a50c1267585..b1da211f1c1 100644 --- a/components/script/dom/storageevent.rs +++ b/components/script/dom/storageevent.rs @@ -8,13 +8,14 @@ use crate::dom::bindings::codegen::Bindings::StorageEventBinding; use crate::dom::bindings::codegen::Bindings::StorageEventBinding::StorageEventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::{DomRoot, MutNullableDom}; use crate::dom::bindings::str::{DOMString, USVString}; use crate::dom::event::{Event, EventBubbles, EventCancelable}; use crate::dom::storage::Storage; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_atoms::Atom; #[dom_struct] @@ -47,9 +48,14 @@ impl StorageEvent { } pub fn new_uninitialized(window: &Window, url: DOMString) -> DomRoot { - reflect_dom_object( + Self::new_uninitialized_with_proto(window, None, url) + } + + fn new_uninitialized_with_proto(window: &Window, proto: Option, url: DOMString) -> DomRoot { + reflect_dom_object2( Box::new(StorageEvent::new_inherited(None, None, None, url, None)), window, + proto, ) } @@ -64,7 +70,33 @@ impl StorageEvent { url: DOMString, storageArea: Option<&Storage>, ) -> DomRoot { - let ev = reflect_dom_object( + Self::new_with_proto( + global, + None, + type_, + bubbles, + cancelable, + key, + oldValue, + newValue, + url, + storageArea, + ) + } + + fn new_with_proto( + global: &Window, + proto: Option, + type_: Atom, + bubbles: EventBubbles, + cancelable: EventCancelable, + key: Option, + oldValue: Option, + newValue: Option, + url: DOMString, + storageArea: Option<&Storage>, + ) -> DomRoot { + let ev = reflect_dom_object2( Box::new(StorageEvent::new_inherited( key, oldValue, @@ -73,6 +105,7 @@ impl StorageEvent { storageArea, )), global, + proto, ); { let event = ev.upcast::(); @@ -83,6 +116,7 @@ impl StorageEvent { pub fn Constructor( global: &Window, + proto: Option, type_: DOMString, init: &StorageEventBinding::StorageEventInit, ) -> Fallible> { @@ -93,8 +127,9 @@ impl StorageEvent { let storageArea = init.storageArea.as_deref(); let bubbles = EventBubbles::from(init.parent.bubbles); let cancelable = EventCancelable::from(init.parent.cancelable); - let event = StorageEvent::new( + let event = StorageEvent::new_with_proto( global, + proto, Atom::from(type_), bubbles, cancelable, diff --git a/components/script/dom/submitevent.rs b/components/script/dom/submitevent.rs index c9965b762b1..cf62813a4dc 100644 --- a/components/script/dom/submitevent.rs +++ b/components/script/dom/submitevent.rs @@ -6,7 +6,7 @@ use crate::dom::bindings::codegen::Bindings::EventBinding::EventMethods; use crate::dom::bindings::codegen::Bindings::SubmitEventBinding; use crate::dom::bindings::codegen::Bindings::SubmitEventBinding::SubmitEventMethods; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; @@ -14,6 +14,7 @@ use crate::dom::globalscope::GlobalScope; use crate::dom::htmlelement::HTMLElement; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_atoms::Atom; #[dom_struct] @@ -38,7 +39,18 @@ impl SubmitEvent { cancelable: bool, submitter: Option>, ) -> DomRoot { - let ev = reflect_dom_object(Box::new(SubmitEvent::new_inherited(submitter)), global); + Self::new_with_proto(global, None, type_, bubbles, cancelable, submitter) + } + + fn new_with_proto( + global: &GlobalScope, + proto: Option, + type_: Atom, + bubbles: bool, + cancelable: bool, + submitter: Option>, + ) -> DomRoot { + let ev = reflect_dom_object2(Box::new(SubmitEvent::new_inherited(submitter)), global, proto); { let event = ev.upcast::(); event.init_event(type_, bubbles, cancelable); @@ -49,11 +61,13 @@ impl SubmitEvent { #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, type_: DOMString, init: &SubmitEventBinding::SubmitEventInit, ) -> DomRoot { - SubmitEvent::new( + SubmitEvent::new_with_proto( &window.global(), + proto, Atom::from(type_), init.parent.bubbles, init.parent.cancelable, diff --git a/components/script/dom/svgelement.rs b/components/script/dom/svgelement.rs index 92c56c95c5d..3f88ab608c0 100644 --- a/components/script/dom/svgelement.rs +++ b/components/script/dom/svgelement.rs @@ -13,6 +13,7 @@ use crate::dom::node::Node; use crate::dom::virtualmethods::VirtualMethods; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; use style::element_state::ElementState; #[dom_struct] @@ -46,10 +47,12 @@ impl SVGElement { tag_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(SVGElement::new_inherited(tag_name, prefix, document)), document, + proto, ) } } diff --git a/components/script/dom/svgsvgelement.rs b/components/script/dom/svgsvgelement.rs index 583bdb0eb44..df3d1e5cd3a 100644 --- a/components/script/dom/svgsvgelement.rs +++ b/components/script/dom/svgsvgelement.rs @@ -13,6 +13,7 @@ use crate::dom::svggraphicselement::SVGGraphicsElement; use crate::dom::virtualmethods::VirtualMethods; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use js::rust::HandleObject; use script_layout_interface::SVGSVGData; use style::attr::AttrValue; @@ -40,10 +41,12 @@ impl SVGSVGElement { local_name: LocalName, prefix: Option, document: &Document, + proto: Option, ) -> DomRoot { - Node::reflect_node( + Node::reflect_node_with_proto( Box::new(SVGSVGElement::new_inherited(local_name, prefix, document)), document, + proto, ) } } diff --git a/components/script/dom/testbinding.rs b/components/script/dom/testbinding.rs index b8d2fefc951..9788b3fa85f 100644 --- a/components/script/dom/testbinding.rs +++ b/components/script/dom/testbinding.rs @@ -40,7 +40,7 @@ use crate::dom::bindings::error::{Error, Fallible}; use crate::dom::bindings::num::Finite; use crate::dom::bindings::record::Record; use crate::dom::bindings::refcounted::TrustedPromise; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::{ByteString, DOMString, USVString}; use crate::dom::bindings::trace::RootedTraceableBox; @@ -84,22 +84,22 @@ impl TestBinding { } } - pub fn new(global: &GlobalScope) -> DomRoot { - reflect_dom_object(Box::new(TestBinding::new_inherited()), global) + fn new(global: &GlobalScope, proto: Option) -> DomRoot { + reflect_dom_object2(Box::new(TestBinding::new_inherited()), global, proto) } - pub fn Constructor(global: &GlobalScope) -> Fallible> { - Ok(TestBinding::new(global)) + pub fn Constructor(global: &GlobalScope, proto: Option) -> Fallible> { + Ok(TestBinding::new(global, proto)) } #[allow(unused_variables)] - pub fn Constructor_(global: &GlobalScope, nums: Vec) -> Fallible> { - Ok(TestBinding::new(global)) + pub fn Constructor_(global: &GlobalScope, proto: Option, nums: Vec) -> Fallible> { + Ok(TestBinding::new(global, proto)) } #[allow(unused_variables)] - pub fn Constructor__(global: &GlobalScope, num: f64) -> Fallible> { - Ok(TestBinding::new(global)) + pub fn Constructor__(global: &GlobalScope, proto: Option, num: f64) -> Fallible> { + Ok(TestBinding::new(global, proto)) } } diff --git a/components/script/dom/testbindingiterable.rs b/components/script/dom/testbindingiterable.rs index 5befaaa2c59..1ed0434c70b 100644 --- a/components/script/dom/testbindingiterable.rs +++ b/components/script/dom/testbindingiterable.rs @@ -7,11 +7,12 @@ use crate::dom::bindings::cell::DomRefCell; use crate::dom::bindings::codegen::Bindings::TestBindingIterableBinding::TestBindingIterableMethods; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::globalscope::GlobalScope; use dom_struct::dom_struct; +use js::rust::HandleObject; #[dom_struct] pub struct TestBindingIterable { @@ -20,19 +21,20 @@ pub struct TestBindingIterable { } impl TestBindingIterable { - fn new(global: &GlobalScope) -> DomRoot { - reflect_dom_object( + fn new(global: &GlobalScope, proto: Option) -> DomRoot { + reflect_dom_object2( Box::new(TestBindingIterable { reflector: Reflector::new(), vals: DomRefCell::new(vec![]), }), global, + proto, ) } #[allow(non_snake_case)] - pub fn Constructor(global: &GlobalScope) -> Fallible> { - Ok(TestBindingIterable::new(global)) + pub fn Constructor(global: &GlobalScope, proto: Option) -> Fallible> { + Ok(TestBindingIterable::new(global, proto)) } } diff --git a/components/script/dom/testbindingpairiterable.rs b/components/script/dom/testbindingpairiterable.rs index e8775af5ce7..ec593b27616 100644 --- a/components/script/dom/testbindingpairiterable.rs +++ b/components/script/dom/testbindingpairiterable.rs @@ -8,11 +8,12 @@ use crate::dom::bindings::cell::DomRefCell; use crate::dom::bindings::codegen::Bindings::TestBindingPairIterableBinding::TestBindingPairIterableMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::iterable::Iterable; -use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::globalscope::GlobalScope; use dom_struct::dom_struct; +use js::rust::HandleObject; #[dom_struct] pub struct TestBindingPairIterable { @@ -47,19 +48,20 @@ impl Iterable for TestBindingPairIterable { } impl TestBindingPairIterable { - fn new(global: &GlobalScope) -> DomRoot { - reflect_dom_object( + fn new(global: &GlobalScope, proto: Option) -> DomRoot { + reflect_dom_object2( Box::new(TestBindingPairIterable { reflector: Reflector::new(), map: DomRefCell::new(vec![]), }), global, + proto, ) } #[allow(non_snake_case)] - pub fn Constructor(global: &GlobalScope) -> Fallible> { - Ok(TestBindingPairIterable::new(global)) + pub fn Constructor(global: &GlobalScope, proto: Option) -> Fallible> { + Ok(TestBindingPairIterable::new(global, proto)) } } diff --git a/components/script/dom/testworklet.rs b/components/script/dom/testworklet.rs index 16e49b55493..1fdbbab07c1 100644 --- a/components/script/dom/testworklet.rs +++ b/components/script/dom/testworklet.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::TestWorkletBinding::TestWorkletMeth use crate::dom::bindings::codegen::Bindings::WorkletBinding::WorkletBinding::WorkletMethods; use crate::dom::bindings::codegen::Bindings::WorkletBinding::WorkletOptions; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::reflector::Reflector; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; @@ -19,6 +19,7 @@ use crate::dom::workletglobalscope::WorkletGlobalScopeType; use crate::realms::InRealm; use crate::script_thread::ScriptThread; use dom_struct::dom_struct; +use js::rust::HandleObject; use std::rc::Rc; #[dom_struct] @@ -35,14 +36,14 @@ impl TestWorklet { } } - fn new(window: &Window) -> DomRoot { + fn new(window: &Window, proto: Option) -> DomRoot { let worklet = Worklet::new(window, WorkletGlobalScopeType::Test); - reflect_dom_object(Box::new(TestWorklet::new_inherited(&*worklet)), window) + reflect_dom_object2(Box::new(TestWorklet::new_inherited(&*worklet)), window, proto) } #[allow(non_snake_case)] - pub fn Constructor(window: &Window) -> Fallible> { - Ok(TestWorklet::new(window)) + pub fn Constructor(window: &Window, proto: Option) -> Fallible> { + Ok(TestWorklet::new(window, proto)) } } diff --git a/components/script/dom/text.rs b/components/script/dom/text.rs index 64fae977556..137b347bba9 100644 --- a/components/script/dom/text.rs +++ b/components/script/dom/text.rs @@ -16,6 +16,7 @@ use crate::dom::document::Document; use crate::dom::node::Node; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; /// An HTML text node. #[dom_struct] @@ -31,13 +32,17 @@ impl Text { } pub fn new(text: DOMString, document: &Document) -> DomRoot { - Node::reflect_node(Box::new(Text::new_inherited(text, document)), document) + Self::new_with_proto(text, document, None) + } + + fn new_with_proto(text: DOMString, document: &Document, proto: Option) -> DomRoot { + Node::reflect_node_with_proto(Box::new(Text::new_inherited(text, document)), document, proto) } #[allow(non_snake_case)] - pub fn Constructor(window: &Window, text: DOMString) -> Fallible> { + pub fn Constructor(window: &Window, proto: Option, text: DOMString) -> Fallible> { let document = window.Document(); - Ok(Text::new(text, &document)) + Ok(Text::new_with_proto(text, &document, proto)) } } diff --git a/components/script/dom/textdecoder.rs b/components/script/dom/textdecoder.rs index 7d664242467..b81fd538c6b 100644 --- a/components/script/dom/textdecoder.rs +++ b/components/script/dom/textdecoder.rs @@ -8,12 +8,13 @@ use crate::dom::bindings::codegen::Bindings::TextDecoderBinding::{ }; use crate::dom::bindings::codegen::UnionTypes::ArrayBufferViewOrArrayBuffer; use crate::dom::bindings::error::{Error, Fallible}; -use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::{DOMString, USVString}; use crate::dom::globalscope::GlobalScope; use dom_struct::dom_struct; use encoding_rs::{Decoder, DecoderResult, Encoding}; +use js::rust::HandleObject; use std::borrow::ToOwned; use std::cell::{Cell, RefCell}; @@ -54,21 +55,24 @@ impl TextDecoder { )) } - pub fn new( + fn new( global: &GlobalScope, + proto: Option, encoding: &'static Encoding, fatal: bool, ignoreBOM: bool, ) -> DomRoot { - reflect_dom_object( + reflect_dom_object2( Box::new(TextDecoder::new_inherited(encoding, fatal, ignoreBOM)), global, + proto, ) } /// pub fn Constructor( global: &GlobalScope, + proto: Option, label: DOMString, options: &TextDecoderBinding::TextDecoderOptions, ) -> Fallible> { @@ -78,6 +82,7 @@ impl TextDecoder { }; Ok(TextDecoder::new( global, + proto, encoding, options.fatal, options.ignoreBOM, diff --git a/components/script/dom/textencoder.rs b/components/script/dom/textencoder.rs index 4df1143531f..caf0cdb3699 100644 --- a/components/script/dom/textencoder.rs +++ b/components/script/dom/textencoder.rs @@ -4,13 +4,14 @@ use crate::dom::bindings::codegen::Bindings::TextEncoderBinding::TextEncoderMethods; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::{DOMString, USVString}; use crate::dom::globalscope::GlobalScope; use crate::script_runtime::JSContext; use dom_struct::dom_struct; use js::jsapi::JSObject; +use js::rust::HandleObject; use js::typedarray::{CreateWith, Uint8Array}; use std::ptr; use std::ptr::NonNull; @@ -27,14 +28,14 @@ impl TextEncoder { } } - pub fn new(global: &GlobalScope) -> DomRoot { - reflect_dom_object(Box::new(TextEncoder::new_inherited()), global) + fn new(global: &GlobalScope, proto: Option) -> DomRoot { + reflect_dom_object2(Box::new(TextEncoder::new_inherited()), global, proto) } // https://encoding.spec.whatwg.org/#dom-textencoder #[allow(non_snake_case)] - pub fn Constructor(global: &GlobalScope) -> Fallible> { - Ok(TextEncoder::new(global)) + pub fn Constructor(global: &GlobalScope, proto: Option) -> Fallible> { + Ok(TextEncoder::new(global, proto)) } } diff --git a/components/script/dom/trackevent.rs b/components/script/dom/trackevent.rs index 34148f26527..7959574938e 100644 --- a/components/script/dom/trackevent.rs +++ b/components/script/dom/trackevent.rs @@ -9,7 +9,7 @@ use crate::dom::bindings::codegen::Bindings::TrackEventBinding::TrackEventMethod use crate::dom::bindings::codegen::UnionTypes::VideoTrackOrAudioTrackOrTextTrack; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; @@ -18,6 +18,7 @@ use crate::dom::texttrack::TextTrack; use crate::dom::videotrack::VideoTrack; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_atoms::Atom; #[unrooted_must_root_lint::must_root] @@ -64,7 +65,18 @@ impl TrackEvent { cancelable: bool, track: &Option, ) -> DomRoot { - let te = reflect_dom_object(Box::new(TrackEvent::new_inherited(&track)), global); + Self::new_with_proto(global, None, type_, bubbles, cancelable, track) + } + + fn new_with_proto( + global: &GlobalScope, + proto: Option, + type_: Atom, + bubbles: bool, + cancelable: bool, + track: &Option, + ) -> DomRoot { + let te = reflect_dom_object2(Box::new(TrackEvent::new_inherited(&track)), global, proto); { let event = te.upcast::(); event.init_event(type_, bubbles, cancelable); @@ -74,11 +86,13 @@ impl TrackEvent { pub fn Constructor( window: &Window, + proto: Option, type_: DOMString, init: &TrackEventBinding::TrackEventInit, ) -> Fallible> { - Ok(TrackEvent::new( + Ok(TrackEvent::new_with_proto( &window.global(), + proto, Atom::from(type_), init.parent.bubbles, init.parent.cancelable, diff --git a/components/script/dom/transitionevent.rs b/components/script/dom/transitionevent.rs index 2305a9489ff..9e2132b407a 100644 --- a/components/script/dom/transitionevent.rs +++ b/components/script/dom/transitionevent.rs @@ -9,12 +9,13 @@ use crate::dom::bindings::codegen::Bindings::TransitionEventBinding::{ use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::num::Finite; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_atoms::Atom; #[dom_struct] @@ -40,7 +41,16 @@ impl TransitionEvent { type_: Atom, init: &TransitionEventInit, ) -> DomRoot { - let ev = reflect_dom_object(Box::new(TransitionEvent::new_inherited(init)), window); + Self::new_with_proto(window, None, type_, init) + } + + fn new_with_proto( + window: &Window, + proto: Option, + type_: Atom, + init: &TransitionEventInit, + ) -> DomRoot { + let ev = reflect_dom_object2(Box::new(TransitionEvent::new_inherited(init)), window, proto); { let event = ev.upcast::(); event.init_event(type_, init.parent.bubbles, init.parent.cancelable); @@ -51,10 +61,11 @@ impl TransitionEvent { #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, type_: DOMString, init: &TransitionEventInit, ) -> Fallible> { - Ok(TransitionEvent::new(window, Atom::from(type_), init)) + Ok(TransitionEvent::new_with_proto(window, proto, Atom::from(type_), init)) } } diff --git a/components/script/dom/uievent.rs b/components/script/dom/uievent.rs index c54265f4fb5..33916963a1d 100644 --- a/components/script/dom/uievent.rs +++ b/components/script/dom/uievent.rs @@ -7,12 +7,13 @@ use crate::dom::bindings::codegen::Bindings::UIEventBinding; use crate::dom::bindings::codegen::Bindings::UIEventBinding::UIEventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::{DomRoot, MutNullableDom}; use crate::dom::bindings::str::DOMString; use crate::dom::event::{Event, EventBubbles, EventCancelable}; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_atoms::Atom; use std::cell::Cell; use std::default::Default; @@ -35,7 +36,11 @@ impl UIEvent { } pub fn new_uninitialized(window: &Window) -> DomRoot { - reflect_dom_object(Box::new(UIEvent::new_inherited()), window) + Self::new_uninitialized_with_proto(window, None) + } + + fn new_uninitialized_with_proto(window: &Window, proto: Option) -> DomRoot { + reflect_dom_object2(Box::new(UIEvent::new_inherited()), window, proto) } pub fn new( @@ -46,7 +51,19 @@ impl UIEvent { view: Option<&Window>, detail: i32, ) -> DomRoot { - let ev = UIEvent::new_uninitialized(window); + Self::new_with_proto(window, None, type_, can_bubble, cancelable, view, detail) + } + + fn new_with_proto( + window: &Window, + proto: Option, + type_: DOMString, + can_bubble: EventBubbles, + cancelable: EventCancelable, + view: Option<&Window>, + detail: i32, + ) -> DomRoot { + let ev = UIEvent::new_uninitialized_with_proto(window, proto); ev.InitUIEvent( type_, bool::from(can_bubble), @@ -60,13 +77,15 @@ impl UIEvent { #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, type_: DOMString, init: &UIEventBinding::UIEventInit, ) -> Fallible> { let bubbles = EventBubbles::from(init.parent.bubbles); let cancelable = EventCancelable::from(init.parent.cancelable); - let event = UIEvent::new( + let event = UIEvent::new_with_proto( window, + proto, type_, bubbles, cancelable, diff --git a/components/script/dom/url.rs b/components/script/dom/url.rs index ecc7fb38591..74056c9f02e 100644 --- a/components/script/dom/url.rs +++ b/components/script/dom/url.rs @@ -5,7 +5,7 @@ use crate::dom::bindings::cell::DomRefCell; use crate::dom::bindings::codegen::Bindings::URLBinding::URLMethods; use crate::dom::bindings::error::{Error, ErrorResult, Fallible}; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject, Reflector}; use crate::dom::bindings::root::{DomRoot, MutNullableDom}; use crate::dom::bindings::str::{DOMString, USVString}; use crate::dom::blob::Blob; @@ -13,6 +13,7 @@ use crate::dom::globalscope::GlobalScope; use crate::dom::urlhelper::UrlHelper; use crate::dom::urlsearchparams::URLSearchParams; use dom_struct::dom_struct; +use js::rust::HandleObject; use net_traits::blob_url_store::{get_blob_origin, parse_blob_url}; use net_traits::filemanager_thread::FileManagerThreadMsg; use net_traits::{CoreResourceMsg, IpcSend}; @@ -42,8 +43,8 @@ impl URL { } } - pub fn new(global: &GlobalScope, url: ServoUrl) -> DomRoot { - reflect_dom_object(Box::new(URL::new_inherited(url)), global) + fn new(global: &GlobalScope, proto: Option, url: ServoUrl) -> DomRoot { + reflect_dom_object2(Box::new(URL::new_inherited(url)), global, proto) } pub fn query_pairs(&self) -> Vec<(String, String)> { @@ -74,6 +75,7 @@ impl URL { // https://url.spec.whatwg.org/#constructors pub fn Constructor( global: &GlobalScope, + proto: Option, url: USVString, base: Option, ) -> Fallible> { @@ -108,7 +110,7 @@ impl URL { // Step 7. Set this’s query object’s URL object to this. // Step 4. Set this’s URL to parsedURL. - Ok(URL::new(global, parsed_url)) + Ok(URL::new(global, proto, parsed_url)) } // https://url.spec.whatwg.org/#dom-url-canparse diff --git a/components/script/dom/urlsearchparams.rs b/components/script/dom/urlsearchparams.rs index 4b7e2880ef1..e4f2df9c91d 100644 --- a/components/script/dom/urlsearchparams.rs +++ b/components/script/dom/urlsearchparams.rs @@ -7,13 +7,14 @@ use crate::dom::bindings::codegen::Bindings::URLSearchParamsBinding::URLSearchPa use crate::dom::bindings::codegen::UnionTypes::USVStringSequenceSequenceOrUSVStringUSVStringRecordOrUSVString; use crate::dom::bindings::error::{Error, Fallible}; use crate::dom::bindings::iterable::Iterable; -use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::{DOMString, USVString}; use crate::dom::bindings::weakref::MutableWeakRef; use crate::dom::globalscope::GlobalScope; use crate::dom::url::URL; use dom_struct::dom_struct; +use js::rust::HandleObject; use url::form_urlencoded; // https://url.spec.whatwg.org/#interface-urlsearchparams @@ -36,17 +37,22 @@ impl URLSearchParams { } pub fn new(global: &GlobalScope, url: Option<&URL>) -> DomRoot { - reflect_dom_object(Box::new(URLSearchParams::new_inherited(url)), global) + Self::new_with_proto(global, None, url) + } + + pub fn new_with_proto(global: &GlobalScope, proto: Option, url: Option<&URL>) -> DomRoot { + reflect_dom_object2(Box::new(URLSearchParams::new_inherited(url)), global, proto) } // https://url.spec.whatwg.org/#dom-urlsearchparams-urlsearchparams #[allow(non_snake_case)] pub fn Constructor( global: &GlobalScope, + proto: Option, init: USVStringSequenceSequenceOrUSVStringUSVStringRecordOrUSVString, ) -> Fallible> { // Step 1. - let query = URLSearchParams::new(global, None); + let query = URLSearchParams::new_with_proto(global, proto, None); match init { USVStringSequenceSequenceOrUSVStringUSVStringRecordOrUSVString::USVStringSequenceSequence(init) => { // Step 2. diff --git a/components/script/dom/vttcue.rs b/components/script/dom/vttcue.rs index 28c9cd22e33..695ddce5262 100644 --- a/components/script/dom/vttcue.rs +++ b/components/script/dom/vttcue.rs @@ -9,7 +9,7 @@ use crate::dom::bindings::codegen::Bindings::VTTCueBinding::{ }; use crate::dom::bindings::error::{Error, ErrorResult}; use crate::dom::bindings::num::Finite; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::documentfragment::DocumentFragment; @@ -18,6 +18,7 @@ use crate::dom::texttrackcue::TextTrackCue; use crate::dom::vttregion::VTTRegion; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use std::cell::Cell; #[dom_struct] @@ -57,26 +58,29 @@ impl VTTCue { } } - pub fn new( + fn new( global: &GlobalScope, + proto: Option, start_time: f64, end_time: f64, text: DOMString, ) -> DomRoot { - reflect_dom_object( + reflect_dom_object2( Box::new(Self::new_inherited(start_time, end_time, text)), global, + proto, ) } #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, start_time: Finite, end_time: Finite, text: DOMString, ) -> DomRoot { - VTTCue::new(&window.global(), *start_time, *end_time, text) + VTTCue::new(&window.global(), proto, *start_time, *end_time, text) } } diff --git a/components/script/dom/vttregion.rs b/components/script/dom/vttregion.rs index 987af730f14..f061416d3de 100644 --- a/components/script/dom/vttregion.rs +++ b/components/script/dom/vttregion.rs @@ -6,12 +6,13 @@ use crate::dom::bindings::cell::DomRefCell; use crate::dom::bindings::codegen::Bindings::VTTRegionBinding::{ScrollSetting, VTTRegionMethods}; use crate::dom::bindings::error::{Error, ErrorResult, Fallible}; use crate::dom::bindings::num::Finite; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::globalscope::GlobalScope; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use std::cell::Cell; #[dom_struct] @@ -28,7 +29,7 @@ pub struct VTTRegion { } impl VTTRegion { - pub fn new_inherited() -> Self { + fn new_inherited() -> Self { VTTRegion { reflector_: Reflector::new(), id: DomRefCell::new(DOMString::default()), @@ -42,13 +43,13 @@ impl VTTRegion { } } - pub fn new(global: &GlobalScope) -> DomRoot { - reflect_dom_object(Box::new(Self::new_inherited()), global) + fn new(global: &GlobalScope, proto: Option) -> DomRoot { + reflect_dom_object2(Box::new(Self::new_inherited()), global, proto) } #[allow(non_snake_case)] - pub fn Constructor(window: &Window) -> Fallible> { - Ok(VTTRegion::new(&window.global())) + pub fn Constructor(window: &Window, proto: Option) -> Fallible> { + Ok(VTTRegion::new(&window.global(), proto)) } } diff --git a/components/script/dom/webglcontextevent.rs b/components/script/dom/webglcontextevent.rs index 95e83cbf3a5..3d4c43e357e 100644 --- a/components/script/dom/webglcontextevent.rs +++ b/components/script/dom/webglcontextevent.rs @@ -7,12 +7,13 @@ use crate::dom::bindings::codegen::Bindings::WebGLContextEventBinding::WebGLCont use crate::dom::bindings::codegen::Bindings::WebGLContextEventBinding::WebGLContextEventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::event::{Event, EventBubbles, EventCancelable}; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_atoms::Atom; #[dom_struct] @@ -34,7 +35,7 @@ impl WebGLContextEventMethods for WebGLContextEvent { } impl WebGLContextEvent { - pub fn new_inherited(status_message: DOMString) -> WebGLContextEvent { + fn new_inherited(status_message: DOMString) -> WebGLContextEvent { WebGLContextEvent { event: Event::new_inherited(), status_message: status_message, @@ -48,9 +49,21 @@ impl WebGLContextEvent { cancelable: EventCancelable, status_message: DOMString, ) -> DomRoot { - let event = reflect_dom_object( + Self::new_with_proto(window, None, type_, bubbles, cancelable, status_message) + } + + fn new_with_proto( + window: &Window, + proto: Option, + type_: Atom, + bubbles: EventBubbles, + cancelable: EventCancelable, + status_message: DOMString, + ) -> DomRoot { + let event = reflect_dom_object2( Box::new(WebGLContextEvent::new_inherited(status_message)), window, + proto, ); { @@ -64,6 +77,7 @@ impl WebGLContextEvent { #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, type_: DOMString, init: &WebGLContextEventInit, ) -> Fallible> { @@ -76,8 +90,9 @@ impl WebGLContextEvent { let cancelable = EventCancelable::from(init.parent.cancelable); - Ok(WebGLContextEvent::new( + Ok(WebGLContextEvent::new_with_proto( window, + proto, Atom::from(type_), bubbles, cancelable, diff --git a/components/script/dom/websocket.rs b/components/script/dom/websocket.rs index 59b87d08987..212e88af8d0 100644 --- a/components/script/dom/websocket.rs +++ b/components/script/dom/websocket.rs @@ -10,7 +10,7 @@ use crate::dom::bindings::conversions::ToJSValConvertible; use crate::dom::bindings::error::{Error, ErrorResult, Fallible}; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::refcounted::Trusted; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::{is_token, DOMString, USVString}; use crate::dom::blob::Blob; @@ -29,7 +29,7 @@ use ipc_channel::ipc::{self, IpcReceiver, IpcSender}; use ipc_channel::router::ROUTER; use js::jsapi::{JSAutoRealm, JSObject}; use js::jsval::UndefinedValue; -use js::rust::CustomAutoRooterGuard; +use js::rust::{CustomAutoRooterGuard, HandleObject}; use js::typedarray::{ArrayBuffer, ArrayBufferView, CreateWith}; use net_traits::request::{Referrer, RequestBuilder, RequestMode}; use net_traits::MessageData; @@ -127,16 +127,18 @@ impl WebSocket { fn new( global: &GlobalScope, + proto: Option, url: ServoUrl, sender: IpcSender, ) -> DomRoot { - reflect_dom_object(Box::new(WebSocket::new_inherited(url, sender)), global) + reflect_dom_object2(Box::new(WebSocket::new_inherited(url, sender)), global, proto) } /// #[allow(non_snake_case)] pub fn Constructor( global: &GlobalScope, + proto: Option, url: DOMString, protocols: Option, ) -> Fallible> { @@ -190,7 +192,7 @@ impl WebSocket { ProfiledIpc::IpcReceiver, ) = ProfiledIpc::channel(global.time_profiler_chan().clone()).unwrap(); - let ws = WebSocket::new(global, url_record.clone(), dom_action_sender); + let ws = WebSocket::new(global, proto, url_record.clone(), dom_action_sender); let address = Trusted::new(&*ws); // Step 8. diff --git a/components/script/dom/wheelevent.rs b/components/script/dom/wheelevent.rs index d7e33b84633..cc7847b1dcd 100644 --- a/components/script/dom/wheelevent.rs +++ b/components/script/dom/wheelevent.rs @@ -8,13 +8,14 @@ use crate::dom::bindings::codegen::Bindings::WheelEventBinding::WheelEventMethod use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::num::Finite; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::event::{Event, EventBubbles, EventCancelable}; use crate::dom::mouseevent::MouseEvent; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use std::cell::Cell; #[dom_struct] @@ -37,8 +38,8 @@ impl WheelEvent { } } - pub fn new_unintialized(window: &Window) -> DomRoot { - reflect_dom_object(Box::new(WheelEvent::new_inherited()), window) + fn new_unintialized(window: &Window, proto: Option) -> DomRoot { + reflect_dom_object2(Box::new(WheelEvent::new_inherited()), window, proto) } pub fn new( @@ -53,7 +54,35 @@ impl WheelEvent { delta_z: Finite, delta_mode: u32, ) -> DomRoot { - let ev = WheelEvent::new_unintialized(window); + Self::new_with_proto( + window, + None, + type_, + can_bubble, + cancelable, + view, + detail, + delta_x, + delta_y, + delta_z, + delta_mode, + ) + } + + fn new_with_proto( + window: &Window, + proto: Option, + type_: DOMString, + can_bubble: EventBubbles, + cancelable: EventCancelable, + view: Option<&Window>, + detail: i32, + delta_x: Finite, + delta_y: Finite, + delta_z: Finite, + delta_mode: u32, + ) -> DomRoot { + let ev = WheelEvent::new_unintialized(window, proto); ev.InitWheelEvent( type_, bool::from(can_bubble), @@ -72,11 +101,13 @@ impl WheelEvent { #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, type_: DOMString, init: &WheelEventBinding::WheelEventInit, ) -> Fallible> { - let event = WheelEvent::new( + let event = WheelEvent::new_with_proto( window, + proto, type_, EventBubbles::from(init.parent.parent.parent.parent.bubbles), EventCancelable::from(init.parent.parent.parent.parent.cancelable), diff --git a/components/script/dom/worker.rs b/components/script/dom/worker.rs index b9370f02914..5bd0acf701c 100644 --- a/components/script/dom/worker.rs +++ b/components/script/dom/worker.rs @@ -9,7 +9,7 @@ use crate::dom::bindings::codegen::Bindings::WorkerBinding::{WorkerMethods, Work use crate::dom::bindings::error::{Error, ErrorResult, Fallible}; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::refcounted::Trusted; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::USVString; use crate::dom::bindings::structuredclone; @@ -31,7 +31,7 @@ use dom_struct::dom_struct; use ipc_channel::ipc; use js::jsapi::{Heap, JSObject, JS_RequestInterruptCallback}; use js::jsval::UndefinedValue; -use js::rust::{CustomAutoRooter, CustomAutoRooterGuard, HandleValue}; +use js::rust::{CustomAutoRooter, CustomAutoRooterGuard, HandleObject, HandleValue}; use script_traits::{StructuredSerializedData, WorkerScriptLoadOrigin}; use std::cell::Cell; use std::sync::atomic::{AtomicBool, Ordering}; @@ -63,18 +63,20 @@ impl Worker { } } - pub fn new( + fn new( global: &GlobalScope, + proto: Option, sender: Sender, closing: Arc, ) -> DomRoot { - reflect_dom_object(Box::new(Worker::new_inherited(sender, closing)), global) + reflect_dom_object2(Box::new(Worker::new_inherited(sender, closing)), global, proto) } // https://html.spec.whatwg.org/multipage/#dom-worker #[allow(unsafe_code, non_snake_case)] pub fn Constructor( global: &GlobalScope, + proto: Option, script_url: USVString, worker_options: &WorkerOptions, ) -> Fallible> { @@ -86,7 +88,7 @@ impl Worker { let (sender, receiver) = unbounded(); let closing = Arc::new(AtomicBool::new(false)); - let worker = Worker::new(global, sender.clone(), closing.clone()); + let worker = Worker::new(global, proto, sender.clone(), closing.clone()); let worker_ref = Trusted::new(&*worker); let worker_load_origin = WorkerScriptLoadOrigin { diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs index 1c6db3a5953..04c875aadd1 100644 --- a/components/script/dom/xmlhttprequest.rs +++ b/components/script/dom/xmlhttprequest.rs @@ -13,7 +13,7 @@ use crate::dom::bindings::conversions::ToJSValConvertible; use crate::dom::bindings::error::{Error, ErrorResult, Fallible}; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::refcounted::Trusted; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; use crate::dom::bindings::root::{Dom, DomRoot, MutNullableDom}; use crate::dom::bindings::str::{is_token, ByteString, DOMString, USVString}; use crate::dom::blob::{normalize_type_string, Blob}; @@ -52,6 +52,7 @@ use ipc_channel::router::ROUTER; use js::jsapi::JS_ClearPendingException; use js::jsapi::{Heap, JSObject}; use js::jsval::{JSVal, NullValue, UndefinedValue}; +use js::rust::HandleObject; use js::rust::wrappers::JS_ParseJSON; use js::typedarray::{ArrayBuffer, CreateWith}; use mime::{self, Mime, Name}; @@ -213,14 +214,15 @@ impl XMLHttpRequest { canceller: DomRefCell::new(Default::default()), } } - pub fn new(global: &GlobalScope) -> DomRoot { - reflect_dom_object(Box::new(XMLHttpRequest::new_inherited(global)), global) + + fn new(global: &GlobalScope, proto: Option) -> DomRoot { + reflect_dom_object2(Box::new(XMLHttpRequest::new_inherited(global)), global, proto) } // https://xhr.spec.whatwg.org/#constructors #[allow(non_snake_case)] - pub fn Constructor(global: &GlobalScope) -> Fallible> { - Ok(XMLHttpRequest::new(global)) + pub fn Constructor(global: &GlobalScope, proto: Option) -> Fallible> { + Ok(XMLHttpRequest::new(global, proto)) } fn sync_in_window(&self) -> bool { diff --git a/components/script/dom/xmlserializer.rs b/components/script/dom/xmlserializer.rs index 2b65d061fa6..e7f74697657 100644 --- a/components/script/dom/xmlserializer.rs +++ b/components/script/dom/xmlserializer.rs @@ -4,12 +4,13 @@ use crate::dom::bindings::codegen::Bindings::XMLSerializerBinding::XMLSerializerMethods; use crate::dom::bindings::error::{Error, Fallible}; -use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::node::Node; use crate::dom::window::Window; use dom_struct::dom_struct; +use js::rust::HandleObject; use xml5ever::serialize::{serialize, SerializeOpts, TraversalScope}; #[dom_struct] @@ -26,13 +27,13 @@ impl XMLSerializer { } } - pub fn new(window: &Window) -> DomRoot { - reflect_dom_object(Box::new(XMLSerializer::new_inherited(window)), window) + pub fn new(window: &Window, proto: Option) -> DomRoot { + reflect_dom_object2(Box::new(XMLSerializer::new_inherited(window)), window, proto) } #[allow(non_snake_case)] - pub fn Constructor(window: &Window) -> Fallible> { - Ok(XMLSerializer::new(window)) + pub fn Constructor(window: &Window, proto: Option) -> Fallible> { + Ok(XMLSerializer::new(window, proto)) } } diff --git a/components/script/dom/xrinputsourceevent.rs b/components/script/dom/xrinputsourceevent.rs index 47ed6d90626..cdbc63b6454 100644 --- a/components/script/dom/xrinputsourceevent.rs +++ b/components/script/dom/xrinputsourceevent.rs @@ -8,7 +8,7 @@ use crate::dom::bindings::codegen::Bindings::XRInputSourceEventBinding::{ }; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; @@ -17,6 +17,7 @@ use crate::dom::window::Window; use crate::dom::xrframe::XRFrame; use crate::dom::xrinputsource::XRInputSource; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_atoms::Atom; #[dom_struct] @@ -44,9 +45,22 @@ impl XRInputSourceEvent { frame: &XRFrame, source: &XRInputSource, ) -> DomRoot { - let trackevent = reflect_dom_object( + Self::new_with_proto(global, None, type_, bubbles, cancelable, frame, source) + } + + fn new_with_proto( + global: &GlobalScope, + proto: Option, + type_: Atom, + bubbles: bool, + cancelable: bool, + frame: &XRFrame, + source: &XRInputSource, + ) -> DomRoot { + let trackevent = reflect_dom_object2( Box::new(XRInputSourceEvent::new_inherited(frame, source)), global, + proto, ); { let event = trackevent.upcast::(); @@ -58,11 +72,13 @@ impl XRInputSourceEvent { #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, type_: DOMString, init: &XRInputSourceEventBinding::XRInputSourceEventInit, ) -> Fallible> { - Ok(XRInputSourceEvent::new( + Ok(XRInputSourceEvent::new_with_proto( &window.global(), + proto, Atom::from(type_), init.parent.bubbles, init.parent.cancelable, diff --git a/components/script/dom/xrinputsourceschangeevent.rs b/components/script/dom/xrinputsourceschangeevent.rs index 99e5da7ead7..09cbcdc2fc1 100644 --- a/components/script/dom/xrinputsourceschangeevent.rs +++ b/components/script/dom/xrinputsourceschangeevent.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::XRInputSourcesChangeEventBinding::{ self, XRInputSourcesChangeEventMethods, }; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; @@ -21,6 +21,7 @@ use dom_struct::dom_struct; use js::conversions::ToJSValConvertible; use js::jsapi::Heap; use js::jsval::{JSVal, UndefinedValue}; +use js::rust::HandleObject; use servo_atoms::Atom; #[dom_struct] @@ -44,7 +45,6 @@ impl XRInputSourcesChangeEvent { } } - #[allow(unsafe_code)] pub fn new( global: &GlobalScope, type_: Atom, @@ -54,9 +54,33 @@ impl XRInputSourcesChangeEvent { added: &[DomRoot], removed: &[DomRoot], ) -> DomRoot { - let changeevent = reflect_dom_object( + Self::new_with_proto( + global, + None, + type_, + bubbles, + cancelable, + session, + added, + removed, + ) + } + + #[allow(unsafe_code)] + fn new_with_proto( + global: &GlobalScope, + proto: Option, + type_: Atom, + bubbles: bool, + cancelable: bool, + session: &XRSession, + added: &[DomRoot], + removed: &[DomRoot], + ) -> DomRoot { + let changeevent = reflect_dom_object2( Box::new(XRInputSourcesChangeEvent::new_inherited(session)), global, + proto, ); { let event = changeevent.upcast::(); @@ -79,11 +103,13 @@ impl XRInputSourcesChangeEvent { #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, type_: DOMString, init: &XRInputSourcesChangeEventBinding::XRInputSourcesChangeEventInit, ) -> DomRoot { - XRInputSourcesChangeEvent::new( + XRInputSourcesChangeEvent::new_with_proto( &window.global(), + proto, Atom::from(type_), init.parent.bubbles, init.parent.cancelable, diff --git a/components/script/dom/xrlayerevent.rs b/components/script/dom/xrlayerevent.rs index d3485fa1c51..dc8cfe3662d 100644 --- a/components/script/dom/xrlayerevent.rs +++ b/components/script/dom/xrlayerevent.rs @@ -5,7 +5,7 @@ use crate::dom::bindings::codegen::Bindings::EventBinding::EventBinding::EventMethods; use crate::dom::bindings::codegen::Bindings::XRLayerEventBinding::XRLayerEventInit; use crate::dom::bindings::codegen::Bindings::XRLayerEventBinding::XRLayerEventMethods; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::Dom; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; @@ -13,6 +13,7 @@ use crate::dom::event::Event; use crate::dom::window::Window; use crate::dom::xrlayer::XRLayer; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_atoms::Atom; // https://w3c.github.io/uievents/#interface-uievent @@ -30,17 +31,18 @@ impl XRLayerEvent { } } - pub fn new(window: &Window, layer: &XRLayer) -> DomRoot { - reflect_dom_object(Box::new(XRLayerEvent::new_inherited(layer)), window) + fn new(window: &Window, proto: Option, layer: &XRLayer) -> DomRoot { + reflect_dom_object2(Box::new(XRLayerEvent::new_inherited(layer)), window, proto) } #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, type_: DOMString, init: &XRLayerEventInit, ) -> DomRoot { - let event = XRLayerEvent::new(window, &init.layer); + let event = XRLayerEvent::new(window, proto, &init.layer); let type_ = Atom::from(type_); let bubbles = init.parent.bubbles; let cancelable = init.parent.cancelable; diff --git a/components/script/dom/xrmediabinding.rs b/components/script/dom/xrmediabinding.rs index 5e1dfd3abeb..c3c4c3a5fc7 100644 --- a/components/script/dom/xrmediabinding.rs +++ b/components/script/dom/xrmediabinding.rs @@ -6,7 +6,7 @@ use crate::dom::bindings::codegen::Bindings::XRMediaBindingBinding::XRMediaBindi use crate::dom::bindings::codegen::Bindings::XRMediaBindingBinding::XRMediaLayerInit; use crate::dom::bindings::error::Error; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::reflector::Reflector; use crate::dom::bindings::root::Dom; use crate::dom::bindings::root::DomRoot; @@ -17,6 +17,7 @@ use crate::dom::xrequirectlayer::XREquirectLayer; use crate::dom::xrquadlayer::XRQuadLayer; use crate::dom::xrsession::XRSession; use dom_struct::dom_struct; +use js::rust::HandleObject; #[dom_struct] pub struct XRMediaBinding { @@ -32,12 +33,12 @@ impl XRMediaBinding { } } - pub fn new(global: &Window, session: &XRSession) -> DomRoot { - reflect_dom_object(Box::new(XRMediaBinding::new_inherited(session)), global) + fn new(global: &Window, proto: Option, session: &XRSession) -> DomRoot { + reflect_dom_object2(Box::new(XRMediaBinding::new_inherited(session)), global, proto) } #[allow(non_snake_case)] - pub fn Constructor(global: &Window, session: &XRSession) -> Fallible> { + pub fn Constructor(global: &Window, proto: Option, session: &XRSession) -> Fallible> { // Step 1. if session.is_ended() { return Err(Error::InvalidState); @@ -49,7 +50,7 @@ impl XRMediaBinding { } // Steps 3-5. - Ok(XRMediaBinding::new(global, session)) + Ok(XRMediaBinding::new(global, proto, session)) } } diff --git a/components/script/dom/xrray.rs b/components/script/dom/xrray.rs index 781ff6a396b..029929ae37d 100644 --- a/components/script/dom/xrray.rs +++ b/components/script/dom/xrray.rs @@ -5,7 +5,7 @@ use crate::dom::bindings::codegen::Bindings::DOMPointBinding::DOMPointInit; use crate::dom::bindings::codegen::Bindings::XRRayBinding::{XRRayDirectionInit, XRRayMethods}; use crate::dom::bindings::error::{Error, Fallible}; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::utils::create_typed_array; use crate::dom::dompointreadonly::DOMPointReadOnly; @@ -16,6 +16,7 @@ use crate::script_runtime::JSContext; use dom_struct::dom_struct; use euclid::{Angle, RigidTransform3D, Rotation3D, Vector3D}; use js::jsapi::{Heap, JSObject}; +use js::rust::HandleObject; use std::ptr::NonNull; use webxr_api::{ApiSpace, Ray}; @@ -37,14 +38,15 @@ impl XRRay { } } - pub fn new(global: &GlobalScope, ray: Ray) -> DomRoot { - reflect_dom_object(Box::new(XRRay::new_inherited(ray)), global) + fn new(global: &GlobalScope, proto: Option, ray: Ray) -> DomRoot { + reflect_dom_object2(Box::new(XRRay::new_inherited(ray)), global, proto) } #[allow(non_snake_case)] /// https://immersive-web.github.io/hit-test/#dom-xrray-xrray pub fn Constructor( window: &Window, + proto: Option, origin: &DOMPointInit, direction: &XRRayDirectionInit, ) -> Fallible> { @@ -68,19 +70,19 @@ impl XRRay { ) .normalize(); - Ok(Self::new(&window.global(), Ray { origin, direction })) + Ok(Self::new(&window.global(), proto, Ray { origin, direction })) } #[allow(non_snake_case)] /// https://immersive-web.github.io/hit-test/#dom-xrray-xrray-transform - pub fn Constructor_(window: &Window, transform: &XRRigidTransform) -> Fallible> { + pub fn Constructor_(window: &Window, proto: Option, transform: &XRRigidTransform) -> Fallible> { let transform = transform.transform(); let origin = transform.translation; let direction = transform .rotation .transform_vector3d(Vector3D::new(0., 0., -1.)); - Ok(Self::new(&window.global(), Ray { origin, direction })) + Ok(Self::new(&window.global(), proto, Ray { origin, direction })) } pub fn ray(&self) -> Ray { diff --git a/components/script/dom/xrrigidtransform.rs b/components/script/dom/xrrigidtransform.rs index 00909e1fe1c..4cbbee32386 100644 --- a/components/script/dom/xrrigidtransform.rs +++ b/components/script/dom/xrrigidtransform.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::XRRigidTransformBinding::XRRigidTra use crate::dom::bindings::error::Error; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::reflector::DomObject; -use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; use crate::dom::bindings::root::{DomRoot, MutNullableDom}; use crate::dom::bindings::utils::create_typed_array; use crate::dom::dompointreadonly::DOMPointReadOnly; @@ -18,6 +18,7 @@ use crate::script_runtime::JSContext; use dom_struct::dom_struct; use euclid::{RigidTransform3D, Rotation3D, Vector3D}; use js::jsapi::{Heap, JSObject}; +use js::rust::HandleObject; use std::ptr::NonNull; #[dom_struct] @@ -45,7 +46,11 @@ impl XRRigidTransform { } pub fn new(global: &GlobalScope, transform: ApiRigidTransform) -> DomRoot { - reflect_dom_object(Box::new(XRRigidTransform::new_inherited(transform)), global) + Self::new_with_proto(global, None, transform) + } + + fn new_with_proto(global: &GlobalScope, proto: Option, transform: ApiRigidTransform) -> DomRoot { + reflect_dom_object2(Box::new(XRRigidTransform::new_inherited(transform)), global, proto) } pub fn identity(window: &GlobalScope) -> DomRoot { @@ -57,6 +62,7 @@ impl XRRigidTransform { #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, position: &DOMPointInit, orientation: &DOMPointInit, ) -> Fallible> { @@ -81,7 +87,7 @@ impl XRRigidTransform { return Err(Error::InvalidState); } let transform = RigidTransform3D::new(rotate, translate); - Ok(XRRigidTransform::new(&window.global(), transform)) + Ok(XRRigidTransform::new_with_proto(&window.global(), proto, transform)) } } diff --git a/components/script/dom/xrsessionevent.rs b/components/script/dom/xrsessionevent.rs index 95005d4e397..4fcfbfff3e2 100644 --- a/components/script/dom/xrsessionevent.rs +++ b/components/script/dom/xrsessionevent.rs @@ -6,7 +6,7 @@ use crate::dom::bindings::codegen::Bindings::EventBinding::EventBinding::EventMe use crate::dom::bindings::codegen::Bindings::XRSessionEventBinding::{self, XRSessionEventMethods}; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; @@ -14,6 +14,7 @@ use crate::dom::globalscope::GlobalScope; use crate::dom::window::Window; use crate::dom::xrsession::XRSession; use dom_struct::dom_struct; +use js::rust::HandleObject; use servo_atoms::Atom; #[dom_struct] @@ -37,9 +38,20 @@ impl XRSessionEvent { bubbles: bool, cancelable: bool, session: &XRSession, + ) -> DomRoot { + Self::new_with_proto(global, None, type_, bubbles, cancelable, session) + } + + fn new_with_proto( + global: &GlobalScope, + proto: Option, + type_: Atom, + bubbles: bool, + cancelable: bool, + session: &XRSession, ) -> DomRoot { let trackevent = - reflect_dom_object(Box::new(XRSessionEvent::new_inherited(&session)), global); + reflect_dom_object2(Box::new(XRSessionEvent::new_inherited(&session)), global, proto); { let event = trackevent.upcast::(); event.init_event(type_, bubbles, cancelable); @@ -50,11 +62,13 @@ impl XRSessionEvent { #[allow(non_snake_case)] pub fn Constructor( window: &Window, + proto: Option, type_: DOMString, init: &XRSessionEventBinding::XRSessionEventInit, ) -> Fallible> { - Ok(XRSessionEvent::new( + Ok(XRSessionEvent::new_with_proto( &window.global(), + proto, Atom::from(type_), init.parent.bubbles, init.parent.cancelable, diff --git a/components/script/dom/xrwebglbinding.rs b/components/script/dom/xrwebglbinding.rs index 64ea31e0bce..fb64c92d7e6 100644 --- a/components/script/dom/xrwebglbinding.rs +++ b/components/script/dom/xrwebglbinding.rs @@ -13,7 +13,7 @@ use crate::dom::bindings::codegen::Bindings::XRWebGLBindingBinding::XRWebGLBindi use crate::dom::bindings::codegen::UnionTypes::WebGLRenderingContextOrWebGL2RenderingContext; use crate::dom::bindings::error::Error; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::reflector::Reflector; use crate::dom::bindings::root::Dom; use crate::dom::bindings::root::DomRoot; @@ -30,6 +30,7 @@ use crate::dom::xrsession::XRSession; use crate::dom::xrview::XRView; use crate::dom::xrwebglsubimage::XRWebGLSubImage; use dom_struct::dom_struct; +use js::rust::HandleObject; #[dom_struct] pub struct XRWebGLBinding { @@ -47,20 +48,23 @@ impl XRWebGLBinding { } } - pub fn new( + fn new( global: &Window, + proto: Option, session: &XRSession, context: &WebGLRenderingContext, ) -> DomRoot { - reflect_dom_object( + reflect_dom_object2( Box::new(XRWebGLBinding::new_inherited(session, context)), global, + proto, ) } #[allow(non_snake_case)] pub fn Constructor( global: &Window, + proto: Option, session: &XRSession, context: WebGLRenderingContextOrWebGL2RenderingContext, ) -> DomRoot { @@ -70,7 +74,7 @@ impl XRWebGLBinding { ctx.base_context() }, }; - XRWebGLBinding::new(global, session, &context) + XRWebGLBinding::new(global, proto, session, &context) } } diff --git a/components/script/dom/xrwebgllayer.rs b/components/script/dom/xrwebgllayer.rs index dd1e4eff57f..bbf6e76e5db 100644 --- a/components/script/dom/xrwebgllayer.rs +++ b/components/script/dom/xrwebgllayer.rs @@ -10,7 +10,7 @@ use crate::dom::bindings::codegen::Bindings::XRWebGLLayerBinding::XRWebGLRenderi use crate::dom::bindings::error::Error; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::globalscope::GlobalScope; use crate::dom::webglframebuffer::WebGLFramebuffer; @@ -28,6 +28,7 @@ use canvas_traits::webgl::WebGLContextId; use canvas_traits::webgl::WebGLTextureId; use dom_struct::dom_struct; use euclid::{Rect, Size2D}; +use js::rust::HandleObject; use std::convert::TryInto; use webxr_api::ContextId as WebXRContextId; use webxr_api::LayerId; @@ -78,15 +79,16 @@ impl XRWebGLLayer { } } - pub fn new( + fn new( global: &GlobalScope, + proto: Option, session: &XRSession, context: &WebGLRenderingContext, init: &XRWebGLLayerInit, framebuffer: Option<&WebGLFramebuffer>, layer_id: Option, ) -> DomRoot { - reflect_dom_object( + reflect_dom_object2( Box::new(XRWebGLLayer::new_inherited( session, context, @@ -95,6 +97,7 @@ impl XRWebGLLayer { layer_id, )), global, + proto, ) } @@ -102,6 +105,7 @@ impl XRWebGLLayer { #[allow(non_snake_case)] pub fn Constructor( global: &Window, + proto: Option, session: &XRSession, context: XRWebGLRenderingContext, init: &XRWebGLLayerInit, @@ -147,6 +151,7 @@ impl XRWebGLLayer { // Step 10. "Return layer." Ok(XRWebGLLayer::new( &global.global(), + proto, session, &context, init, diff --git a/components/script/fetch.rs b/components/script/fetch.rs index 9487e7c8717..9de88ba0277 100644 --- a/components/script/fetch.rs +++ b/components/script/fetch.rs @@ -146,7 +146,7 @@ pub fn Fetch( let response = Response::new(global); // Step 2 - let request = match Request::Constructor(global, input, init) { + let request = match Request::Constructor(global, None, input, init) { Err(e) => { response.error_stream(e.clone()); promise.reject_error(e); diff --git a/components/script/webdriver_handlers.rs b/components/script/webdriver_handlers.rs index 5129d1c9569..d1b2471777b 100644 --- a/components/script/webdriver_handlers.rs +++ b/components/script/webdriver_handlers.rs @@ -728,7 +728,7 @@ pub fn handle_get_page_source( Some(element) => match element.GetOuterHTML() { Ok(source) => Ok(source.to_string()), Err(_) => { - match XMLSerializer::new(document.window()) + match XMLSerializer::new(document.window(), None) .SerializeToString(element.upcast::()) { Ok(source) => Ok(source.to_string()), From 0e8ac3fdac83227d4bbc8d1d74ea021fa627280a Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Sun, 28 May 2023 23:25:41 -0400 Subject: [PATCH 3/9] Formatting. --- components/script/dom/animationevent.rs | 7 ++- components/script/dom/audiobuffer.rs | 9 ++- components/script/dom/audiocontext.rs | 6 +- .../script/dom/bindings/htmlconstructor.rs | 8 ++- components/script/dom/bindings/interface.rs | 63 ++++++++++--------- components/script/dom/bindings/iterable.rs | 9 ++- components/script/dom/bindings/reflector.rs | 7 ++- components/script/dom/blob.rs | 9 ++- components/script/dom/broadcastchannel.rs | 20 ++++-- components/script/dom/closeevent.rs | 9 +-- components/script/dom/comment.rs | 18 +++++- components/script/dom/compositionevent.rs | 9 +-- components/script/dom/customevent.rs | 5 +- components/script/dom/document.rs | 5 +- components/script/dom/documentfragment.rs | 10 ++- components/script/dom/domimplementation.rs | 16 +++-- components/script/dom/dommatrix.rs | 14 ++++- components/script/dom/dommatrixreadonly.rs | 14 ++++- components/script/dom/domparser.rs | 5 +- components/script/dom/dompoint.rs | 9 ++- components/script/dom/dompointreadonly.rs | 9 ++- components/script/dom/domquad.rs | 6 +- components/script/dom/domrect.rs | 9 ++- components/script/dom/element.rs | 7 ++- components/script/dom/errorevent.rs | 11 +--- components/script/dom/event.rs | 13 +++- components/script/dom/eventsource.rs | 7 ++- components/script/dom/eventtarget.rs | 7 ++- components/script/dom/filereader.rs | 5 +- components/script/dom/filereadersync.rs | 5 +- components/script/dom/focusevent.rs | 5 +- components/script/dom/formdata.rs | 12 +++- components/script/dom/formdataevent.rs | 9 +-- components/script/dom/gamepadevent.rs | 6 +- components/script/dom/gpuoutofmemoryerror.rs | 6 +- components/script/dom/gpuvalidationerror.rs | 18 +++++- components/script/dom/hashchangeevent.rs | 5 +- components/script/dom/htmlanchorelement.rs | 2 +- components/script/dom/htmlaudioelement.rs | 6 +- components/script/dom/htmlbrelement.rs | 2 +- components/script/dom/htmlscriptelement.rs | 4 +- components/script/dom/htmltableelement.rs | 14 +++-- components/script/dom/imagedata.rs | 7 ++- components/script/dom/keyboardevent.rs | 7 ++- components/script/dom/mediametadata.rs | 6 +- components/script/dom/mediastream.rs | 11 +++- .../dom/mediastreamtrackaudiosourcenode.rs | 7 ++- components/script/dom/messagechannel.rs | 5 +- components/script/dom/messageevent.rs | 8 ++- components/script/dom/mouseevent.rs | 5 +- components/script/dom/mutationobserver.rs | 6 +- components/script/dom/node.rs | 6 +- components/script/dom/pagetransitionevent.rs | 11 +++- components/script/dom/performanceobserver.rs | 7 ++- components/script/dom/request.rs | 6 +- components/script/dom/rtcerror.rs | 7 ++- components/script/dom/rtcerrorevent.rs | 6 +- components/script/dom/rtcicecandidate.rs | 9 ++- components/script/dom/rtcpeerconnection.rs | 34 +++++++--- components/script/dom/rtctrackevent.rs | 6 +- components/script/dom/storageevent.rs | 6 +- components/script/dom/submitevent.rs | 6 +- components/script/dom/testbinding.rs | 17 ++++- components/script/dom/testbindingiterable.rs | 5 +- .../script/dom/testbindingpairiterable.rs | 5 +- components/script/dom/testworklet.rs | 11 +++- components/script/dom/text.rs | 18 +++++- components/script/dom/textencoder.rs | 5 +- components/script/dom/transitionevent.rs | 13 +++- components/script/dom/uievent.rs | 5 +- components/script/dom/urlsearchparams.rs | 6 +- components/script/dom/websocket.rs | 6 +- components/script/dom/wheelevent.rs | 11 +--- components/script/dom/worker.rs | 6 +- components/script/dom/xmlhttprequest.rs | 13 +++- components/script/dom/xmlserializer.rs | 11 +++- .../script/dom/xrinputsourceschangeevent.rs | 9 +-- components/script/dom/xrmediabinding.rs | 18 +++++- components/script/dom/xrray.rs | 24 +++++-- components/script/dom/xrrigidtransform.rs | 18 +++++- components/script/dom/xrsessionevent.rs | 7 ++- 81 files changed, 588 insertions(+), 206 deletions(-) diff --git a/components/script/dom/animationevent.rs b/components/script/dom/animationevent.rs index 1a5179c7ebe..d41fff988b5 100644 --- a/components/script/dom/animationevent.rs +++ b/components/script/dom/animationevent.rs @@ -39,7 +39,12 @@ impl AnimationEvent { Self::new_with_proto(window, None, type_, init) } - fn new_with_proto(window: &Window, proto: Option, type_: Atom, init: &AnimationEventInit) -> DomRoot { + fn new_with_proto( + window: &Window, + proto: Option, + type_: Atom, + init: &AnimationEventInit, + ) -> DomRoot { let ev = reflect_dom_object2(Box::new(AnimationEvent::new_inherited(init)), window, proto); { let event = ev.upcast::(); diff --git a/components/script/dom/audiobuffer.rs b/components/script/dom/audiobuffer.rs index 9d1e011066a..cbc00b250e1 100644 --- a/components/script/dom/audiobuffer.rs +++ b/components/script/dom/audiobuffer.rs @@ -84,7 +84,14 @@ impl AudioBuffer { sample_rate: f32, initial_data: Option<&[Vec]>, ) -> DomRoot { - Self::new_with_proto(global, None, number_of_channels, length, sample_rate, initial_data) + Self::new_with_proto( + global, + None, + number_of_channels, + length, + sample_rate, + initial_data, + ) } #[allow(unrooted_must_root)] diff --git a/components/script/dom/audiocontext.rs b/components/script/dom/audiocontext.rs index 1dac9a00cf6..305c8cd4092 100644 --- a/components/script/dom/audiocontext.rs +++ b/components/script/dom/audiocontext.rs @@ -80,7 +80,11 @@ impl AudioContext { } #[allow(unrooted_must_root)] - fn new(window: &Window, proto: Option, options: &AudioContextOptions) -> DomRoot { + fn new( + window: &Window, + proto: Option, + options: &AudioContextOptions, + ) -> DomRoot { let pipeline_id = window.pipeline_id(); let context = AudioContext::new_inherited(options, pipeline_id); let context = reflect_dom_object2(Box::new(context), window, proto); diff --git a/components/script/dom/bindings/htmlconstructor.rs b/components/script/dom/bindings/htmlconstructor.rs index 5d74f153c8b..8a16cf2e6de 100644 --- a/components/script/dom/bindings/htmlconstructor.rs +++ b/components/script/dom/bindings/htmlconstructor.rs @@ -230,7 +230,13 @@ unsafe fn html_constructor( let element = if definition.is_autonomous() { DomRoot::upcast(HTMLElement::new(name.local, None, &*document, None)) } else { - create_native_html_element(name, None, &*document, ElementCreator::ScriptCreated, None) + create_native_html_element( + name, + None, + &*document, + ElementCreator::ScriptCreated, + None, + ) }; // Step 8.2 is performed in the generated caller code. diff --git a/components/script/dom/bindings/interface.rs b/components/script/dom/bindings/interface.rs index 14546d214ea..6fa7591b41b 100644 --- a/components/script/dom/bindings/interface.rs +++ b/components/script/dom/bindings/interface.rs @@ -11,18 +11,24 @@ use crate::dom::bindings::conversions::{get_dom_class, DOM_OBJECT_SLOT}; use crate::dom::bindings::guard::Guard; use crate::dom::bindings::principals::ServoJSPrincipals; use crate::dom::bindings::utils::{ - get_proto_or_iface_array, ProtoOrIfaceArray, DOM_PROTOTYPE_SLOT, JSCLASS_DOM_GLOBAL, - DOMJSClass, + get_proto_or_iface_array, DOMJSClass, ProtoOrIfaceArray, DOM_PROTOTYPE_SLOT, JSCLASS_DOM_GLOBAL, }; use crate::script_runtime::JSContext as SafeJSContext; use js::error::throw_type_error; use js::glue::UncheckedUnwrapObject; +use js::jsapi::CheckedUnwrapStatic; +use js::jsapi::CurrentGlobalOrNull; +use js::jsapi::GetFunctionRealm; +use js::jsapi::GetNonCCWObjectGlobal; +use js::jsapi::GetRealmGlobalOrNull; use js::jsapi::GetWellKnownSymbol; use js::jsapi::HandleObject as RawHandleObject; +use js::jsapi::JS_GetProperty; +use js::jsapi::JS_WrapObject; use js::jsapi::{jsid, JSClass, JSClassOps}; use js::jsapi::{ - Compartment, CompartmentSpecifier, IsSharableCompartment, IsSystemCompartment, - JS_IterateCompartments, JS::CompartmentIterResult, CallArgs, + CallArgs, Compartment, CompartmentSpecifier, IsSharableCompartment, IsSystemCompartment, + JS_IterateCompartments, JS::CompartmentIterResult, }; use js::jsapi::{JSAutoRealm, JSContext, JSFunctionSpec, JSObject, JSFUN_CONSTRUCTOR}; use js::jsapi::{JSPropertySpec, JSString, JSTracer, JS_AtomizeAndPinString}; @@ -32,15 +38,8 @@ use js::jsapi::{JS_NewStringCopyN, JS_SetReservedSlot}; use js::jsapi::{ObjectOps, OnNewGlobalHookOption, SymbolCode}; use js::jsapi::{TrueHandleValue, Value}; use js::jsapi::{JSPROP_PERMANENT, JSPROP_READONLY, JSPROP_RESOLVING}; -use js::jsapi::CheckedUnwrapStatic; -use js::jsapi::JS_GetProperty; -use js::jsapi::GetFunctionRealm; -use js::jsapi::GetRealmGlobalOrNull; -use js::jsapi::GetNonCCWObjectGlobal; -use js::jsapi::JS_WrapObject; -use js::jsapi::CurrentGlobalOrNull; -use js::jsval::{JSVal, PrivateValue}; use js::jsval::NullValue; +use js::jsval::{JSVal, PrivateValue}; use js::rust::is_dom_class; use js::rust::wrappers::JS_FireOnNewGlobalObject; use js::rust::wrappers::RUST_SYMBOL_TO_JSID; @@ -603,9 +602,7 @@ pub fn define_dom_interface( assert!(!proto.is_null()); } -fn get_proto_id_for_new_target( - new_target: HandleObject, -) -> Option { +fn get_proto_id_for_new_target(new_target: HandleObject) -> Option { unsafe { let new_target_class = get_object_class(*new_target); if is_dom_class(&*new_target_class) { @@ -644,18 +641,17 @@ pub fn get_desired_proto( rooted!(in(*cx) let original_new_target = *new_target); // See whether we have a known DOM constructor here, such that we can take a // fast path. - let target_proto_id = get_proto_id_for_new_target(new_target.handle()) - .or_else(|| { - // We might still have a cross-compartment wrapper for a known DOM - // constructor. CheckedUnwrapStatic is fine here, because we're looking for - // DOM constructors and those can't be cross-origin objects. - *new_target = CheckedUnwrapStatic(*new_target); - if !new_target.is_null() && &*new_target != &*original_new_target { - get_proto_id_for_new_target(new_target.handle()) - } else { - None - } - }); + let target_proto_id = get_proto_id_for_new_target(new_target.handle()).or_else(|| { + // We might still have a cross-compartment wrapper for a known DOM + // constructor. CheckedUnwrapStatic is fine here, because we're looking for + // DOM constructors and those can't be cross-origin objects. + *new_target = CheckedUnwrapStatic(*new_target); + if !new_target.is_null() && &*new_target != &*original_new_target { + get_proto_id_for_new_target(new_target.handle()) + } else { + None + } + }); if let Some(proto_id) = target_proto_id { let global = GetNonCCWObjectGlobal(*new_target); @@ -663,7 +659,7 @@ pub fn get_desired_proto( desired_proto.set((*proto_or_iface_cache)[proto_id as usize]); if &*new_target != &*original_new_target { if !JS_WrapObject(*cx, desired_proto.into()) { - return Err(()); + return Err(()); } } return Ok(()); @@ -674,7 +670,12 @@ pub fn get_desired_proto( // the fallback prototype we determine the fallback based on the proto id we // were handed. rooted!(in(*cx) let mut proto_val = NullValue()); - if !JS_GetProperty(*cx, original_new_target.handle().into(), b"prototype\0".as_ptr() as *const libc::c_char, proto_val.handle_mut().into()) { + if !JS_GetProperty( + *cx, + original_new_target.handle().into(), + b"prototype\0".as_ptr() as *const libc::c_char, + proto_val.handle_mut().into(), + ) { return Err(()); } @@ -699,7 +700,7 @@ pub fn get_desired_proto( global.handle(), ProtoOrIfaceIndex::ID(proto_id), creator, - desired_proto + desired_proto, ); if desired_proto.is_null() { return Err(()); @@ -707,6 +708,6 @@ pub fn get_desired_proto( } maybe_wrap_object(*cx, desired_proto); - return Ok(()) + return Ok(()); } } diff --git a/components/script/dom/bindings/iterable.rs b/components/script/dom/bindings/iterable.rs index 9c7da60b037..566d53c584a 100644 --- a/components/script/dom/bindings/iterable.rs +++ b/components/script/dom/bindings/iterable.rs @@ -20,7 +20,7 @@ use dom_struct::dom_struct; use js::conversions::ToJSValConvertible; use js::jsapi::{Heap, JSObject}; use js::jsval::UndefinedValue; -use js::rust::{HandleValue, MutableHandleObject, HandleObject}; +use js::rust::{HandleObject, HandleValue, MutableHandleObject}; use std::cell::Cell; use std::ptr; use std::ptr::NonNull; @@ -118,7 +118,12 @@ impl IterableIterator { } impl DomObjectWrap for IterableIterator { - const WRAP: unsafe fn(JSContext, &GlobalScope, Option, Box) -> Root> = T::ITER_WRAP; + const WRAP: unsafe fn( + JSContext, + &GlobalScope, + Option, + Box, + ) -> Root> = T::ITER_WRAP; } fn dict_return( diff --git a/components/script/dom/bindings/reflector.rs b/components/script/dom/bindings/reflector.rs index 418cad032e3..dfdbe5fd145 100644 --- a/components/script/dom/bindings/reflector.rs +++ b/components/script/dom/bindings/reflector.rs @@ -118,7 +118,12 @@ impl MutDomObject for Reflector { /// A trait to provide a function pointer to wrap function for DOM objects. pub trait DomObjectWrap: Sized + DomObject { /// Function pointer to the general wrap function type - const WRAP: unsafe fn(JSContext, &GlobalScope, Option, Box) -> Root>; + const WRAP: unsafe fn( + JSContext, + &GlobalScope, + Option, + Box, + ) -> Root>; } /// A trait to provide a function pointer to wrap function for diff --git a/components/script/dom/blob.rs b/components/script/dom/blob.rs index fe0bd2647a4..9400d9f133d 100644 --- a/components/script/dom/blob.rs +++ b/components/script/dom/blob.rs @@ -42,8 +42,13 @@ impl Blob { Self::new_with_proto(global, None, blob_impl) } - fn new_with_proto(global: &GlobalScope, proto: Option, blob_impl: BlobImpl) -> DomRoot { - let dom_blob = reflect_dom_object2(Box::new(Blob::new_inherited(&blob_impl)), global, proto); + fn new_with_proto( + global: &GlobalScope, + proto: Option, + blob_impl: BlobImpl, + ) -> DomRoot { + let dom_blob = + reflect_dom_object2(Box::new(Blob::new_inherited(&blob_impl)), global, proto); global.track_blob(&dom_blob, blob_impl); dom_blob } diff --git a/components/script/dom/broadcastchannel.rs b/components/script/dom/broadcastchannel.rs index 57aa572e652..17c56827fcb 100644 --- a/components/script/dom/broadcastchannel.rs +++ b/components/script/dom/broadcastchannel.rs @@ -12,7 +12,7 @@ use crate::dom::eventtarget::EventTarget; use crate::dom::globalscope::GlobalScope; use crate::script_runtime::JSContext as SafeJSContext; use dom_struct::dom_struct; -use js::rust::{HandleValue, HandleObject}; +use js::rust::{HandleObject, HandleValue}; use script_traits::BroadcastMsg; use std::cell::Cell; use uuid::Uuid; @@ -28,12 +28,24 @@ pub struct BroadcastChannel { impl BroadcastChannel { /// #[allow(non_snake_case)] - pub fn Constructor(global: &GlobalScope, proto: Option, name: DOMString) -> DomRoot { + pub fn Constructor( + global: &GlobalScope, + proto: Option, + name: DOMString, + ) -> DomRoot { BroadcastChannel::new(global, proto, name) } - fn new(global: &GlobalScope, proto: Option, name: DOMString) -> DomRoot { - let channel = reflect_dom_object2(Box::new(BroadcastChannel::new_inherited(name)), global, proto); + fn new( + global: &GlobalScope, + proto: Option, + name: DOMString, + ) -> DomRoot { + let channel = reflect_dom_object2( + Box::new(BroadcastChannel::new_inherited(name)), + global, + proto, + ); global.track_broadcast_channel(&*channel); channel } diff --git a/components/script/dom/closeevent.rs b/components/script/dom/closeevent.rs index 81bf60c99af..24609621633 100644 --- a/components/script/dom/closeevent.rs +++ b/components/script/dom/closeevent.rs @@ -45,14 +45,7 @@ impl CloseEvent { reason: DOMString, ) -> DomRoot { Self::new_with_proto( - global, - None, - type_, - bubbles, - cancelable, - wasClean, - code, - reason, + global, None, type_, bubbles, cancelable, wasClean, code, reason, ) } diff --git a/components/script/dom/comment.rs b/components/script/dom/comment.rs index 96df242a5df..4c5ca9d488e 100644 --- a/components/script/dom/comment.rs +++ b/components/script/dom/comment.rs @@ -26,12 +26,24 @@ impl Comment { } } - pub fn new(text: DOMString, document: &Document, proto: Option) -> DomRoot { - Node::reflect_node_with_proto(Box::new(Comment::new_inherited(text, document)), document, proto) + pub fn new( + text: DOMString, + document: &Document, + proto: Option, + ) -> DomRoot { + Node::reflect_node_with_proto( + Box::new(Comment::new_inherited(text, document)), + document, + proto, + ) } #[allow(non_snake_case)] - pub fn Constructor(window: &Window, proto: Option, data: DOMString) -> Fallible> { + pub fn Constructor( + window: &Window, + proto: Option, + data: DOMString, + ) -> Fallible> { let document = window.Document(); Ok(Comment::new(data, &document, proto)) } diff --git a/components/script/dom/compositionevent.rs b/components/script/dom/compositionevent.rs index 58c31c6e215..6739df7a576 100644 --- a/components/script/dom/compositionevent.rs +++ b/components/script/dom/compositionevent.rs @@ -43,14 +43,7 @@ impl CompositionEvent { data: DOMString, ) -> DomRoot { Self::new_with_proto( - window, - None, - type_, - can_bubble, - cancelable, - view, - detail, - data, + window, None, type_, can_bubble, cancelable, view, detail, data, ) } diff --git a/components/script/dom/customevent.rs b/components/script/dom/customevent.rs index c3f6afd26a8..8b5c2ec14d0 100644 --- a/components/script/dom/customevent.rs +++ b/components/script/dom/customevent.rs @@ -41,7 +41,10 @@ impl CustomEvent { Self::new_uninitialized_with_proto(global, None) } - fn new_uninitialized_with_proto(global: &GlobalScope, proto: Option) -> DomRoot { + fn new_uninitialized_with_proto( + global: &GlobalScope, + proto: Option, + ) -> DomRoot { reflect_dom_object2(Box::new(CustomEvent::new_inherited()), global, proto) } diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index 4e8d1283c4d..eb7862b8211 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -3249,7 +3249,10 @@ impl Document { // https://dom.spec.whatwg.org/#dom-document-document #[allow(non_snake_case)] - pub fn Constructor(window: &Window, proto: Option) -> Fallible> { + pub fn Constructor( + window: &Window, + proto: Option, + ) -> Fallible> { let doc = window.Document(); let docloader = DocumentLoader::new(&*doc.loader()); Ok(Document::new_with_proto( diff --git a/components/script/dom/documentfragment.rs b/components/script/dom/documentfragment.rs index 716f3dabcb5..8f35a0d8781 100644 --- a/components/script/dom/documentfragment.rs +++ b/components/script/dom/documentfragment.rs @@ -42,7 +42,10 @@ impl DocumentFragment { Self::new_with_proto(document, None) } - fn new_with_proto(document: &Document, proto: Option) -> DomRoot { + fn new_with_proto( + document: &Document, + proto: Option, + ) -> DomRoot { Node::reflect_node_with_proto( Box::new(DocumentFragment::new_inherited(document)), document, @@ -51,7 +54,10 @@ impl DocumentFragment { } #[allow(non_snake_case)] - pub fn Constructor(window: &Window, proto: Option) -> Fallible> { + pub fn Constructor( + window: &Window, + proto: Option, + ) -> Fallible> { let document = window.Document(); Ok(DocumentFragment::new_with_proto(&document, proto)) diff --git a/components/script/dom/domimplementation.rs b/components/script/dom/domimplementation.rs index 31d1d116959..1a07c1b5e8c 100644 --- a/components/script/dom/domimplementation.rs +++ b/components/script/dom/domimplementation.rs @@ -167,14 +167,22 @@ impl DOMImplementationMethods for DOMImplementation { { // Step 4. let doc_node = doc.upcast::(); - let doc_html = - DomRoot::upcast::(HTMLHtmlElement::new(local_name!("html"), None, &doc, None)); + let doc_html = DomRoot::upcast::(HTMLHtmlElement::new( + local_name!("html"), + None, + &doc, + None, + )); doc_node.AppendChild(&doc_html).expect("Appending failed"); { // Step 5. - let doc_head = - DomRoot::upcast::(HTMLHeadElement::new(local_name!("head"), None, &doc, None)); + let doc_head = DomRoot::upcast::(HTMLHeadElement::new( + local_name!("head"), + None, + &doc, + None, + )); doc_html.AppendChild(&doc_head).unwrap(); // Step 6. diff --git a/components/script/dom/dommatrix.rs b/components/script/dom/dommatrix.rs index 2cbc9aa011c..54948489d11 100644 --- a/components/script/dom/dommatrix.rs +++ b/components/script/dom/dommatrix.rs @@ -32,7 +32,12 @@ impl DOMMatrix { } #[allow(unrooted_must_root)] - fn new_with_proto(global: &GlobalScope, proto: Option, is2D: bool, matrix: Transform3D) -> DomRoot { + fn new_with_proto( + global: &GlobalScope, + proto: Option, + is2D: bool, + matrix: Transform3D, + ) -> DomRoot { let dommatrix = Self::new_inherited(is2D, matrix); reflect_dom_object2(Box::new(dommatrix), global, proto) } @@ -50,7 +55,12 @@ impl DOMMatrix { init: Option, ) -> Fallible> { if init.is_none() { - return Ok(Self::new_with_proto(global, proto, true, Transform3D::identity())); + return Ok(Self::new_with_proto( + global, + proto, + true, + Transform3D::identity(), + )); } match init.unwrap() { StringOrUnrestrictedDoubleSequence::String(ref s) => { diff --git a/components/script/dom/dommatrixreadonly.rs b/components/script/dom/dommatrixreadonly.rs index dd78a3935ae..3b99a7a21b7 100644 --- a/components/script/dom/dommatrixreadonly.rs +++ b/components/script/dom/dommatrixreadonly.rs @@ -45,7 +45,12 @@ impl DOMMatrixReadOnly { } #[allow(unrooted_must_root)] - fn new_with_proto(global: &GlobalScope, proto: Option, is2D: bool, matrix: Transform3D) -> DomRoot { + fn new_with_proto( + global: &GlobalScope, + proto: Option, + is2D: bool, + matrix: Transform3D, + ) -> DomRoot { let dommatrix = Self::new_inherited(is2D, matrix); reflect_dom_object2(Box::new(dommatrix), global, proto) } @@ -65,7 +70,12 @@ impl DOMMatrixReadOnly { init: Option, ) -> Fallible> { if init.is_none() { - return Ok(Self::new_with_proto(global, proto, true, Transform3D::identity())); + return Ok(Self::new_with_proto( + global, + proto, + true, + Transform3D::identity(), + )); } match init.unwrap() { StringOrUnrestrictedDoubleSequence::String(ref s) => { diff --git a/components/script/dom/domparser.rs b/components/script/dom/domparser.rs index 6e08fb10c4f..13db9b60f41 100644 --- a/components/script/dom/domparser.rs +++ b/components/script/dom/domparser.rs @@ -42,7 +42,10 @@ impl DOMParser { } #[allow(non_snake_case)] - pub fn Constructor(window: &Window, proto: Option) -> Fallible> { + pub fn Constructor( + window: &Window, + proto: Option, + ) -> Fallible> { Ok(DOMParser::new(window, proto)) } } diff --git a/components/script/dom/dompoint.rs b/components/script/dom/dompoint.rs index 2e580d57457..79b0ea2b86a 100644 --- a/components/script/dom/dompoint.rs +++ b/components/script/dom/dompoint.rs @@ -30,7 +30,14 @@ impl DOMPoint { Self::new_with_proto(global, None, x, y, z, w) } - fn new_with_proto(global: &GlobalScope, proto: Option, x: f64, y: f64, z: f64, w: f64) -> DomRoot { + fn new_with_proto( + global: &GlobalScope, + proto: Option, + x: f64, + y: f64, + z: f64, + w: f64, + ) -> DomRoot { reflect_dom_object2(Box::new(DOMPoint::new_inherited(x, y, z, w)), global, proto) } diff --git a/components/script/dom/dompointreadonly.rs b/components/script/dom/dompointreadonly.rs index 453642c0a00..77819e917fd 100644 --- a/components/script/dom/dompointreadonly.rs +++ b/components/script/dom/dompointreadonly.rs @@ -38,7 +38,14 @@ impl DOMPointReadOnly { Self::new_with_proto(global, None, x, y, z, w) } - fn new_with_proto(global: &GlobalScope, proto: Option, x: f64, y: f64, z: f64, w: f64) -> DomRoot { + fn new_with_proto( + global: &GlobalScope, + proto: Option, + x: f64, + y: f64, + z: f64, + w: f64, + ) -> DomRoot { reflect_dom_object2( Box::new(DOMPointReadOnly::new_inherited(x, y, z, w)), global, diff --git a/components/script/dom/domquad.rs b/components/script/dom/domquad.rs index 775dbf7321f..6cb4653b21f 100644 --- a/components/script/dom/domquad.rs +++ b/components/script/dom/domquad.rs @@ -54,7 +54,11 @@ impl DOMQuad { p3: &DOMPoint, p4: &DOMPoint, ) -> DomRoot { - reflect_dom_object2(Box::new(DOMQuad::new_inherited(p1, p2, p3, p4)), global, proto) + reflect_dom_object2( + Box::new(DOMQuad::new_inherited(p1, p2, p3, p4)), + global, + proto, + ) } pub fn Constructor( diff --git a/components/script/dom/domrect.rs b/components/script/dom/domrect.rs index 8ab7daa2b57..6836b12127f 100644 --- a/components/script/dom/domrect.rs +++ b/components/script/dom/domrect.rs @@ -28,7 +28,14 @@ impl DOMRect { Self::new_with_proto(global, None, x, y, width, height) } - fn new_with_proto(global: &GlobalScope, proto: Option, x: f64, y: f64, width: f64, height: f64) -> DomRoot { + fn new_with_proto( + global: &GlobalScope, + proto: Option, + x: f64, + y: f64, + width: f64, + height: f64, + ) -> DomRoot { reflect_dom_object2( Box::new(DOMRect::new_inherited(x, y, width, height)), global, diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index dc4b4096469..f2de9aaa1a1 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -1821,7 +1821,12 @@ impl Element { { DomRoot::from_ref(elem) }, - _ => DomRoot::upcast(HTMLBodyElement::new(local_name!("body"), None, owner_doc, None)), + _ => DomRoot::upcast(HTMLBodyElement::new( + local_name!("body"), + None, + owner_doc, + None, + )), } } diff --git a/components/script/dom/errorevent.rs b/components/script/dom/errorevent.rs index cee89cae434..6f5daebed37 100644 --- a/components/script/dom/errorevent.rs +++ b/components/script/dom/errorevent.rs @@ -61,16 +61,7 @@ impl ErrorEvent { error: HandleValue, ) -> DomRoot { Self::new_with_proto( - global, - None, - type_, - bubbles, - cancelable, - message, - filename, - lineno, - colno, - error, + global, None, type_, bubbles, cancelable, message, filename, lineno, colno, error, ) } diff --git a/components/script/dom/event.rs b/components/script/dom/event.rs index 205bf58e37e..48467485dfb 100644 --- a/components/script/dom/event.rs +++ b/components/script/dom/event.rs @@ -76,7 +76,10 @@ impl Event { Self::new_uninitialized_with_proto(global, None) } - pub fn new_uninitialized_with_proto(global: &GlobalScope, proto: Option) -> DomRoot { + pub fn new_uninitialized_with_proto( + global: &GlobalScope, + proto: Option, + ) -> DomRoot { reflect_dom_object2(Box::new(Event::new_inherited()), global, proto) } @@ -110,7 +113,13 @@ impl Event { ) -> Fallible> { let bubbles = EventBubbles::from(init.bubbles); let cancelable = EventCancelable::from(init.cancelable); - Ok(Event::new_with_proto(global, proto, Atom::from(type_), bubbles, cancelable)) + Ok(Event::new_with_proto( + global, + proto, + Atom::from(type_), + bubbles, + cancelable, + )) } pub fn init_event(&self, type_: Atom, bubbles: bool, cancelable: bool) { diff --git a/components/script/dom/eventsource.rs b/components/script/dom/eventsource.rs index 7897c5b79fd..639eba4f949 100644 --- a/components/script/dom/eventsource.rs +++ b/components/script/dom/eventsource.rs @@ -460,7 +460,12 @@ impl EventSource { } } - fn new(global: &GlobalScope, proto: Option, url: ServoUrl, with_credentials: bool) -> DomRoot { + fn new( + global: &GlobalScope, + proto: Option, + url: ServoUrl, + with_credentials: bool, + ) -> DomRoot { reflect_dom_object2( Box::new(EventSource::new_inherited(url, with_credentials)), global, diff --git a/components/script/dom/eventtarget.rs b/components/script/dom/eventtarget.rs index 861e113f6ed..0ed9d2c10ba 100644 --- a/components/script/dom/eventtarget.rs +++ b/components/script/dom/eventtarget.rs @@ -39,7 +39,7 @@ use fnv::FnvHasher; use js::jsapi::JS_GetFunctionObject; use js::rust::transform_u16_to_source_text; use js::rust::wrappers::CompileFunction; -use js::rust::{CompileOptionsWrapper, RootedObjectVectorWrapper, HandleObject}; +use js::rust::{CompileOptionsWrapper, HandleObject, RootedObjectVectorWrapper}; use libc::c_char; use servo_atoms::Atom; use servo_url::ServoUrl; @@ -360,7 +360,10 @@ impl EventTarget { } #[allow(non_snake_case)] - pub fn Constructor(global: &GlobalScope, proto: Option) -> Fallible> { + pub fn Constructor( + global: &GlobalScope, + proto: Option, + ) -> Fallible> { Ok(EventTarget::new(global, proto)) } diff --git a/components/script/dom/filereader.rs b/components/script/dom/filereader.rs index bc5024cb1fa..b89440ab600 100644 --- a/components/script/dom/filereader.rs +++ b/components/script/dom/filereader.rs @@ -157,7 +157,10 @@ impl FileReader { } #[allow(non_snake_case)] - pub fn Constructor(global: &GlobalScope, proto: Option) -> Fallible> { + pub fn Constructor( + global: &GlobalScope, + proto: Option, + ) -> Fallible> { Ok(FileReader::new(global, proto)) } diff --git a/components/script/dom/filereadersync.rs b/components/script/dom/filereadersync.rs index 0f74ed504bd..d92a161759b 100644 --- a/components/script/dom/filereadersync.rs +++ b/components/script/dom/filereadersync.rs @@ -36,7 +36,10 @@ impl FileReaderSync { } #[allow(non_snake_case)] - pub fn Constructor(global: &GlobalScope, proto: Option) -> Fallible> { + pub fn Constructor( + global: &GlobalScope, + proto: Option, + ) -> Fallible> { Ok(FileReaderSync::new(global, proto)) } diff --git a/components/script/dom/focusevent.rs b/components/script/dom/focusevent.rs index 76d546a541e..d31059b09cc 100644 --- a/components/script/dom/focusevent.rs +++ b/components/script/dom/focusevent.rs @@ -36,7 +36,10 @@ impl FocusEvent { Self::new_uninitialized_with_proto(window, None) } - pub fn new_uninitialized_with_proto(window: &Window, proto: Option) -> DomRoot { + pub fn new_uninitialized_with_proto( + window: &Window, + proto: Option, + ) -> DomRoot { reflect_dom_object2(Box::new(FocusEvent::new_inherited()), window, proto) } diff --git a/components/script/dom/formdata.rs b/components/script/dom/formdata.rs index 3d1d28a0ddc..c4234ff83e7 100644 --- a/components/script/dom/formdata.rs +++ b/components/script/dom/formdata.rs @@ -46,8 +46,16 @@ impl FormData { Self::new_with_proto(form_datums, global, None) } - fn new_with_proto(form_datums: Option>, global: &GlobalScope, proto: Option) -> DomRoot { - reflect_dom_object2(Box::new(FormData::new_inherited(form_datums)), global, proto) + fn new_with_proto( + form_datums: Option>, + global: &GlobalScope, + proto: Option, + ) -> DomRoot { + reflect_dom_object2( + Box::new(FormData::new_inherited(form_datums)), + global, + proto, + ) } // https://xhr.spec.whatwg.org/#dom-formdata diff --git a/components/script/dom/formdataevent.rs b/components/script/dom/formdataevent.rs index 00b6c0718b3..2f4b765290c 100644 --- a/components/script/dom/formdataevent.rs +++ b/components/script/dom/formdataevent.rs @@ -33,14 +33,7 @@ impl FormDataEvent { cancelable: EventCancelable, form_data: &FormData, ) -> DomRoot { - Self::new_with_proto( - global, - None, - type_, - can_bubble, - cancelable, - form_data, - ) + Self::new_with_proto(global, None, type_, can_bubble, cancelable, form_data) } fn new_with_proto( diff --git a/components/script/dom/gamepadevent.rs b/components/script/dom/gamepadevent.rs index effacc6eeb2..1553b2eb039 100644 --- a/components/script/dom/gamepadevent.rs +++ b/components/script/dom/gamepadevent.rs @@ -55,7 +55,11 @@ impl GamepadEvent { cancelable: bool, gamepad: &Gamepad, ) -> DomRoot { - let ev = reflect_dom_object2(Box::new(GamepadEvent::new_inherited(&gamepad)), global, proto); + let ev = reflect_dom_object2( + Box::new(GamepadEvent::new_inherited(&gamepad)), + global, + proto, + ); { let event = ev.upcast::(); event.init_event(type_, bubbles, cancelable); diff --git a/components/script/dom/gpuoutofmemoryerror.rs b/components/script/dom/gpuoutofmemoryerror.rs index 0689e8df3bb..5b6e7053397 100644 --- a/components/script/dom/gpuoutofmemoryerror.rs +++ b/components/script/dom/gpuoutofmemoryerror.rs @@ -25,7 +25,11 @@ impl GPUOutOfMemoryError { } fn new_with_proto(global: &GlobalScope, proto: Option) -> DomRoot { - reflect_dom_object2(Box::new(GPUOutOfMemoryError::new_inherited()), global, proto) + reflect_dom_object2( + Box::new(GPUOutOfMemoryError::new_inherited()), + global, + proto, + ) } /// https://gpuweb.github.io/gpuweb/#dom-gpuoutofmemoryerror-gpuoutofmemoryerror diff --git a/components/script/dom/gpuvalidationerror.rs b/components/script/dom/gpuvalidationerror.rs index e1456b510a6..40c75c31ec6 100644 --- a/components/script/dom/gpuvalidationerror.rs +++ b/components/script/dom/gpuvalidationerror.rs @@ -28,13 +28,25 @@ impl GPUValidationError { Self::new_with_proto(global, None, message) } - fn new_with_proto(global: &GlobalScope, proto: Option, message: DOMString) -> DomRoot { - reflect_dom_object2(Box::new(GPUValidationError::new_inherited(message)), global, proto) + fn new_with_proto( + global: &GlobalScope, + proto: Option, + message: DOMString, + ) -> DomRoot { + reflect_dom_object2( + Box::new(GPUValidationError::new_inherited(message)), + global, + proto, + ) } /// https://gpuweb.github.io/gpuweb/#dom-gpuvalidationerror-gpuvalidationerror #[allow(non_snake_case)] - pub fn Constructor(global: &GlobalScope, proto: Option, message: DOMString) -> DomRoot { + pub fn Constructor( + global: &GlobalScope, + proto: Option, + message: DOMString, + ) -> DomRoot { GPUValidationError::new_with_proto(global, proto, message) } } diff --git a/components/script/dom/hashchangeevent.rs b/components/script/dom/hashchangeevent.rs index 8dbb2fd704a..18557444bdd 100644 --- a/components/script/dom/hashchangeevent.rs +++ b/components/script/dom/hashchangeevent.rs @@ -37,7 +37,10 @@ impl HashChangeEvent { Self::new_uninitialized_with_proto(window, None) } - fn new_uninitialized_with_proto(window: &Window, proto: Option) -> DomRoot { + fn new_uninitialized_with_proto( + window: &Window, + proto: Option, + ) -> DomRoot { reflect_dom_object2( Box::new(HashChangeEvent::new_inherited(String::new(), String::new())), window, diff --git a/components/script/dom/htmlanchorelement.rs b/components/script/dom/htmlanchorelement.rs index e36119dd790..aca8e99b95a 100644 --- a/components/script/dom/htmlanchorelement.rs +++ b/components/script/dom/htmlanchorelement.rs @@ -63,7 +63,7 @@ impl HTMLAnchorElement { local_name: LocalName, prefix: Option, document: &Document, - proto: Option, + proto: Option, ) -> DomRoot { Node::reflect_node_with_proto( Box::new(HTMLAnchorElement::new_inherited( diff --git a/components/script/dom/htmlaudioelement.rs b/components/script/dom/htmlaudioelement.rs index 661f882944a..1a2de74832e 100644 --- a/components/script/dom/htmlaudioelement.rs +++ b/components/script/dom/htmlaudioelement.rs @@ -51,7 +51,11 @@ impl HTMLAudioElement { // https://html.spec.whatwg.org/multipage/#dom-audio #[allow(non_snake_case)] - pub fn Audio(window: &Window, proto: Option, src: Option) -> Fallible> { + pub fn Audio( + window: &Window, + proto: Option, + src: Option, + ) -> Fallible> { let element = Element::create( QualName::new(None, ns!(html), local_name!("audio")), None, diff --git a/components/script/dom/htmlbrelement.rs b/components/script/dom/htmlbrelement.rs index a1388218ecb..9e0d64dbc51 100644 --- a/components/script/dom/htmlbrelement.rs +++ b/components/script/dom/htmlbrelement.rs @@ -31,7 +31,7 @@ impl HTMLBRElement { local_name: LocalName, prefix: Option, document: &Document, - proto: Option + proto: Option, ) -> DomRoot { Node::reflect_node_with_proto( Box::new(HTMLBRElement::new_inherited(local_name, prefix, document)), diff --git a/components/script/dom/htmlscriptelement.rs b/components/script/dom/htmlscriptelement.rs index 9fe67db44a0..e7e520e56bd 100644 --- a/components/script/dom/htmlscriptelement.rs +++ b/components/script/dom/htmlscriptelement.rs @@ -45,8 +45,8 @@ use ipc_channel::router::ROUTER; use js::jsapi::{CanCompileOffThread, CompileToStencilOffThread1, OffThreadToken}; use js::jsval::UndefinedValue; use js::rust::{ - transform_str_to_source_text, CompileOptionsWrapper, FinishOffThreadStencil, Stencil, - HandleObject, + transform_str_to_source_text, CompileOptionsWrapper, FinishOffThreadStencil, HandleObject, + Stencil, }; use msg::constellation_msg::PipelineId; use net_traits::request::{ diff --git a/components/script/dom/htmltableelement.rs b/components/script/dom/htmltableelement.rs index d807d14890c..50a1152fb7c 100644 --- a/components/script/dom/htmltableelement.rs +++ b/components/script/dom/htmltableelement.rs @@ -138,7 +138,8 @@ impl HTMLTableElement { return section; } - let section = HTMLTableSectionElement::new(atom.clone(), None, &document_from_node(self), None); + let section = + HTMLTableSectionElement::new(atom.clone(), None, &document_from_node(self), None); match atom { &local_name!("thead") => self.SetTHead(Some(§ion)), &local_name!("tfoot") => self.SetTFoot(Some(§ion)), @@ -299,8 +300,12 @@ impl HTMLTableElementMethods for HTMLTableElement { // https://html.spec.whatwg.org/multipage/#dom-table-createtbody fn CreateTBody(&self) -> DomRoot { - let tbody = - HTMLTableSectionElement::new(local_name!("tbody"), None, &document_from_node(self), None); + let tbody = HTMLTableSectionElement::new( + local_name!("tbody"), + None, + &document_from_node(self), + None, + ); let node = self.upcast::(); let last_tbody = node .rev_children() @@ -322,7 +327,8 @@ impl HTMLTableElementMethods for HTMLTableElement { return Err(Error::IndexSize); } - let new_row = HTMLTableRowElement::new(local_name!("tr"), None, &document_from_node(self), None); + let new_row = + HTMLTableRowElement::new(local_name!("tr"), None, &document_from_node(self), None); let node = self.upcast::(); if number_of_row_elements == 0 { diff --git a/components/script/dom/imagedata.rs b/components/script/dom/imagedata.rs index 42638f40351..27129559475 100644 --- a/components/script/dom/imagedata.rs +++ b/components/script/dom/imagedata.rs @@ -123,7 +123,12 @@ impl ImageData { } // https://html.spec.whatwg.org/multipage/#pixel-manipulation:dom-imagedata-3 #[allow(unsafe_code, non_snake_case)] - pub fn Constructor(global: &GlobalScope, proto: Option, width: u32, height: u32) -> Fallible> { + pub fn Constructor( + global: &GlobalScope, + proto: Option, + width: u32, + height: u32, + ) -> Fallible> { unsafe { Self::new_without_jsobject(global, proto, width, height) } } diff --git a/components/script/dom/keyboardevent.rs b/components/script/dom/keyboardevent.rs index a3dd23bfb21..1a247c46287 100644 --- a/components/script/dom/keyboardevent.rs +++ b/components/script/dom/keyboardevent.rs @@ -15,8 +15,8 @@ use crate::dom::event::Event; use crate::dom::uievent::UIEvent; use crate::dom::window::Window; use dom_struct::dom_struct; -use keyboard_types::{Key, Modifiers}; use js::rust::HandleObject; +use keyboard_types::{Key, Modifiers}; use std::cell::Cell; unsafe_no_jsmanaged_fields!(Key); @@ -56,7 +56,10 @@ impl KeyboardEvent { Self::new_uninitialized_with_proto(window, None) } - fn new_uninitialized_with_proto(window: &Window, proto: Option) -> DomRoot { + fn new_uninitialized_with_proto( + window: &Window, + proto: Option, + ) -> DomRoot { reflect_dom_object2(Box::new(KeyboardEvent::new_inherited()), window, proto) } diff --git a/components/script/dom/mediametadata.rs b/components/script/dom/mediametadata.rs index 24f9a31120c..94e41bc058d 100644 --- a/components/script/dom/mediametadata.rs +++ b/components/script/dom/mediametadata.rs @@ -38,7 +38,11 @@ impl MediaMetadata { Self::new_with_proto(global, None, init) } - fn new_with_proto(global: &Window, proto: Option, init: &MediaMetadataInit) -> DomRoot { + fn new_with_proto( + global: &Window, + proto: Option, + init: &MediaMetadataInit, + ) -> DomRoot { reflect_dom_object2(Box::new(MediaMetadata::new_inherited(init)), global, proto) } diff --git a/components/script/dom/mediastream.rs b/components/script/dom/mediastream.rs index 812552d3793..b633fbb8915 100644 --- a/components/script/dom/mediastream.rs +++ b/components/script/dom/mediastream.rs @@ -51,11 +51,18 @@ impl MediaStream { this } - pub fn Constructor(global: &Window, proto: Option) -> Fallible> { + pub fn Constructor( + global: &Window, + proto: Option, + ) -> Fallible> { Ok(MediaStream::new_with_proto(&global.global(), proto)) } - pub fn Constructor_(_: &Window, proto: Option, stream: &MediaStream) -> Fallible> { + pub fn Constructor_( + _: &Window, + proto: Option, + stream: &MediaStream, + ) -> Fallible> { Ok(stream.clone_with_proto(proto)) } diff --git a/components/script/dom/mediastreamtrackaudiosourcenode.rs b/components/script/dom/mediastreamtrackaudiosourcenode.rs index 387ad20d741..b311d2f8058 100644 --- a/components/script/dom/mediastreamtrackaudiosourcenode.rs +++ b/components/script/dom/mediastreamtrackaudiosourcenode.rs @@ -66,6 +66,11 @@ impl MediaStreamTrackAudioSourceNode { context: &AudioContext, options: &MediaStreamTrackAudioSourceOptions, ) -> Fallible> { - MediaStreamTrackAudioSourceNode::new_with_proto(window, proto, context, &options.mediaStreamTrack) + MediaStreamTrackAudioSourceNode::new_with_proto( + window, + proto, + context, + &options.mediaStreamTrack, + ) } } diff --git a/components/script/dom/messagechannel.rs b/components/script/dom/messagechannel.rs index f3df61924a5..a973dccf4de 100644 --- a/components/script/dom/messagechannel.rs +++ b/components/script/dom/messagechannel.rs @@ -20,7 +20,10 @@ pub struct MessageChannel { impl MessageChannel { /// #[allow(non_snake_case)] - pub fn Constructor(global: &GlobalScope, proto: Option) -> DomRoot { + pub fn Constructor( + global: &GlobalScope, + proto: Option, + ) -> DomRoot { MessageChannel::new(global, proto) } diff --git a/components/script/dom/messageevent.rs b/components/script/dom/messageevent.rs index 9c2428912f8..45a7cf03288 100644 --- a/components/script/dom/messageevent.rs +++ b/components/script/dom/messageevent.rs @@ -94,7 +94,10 @@ impl MessageEvent { Self::new_uninitialized_with_proto(global, None) } - fn new_uninitialized_with_proto(global: &GlobalScope, proto: Option) -> DomRoot { + fn new_uninitialized_with_proto( + global: &GlobalScope, + proto: Option, + ) -> DomRoot { MessageEvent::new_initialized( global, proto, @@ -164,7 +167,8 @@ impl MessageEvent { lastEventId: DOMString, ports: Vec>, ) -> DomRoot { - let ev = MessageEvent::new_initialized(global, proto, data, origin, source, lastEventId, ports); + let ev = + MessageEvent::new_initialized(global, proto, data, origin, source, lastEventId, ports); { let event = ev.upcast::(); event.init_event(type_, bubbles, cancelable); diff --git a/components/script/dom/mouseevent.rs b/components/script/dom/mouseevent.rs index 97399e5ea07..7f9992ab88e 100644 --- a/components/script/dom/mouseevent.rs +++ b/components/script/dom/mouseevent.rs @@ -75,7 +75,10 @@ impl MouseEvent { Self::new_uninitialized_with_proto(window, None) } - fn new_uninitialized_with_proto(window: &Window, proto: Option) -> DomRoot { + fn new_uninitialized_with_proto( + window: &Window, + proto: Option, + ) -> DomRoot { reflect_dom_object2(Box::new(MouseEvent::new_inherited()), window, proto) } diff --git a/components/script/dom/mutationobserver.rs b/components/script/dom/mutationobserver.rs index c822fd9a290..01adc5241a7 100644 --- a/components/script/dom/mutationobserver.rs +++ b/components/script/dom/mutationobserver.rs @@ -65,7 +65,11 @@ pub struct ObserverOptions { } impl MutationObserver { - fn new_with_proto(global: &Window, proto: Option, callback: Rc) -> DomRoot { + fn new_with_proto( + global: &Window, + proto: Option, + callback: Rc, + ) -> DomRoot { let boxed_observer = Box::new(MutationObserver::new_inherited(callback)); reflect_dom_object2(boxed_observer, global, proto) } diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index 4908fc65e9b..873e7225229 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -1760,7 +1760,11 @@ impl Node { Self::reflect_node_with_proto(node, document, None) } - pub fn reflect_node_with_proto(node: Box, document: &Document, proto: Option) -> DomRoot + pub fn reflect_node_with_proto( + node: Box, + document: &Document, + proto: Option, + ) -> DomRoot where N: DerivedFrom + DomObject + DomObjectWrap, { diff --git a/components/script/dom/pagetransitionevent.rs b/components/script/dom/pagetransitionevent.rs index 8a9ec07978f..c35e24d1628 100644 --- a/components/script/dom/pagetransitionevent.rs +++ b/components/script/dom/pagetransitionevent.rs @@ -32,8 +32,15 @@ impl PageTransitionEvent { } } - fn new_uninitialized(window: &Window, proto: Option) -> DomRoot { - reflect_dom_object2(Box::new(PageTransitionEvent::new_inherited()), window, proto) + fn new_uninitialized( + window: &Window, + proto: Option, + ) -> DomRoot { + reflect_dom_object2( + Box::new(PageTransitionEvent::new_inherited()), + window, + proto, + ) } pub fn new( diff --git a/components/script/dom/performanceobserver.rs b/components/script/dom/performanceobserver.rs index c3349dd3d87..2701f488a68 100644 --- a/components/script/dom/performanceobserver.rs +++ b/components/script/dom/performanceobserver.rs @@ -89,7 +89,12 @@ impl PerformanceObserver { proto: Option, callback: Rc, ) -> Fallible> { - Ok(PerformanceObserver::new_with_proto(global, proto, callback, Vec::new())) + Ok(PerformanceObserver::new_with_proto( + global, + proto, + callback, + Vec::new(), + )) } /// Buffer a new performance entry. diff --git a/components/script/dom/request.rs b/components/script/dom/request.rs index 1ddf1c7742a..10737e93555 100644 --- a/components/script/dom/request.rs +++ b/components/script/dom/request.rs @@ -440,7 +440,11 @@ impl Request { } impl Request { - fn from_net_request(global: &GlobalScope, proto: Option, net_request: NetTraitsRequest) -> DomRoot { + fn from_net_request( + global: &GlobalScope, + proto: Option, + net_request: NetTraitsRequest, + ) -> DomRoot { let r = Request::new(global, proto, net_request.current_url()); *r.request.borrow_mut() = net_request; r diff --git a/components/script/dom/rtcerror.rs b/components/script/dom/rtcerror.rs index de9a6e8645b..060e5445b75 100644 --- a/components/script/dom/rtcerror.rs +++ b/components/script/dom/rtcerror.rs @@ -45,7 +45,12 @@ impl RTCError { Self::new_with_proto(global, None, init, message) } - fn new_with_proto(global: &GlobalScope, proto: Option, init: &RTCErrorInit, message: DOMString) -> DomRoot { + fn new_with_proto( + global: &GlobalScope, + proto: Option, + init: &RTCErrorInit, + message: DOMString, + ) -> DomRoot { reflect_dom_object2( Box::new(RTCError::new_inherited(global, init, message)), global, diff --git a/components/script/dom/rtcerrorevent.rs b/components/script/dom/rtcerrorevent.rs index 48f4224df95..0a4a47c5d5b 100644 --- a/components/script/dom/rtcerrorevent.rs +++ b/components/script/dom/rtcerrorevent.rs @@ -49,7 +49,11 @@ impl RTCErrorEvent { cancelable: bool, error: &RTCError, ) -> DomRoot { - let event = reflect_dom_object2(Box::new(RTCErrorEvent::new_inherited(&error)), global, proto); + let event = reflect_dom_object2( + Box::new(RTCErrorEvent::new_inherited(&error)), + global, + proto, + ); { let event = event.upcast::(); event.init_event(type_, bubbles, cancelable); diff --git a/components/script/dom/rtcicecandidate.rs b/components/script/dom/rtcicecandidate.rs index fc60867d5e2..afc7954e70e 100644 --- a/components/script/dom/rtcicecandidate.rs +++ b/components/script/dom/rtcicecandidate.rs @@ -46,7 +46,14 @@ impl RTCIceCandidate { sdp_m_line_index: Option, username_fragment: Option, ) -> DomRoot { - Self::new_with_proto(global, None, candidate, sdp_m_id, sdp_m_line_index, username_fragment) + Self::new_with_proto( + global, + None, + candidate, + sdp_m_id, + sdp_m_line_index, + username_fragment, + ) } fn new_with_proto( diff --git a/components/script/dom/rtcpeerconnection.rs b/components/script/dom/rtcpeerconnection.rs index aad751dbfe2..d600c0d8770 100644 --- a/components/script/dom/rtcpeerconnection.rs +++ b/components/script/dom/rtcpeerconnection.rs @@ -193,7 +193,11 @@ impl RTCPeerConnection { } } - fn new(global: &GlobalScope, proto: Option, config: &RTCConfiguration) -> DomRoot { + fn new( + global: &GlobalScope, + proto: Option, + config: &RTCConfiguration, + ) -> DomRoot { let this = reflect_dom_object2(Box::new(RTCPeerConnection::new_inherited()), global, proto); let signaller = this.make_signaller(); *this.controller.borrow_mut() = Some(ServoMedia::get().unwrap().create_webrtc(signaller)); @@ -632,20 +636,28 @@ impl RTCPeerConnectionMethods for RTCPeerConnection { .borrow_mut() .as_ref() .unwrap() - .set_local_description(desc.clone(), (move || { + .set_local_description( + desc.clone(), + (move || { let _ = task_source.queue_with_canceller( task!(local_description_set: move || { // XXXManishearth spec actually asks for an intricate // dance between pending/current local/remote descriptions let this = this.root(); let desc = desc.into(); - let desc = RTCSessionDescription::Constructor(&this.global().as_window(), None, &desc).unwrap(); + let desc = RTCSessionDescription::Constructor( + &this.global().as_window(), + None, + &desc, + ).unwrap(); this.local_description.set(Some(&desc)); trusted_promise.root().resolve_native(&()) }), &canceller, ); - }).into()); + }) + .into(), + ); p } @@ -665,20 +677,28 @@ impl RTCPeerConnectionMethods for RTCPeerConnection { .borrow_mut() .as_ref() .unwrap() - .set_remote_description(desc.clone(), (move || { + .set_remote_description( + desc.clone(), + (move || { let _ = task_source.queue_with_canceller( task!(remote_description_set: move || { // XXXManishearth spec actually asks for an intricate // dance between pending/current local/remote descriptions let this = this.root(); let desc = desc.into(); - let desc = RTCSessionDescription::Constructor(&this.global().as_window(), None, &desc).unwrap(); + let desc = RTCSessionDescription::Constructor( + &this.global().as_window(), + None, + &desc, + ).unwrap(); this.remote_description.set(Some(&desc)); trusted_promise.root().resolve_native(&()) }), &canceller, ); - }).into()); + }) + .into(), + ); p } diff --git a/components/script/dom/rtctrackevent.rs b/components/script/dom/rtctrackevent.rs index 77dae80a4ca..e96808170b5 100644 --- a/components/script/dom/rtctrackevent.rs +++ b/components/script/dom/rtctrackevent.rs @@ -50,7 +50,11 @@ impl RTCTrackEvent { cancelable: bool, track: &MediaStreamTrack, ) -> DomRoot { - let trackevent = reflect_dom_object2(Box::new(RTCTrackEvent::new_inherited(&track)), global, proto); + let trackevent = reflect_dom_object2( + Box::new(RTCTrackEvent::new_inherited(&track)), + global, + proto, + ); { let event = trackevent.upcast::(); event.init_event(type_, bubbles, cancelable); diff --git a/components/script/dom/storageevent.rs b/components/script/dom/storageevent.rs index b1da211f1c1..c63b9f80f60 100644 --- a/components/script/dom/storageevent.rs +++ b/components/script/dom/storageevent.rs @@ -51,7 +51,11 @@ impl StorageEvent { Self::new_uninitialized_with_proto(window, None, url) } - fn new_uninitialized_with_proto(window: &Window, proto: Option, url: DOMString) -> DomRoot { + fn new_uninitialized_with_proto( + window: &Window, + proto: Option, + url: DOMString, + ) -> DomRoot { reflect_dom_object2( Box::new(StorageEvent::new_inherited(None, None, None, url, None)), window, diff --git a/components/script/dom/submitevent.rs b/components/script/dom/submitevent.rs index cf62813a4dc..522e225b233 100644 --- a/components/script/dom/submitevent.rs +++ b/components/script/dom/submitevent.rs @@ -50,7 +50,11 @@ impl SubmitEvent { cancelable: bool, submitter: Option>, ) -> DomRoot { - let ev = reflect_dom_object2(Box::new(SubmitEvent::new_inherited(submitter)), global, proto); + let ev = reflect_dom_object2( + Box::new(SubmitEvent::new_inherited(submitter)), + global, + proto, + ); { let event = ev.upcast::(); event.init_event(type_, bubbles, cancelable); diff --git a/components/script/dom/testbinding.rs b/components/script/dom/testbinding.rs index 9788b3fa85f..55eeb858fa9 100644 --- a/components/script/dom/testbinding.rs +++ b/components/script/dom/testbinding.rs @@ -88,17 +88,28 @@ impl TestBinding { reflect_dom_object2(Box::new(TestBinding::new_inherited()), global, proto) } - pub fn Constructor(global: &GlobalScope, proto: Option) -> Fallible> { + pub fn Constructor( + global: &GlobalScope, + proto: Option, + ) -> Fallible> { Ok(TestBinding::new(global, proto)) } #[allow(unused_variables)] - pub fn Constructor_(global: &GlobalScope, proto: Option, nums: Vec) -> Fallible> { + pub fn Constructor_( + global: &GlobalScope, + proto: Option, + nums: Vec, + ) -> Fallible> { Ok(TestBinding::new(global, proto)) } #[allow(unused_variables)] - pub fn Constructor__(global: &GlobalScope, proto: Option, num: f64) -> Fallible> { + pub fn Constructor__( + global: &GlobalScope, + proto: Option, + num: f64, + ) -> Fallible> { Ok(TestBinding::new(global, proto)) } } diff --git a/components/script/dom/testbindingiterable.rs b/components/script/dom/testbindingiterable.rs index 1ed0434c70b..0dd37f9950c 100644 --- a/components/script/dom/testbindingiterable.rs +++ b/components/script/dom/testbindingiterable.rs @@ -33,7 +33,10 @@ impl TestBindingIterable { } #[allow(non_snake_case)] - pub fn Constructor(global: &GlobalScope, proto: Option) -> Fallible> { + pub fn Constructor( + global: &GlobalScope, + proto: Option, + ) -> Fallible> { Ok(TestBindingIterable::new(global, proto)) } } diff --git a/components/script/dom/testbindingpairiterable.rs b/components/script/dom/testbindingpairiterable.rs index ec593b27616..0bf11198298 100644 --- a/components/script/dom/testbindingpairiterable.rs +++ b/components/script/dom/testbindingpairiterable.rs @@ -60,7 +60,10 @@ impl TestBindingPairIterable { } #[allow(non_snake_case)] - pub fn Constructor(global: &GlobalScope, proto: Option) -> Fallible> { + pub fn Constructor( + global: &GlobalScope, + proto: Option, + ) -> Fallible> { Ok(TestBindingPairIterable::new(global, proto)) } } diff --git a/components/script/dom/testworklet.rs b/components/script/dom/testworklet.rs index 1fdbbab07c1..09fd53243e7 100644 --- a/components/script/dom/testworklet.rs +++ b/components/script/dom/testworklet.rs @@ -38,11 +38,18 @@ impl TestWorklet { fn new(window: &Window, proto: Option) -> DomRoot { let worklet = Worklet::new(window, WorkletGlobalScopeType::Test); - reflect_dom_object2(Box::new(TestWorklet::new_inherited(&*worklet)), window, proto) + reflect_dom_object2( + Box::new(TestWorklet::new_inherited(&*worklet)), + window, + proto, + ) } #[allow(non_snake_case)] - pub fn Constructor(window: &Window, proto: Option) -> Fallible> { + pub fn Constructor( + window: &Window, + proto: Option, + ) -> Fallible> { Ok(TestWorklet::new(window, proto)) } } diff --git a/components/script/dom/text.rs b/components/script/dom/text.rs index 137b347bba9..bc436517cd2 100644 --- a/components/script/dom/text.rs +++ b/components/script/dom/text.rs @@ -35,12 +35,24 @@ impl Text { Self::new_with_proto(text, document, None) } - fn new_with_proto(text: DOMString, document: &Document, proto: Option) -> DomRoot { - Node::reflect_node_with_proto(Box::new(Text::new_inherited(text, document)), document, proto) + fn new_with_proto( + text: DOMString, + document: &Document, + proto: Option, + ) -> DomRoot { + Node::reflect_node_with_proto( + Box::new(Text::new_inherited(text, document)), + document, + proto, + ) } #[allow(non_snake_case)] - pub fn Constructor(window: &Window, proto: Option, text: DOMString) -> Fallible> { + pub fn Constructor( + window: &Window, + proto: Option, + text: DOMString, + ) -> Fallible> { let document = window.Document(); Ok(Text::new_with_proto(text, &document, proto)) } diff --git a/components/script/dom/textencoder.rs b/components/script/dom/textencoder.rs index caf0cdb3699..86d65fa9111 100644 --- a/components/script/dom/textencoder.rs +++ b/components/script/dom/textencoder.rs @@ -34,7 +34,10 @@ impl TextEncoder { // https://encoding.spec.whatwg.org/#dom-textencoder #[allow(non_snake_case)] - pub fn Constructor(global: &GlobalScope, proto: Option) -> Fallible> { + pub fn Constructor( + global: &GlobalScope, + proto: Option, + ) -> Fallible> { Ok(TextEncoder::new(global, proto)) } } diff --git a/components/script/dom/transitionevent.rs b/components/script/dom/transitionevent.rs index 9e2132b407a..cb0c6a81b11 100644 --- a/components/script/dom/transitionevent.rs +++ b/components/script/dom/transitionevent.rs @@ -50,7 +50,11 @@ impl TransitionEvent { type_: Atom, init: &TransitionEventInit, ) -> DomRoot { - let ev = reflect_dom_object2(Box::new(TransitionEvent::new_inherited(init)), window, proto); + let ev = reflect_dom_object2( + Box::new(TransitionEvent::new_inherited(init)), + window, + proto, + ); { let event = ev.upcast::(); event.init_event(type_, init.parent.bubbles, init.parent.cancelable); @@ -65,7 +69,12 @@ impl TransitionEvent { type_: DOMString, init: &TransitionEventInit, ) -> Fallible> { - Ok(TransitionEvent::new_with_proto(window, proto, Atom::from(type_), init)) + Ok(TransitionEvent::new_with_proto( + window, + proto, + Atom::from(type_), + init, + )) } } diff --git a/components/script/dom/uievent.rs b/components/script/dom/uievent.rs index 33916963a1d..0c8aa52cb13 100644 --- a/components/script/dom/uievent.rs +++ b/components/script/dom/uievent.rs @@ -39,7 +39,10 @@ impl UIEvent { Self::new_uninitialized_with_proto(window, None) } - fn new_uninitialized_with_proto(window: &Window, proto: Option) -> DomRoot { + fn new_uninitialized_with_proto( + window: &Window, + proto: Option, + ) -> DomRoot { reflect_dom_object2(Box::new(UIEvent::new_inherited()), window, proto) } diff --git a/components/script/dom/urlsearchparams.rs b/components/script/dom/urlsearchparams.rs index e4f2df9c91d..e996f335518 100644 --- a/components/script/dom/urlsearchparams.rs +++ b/components/script/dom/urlsearchparams.rs @@ -40,7 +40,11 @@ impl URLSearchParams { Self::new_with_proto(global, None, url) } - pub fn new_with_proto(global: &GlobalScope, proto: Option, url: Option<&URL>) -> DomRoot { + pub fn new_with_proto( + global: &GlobalScope, + proto: Option, + url: Option<&URL>, + ) -> DomRoot { reflect_dom_object2(Box::new(URLSearchParams::new_inherited(url)), global, proto) } diff --git a/components/script/dom/websocket.rs b/components/script/dom/websocket.rs index 212e88af8d0..4fcd35ff2be 100644 --- a/components/script/dom/websocket.rs +++ b/components/script/dom/websocket.rs @@ -131,7 +131,11 @@ impl WebSocket { url: ServoUrl, sender: IpcSender, ) -> DomRoot { - reflect_dom_object2(Box::new(WebSocket::new_inherited(url, sender)), global, proto) + reflect_dom_object2( + Box::new(WebSocket::new_inherited(url, sender)), + global, + proto, + ) } /// diff --git a/components/script/dom/wheelevent.rs b/components/script/dom/wheelevent.rs index cc7847b1dcd..3e9a35243dc 100644 --- a/components/script/dom/wheelevent.rs +++ b/components/script/dom/wheelevent.rs @@ -55,16 +55,7 @@ impl WheelEvent { delta_mode: u32, ) -> DomRoot { Self::new_with_proto( - window, - None, - type_, - can_bubble, - cancelable, - view, - detail, - delta_x, - delta_y, - delta_z, + window, None, type_, can_bubble, cancelable, view, detail, delta_x, delta_y, delta_z, delta_mode, ) } diff --git a/components/script/dom/worker.rs b/components/script/dom/worker.rs index 5bd0acf701c..1004429a16d 100644 --- a/components/script/dom/worker.rs +++ b/components/script/dom/worker.rs @@ -69,7 +69,11 @@ impl Worker { sender: Sender, closing: Arc, ) -> DomRoot { - reflect_dom_object2(Box::new(Worker::new_inherited(sender, closing)), global, proto) + reflect_dom_object2( + Box::new(Worker::new_inherited(sender, closing)), + global, + proto, + ) } // https://html.spec.whatwg.org/multipage/#dom-worker diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs index 04c875aadd1..4aa9c9f4f91 100644 --- a/components/script/dom/xmlhttprequest.rs +++ b/components/script/dom/xmlhttprequest.rs @@ -52,8 +52,8 @@ use ipc_channel::router::ROUTER; use js::jsapi::JS_ClearPendingException; use js::jsapi::{Heap, JSObject}; use js::jsval::{JSVal, NullValue, UndefinedValue}; -use js::rust::HandleObject; use js::rust::wrappers::JS_ParseJSON; +use js::rust::HandleObject; use js::typedarray::{ArrayBuffer, CreateWith}; use mime::{self, Mime, Name}; use net_traits::request::{CredentialsMode, Destination, Referrer, RequestBuilder, RequestMode}; @@ -216,12 +216,19 @@ impl XMLHttpRequest { } fn new(global: &GlobalScope, proto: Option) -> DomRoot { - reflect_dom_object2(Box::new(XMLHttpRequest::new_inherited(global)), global, proto) + reflect_dom_object2( + Box::new(XMLHttpRequest::new_inherited(global)), + global, + proto, + ) } // https://xhr.spec.whatwg.org/#constructors #[allow(non_snake_case)] - pub fn Constructor(global: &GlobalScope, proto: Option) -> Fallible> { + pub fn Constructor( + global: &GlobalScope, + proto: Option, + ) -> Fallible> { Ok(XMLHttpRequest::new(global, proto)) } diff --git a/components/script/dom/xmlserializer.rs b/components/script/dom/xmlserializer.rs index e7f74697657..b0d65424d33 100644 --- a/components/script/dom/xmlserializer.rs +++ b/components/script/dom/xmlserializer.rs @@ -28,11 +28,18 @@ impl XMLSerializer { } pub fn new(window: &Window, proto: Option) -> DomRoot { - reflect_dom_object2(Box::new(XMLSerializer::new_inherited(window)), window, proto) + reflect_dom_object2( + Box::new(XMLSerializer::new_inherited(window)), + window, + proto, + ) } #[allow(non_snake_case)] - pub fn Constructor(window: &Window, proto: Option) -> Fallible> { + pub fn Constructor( + window: &Window, + proto: Option, + ) -> Fallible> { Ok(XMLSerializer::new(window, proto)) } } diff --git a/components/script/dom/xrinputsourceschangeevent.rs b/components/script/dom/xrinputsourceschangeevent.rs index 09cbcdc2fc1..76f662e5eef 100644 --- a/components/script/dom/xrinputsourceschangeevent.rs +++ b/components/script/dom/xrinputsourceschangeevent.rs @@ -55,14 +55,7 @@ impl XRInputSourcesChangeEvent { removed: &[DomRoot], ) -> DomRoot { Self::new_with_proto( - global, - None, - type_, - bubbles, - cancelable, - session, - added, - removed, + global, None, type_, bubbles, cancelable, session, added, removed, ) } diff --git a/components/script/dom/xrmediabinding.rs b/components/script/dom/xrmediabinding.rs index c3c4c3a5fc7..30c7a0877aa 100644 --- a/components/script/dom/xrmediabinding.rs +++ b/components/script/dom/xrmediabinding.rs @@ -33,12 +33,24 @@ impl XRMediaBinding { } } - fn new(global: &Window, proto: Option, session: &XRSession) -> DomRoot { - reflect_dom_object2(Box::new(XRMediaBinding::new_inherited(session)), global, proto) + fn new( + global: &Window, + proto: Option, + session: &XRSession, + ) -> DomRoot { + reflect_dom_object2( + Box::new(XRMediaBinding::new_inherited(session)), + global, + proto, + ) } #[allow(non_snake_case)] - pub fn Constructor(global: &Window, proto: Option, session: &XRSession) -> Fallible> { + pub fn Constructor( + global: &Window, + proto: Option, + session: &XRSession, + ) -> Fallible> { // Step 1. if session.is_ended() { return Err(Error::InvalidState); diff --git a/components/script/dom/xrray.rs b/components/script/dom/xrray.rs index 029929ae37d..aca7f5b323d 100644 --- a/components/script/dom/xrray.rs +++ b/components/script/dom/xrray.rs @@ -38,7 +38,11 @@ impl XRRay { } } - fn new(global: &GlobalScope, proto: Option, ray: Ray) -> DomRoot { + fn new( + global: &GlobalScope, + proto: Option, + ray: Ray, + ) -> DomRoot { reflect_dom_object2(Box::new(XRRay::new_inherited(ray)), global, proto) } @@ -70,19 +74,31 @@ impl XRRay { ) .normalize(); - Ok(Self::new(&window.global(), proto, Ray { origin, direction })) + Ok(Self::new( + &window.global(), + proto, + Ray { origin, direction }, + )) } #[allow(non_snake_case)] /// https://immersive-web.github.io/hit-test/#dom-xrray-xrray-transform - pub fn Constructor_(window: &Window, proto: Option, transform: &XRRigidTransform) -> Fallible> { + pub fn Constructor_( + window: &Window, + proto: Option, + transform: &XRRigidTransform, + ) -> Fallible> { let transform = transform.transform(); let origin = transform.translation; let direction = transform .rotation .transform_vector3d(Vector3D::new(0., 0., -1.)); - Ok(Self::new(&window.global(), proto, Ray { origin, direction })) + Ok(Self::new( + &window.global(), + proto, + Ray { origin, direction }, + )) } pub fn ray(&self) -> Ray { diff --git a/components/script/dom/xrrigidtransform.rs b/components/script/dom/xrrigidtransform.rs index 4cbbee32386..d2c7696f4c3 100644 --- a/components/script/dom/xrrigidtransform.rs +++ b/components/script/dom/xrrigidtransform.rs @@ -49,8 +49,16 @@ impl XRRigidTransform { Self::new_with_proto(global, None, transform) } - fn new_with_proto(global: &GlobalScope, proto: Option, transform: ApiRigidTransform) -> DomRoot { - reflect_dom_object2(Box::new(XRRigidTransform::new_inherited(transform)), global, proto) + fn new_with_proto( + global: &GlobalScope, + proto: Option, + transform: ApiRigidTransform, + ) -> DomRoot { + reflect_dom_object2( + Box::new(XRRigidTransform::new_inherited(transform)), + global, + proto, + ) } pub fn identity(window: &GlobalScope) -> DomRoot { @@ -87,7 +95,11 @@ impl XRRigidTransform { return Err(Error::InvalidState); } let transform = RigidTransform3D::new(rotate, translate); - Ok(XRRigidTransform::new_with_proto(&window.global(), proto, transform)) + Ok(XRRigidTransform::new_with_proto( + &window.global(), + proto, + transform, + )) } } diff --git a/components/script/dom/xrsessionevent.rs b/components/script/dom/xrsessionevent.rs index 4fcfbfff3e2..15a2685bda1 100644 --- a/components/script/dom/xrsessionevent.rs +++ b/components/script/dom/xrsessionevent.rs @@ -50,8 +50,11 @@ impl XRSessionEvent { cancelable: bool, session: &XRSession, ) -> DomRoot { - let trackevent = - reflect_dom_object2(Box::new(XRSessionEvent::new_inherited(&session)), global, proto); + let trackevent = reflect_dom_object2( + Box::new(XRSessionEvent::new_inherited(&session)), + global, + proto, + ); { let event = trackevent.upcast::(); event.init_event(type_, bubbles, cancelable); From ce023bea246ed0d8782523a5fe2767f37db6422d Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Mon, 29 May 2023 00:47:31 -0400 Subject: [PATCH 4/9] Don't root a Realm that's used for one call. --- components/script/dom/bindings/interface.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/components/script/dom/bindings/interface.rs b/components/script/dom/bindings/interface.rs index 6fa7591b41b..d3f77356b08 100644 --- a/components/script/dom/bindings/interface.rs +++ b/components/script/dom/bindings/interface.rs @@ -686,14 +686,14 @@ pub fn get_desired_proto( // Fall back to getting the proto for our given proto id in the realm that // GetFunctionRealm(newTarget) returns. - rooted!(in(*cx) let realm = GetFunctionRealm(*cx, new_target.handle().into())); + let realm = GetFunctionRealm(*cx, new_target.handle().into()); - if (*realm).is_null() { + if realm.is_null() { return Err(()); } { - let _realm = JSAutoRealm::new(*cx, GetRealmGlobalOrNull(*realm)); + let _realm = JSAutoRealm::new(*cx, GetRealmGlobalOrNull(realm)); rooted!(in(*cx) let global = CurrentGlobalOrNull(*cx)); get_per_interface_object_handle( cx, From 43f5b4899bd15569bd9dfb4b3bd3f10307cb893c Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Tue, 30 May 2023 08:58:09 -0400 Subject: [PATCH 5/9] Update successful test results. --- .../Event-subclasses-constructors.html.ini | 19 ---------- .../ecmascript-binding/constructors.html.ini | 36 ------------------- ...acy-factor-function-subclass.window.js.ini | 4 --- 3 files changed, 59 deletions(-) delete mode 100644 tests/wpt/metadata/webidl/ecmascript-binding/constructors.html.ini delete mode 100644 tests/wpt/metadata/webidl/ecmascript-binding/legacy-factor-function-subclass.window.js.ini diff --git a/tests/wpt/metadata/dom/events/Event-subclasses-constructors.html.ini b/tests/wpt/metadata/dom/events/Event-subclasses-constructors.html.ini index 57bf766d5ba..c8f7dc50786 100644 --- a/tests/wpt/metadata/dom/events/Event-subclasses-constructors.html.ini +++ b/tests/wpt/metadata/dom/events/Event-subclasses-constructors.html.ini @@ -23,22 +23,3 @@ [CompositionEvent constructor (argument with non-default values)] expected: FAIL - - [SubclassedEvent constructor (no argument)] - expected: FAIL - - [SubclassedEvent constructor (undefined argument)] - expected: FAIL - - [SubclassedEvent constructor (null argument)] - expected: FAIL - - [SubclassedEvent constructor (empty argument)] - expected: FAIL - - [SubclassedEvent constructor (argument with default values)] - expected: FAIL - - [SubclassedEvent constructor (argument with non-default values)] - expected: FAIL - diff --git a/tests/wpt/metadata/webidl/ecmascript-binding/constructors.html.ini b/tests/wpt/metadata/webidl/ecmascript-binding/constructors.html.ini deleted file mode 100644 index aa8cf05b758..00000000000 --- a/tests/wpt/metadata/webidl/ecmascript-binding/constructors.html.ini +++ /dev/null @@ -1,36 +0,0 @@ -[constructors.html] - [Constructor in child window with normal NewTarget from parent window] - expected: FAIL - - [Constructor in parent window with normal NewTarget from child window] - expected: FAIL - - [Subclass constructor in parent window] - expected: FAIL - - [Subclass constructor in child window] - expected: FAIL - - [Subclass constructor in parent window with parent class in child window] - expected: FAIL - - [Subclass constructor in child window with parent class in parent window] - expected: FAIL - - [Constructor in child window with bad NewTarget from parent window] - expected: FAIL - - [Constructor in parent window with bad NewTarget from child window] - expected: FAIL - - [Constructor in parent window with bad NewTarget from parent window that's a bound child window function] - expected: FAIL - - [Constructor in child window with bad NewTarget from child window that's a bound parent window function] - expected: FAIL - - [Constructor in parent window with bad NewTarget from parent window that's a proxy for a child window function] - expected: FAIL - - [Constructor in child window with bad NewTarget from child window that's a proxy for a parent window function] - expected: FAIL diff --git a/tests/wpt/metadata/webidl/ecmascript-binding/legacy-factor-function-subclass.window.js.ini b/tests/wpt/metadata/webidl/ecmascript-binding/legacy-factor-function-subclass.window.js.ini deleted file mode 100644 index bce94513c4e..00000000000 --- a/tests/wpt/metadata/webidl/ecmascript-binding/legacy-factor-function-subclass.window.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[legacy-factor-function-subclass.window.html] - [[LegacyFactoryFunction\] can be subclassed and correctly handles NewTarget] - expected: FAIL - From 56a8237ef4b9cfcf6081c61349e2994a57d2093c Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Tue, 30 May 2023 10:32:33 -0400 Subject: [PATCH 6/9] Throw type error when calling DOM constructor without new. --- .../dom/bindings/codegen/CodegenRust.py | 50 +++++++++++++------ components/script/dom/bindings/error.rs | 6 +++ components/script/dom/bindings/utils.rs | 4 ++ 3 files changed, 45 insertions(+), 15 deletions(-) diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index b0f89c6a1d3..985a6c590c9 100644 --- a/components/script/dom/bindings/codegen/CodegenRust.py +++ b/components/script/dom/bindings/codegen/CodegenRust.py @@ -3963,6 +3963,17 @@ let global = GlobalScope::from_object(args.callee()); raise NotImplementedError # Override me! +def GetConstructorNameForReporting(descriptor, ctor): + # Figure out the name of our constructor for reporting purposes. + # For unnamed webidl constructors, identifier.name is "constructor" but + # the name JS sees is the interface name; for legacy factory functions + # identifier.name is the actual name. + ctorName = ctor.identifier.name + if ctorName == "constructor": + return descriptor.interface.identifier.name + return ctorName + + class CGSpecializedMethod(CGAbstractExternMethod): """ A class for generating the C++ code for a specialized method that the JIT @@ -6117,24 +6128,11 @@ class CGClassConstructHook(CGAbstractExternMethod): preamble = """let cx = SafeJSContext::from_ptr(cx); let args = CallArgs::from_vp(vp, argc); let global = GlobalScope::from_object(JS_CALLEE(*cx, vp).to_object()); -rooted!(in(*cx) let mut desired_proto = ptr::null_mut::()); -let proto_result = get_desired_proto( - cx, - &args, - PrototypeList::ID::%s, - CreateInterfaceObjects, - desired_proto.handle_mut(), -); - assert!(proto_result.is_ok()); -if proto_result.is_err() { - return false; -} -""" % (MakeNativeName(self.descriptor.name)) +""" if len(self.exposureSet) == 1: preamble += """\ let global = DomRoot::downcast::(global).unwrap(); """ % list(self.exposureSet)[0] - preamble = CGGeneric(preamble) if self.constructor.isHTMLConstructor(): signatures = self.constructor.signatures() assert len(signatures) == 1 @@ -6145,12 +6143,32 @@ let global = DomRoot::downcast::(global).unwrap(); GetProtoObject, )""" % self.descriptor.name) else: + ctorName = GetConstructorNameForReporting(self.descriptor, self.constructor) + preamble += """ +if !callargs_is_constructing(&args) { + throw_constructor_without_new(*cx, "%s"); + return false; +} + +rooted!(in(*cx) let mut desired_proto = ptr::null_mut::()); +let proto_result = get_desired_proto( + cx, + &args, + PrototypeList::ID::%s, + CreateInterfaceObjects, + desired_proto.handle_mut(), +); +assert!(proto_result.is_ok()); +if proto_result.is_err() { + return false; +} +""" % (ctorName, MakeNativeName(self.descriptor.name)) name = self.constructor.identifier.name nativeName = MakeNativeName(self.descriptor.binaryNameFor(name)) args = ["&global", "Some(desired_proto.handle())"] constructorCall = CGMethodCall(args, nativeName, True, self.descriptor, self.constructor) - return CGList([preamble, constructorCall]) + return CGList([CGGeneric(preamble), constructorCall]) class CGClassFinalizeHook(CGAbstractClassHook): @@ -6490,6 +6508,7 @@ def generate_imports(config, cgthings, descriptors, callbacks=None, dictionaries 'crate::dom::bindings::utils::DOM_PROTO_UNFORGEABLE_HOLDER_SLOT', 'crate::dom::bindings::utils::JSCLASS_DOM_GLOBAL', 'crate::dom::bindings::utils::ProtoOrIfaceArray', + 'crate::dom::bindings::utils::callargs_is_constructing', 'crate::dom::bindings::utils::enumerate_global', 'crate::dom::bindings::utils::finalize_global', 'crate::dom::bindings::utils::generic_getter', @@ -6540,6 +6559,7 @@ def generate_imports(config, cgthings, descriptors, callbacks=None, dictionaries 'crate::dom::bindings::error::Fallible', 'crate::dom::bindings::error::Error::JSFailed', 'crate::dom::bindings::error::throw_dom_exception', + 'crate::dom::bindings::error::throw_constructor_without_new', 'crate::dom::bindings::guard::Condition', 'crate::dom::bindings::guard::Guard', 'crate::dom::bindings::inheritance::Castable', diff --git a/components/script/dom/bindings/error.rs b/components/script/dom/bindings/error.rs index 9356918ccc1..87df14d0544 100644 --- a/components/script/dom/bindings/error.rs +++ b/components/script/dom/bindings/error.rs @@ -312,6 +312,12 @@ pub unsafe fn throw_invalid_this(cx: *mut JSContext, proto_id: u16) { throw_type_error(cx, &error); } +pub unsafe fn throw_constructor_without_new(cx: *mut JSContext, name: &str) { + debug_assert!(!JS_IsExceptionPending(cx)); + let error = format!("{} constructor: 'new' is required", name); + throw_type_error(cx, &error); +} + impl Error { /// Convert this error value to a JS value, consuming it in the process. pub unsafe fn to_jsval( diff --git a/components/script/dom/bindings/utils.rs b/components/script/dom/bindings/utils.rs index 87748da1ec4..7557f4a3fa8 100644 --- a/components/script/dom/bindings/utils.rs +++ b/components/script/dom/bindings/utils.rs @@ -637,3 +637,7 @@ impl AsCCharPtrPtr for [u8] { self as *const [u8] as *const c_char } } + +pub unsafe fn callargs_is_constructing(args: &CallArgs) -> bool { + (*args.argv_.offset(-1)).is_magic() +} From 62e07686355116665382242aa3d06642914b7206 Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Tue, 30 May 2023 11:38:34 -0400 Subject: [PATCH 7/9] Update test results. --- tests/wpt/metadata/html/dom/idlharness.https.html.ini | 9 --------- .../the-audio-element/audio_constructor.html.ini | 4 ---- 2 files changed, 13 deletions(-) delete mode 100644 tests/wpt/metadata/html/semantics/embedded-content/the-audio-element/audio_constructor.html.ini diff --git a/tests/wpt/metadata/html/dom/idlharness.https.html.ini b/tests/wpt/metadata/html/dom/idlharness.https.html.ini index 108d8331261..4e1401a399e 100644 --- a/tests/wpt/metadata/html/dom/idlharness.https.html.ini +++ b/tests/wpt/metadata/html/dom/idlharness.https.html.ini @@ -2781,9 +2781,6 @@ [HTMLTableColElement interface: document.createElement("col") must inherit property "vAlign" with the proper type] expected: FAIL - [HTMLAudioElement interface: named constructor without 'new'] - expected: FAIL - [HTMLEmbedElement interface: attribute name] expected: FAIL @@ -3912,9 +3909,6 @@ [HTMLAllCollection interface: existence and properties of interface prototype object's @@unscopables property] expected: FAIL - [HTMLImageElement interface: named constructor without 'new'] - expected: FAIL - [HTMLModElement interface: document.createElement("del") must inherit property "cite" with the proper type] expected: FAIL @@ -4131,9 +4125,6 @@ [SVGAElement includes HTMLHyperlinkElementUtils: member names are unique] expected: FAIL - [HTMLOptionElement interface: named constructor without 'new'] - expected: FAIL - [HTMLElement interface: attribute onwebkitanimationiteration] expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-audio-element/audio_constructor.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-audio-element/audio_constructor.html.ini deleted file mode 100644 index 81986a14e1c..00000000000 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-audio-element/audio_constructor.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[audio_constructor.html] - [Calling Audio should throw] - expected: FAIL - From b14b4726ac3958a932a1cf31143fc4130cafd052 Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Tue, 30 May 2023 11:47:47 -0400 Subject: [PATCH 8/9] Assert that we're constructing. --- components/script/dom/bindings/interface.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/script/dom/bindings/interface.rs b/components/script/dom/bindings/interface.rs index d3f77356b08..940562ba471 100644 --- a/components/script/dom/bindings/interface.rs +++ b/components/script/dom/bindings/interface.rs @@ -12,6 +12,7 @@ use crate::dom::bindings::guard::Guard; use crate::dom::bindings::principals::ServoJSPrincipals; use crate::dom::bindings::utils::{ get_proto_or_iface_array, DOMJSClass, ProtoOrIfaceArray, DOM_PROTOTYPE_SLOT, JSCLASS_DOM_GLOBAL, + callargs_is_constructing, }; use crate::script_runtime::JSContext as SafeJSContext; use js::error::throw_type_error; @@ -626,7 +627,7 @@ pub fn get_desired_proto( // https://heycam.github.io/webidl/#internally-create-a-new-object-implementing-the-interface // step 3. - //assert!(args.is_constructing()) + assert!(callargs_is_constructing(args)); // The desired prototype depends on the actual constructor that was invoked, // which is passed to us as the newTarget in the callargs. We want to do From cc07e2786440528eff6a5e56b6b88c4a845c4ff9 Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Wed, 31 May 2023 23:03:32 -0400 Subject: [PATCH 9/9] Rename reflect_dom_object2. --- components/script/dom/analysernode.rs | 4 ++-- components/script/dom/animationevent.rs | 8 ++++++-- components/script/dom/audiobuffer.rs | 4 ++-- components/script/dom/audiobuffersourcenode.rs | 4 ++-- components/script/dom/audiocontext.rs | 4 ++-- components/script/dom/bindings/interface.rs | 4 ++-- components/script/dom/bindings/reflector.rs | 6 +++++- components/script/dom/biquadfilternode.rs | 4 ++-- components/script/dom/blob.rs | 4 ++-- components/script/dom/bluetoothadvertisingevent.rs | 4 ++-- components/script/dom/broadcastchannel.rs | 4 ++-- components/script/dom/channelmergernode.rs | 4 ++-- components/script/dom/channelsplitternode.rs | 4 ++-- components/script/dom/closeevent.rs | 4 ++-- components/script/dom/compositionevent.rs | 4 ++-- components/script/dom/constantsourcenode.rs | 4 ++-- components/script/dom/customevent.rs | 4 ++-- components/script/dom/document.rs | 4 ++-- components/script/dom/domexception.rs | 6 ++++-- components/script/dom/dommatrix.rs | 4 ++-- components/script/dom/dommatrixreadonly.rs | 4 ++-- components/script/dom/domparser.rs | 4 ++-- components/script/dom/dompoint.rs | 4 ++-- components/script/dom/dompointreadonly.rs | 4 ++-- components/script/dom/domquad.rs | 4 ++-- components/script/dom/domrect.rs | 4 ++-- components/script/dom/domrectreadonly.rs | 4 ++-- components/script/dom/errorevent.rs | 4 ++-- components/script/dom/event.rs | 4 ++-- components/script/dom/eventsource.rs | 4 ++-- components/script/dom/eventtarget.rs | 4 ++-- components/script/dom/extendableevent.rs | 8 ++++++-- components/script/dom/extendablemessageevent.rs | 4 ++-- components/script/dom/file.rs | 4 ++-- components/script/dom/filereader.rs | 4 ++-- components/script/dom/filereadersync.rs | 4 ++-- components/script/dom/focusevent.rs | 4 ++-- components/script/dom/formdata.rs | 4 ++-- components/script/dom/formdataevent.rs | 4 ++-- components/script/dom/gainnode.rs | 4 ++-- components/script/dom/gamepadevent.rs | 4 ++-- components/script/dom/gpuoutofmemoryerror.rs | 4 ++-- components/script/dom/gpuuncapturederrorevent.rs | 4 ++-- components/script/dom/gpuvalidationerror.rs | 4 ++-- components/script/dom/hashchangeevent.rs | 6 +++--- components/script/dom/headers.rs | 4 ++-- components/script/dom/imagedata.rs | 6 +++--- components/script/dom/inputevent.rs | 4 ++-- components/script/dom/keyboardevent.rs | 4 ++-- components/script/dom/mediaelementaudiosourcenode.rs | 4 ++-- components/script/dom/mediametadata.rs | 4 ++-- components/script/dom/mediaquerylistevent.rs | 4 ++-- components/script/dom/mediastream.rs | 4 ++-- components/script/dom/mediastreamaudiodestinationnode.rs | 4 ++-- components/script/dom/mediastreamaudiosourcenode.rs | 4 ++-- components/script/dom/mediastreamtrackaudiosourcenode.rs | 4 ++-- components/script/dom/messagechannel.rs | 4 ++-- components/script/dom/messageevent.rs | 4 ++-- components/script/dom/mouseevent.rs | 4 ++-- components/script/dom/mutationobserver.rs | 4 ++-- components/script/dom/node.rs | 4 ++-- components/script/dom/offlineaudiocompletionevent.rs | 4 ++-- components/script/dom/offlineaudiocontext.rs | 8 ++++++-- components/script/dom/offscreencanvas.rs | 4 ++-- components/script/dom/oscillatornode.rs | 4 ++-- components/script/dom/pagetransitionevent.rs | 4 ++-- components/script/dom/pannernode.rs | 4 ++-- components/script/dom/performanceobserver.rs | 4 ++-- components/script/dom/popstateevent.rs | 4 ++-- components/script/dom/progressevent.rs | 4 ++-- components/script/dom/promiserejectionevent.rs | 4 ++-- components/script/dom/range.rs | 4 ++-- components/script/dom/request.rs | 4 ++-- components/script/dom/response.rs | 4 ++-- components/script/dom/rtcdatachannelevent.rs | 4 ++-- components/script/dom/rtcerror.rs | 4 ++-- components/script/dom/rtcerrorevent.rs | 4 ++-- components/script/dom/rtcicecandidate.rs | 4 ++-- components/script/dom/rtcpeerconnection.rs | 8 ++++++-- components/script/dom/rtcpeerconnectioniceevent.rs | 4 ++-- components/script/dom/rtcsessiondescription.rs | 4 ++-- components/script/dom/rtctrackevent.rs | 4 ++-- components/script/dom/stereopannernode.rs | 4 ++-- components/script/dom/storageevent.rs | 6 +++--- components/script/dom/submitevent.rs | 4 ++-- components/script/dom/testbinding.rs | 4 ++-- components/script/dom/testbindingiterable.rs | 4 ++-- components/script/dom/testbindingpairiterable.rs | 4 ++-- components/script/dom/testworklet.rs | 4 ++-- components/script/dom/textdecoder.rs | 4 ++-- components/script/dom/textencoder.rs | 4 ++-- components/script/dom/trackevent.rs | 8 ++++++-- components/script/dom/transitionevent.rs | 4 ++-- components/script/dom/uievent.rs | 4 ++-- components/script/dom/url.rs | 4 ++-- components/script/dom/urlsearchparams.rs | 4 ++-- components/script/dom/vttcue.rs | 4 ++-- components/script/dom/vttregion.rs | 4 ++-- components/script/dom/webglcontextevent.rs | 4 ++-- components/script/dom/websocket.rs | 4 ++-- components/script/dom/wheelevent.rs | 4 ++-- components/script/dom/worker.rs | 4 ++-- components/script/dom/xmlhttprequest.rs | 4 ++-- components/script/dom/xmlserializer.rs | 4 ++-- components/script/dom/xrinputsourceevent.rs | 4 ++-- components/script/dom/xrinputsourceschangeevent.rs | 4 ++-- components/script/dom/xrlayerevent.rs | 4 ++-- components/script/dom/xrmediabinding.rs | 4 ++-- components/script/dom/xrray.rs | 4 ++-- components/script/dom/xrrigidtransform.rs | 4 ++-- components/script/dom/xrsessionevent.rs | 4 ++-- components/script/dom/xrwebglbinding.rs | 4 ++-- components/script/dom/xrwebgllayer.rs | 4 ++-- 113 files changed, 254 insertions(+), 228 deletions(-) diff --git a/components/script/dom/analysernode.rs b/components/script/dom/analysernode.rs index ac703adcea7..568d2b120e8 100644 --- a/components/script/dom/analysernode.rs +++ b/components/script/dom/analysernode.rs @@ -14,7 +14,7 @@ use crate::dom::bindings::codegen::Bindings::AudioNodeBinding::{ use crate::dom::bindings::error::{Error, Fallible}; use crate::dom::bindings::num::Finite; use crate::dom::bindings::refcounted::Trusted; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::DomRoot; use crate::dom::window::Window; use crate::task_source::TaskSource; @@ -105,7 +105,7 @@ impl AnalyserNode { options: &AnalyserOptions, ) -> Fallible> { let (node, recv) = AnalyserNode::new_inherited(window, context, options)?; - let object = reflect_dom_object2(Box::new(node), window, proto); + let object = reflect_dom_object_with_proto(Box::new(node), window, proto); let (source, canceller) = window .task_manager() .dom_manipulation_task_source_with_canceller(); diff --git a/components/script/dom/animationevent.rs b/components/script/dom/animationevent.rs index d41fff988b5..cde3d466da3 100644 --- a/components/script/dom/animationevent.rs +++ b/components/script/dom/animationevent.rs @@ -8,7 +8,7 @@ use crate::dom::bindings::codegen::Bindings::AnimationEventBinding::{ use crate::dom::bindings::codegen::Bindings::EventBinding::EventMethods; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::num::Finite; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; @@ -45,7 +45,11 @@ impl AnimationEvent { type_: Atom, init: &AnimationEventInit, ) -> DomRoot { - let ev = reflect_dom_object2(Box::new(AnimationEvent::new_inherited(init)), window, proto); + let ev = reflect_dom_object_with_proto( + Box::new(AnimationEvent::new_inherited(init)), + window, + proto, + ); { let event = ev.upcast::(); event.init_event(type_, init.parent.bubbles, init.parent.cancelable); diff --git a/components/script/dom/audiobuffer.rs b/components/script/dom/audiobuffer.rs index cbc00b250e1..bad4bf87141 100644 --- a/components/script/dom/audiobuffer.rs +++ b/components/script/dom/audiobuffer.rs @@ -9,7 +9,7 @@ use crate::dom::bindings::codegen::Bindings::AudioBufferBinding::{ }; use crate::dom::bindings::error::{Error, Fallible}; use crate::dom::bindings::num::Finite; -use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::globalscope::GlobalScope; use crate::dom::window::Window; @@ -104,7 +104,7 @@ impl AudioBuffer { initial_data: Option<&[Vec]>, ) -> DomRoot { let buffer = AudioBuffer::new_inherited(number_of_channels, length, sample_rate); - let buffer = reflect_dom_object2(Box::new(buffer), global, proto); + let buffer = reflect_dom_object_with_proto(Box::new(buffer), global, proto); buffer.set_initial_data(initial_data); buffer } diff --git a/components/script/dom/audiobuffersourcenode.rs b/components/script/dom/audiobuffersourcenode.rs index affbe4797fe..ce1880bccd9 100644 --- a/components/script/dom/audiobuffersourcenode.rs +++ b/components/script/dom/audiobuffersourcenode.rs @@ -13,7 +13,7 @@ use crate::dom::bindings::codegen::Bindings::AudioScheduledSourceNodeBinding::Au use crate::dom::bindings::error::{Error, Fallible}; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::num::Finite; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::{Dom, DomRoot, MutNullableDom}; use crate::dom::window::Window; use dom_struct::dom_struct; @@ -109,7 +109,7 @@ impl AudioBufferSourceNode { options: &AudioBufferSourceOptions, ) -> Fallible> { let node = AudioBufferSourceNode::new_inherited(window, context, options)?; - Ok(reflect_dom_object2(Box::new(node), window, proto)) + Ok(reflect_dom_object_with_proto(Box::new(node), window, proto)) } #[allow(non_snake_case)] diff --git a/components/script/dom/audiocontext.rs b/components/script/dom/audiocontext.rs index 305c8cd4092..914323509a2 100644 --- a/components/script/dom/audiocontext.rs +++ b/components/script/dom/audiocontext.rs @@ -17,7 +17,7 @@ use crate::dom::bindings::error::{Error, Fallible}; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::num::Finite; use crate::dom::bindings::refcounted::{Trusted, TrustedPromise}; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject}; use crate::dom::bindings::root::DomRoot; use crate::dom::htmlmediaelement::HTMLMediaElement; use crate::dom::mediaelementaudiosourcenode::MediaElementAudioSourceNode; @@ -87,7 +87,7 @@ impl AudioContext { ) -> DomRoot { let pipeline_id = window.pipeline_id(); let context = AudioContext::new_inherited(options, pipeline_id); - let context = reflect_dom_object2(Box::new(context), window, proto); + let context = reflect_dom_object_with_proto(Box::new(context), window, proto); context.resume(); context } diff --git a/components/script/dom/bindings/interface.rs b/components/script/dom/bindings/interface.rs index 940562ba471..13658ca6410 100644 --- a/components/script/dom/bindings/interface.rs +++ b/components/script/dom/bindings/interface.rs @@ -11,8 +11,8 @@ use crate::dom::bindings::conversions::{get_dom_class, DOM_OBJECT_SLOT}; use crate::dom::bindings::guard::Guard; use crate::dom::bindings::principals::ServoJSPrincipals; use crate::dom::bindings::utils::{ - get_proto_or_iface_array, DOMJSClass, ProtoOrIfaceArray, DOM_PROTOTYPE_SLOT, JSCLASS_DOM_GLOBAL, - callargs_is_constructing, + callargs_is_constructing, get_proto_or_iface_array, DOMJSClass, ProtoOrIfaceArray, + DOM_PROTOTYPE_SLOT, JSCLASS_DOM_GLOBAL, }; use crate::script_runtime::JSContext as SafeJSContext; use js::error::throw_type_error; diff --git a/components/script/dom/bindings/reflector.rs b/components/script/dom/bindings/reflector.rs index dfdbe5fd145..c0f1305bf6c 100644 --- a/components/script/dom/bindings/reflector.rs +++ b/components/script/dom/bindings/reflector.rs @@ -26,7 +26,11 @@ where unsafe { T::WRAP(GlobalScope::get_cx(), global_scope, None, obj) } } -pub fn reflect_dom_object2(obj: Box, global: &U, proto: Option) -> DomRoot +pub fn reflect_dom_object_with_proto( + obj: Box, + global: &U, + proto: Option, +) -> DomRoot where T: DomObject + DomObjectWrap, U: DerivedFrom, diff --git a/components/script/dom/biquadfilternode.rs b/components/script/dom/biquadfilternode.rs index 6359383d2ac..197afaef36b 100644 --- a/components/script/dom/biquadfilternode.rs +++ b/components/script/dom/biquadfilternode.rs @@ -13,7 +13,7 @@ use crate::dom::bindings::codegen::Bindings::BiquadFilterNodeBinding::BiquadFilt use crate::dom::bindings::codegen::Bindings::BiquadFilterNodeBinding::BiquadFilterOptions; use crate::dom::bindings::codegen::Bindings::BiquadFilterNodeBinding::BiquadFilterType; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::window::Window; use dom_struct::dom_struct; @@ -121,7 +121,7 @@ impl BiquadFilterNode { options: &BiquadFilterOptions, ) -> Fallible> { let node = BiquadFilterNode::new_inherited(window, context, options)?; - Ok(reflect_dom_object2(Box::new(node), window, proto)) + Ok(reflect_dom_object_with_proto(Box::new(node), window, proto)) } #[allow(non_snake_case)] diff --git a/components/script/dom/blob.rs b/components/script/dom/blob.rs index 9400d9f133d..b2127f071a0 100644 --- a/components/script/dom/blob.rs +++ b/components/script/dom/blob.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::BlobBinding; use crate::dom::bindings::codegen::Bindings::BlobBinding::BlobMethods; use crate::dom::bindings::codegen::UnionTypes::ArrayBufferOrArrayBufferViewOrBlobOrString; use crate::dom::bindings::error::{Error, Fallible}; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::serializable::{Serializable, StorageKey}; use crate::dom::bindings::str::DOMString; @@ -48,7 +48,7 @@ impl Blob { blob_impl: BlobImpl, ) -> DomRoot { let dom_blob = - reflect_dom_object2(Box::new(Blob::new_inherited(&blob_impl)), global, proto); + reflect_dom_object_with_proto(Box::new(Blob::new_inherited(&blob_impl)), global, proto); global.track_blob(&dom_blob, blob_impl); dom_blob } diff --git a/components/script/dom/bluetoothadvertisingevent.rs b/components/script/dom/bluetoothadvertisingevent.rs index 0110b898222..cc667e75a4b 100644 --- a/components/script/dom/bluetoothadvertisingevent.rs +++ b/components/script/dom/bluetoothadvertisingevent.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::BluetoothAdvertisingEventBinding::B use crate::dom::bindings::codegen::Bindings::EventBinding::EventBinding::EventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::bluetoothdevice::BluetoothDevice; @@ -60,7 +60,7 @@ impl BluetoothAdvertisingEvent { txPower: Option, rssi: Option, ) -> DomRoot { - let ev = reflect_dom_object2( + let ev = reflect_dom_object_with_proto( Box::new(BluetoothAdvertisingEvent::new_inherited( device, name, appearance, txPower, rssi, )), diff --git a/components/script/dom/broadcastchannel.rs b/components/script/dom/broadcastchannel.rs index 17c56827fcb..458ed299e85 100644 --- a/components/script/dom/broadcastchannel.rs +++ b/components/script/dom/broadcastchannel.rs @@ -4,7 +4,7 @@ use crate::dom::bindings::codegen::Bindings::BroadcastChannelBinding::BroadcastChannelMethods; use crate::dom::bindings::error::{Error, ErrorResult}; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::bindings::structuredclone; @@ -41,7 +41,7 @@ impl BroadcastChannel { proto: Option, name: DOMString, ) -> DomRoot { - let channel = reflect_dom_object2( + let channel = reflect_dom_object_with_proto( Box::new(BroadcastChannel::new_inherited(name)), global, proto, diff --git a/components/script/dom/channelmergernode.rs b/components/script/dom/channelmergernode.rs index e57543019f6..7cafb8b44b6 100644 --- a/components/script/dom/channelmergernode.rs +++ b/components/script/dom/channelmergernode.rs @@ -9,7 +9,7 @@ use crate::dom::bindings::codegen::Bindings::AudioNodeBinding::{ }; use crate::dom::bindings::codegen::Bindings::ChannelMergerNodeBinding::ChannelMergerOptions; use crate::dom::bindings::error::{Error, Fallible}; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::DomRoot; use crate::dom::window::Window; use dom_struct::dom_struct; @@ -69,7 +69,7 @@ impl ChannelMergerNode { options: &ChannelMergerOptions, ) -> Fallible> { let node = ChannelMergerNode::new_inherited(window, context, options)?; - Ok(reflect_dom_object2(Box::new(node), window, proto)) + Ok(reflect_dom_object_with_proto(Box::new(node), window, proto)) } #[allow(non_snake_case)] diff --git a/components/script/dom/channelsplitternode.rs b/components/script/dom/channelsplitternode.rs index ca9477be9fa..077b256ffd8 100644 --- a/components/script/dom/channelsplitternode.rs +++ b/components/script/dom/channelsplitternode.rs @@ -9,7 +9,7 @@ use crate::dom::bindings::codegen::Bindings::AudioNodeBinding::{ }; use crate::dom::bindings::codegen::Bindings::ChannelSplitterNodeBinding::ChannelSplitterOptions; use crate::dom::bindings::error::{Error, Fallible}; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::DomRoot; use crate::dom::window::Window; use dom_struct::dom_struct; @@ -71,7 +71,7 @@ impl ChannelSplitterNode { options: &ChannelSplitterOptions, ) -> Fallible> { let node = ChannelSplitterNode::new_inherited(window, context, options)?; - Ok(reflect_dom_object2(Box::new(node), window, proto)) + Ok(reflect_dom_object_with_proto(Box::new(node), window, proto)) } #[allow(non_snake_case)] diff --git a/components/script/dom/closeevent.rs b/components/script/dom/closeevent.rs index 24609621633..62a0a066f61 100644 --- a/components/script/dom/closeevent.rs +++ b/components/script/dom/closeevent.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::CloseEventBinding::CloseEventMethod use crate::dom::bindings::codegen::Bindings::EventBinding::EventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::event::{Event, EventBubbles, EventCancelable}; @@ -60,7 +60,7 @@ impl CloseEvent { reason: DOMString, ) -> DomRoot { let event = Box::new(CloseEvent::new_inherited(wasClean, code, reason)); - let ev = reflect_dom_object2(event, global, proto); + let ev = reflect_dom_object_with_proto(event, global, proto); { let event = ev.upcast::(); event.init_event(type_, bool::from(bubbles), bool::from(cancelable)); diff --git a/components/script/dom/compositionevent.rs b/components/script/dom/compositionevent.rs index 6739df7a576..05058a3a0cf 100644 --- a/components/script/dom/compositionevent.rs +++ b/components/script/dom/compositionevent.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::CompositionEventBinding::{ }; use crate::dom::bindings::codegen::Bindings::UIEventBinding::UIEventBinding::UIEventMethods; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::{reflect_dom_object, reflect_dom_object2}; +use crate::dom::bindings::reflector::{reflect_dom_object, reflect_dom_object_with_proto}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::uievent::UIEvent; @@ -57,7 +57,7 @@ impl CompositionEvent { detail: i32, data: DOMString, ) -> DomRoot { - let ev = reflect_dom_object2( + let ev = reflect_dom_object_with_proto( Box::new(CompositionEvent { uievent: UIEvent::new_inherited(), data: data, diff --git a/components/script/dom/constantsourcenode.rs b/components/script/dom/constantsourcenode.rs index be1125bb283..cbde279923d 100644 --- a/components/script/dom/constantsourcenode.rs +++ b/components/script/dom/constantsourcenode.rs @@ -9,7 +9,7 @@ use crate::dom::bindings::codegen::Bindings::AudioParamBinding::AutomationRate; use crate::dom::bindings::codegen::Bindings::ConstantSourceNodeBinding::ConstantSourceNodeMethods; use crate::dom::bindings::codegen::Bindings::ConstantSourceNodeBinding::ConstantSourceOptions; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::window::Window; use dom_struct::dom_struct; @@ -74,7 +74,7 @@ impl ConstantSourceNode { options: &ConstantSourceOptions, ) -> Fallible> { let node = ConstantSourceNode::new_inherited(window, context, options)?; - Ok(reflect_dom_object2(Box::new(node), window, proto)) + Ok(reflect_dom_object_with_proto(Box::new(node), window, proto)) } #[allow(non_snake_case)] diff --git a/components/script/dom/customevent.rs b/components/script/dom/customevent.rs index 8b5c2ec14d0..4004adebd82 100644 --- a/components/script/dom/customevent.rs +++ b/components/script/dom/customevent.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::CustomEventBinding::CustomEventMeth use crate::dom::bindings::codegen::Bindings::EventBinding::EventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::bindings::trace::RootedTraceableBox; @@ -45,7 +45,7 @@ impl CustomEvent { global: &GlobalScope, proto: Option, ) -> DomRoot { - reflect_dom_object2(Box::new(CustomEvent::new_inherited()), global, proto) + reflect_dom_object_with_proto(Box::new(CustomEvent::new_inherited()), global, proto) } fn new( diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index eb7862b8211..a7a99695147 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -31,7 +31,7 @@ use crate::dom::bindings::error::{Error, ErrorResult, Fallible}; use crate::dom::bindings::inheritance::{Castable, ElementTypeId, HTMLElementTypeId, NodeTypeId}; use crate::dom::bindings::num::Finite; use crate::dom::bindings::refcounted::{Trusted, TrustedPromise}; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject}; use crate::dom::bindings::root::{Dom, DomRoot, DomSlice, LayoutDom, MutNullableDom}; use crate::dom::bindings::str::{DOMString, USVString}; use crate::dom::bindings::xmlname::XMLName::InvalidXMLName; @@ -3322,7 +3322,7 @@ impl Document { referrer_policy: Option, canceller: FetchCanceller, ) -> DomRoot { - let document = reflect_dom_object2( + let document = reflect_dom_object_with_proto( Box::new(Document::new_inherited( window, has_browsing_context, diff --git a/components/script/dom/domexception.rs b/components/script/dom/domexception.rs index 6252837b66c..e5462fa4376 100644 --- a/components/script/dom/domexception.rs +++ b/components/script/dom/domexception.rs @@ -5,7 +5,9 @@ use crate::dom::bindings::codegen::Bindings::DOMExceptionBinding::DOMExceptionConstants; use crate::dom::bindings::codegen::Bindings::DOMExceptionBinding::DOMExceptionMethods; use crate::dom::bindings::error::Error; -use crate::dom::bindings::reflector::{reflect_dom_object, reflect_dom_object2, Reflector}; +use crate::dom::bindings::reflector::{ + reflect_dom_object, reflect_dom_object_with_proto, Reflector, +}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::globalscope::GlobalScope; @@ -144,7 +146,7 @@ impl DOMException { message: DOMString, name: DOMString, ) -> Result, Error> { - Ok(reflect_dom_object2( + Ok(reflect_dom_object_with_proto( Box::new(DOMException::new_inherited(message, name)), global, proto, diff --git a/components/script/dom/dommatrix.rs b/components/script/dom/dommatrix.rs index 54948489d11..c37ba3dfc79 100644 --- a/components/script/dom/dommatrix.rs +++ b/components/script/dom/dommatrix.rs @@ -8,7 +8,7 @@ use crate::dom::bindings::codegen::UnionTypes::StringOrUnrestrictedDoubleSequenc use crate::dom::bindings::error; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::DomRoot; use crate::dom::dommatrixreadonly::{ dommatrixinit_to_matrix, entries_to_matrix, transform_to_matrix, DOMMatrixReadOnly, @@ -39,7 +39,7 @@ impl DOMMatrix { matrix: Transform3D, ) -> DomRoot { let dommatrix = Self::new_inherited(is2D, matrix); - reflect_dom_object2(Box::new(dommatrix), global, proto) + reflect_dom_object_with_proto(Box::new(dommatrix), global, proto) } pub fn new_inherited(is2D: bool, matrix: Transform3D) -> Self { diff --git a/components/script/dom/dommatrixreadonly.rs b/components/script/dom/dommatrixreadonly.rs index 3b99a7a21b7..cd0cdb058a1 100644 --- a/components/script/dom/dommatrixreadonly.rs +++ b/components/script/dom/dommatrixreadonly.rs @@ -10,7 +10,7 @@ use crate::dom::bindings::codegen::UnionTypes::StringOrUnrestrictedDoubleSequenc use crate::dom::bindings::error; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::dommatrix::DOMMatrix; use crate::dom::dompoint::DOMPoint; @@ -52,7 +52,7 @@ impl DOMMatrixReadOnly { matrix: Transform3D, ) -> DomRoot { let dommatrix = Self::new_inherited(is2D, matrix); - reflect_dom_object2(Box::new(dommatrix), global, proto) + reflect_dom_object_with_proto(Box::new(dommatrix), global, proto) } pub fn new_inherited(is2D: bool, matrix: Transform3D) -> Self { diff --git a/components/script/dom/domparser.rs b/components/script/dom/domparser.rs index 13db9b60f41..9562a32d844 100644 --- a/components/script/dom/domparser.rs +++ b/components/script/dom/domparser.rs @@ -12,7 +12,7 @@ use crate::dom::bindings::codegen::Bindings::DOMParserBinding::SupportedType::Te use crate::dom::bindings::codegen::Bindings::DocumentBinding::DocumentReadyState; use crate::dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, Reflector}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::document::DocumentSource; @@ -38,7 +38,7 @@ impl DOMParser { } fn new(window: &Window, proto: Option) -> DomRoot { - reflect_dom_object2(Box::new(DOMParser::new_inherited(window)), window, proto) + reflect_dom_object_with_proto(Box::new(DOMParser::new_inherited(window)), window, proto) } #[allow(non_snake_case)] diff --git a/components/script/dom/dompoint.rs b/components/script/dom/dompoint.rs index 79b0ea2b86a..1398712076b 100644 --- a/components/script/dom/dompoint.rs +++ b/components/script/dom/dompoint.rs @@ -5,7 +5,7 @@ use crate::dom::bindings::codegen::Bindings::DOMPointBinding::{DOMPointInit, DOMPointMethods}; use crate::dom::bindings::codegen::Bindings::DOMPointReadOnlyBinding::DOMPointReadOnlyMethods; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::DomRoot; use crate::dom::dompointreadonly::{DOMPointReadOnly, DOMPointWriteMethods}; use crate::dom::globalscope::GlobalScope; @@ -38,7 +38,7 @@ impl DOMPoint { z: f64, w: f64, ) -> DomRoot { - reflect_dom_object2(Box::new(DOMPoint::new_inherited(x, y, z, w)), global, proto) + reflect_dom_object_with_proto(Box::new(DOMPoint::new_inherited(x, y, z, w)), global, proto) } pub fn Constructor( diff --git a/components/script/dom/dompointreadonly.rs b/components/script/dom/dompointreadonly.rs index 77819e917fd..2e5386a367d 100644 --- a/components/script/dom/dompointreadonly.rs +++ b/components/script/dom/dompointreadonly.rs @@ -5,7 +5,7 @@ use crate::dom::bindings::codegen::Bindings::DOMPointBinding::DOMPointInit; use crate::dom::bindings::codegen::Bindings::DOMPointReadOnlyBinding::DOMPointReadOnlyMethods; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::globalscope::GlobalScope; use dom_struct::dom_struct; @@ -46,7 +46,7 @@ impl DOMPointReadOnly { z: f64, w: f64, ) -> DomRoot { - reflect_dom_object2( + reflect_dom_object_with_proto( Box::new(DOMPointReadOnly::new_inherited(x, y, z, w)), global, proto, diff --git a/components/script/dom/domquad.rs b/components/script/dom/domquad.rs index 6cb4653b21f..f015b09ee1c 100644 --- a/components/script/dom/domquad.rs +++ b/components/script/dom/domquad.rs @@ -6,7 +6,7 @@ use crate::dom::bindings::codegen::Bindings::DOMPointBinding::{DOMPointInit, DOM use crate::dom::bindings::codegen::Bindings::DOMQuadBinding::{DOMQuadInit, DOMQuadMethods}; use crate::dom::bindings::codegen::Bindings::DOMRectReadOnlyBinding::DOMRectInit; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject, Reflector}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::dompoint::DOMPoint; use crate::dom::domrect::DOMRect; @@ -54,7 +54,7 @@ impl DOMQuad { p3: &DOMPoint, p4: &DOMPoint, ) -> DomRoot { - reflect_dom_object2( + reflect_dom_object_with_proto( Box::new(DOMQuad::new_inherited(p1, p2, p3, p4)), global, proto, diff --git a/components/script/dom/domrect.rs b/components/script/dom/domrect.rs index 6836b12127f..5fa5db8a606 100644 --- a/components/script/dom/domrect.rs +++ b/components/script/dom/domrect.rs @@ -5,7 +5,7 @@ use crate::dom::bindings::codegen::Bindings::DOMRectBinding::DOMRectMethods; use crate::dom::bindings::codegen::Bindings::DOMRectReadOnlyBinding::DOMRectReadOnlyMethods; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::DomRoot; use crate::dom::domrectreadonly::DOMRectReadOnly; use crate::dom::globalscope::GlobalScope; @@ -36,7 +36,7 @@ impl DOMRect { width: f64, height: f64, ) -> DomRoot { - reflect_dom_object2( + reflect_dom_object_with_proto( Box::new(DOMRect::new_inherited(x, y, width, height)), global, proto, diff --git a/components/script/dom/domrectreadonly.rs b/components/script/dom/domrectreadonly.rs index 80bb793857d..09461954285 100644 --- a/components/script/dom/domrectreadonly.rs +++ b/components/script/dom/domrectreadonly.rs @@ -4,7 +4,7 @@ use crate::dom::bindings::codegen::Bindings::DOMRectReadOnlyBinding::DOMRectReadOnlyMethods; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::globalscope::GlobalScope; use dom_struct::dom_struct; @@ -39,7 +39,7 @@ impl DOMRectReadOnly { width: f64, height: f64, ) -> DomRoot { - reflect_dom_object2( + reflect_dom_object_with_proto( Box::new(DOMRectReadOnly::new_inherited(x, y, width, height)), global, proto, diff --git a/components/script/dom/errorevent.rs b/components/script/dom/errorevent.rs index 6f5daebed37..cc8664849df 100644 --- a/components/script/dom/errorevent.rs +++ b/components/script/dom/errorevent.rs @@ -8,7 +8,7 @@ use crate::dom::bindings::codegen::Bindings::ErrorEventBinding::ErrorEventMethod use crate::dom::bindings::codegen::Bindings::EventBinding::EventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::bindings::trace::RootedTraceableBox; @@ -46,7 +46,7 @@ impl ErrorEvent { } fn new_uninitialized(global: &GlobalScope, proto: Option) -> DomRoot { - reflect_dom_object2(Box::new(ErrorEvent::new_inherited()), global, proto) + reflect_dom_object_with_proto(Box::new(ErrorEvent::new_inherited()), global, proto) } pub fn new( diff --git a/components/script/dom/event.rs b/components/script/dom/event.rs index 48467485dfb..417170eac2e 100644 --- a/components/script/dom/event.rs +++ b/components/script/dom/event.rs @@ -12,7 +12,7 @@ use crate::dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::refcounted::Trusted; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject, Reflector}; use crate::dom::bindings::root::{DomRoot, MutNullableDom}; use crate::dom::bindings::str::DOMString; use crate::dom::document::Document; @@ -80,7 +80,7 @@ impl Event { global: &GlobalScope, proto: Option, ) -> DomRoot { - reflect_dom_object2(Box::new(Event::new_inherited()), global, proto) + reflect_dom_object_with_proto(Box::new(Event::new_inherited()), global, proto) } pub fn new( diff --git a/components/script/dom/eventsource.rs b/components/script/dom/eventsource.rs index 639eba4f949..f451545f491 100644 --- a/components/script/dom/eventsource.rs +++ b/components/script/dom/eventsource.rs @@ -9,7 +9,7 @@ use crate::dom::bindings::codegen::Bindings::EventSourceBinding::{ use crate::dom::bindings::error::{Error, Fallible}; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::refcounted::Trusted; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; @@ -466,7 +466,7 @@ impl EventSource { url: ServoUrl, with_credentials: bool, ) -> DomRoot { - reflect_dom_object2( + reflect_dom_object_with_proto( Box::new(EventSource::new_inherited(url, with_credentials)), global, proto, diff --git a/components/script/dom/eventtarget.rs b/components/script/dom/eventtarget.rs index 0ed9d2c10ba..65375632d6c 100644 --- a/components/script/dom/eventtarget.rs +++ b/components/script/dom/eventtarget.rs @@ -21,7 +21,7 @@ use crate::dom::bindings::codegen::UnionTypes::EventListenerOptionsOrBoolean; use crate::dom::bindings::codegen::UnionTypes::EventOrString; use crate::dom::bindings::error::{report_pending_exception, Error, Fallible}; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::element::Element; @@ -356,7 +356,7 @@ impl EventTarget { } fn new(global: &GlobalScope, proto: Option) -> DomRoot { - reflect_dom_object2(Box::new(EventTarget::new_inherited()), global, proto) + reflect_dom_object_with_proto(Box::new(EventTarget::new_inherited()), global, proto) } #[allow(non_snake_case)] diff --git a/components/script/dom/extendableevent.rs b/components/script/dom/extendableevent.rs index a19190ebd03..2ba241a8b8a 100644 --- a/components/script/dom/extendableevent.rs +++ b/components/script/dom/extendableevent.rs @@ -6,7 +6,7 @@ use crate::dom::bindings::codegen::Bindings::EventBinding::{self, EventMethods}; use crate::dom::bindings::codegen::Bindings::ExtendableEventBinding; use crate::dom::bindings::error::{Error, ErrorResult, Fallible}; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; @@ -48,7 +48,11 @@ impl ExtendableEvent { bubbles: bool, cancelable: bool, ) -> DomRoot { - let ev = reflect_dom_object2(Box::new(ExtendableEvent::new_inherited()), worker, proto); + let ev = reflect_dom_object_with_proto( + Box::new(ExtendableEvent::new_inherited()), + worker, + proto, + ); { let event = ev.upcast::(); event.init_event(type_, bubbles, cancelable); diff --git a/components/script/dom/extendablemessageevent.rs b/components/script/dom/extendablemessageevent.rs index 2d22e00be94..8c5812f9d91 100644 --- a/components/script/dom/extendablemessageevent.rs +++ b/components/script/dom/extendablemessageevent.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::ExtendableMessageEventBinding; use crate::dom::bindings::codegen::Bindings::ExtendableMessageEventBinding::ExtendableMessageEventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::bindings::trace::RootedTraceableBox; @@ -102,7 +102,7 @@ impl ExtendableMessageEvent { lastEventId, ports, )); - let ev = reflect_dom_object2(ev, global, proto); + let ev = reflect_dom_object_with_proto(ev, global, proto); { let event = ev.upcast::(); event.init_event(type_, bubbles, cancelable); diff --git a/components/script/dom/file.rs b/components/script/dom/file.rs index 946677d5b35..53ca5fafb02 100644 --- a/components/script/dom/file.rs +++ b/components/script/dom/file.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::FileBinding::FileMethods; use crate::dom::bindings::codegen::UnionTypes::ArrayBufferOrArrayBufferViewOrBlobOrString; use crate::dom::bindings::error::{Error, Fallible}; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::blob::{blob_parts_to_bytes, normalize_type_string, Blob}; @@ -59,7 +59,7 @@ impl File { name: DOMString, modified: Option, ) -> DomRoot { - let file = reflect_dom_object2( + let file = reflect_dom_object_with_proto( Box::new(File::new_inherited(&blob_impl, name, modified)), global, proto, diff --git a/components/script/dom/filereader.rs b/components/script/dom/filereader.rs index b89440ab600..5a1a880c274 100644 --- a/components/script/dom/filereader.rs +++ b/components/script/dom/filereader.rs @@ -11,7 +11,7 @@ use crate::dom::bindings::codegen::UnionTypes::StringOrObject; use crate::dom::bindings::error::{Error, ErrorResult, Fallible}; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::refcounted::Trusted; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject}; use crate::dom::bindings::root::{DomRoot, MutNullableDom}; use crate::dom::bindings::str::DOMString; use crate::dom::bindings::trace::RootedTraceableBox; @@ -153,7 +153,7 @@ impl FileReader { } fn new(global: &GlobalScope, proto: Option) -> DomRoot { - reflect_dom_object2(Box::new(FileReader::new_inherited()), global, proto) + reflect_dom_object_with_proto(Box::new(FileReader::new_inherited()), global, proto) } #[allow(non_snake_case)] diff --git a/components/script/dom/filereadersync.rs b/components/script/dom/filereadersync.rs index d92a161759b..a2f375ef80a 100644 --- a/components/script/dom/filereadersync.rs +++ b/components/script/dom/filereadersync.rs @@ -5,7 +5,7 @@ use crate::dom::bindings::codegen::Bindings::BlobBinding::BlobMethods; use crate::dom::bindings::codegen::Bindings::FileReaderSyncBinding::FileReaderSyncMethods; use crate::dom::bindings::error::{Error, Fallible}; -use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::blob::Blob; @@ -32,7 +32,7 @@ impl FileReaderSync { } fn new(global: &GlobalScope, proto: Option) -> DomRoot { - reflect_dom_object2(Box::new(FileReaderSync::new_inherited()), global, proto) + reflect_dom_object_with_proto(Box::new(FileReaderSync::new_inherited()), global, proto) } #[allow(non_snake_case)] diff --git a/components/script/dom/focusevent.rs b/components/script/dom/focusevent.rs index d31059b09cc..d980ea6ed49 100644 --- a/components/script/dom/focusevent.rs +++ b/components/script/dom/focusevent.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::FocusEventBinding::FocusEventMethod use crate::dom::bindings::codegen::Bindings::UIEventBinding::UIEventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::{DomRoot, MutNullableDom}; use crate::dom::bindings::str::DOMString; use crate::dom::event::{EventBubbles, EventCancelable}; @@ -40,7 +40,7 @@ impl FocusEvent { window: &Window, proto: Option, ) -> DomRoot { - reflect_dom_object2(Box::new(FocusEvent::new_inherited()), window, proto) + reflect_dom_object_with_proto(Box::new(FocusEvent::new_inherited()), window, proto) } pub fn new( diff --git a/components/script/dom/formdata.rs b/components/script/dom/formdata.rs index c4234ff83e7..af810e2d888 100644 --- a/components/script/dom/formdata.rs +++ b/components/script/dom/formdata.rs @@ -8,7 +8,7 @@ use crate::dom::bindings::codegen::UnionTypes::FileOrUSVString; use crate::dom::bindings::error::{Error, Fallible}; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::iterable::Iterable; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::{DOMString, USVString}; use crate::dom::blob::Blob; @@ -51,7 +51,7 @@ impl FormData { global: &GlobalScope, proto: Option, ) -> DomRoot { - reflect_dom_object2( + reflect_dom_object_with_proto( Box::new(FormData::new_inherited(form_datums)), global, proto, diff --git a/components/script/dom/formdataevent.rs b/components/script/dom/formdataevent.rs index 2f4b765290c..1b78bd1af9c 100644 --- a/components/script/dom/formdataevent.rs +++ b/components/script/dom/formdataevent.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::FormDataEventBinding; use crate::dom::bindings::codegen::Bindings::FormDataEventBinding::FormDataEventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; @@ -44,7 +44,7 @@ impl FormDataEvent { cancelable: EventCancelable, form_data: &FormData, ) -> DomRoot { - let ev = reflect_dom_object2( + let ev = reflect_dom_object_with_proto( Box::new(FormDataEvent { event: Event::new_inherited(), form_data: Dom::from_ref(form_data), diff --git a/components/script/dom/gainnode.rs b/components/script/dom/gainnode.rs index 9b3910cf31a..f5d8a8f793f 100644 --- a/components/script/dom/gainnode.rs +++ b/components/script/dom/gainnode.rs @@ -11,7 +11,7 @@ use crate::dom::bindings::codegen::Bindings::AudioNodeBinding::{ use crate::dom::bindings::codegen::Bindings::AudioParamBinding::AutomationRate; use crate::dom::bindings::codegen::Bindings::GainNodeBinding::{GainNodeMethods, GainOptions}; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::window::Window; use dom_struct::dom_struct; @@ -77,7 +77,7 @@ impl GainNode { options: &GainOptions, ) -> Fallible> { let node = GainNode::new_inherited(window, context, options)?; - Ok(reflect_dom_object2(Box::new(node), window, proto)) + Ok(reflect_dom_object_with_proto(Box::new(node), window, proto)) } #[allow(non_snake_case)] diff --git a/components/script/dom/gamepadevent.rs b/components/script/dom/gamepadevent.rs index 1553b2eb039..ec6da6ba302 100644 --- a/components/script/dom/gamepadevent.rs +++ b/components/script/dom/gamepadevent.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::GamepadEventBinding; use crate::dom::bindings::codegen::Bindings::GamepadEventBinding::GamepadEventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; @@ -55,7 +55,7 @@ impl GamepadEvent { cancelable: bool, gamepad: &Gamepad, ) -> DomRoot { - let ev = reflect_dom_object2( + let ev = reflect_dom_object_with_proto( Box::new(GamepadEvent::new_inherited(&gamepad)), global, proto, diff --git a/components/script/dom/gpuoutofmemoryerror.rs b/components/script/dom/gpuoutofmemoryerror.rs index 5b6e7053397..c7ba07b1e6e 100644 --- a/components/script/dom/gpuoutofmemoryerror.rs +++ b/components/script/dom/gpuoutofmemoryerror.rs @@ -2,7 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::globalscope::GlobalScope; use dom_struct::dom_struct; @@ -25,7 +25,7 @@ impl GPUOutOfMemoryError { } fn new_with_proto(global: &GlobalScope, proto: Option) -> DomRoot { - reflect_dom_object2( + reflect_dom_object_with_proto( Box::new(GPUOutOfMemoryError::new_inherited()), global, proto, diff --git a/components/script/dom/gpuuncapturederrorevent.rs b/components/script/dom/gpuuncapturederrorevent.rs index bdf62162dfe..e5c590fdd68 100644 --- a/components/script/dom/gpuuncapturederrorevent.rs +++ b/components/script/dom/gpuuncapturederrorevent.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::GPUUncapturedErrorEventBinding::{ GPUUncapturedErrorEventInit, GPUUncapturedErrorEventMethods, }; use crate::dom::bindings::codegen::Bindings::GPUValidationErrorBinding::GPUError; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; @@ -45,7 +45,7 @@ impl GPUUncapturedErrorEvent { type_: DOMString, init: &GPUUncapturedErrorEventInit, ) -> DomRoot { - let ev = reflect_dom_object2( + let ev = reflect_dom_object_with_proto( Box::new(GPUUncapturedErrorEvent::new_inherited(init)), global, proto, diff --git a/components/script/dom/gpuvalidationerror.rs b/components/script/dom/gpuvalidationerror.rs index 40c75c31ec6..412b30f5862 100644 --- a/components/script/dom/gpuvalidationerror.rs +++ b/components/script/dom/gpuvalidationerror.rs @@ -3,7 +3,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ use crate::dom::bindings::codegen::Bindings::GPUValidationErrorBinding::GPUValidationErrorMethods; -use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::globalscope::GlobalScope; @@ -33,7 +33,7 @@ impl GPUValidationError { proto: Option, message: DOMString, ) -> DomRoot { - reflect_dom_object2( + reflect_dom_object_with_proto( Box::new(GPUValidationError::new_inherited(message)), global, proto, diff --git a/components/script/dom/hashchangeevent.rs b/components/script/dom/hashchangeevent.rs index 18557444bdd..e93f8a94476 100644 --- a/components/script/dom/hashchangeevent.rs +++ b/components/script/dom/hashchangeevent.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::HashChangeEventBinding; use crate::dom::bindings::codegen::Bindings::HashChangeEventBinding::HashChangeEventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::{DOMString, USVString}; use crate::dom::event::Event; @@ -41,7 +41,7 @@ impl HashChangeEvent { window: &Window, proto: Option, ) -> DomRoot { - reflect_dom_object2( + reflect_dom_object_with_proto( Box::new(HashChangeEvent::new_inherited(String::new(), String::new())), window, proto, @@ -68,7 +68,7 @@ impl HashChangeEvent { old_url: String, new_url: String, ) -> DomRoot { - let ev = reflect_dom_object2( + let ev = reflect_dom_object_with_proto( Box::new(HashChangeEvent::new_inherited(old_url, new_url)), window, proto, diff --git a/components/script/dom/headers.rs b/components/script/dom/headers.rs index 8cae2df36a1..a2e2d4acdac 100644 --- a/components/script/dom/headers.rs +++ b/components/script/dom/headers.rs @@ -6,7 +6,7 @@ use crate::dom::bindings::cell::DomRefCell; use crate::dom::bindings::codegen::Bindings::HeadersBinding::{HeadersInit, HeadersMethods}; use crate::dom::bindings::error::{Error, ErrorResult, Fallible}; use crate::dom::bindings::iterable::Iterable; -use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::{is_token, ByteString}; use crate::dom::globalscope::GlobalScope; @@ -52,7 +52,7 @@ impl Headers { } fn new_with_proto(global: &GlobalScope, proto: Option) -> DomRoot { - reflect_dom_object2(Box::new(Headers::new_inherited()), global, proto) + reflect_dom_object_with_proto(Box::new(Headers::new_inherited()), global, proto) } // https://fetch.spec.whatwg.org/#dom-headers diff --git a/components/script/dom/imagedata.rs b/components/script/dom/imagedata.rs index 27129559475..434b2f20252 100644 --- a/components/script/dom/imagedata.rs +++ b/components/script/dom/imagedata.rs @@ -4,7 +4,7 @@ use crate::dom::bindings::codegen::Bindings::ImageDataBinding::ImageDataMethods; use crate::dom::bindings::error::{Error, Fallible}; -use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::globalscope::GlobalScope; use crate::script_runtime::JSContext; @@ -91,7 +91,7 @@ impl ImageData { (*imagedata).data.set(jsobject); - Ok(reflect_dom_object2(imagedata, global, proto)) + Ok(reflect_dom_object_with_proto(imagedata, global, proto)) } #[allow(unsafe_code)] @@ -119,7 +119,7 @@ impl ImageData { .unwrap(); (*imagedata).data.set(array.get()); - Ok(reflect_dom_object2(imagedata, global, proto)) + Ok(reflect_dom_object_with_proto(imagedata, global, proto)) } // https://html.spec.whatwg.org/multipage/#pixel-manipulation:dom-imagedata-3 #[allow(unsafe_code, non_snake_case)] diff --git a/components/script/dom/inputevent.rs b/components/script/dom/inputevent.rs index 2c1ee15cbae..d96f64327b6 100644 --- a/components/script/dom/inputevent.rs +++ b/components/script/dom/inputevent.rs @@ -5,7 +5,7 @@ use crate::dom::bindings::codegen::Bindings::InputEventBinding::{self, InputEventMethods}; use crate::dom::bindings::codegen::Bindings::UIEventBinding::UIEventBinding::UIEventMethods; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::uievent::UIEvent; @@ -32,7 +32,7 @@ impl InputEvent { data: Option, is_composing: bool, ) -> DomRoot { - let ev = reflect_dom_object2( + let ev = reflect_dom_object_with_proto( Box::new(InputEvent { uievent: UIEvent::new_inherited(), data: data, diff --git a/components/script/dom/keyboardevent.rs b/components/script/dom/keyboardevent.rs index 1a247c46287..8e31868fca8 100644 --- a/components/script/dom/keyboardevent.rs +++ b/components/script/dom/keyboardevent.rs @@ -8,7 +8,7 @@ use crate::dom::bindings::codegen::Bindings::KeyboardEventBinding::KeyboardEvent use crate::dom::bindings::codegen::Bindings::UIEventBinding::UIEventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; @@ -60,7 +60,7 @@ impl KeyboardEvent { window: &Window, proto: Option, ) -> DomRoot { - reflect_dom_object2(Box::new(KeyboardEvent::new_inherited()), window, proto) + reflect_dom_object_with_proto(Box::new(KeyboardEvent::new_inherited()), window, proto) } pub fn new( diff --git a/components/script/dom/mediaelementaudiosourcenode.rs b/components/script/dom/mediaelementaudiosourcenode.rs index 98f43a063be..79746215559 100644 --- a/components/script/dom/mediaelementaudiosourcenode.rs +++ b/components/script/dom/mediaelementaudiosourcenode.rs @@ -7,7 +7,7 @@ use crate::dom::audionode::AudioNode; use crate::dom::bindings::codegen::Bindings::MediaElementAudioSourceNodeBinding::MediaElementAudioSourceNodeMethods; use crate::dom::bindings::codegen::Bindings::MediaElementAudioSourceNodeBinding::MediaElementAudioSourceOptions; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::htmlmediaelement::HTMLMediaElement; use crate::dom::window::Window; @@ -65,7 +65,7 @@ impl MediaElementAudioSourceNode { media_element: &HTMLMediaElement, ) -> Fallible> { let node = MediaElementAudioSourceNode::new_inherited(context, media_element)?; - Ok(reflect_dom_object2(Box::new(node), window, proto)) + Ok(reflect_dom_object_with_proto(Box::new(node), window, proto)) } #[allow(non_snake_case)] diff --git a/components/script/dom/mediametadata.rs b/components/script/dom/mediametadata.rs index 94e41bc058d..8e931dd0b4b 100644 --- a/components/script/dom/mediametadata.rs +++ b/components/script/dom/mediametadata.rs @@ -6,7 +6,7 @@ use crate::dom::bindings::cell::DomRefCell; use crate::dom::bindings::codegen::Bindings::MediaMetadataBinding::MediaMetadataInit; use crate::dom::bindings::codegen::Bindings::MediaMetadataBinding::MediaMetadataMethods; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, Reflector}; use crate::dom::bindings::root::{DomRoot, MutNullableDom}; use crate::dom::bindings::str::DOMString; use crate::dom::mediasession::MediaSession; @@ -43,7 +43,7 @@ impl MediaMetadata { proto: Option, init: &MediaMetadataInit, ) -> DomRoot { - reflect_dom_object2(Box::new(MediaMetadata::new_inherited(init)), global, proto) + reflect_dom_object_with_proto(Box::new(MediaMetadata::new_inherited(init)), global, proto) } /// https://w3c.github.io/mediasession/#dom-mediametadata-mediametadata diff --git a/components/script/dom/mediaquerylistevent.rs b/components/script/dom/mediaquerylistevent.rs index fdeedc93052..c58dd3aee5c 100644 --- a/components/script/dom/mediaquerylistevent.rs +++ b/components/script/dom/mediaquerylistevent.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::MediaQueryListEventBinding::MediaQu use crate::dom::bindings::codegen::Bindings::MediaQueryListEventBinding::MediaQueryListEventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; @@ -38,7 +38,7 @@ impl MediaQueryListEvent { media: media, matches: Cell::new(matches), }); - reflect_dom_object2(ev, global, proto) + reflect_dom_object_with_proto(ev, global, proto) } pub fn new( diff --git a/components/script/dom/mediastream.rs b/components/script/dom/mediastream.rs index b633fbb8915..5e1b1dc5970 100644 --- a/components/script/dom/mediastream.rs +++ b/components/script/dom/mediastream.rs @@ -5,7 +5,7 @@ use crate::dom::bindings::cell::{DomRefCell, Ref}; use crate::dom::bindings::codegen::Bindings::MediaStreamBinding::MediaStreamMethods; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::eventtarget::EventTarget; @@ -37,7 +37,7 @@ impl MediaStream { } fn new_with_proto(global: &GlobalScope, proto: Option) -> DomRoot { - reflect_dom_object2(Box::new(MediaStream::new_inherited()), global, proto) + reflect_dom_object_with_proto(Box::new(MediaStream::new_inherited()), global, proto) } pub fn new_single( diff --git a/components/script/dom/mediastreamaudiodestinationnode.rs b/components/script/dom/mediastreamaudiodestinationnode.rs index b42fb9d89f8..c7d060fb6a6 100644 --- a/components/script/dom/mediastreamaudiodestinationnode.rs +++ b/components/script/dom/mediastreamaudiodestinationnode.rs @@ -11,7 +11,7 @@ use crate::dom::bindings::codegen::Bindings::AudioNodeBinding::{ use crate::dom::bindings::codegen::Bindings::MediaStreamAudioDestinationNodeBinding::MediaStreamAudioDestinationNodeMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::mediastream::MediaStream; use crate::dom::window::Window; @@ -70,7 +70,7 @@ impl MediaStreamAudioDestinationNode { options: &AudioNodeOptions, ) -> Fallible> { let node = MediaStreamAudioDestinationNode::new_inherited(context, options)?; - Ok(reflect_dom_object2(Box::new(node), window, proto)) + Ok(reflect_dom_object_with_proto(Box::new(node), window, proto)) } #[allow(non_snake_case)] diff --git a/components/script/dom/mediastreamaudiosourcenode.rs b/components/script/dom/mediastreamaudiosourcenode.rs index 4137b0c2896..4ac4e8cf9b4 100644 --- a/components/script/dom/mediastreamaudiosourcenode.rs +++ b/components/script/dom/mediastreamaudiosourcenode.rs @@ -9,7 +9,7 @@ use crate::dom::bindings::codegen::Bindings::MediaStreamAudioSourceNodeBinding:: }; use crate::dom::bindings::error::{Error, Fallible}; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::mediastream::MediaStream; use crate::dom::window::Window; @@ -65,7 +65,7 @@ impl MediaStreamAudioSourceNode { stream: &MediaStream, ) -> Fallible> { let node = MediaStreamAudioSourceNode::new_inherited(context, stream)?; - Ok(reflect_dom_object2(Box::new(node), window, proto)) + Ok(reflect_dom_object_with_proto(Box::new(node), window, proto)) } #[allow(non_snake_case)] diff --git a/components/script/dom/mediastreamtrackaudiosourcenode.rs b/components/script/dom/mediastreamtrackaudiosourcenode.rs index b311d2f8058..c5023d24abc 100644 --- a/components/script/dom/mediastreamtrackaudiosourcenode.rs +++ b/components/script/dom/mediastreamtrackaudiosourcenode.rs @@ -7,7 +7,7 @@ use crate::dom::audionode::AudioNode; use crate::dom::bindings::codegen::Bindings::MediaStreamTrackAudioSourceNodeBinding::MediaStreamTrackAudioSourceOptions; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::mediastreamtrack::MediaStreamTrack; use crate::dom::window::Window; @@ -56,7 +56,7 @@ impl MediaStreamTrackAudioSourceNode { track: &MediaStreamTrack, ) -> Fallible> { let node = MediaStreamTrackAudioSourceNode::new_inherited(context, track)?; - Ok(reflect_dom_object2(Box::new(node), window, proto)) + Ok(reflect_dom_object_with_proto(Box::new(node), window, proto)) } #[allow(non_snake_case)] diff --git a/components/script/dom/messagechannel.rs b/components/script/dom/messagechannel.rs index a973dccf4de..0b74c0e60d8 100644 --- a/components/script/dom/messagechannel.rs +++ b/components/script/dom/messagechannel.rs @@ -3,7 +3,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use crate::dom::bindings::codegen::Bindings::MessageChannelBinding::MessageChannelMethods; -use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, Reflector}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::globalscope::GlobalScope; use crate::dom::messageport::MessagePort; @@ -45,7 +45,7 @@ impl MessageChannel { ); // Steps 4-6 - reflect_dom_object2( + reflect_dom_object_with_proto( Box::new(MessageChannel::new_inherited(&*port1, &*port2)), incumbent, proto, diff --git a/components/script/dom/messageevent.rs b/components/script/dom/messageevent.rs index 45a7cf03288..2e9f17cc31b 100644 --- a/components/script/dom/messageevent.rs +++ b/components/script/dom/messageevent.rs @@ -9,7 +9,7 @@ use crate::dom::bindings::codegen::Bindings::MessageEventBinding::MessageEventMe use crate::dom::bindings::codegen::UnionTypes::WindowProxyOrMessagePortOrServiceWorker; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::bindings::trace::RootedTraceableBox; @@ -124,7 +124,7 @@ impl MessageEvent { lastEventId, ports, )); - let ev = reflect_dom_object2(ev, global, proto); + let ev = reflect_dom_object_with_proto(ev, global, proto); ev.data.set(data.get()); ev diff --git a/components/script/dom/mouseevent.rs b/components/script/dom/mouseevent.rs index 7f9992ab88e..137ccbc7673 100644 --- a/components/script/dom/mouseevent.rs +++ b/components/script/dom/mouseevent.rs @@ -8,7 +8,7 @@ use crate::dom::bindings::codegen::Bindings::MouseEventBinding::MouseEventMethod use crate::dom::bindings::codegen::Bindings::UIEventBinding::UIEventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject}; use crate::dom::bindings::root::{DomRoot, MutNullableDom}; use crate::dom::bindings::str::DOMString; use crate::dom::event::{Event, EventBubbles, EventCancelable}; @@ -79,7 +79,7 @@ impl MouseEvent { window: &Window, proto: Option, ) -> DomRoot { - reflect_dom_object2(Box::new(MouseEvent::new_inherited()), window, proto) + reflect_dom_object_with_proto(Box::new(MouseEvent::new_inherited()), window, proto) } pub fn new( diff --git a/components/script/dom/mutationobserver.rs b/components/script/dom/mutationobserver.rs index 01adc5241a7..0adac701253 100644 --- a/components/script/dom/mutationobserver.rs +++ b/components/script/dom/mutationobserver.rs @@ -8,7 +8,7 @@ use crate::dom::bindings::codegen::Bindings::MutationObserverBinding::MutationCa use crate::dom::bindings::codegen::Bindings::MutationObserverBinding::MutationObserverBinding::MutationObserverMethods; use crate::dom::bindings::codegen::Bindings::MutationObserverBinding::MutationObserverInit; use crate::dom::bindings::error::{Error, Fallible}; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::mutationrecord::MutationRecord; @@ -71,7 +71,7 @@ impl MutationObserver { callback: Rc, ) -> DomRoot { let boxed_observer = Box::new(MutationObserver::new_inherited(callback)); - reflect_dom_object2(boxed_observer, global, proto) + reflect_dom_object_with_proto(boxed_observer, global, proto) } fn new_inherited(callback: Rc) -> MutationObserver { diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index 873e7225229..c98e9b93bfe 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -26,7 +26,7 @@ use crate::dom::bindings::error::{Error, ErrorResult, Fallible}; use crate::dom::bindings::inheritance::{Castable, CharacterDataTypeId, ElementTypeId}; use crate::dom::bindings::inheritance::{EventTargetTypeId, HTMLElementTypeId, NodeTypeId}; use crate::dom::bindings::inheritance::{SVGElementTypeId, SVGGraphicsElementTypeId, TextTypeId}; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject, DomObjectWrap}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject, DomObjectWrap}; use crate::dom::bindings::root::{Dom, DomRoot, DomSlice, LayoutDom, MutNullableDom}; use crate::dom::bindings::str::{DOMString, USVString}; use crate::dom::bindings::xmlname::namespace_from_domstring; @@ -1769,7 +1769,7 @@ impl Node { N: DerivedFrom + DomObject + DomObjectWrap, { let window = document.window(); - reflect_dom_object2(node, window, proto) + reflect_dom_object_with_proto(node, window, proto) } pub fn new_inherited(doc: &Document) -> Node { diff --git a/components/script/dom/offlineaudiocompletionevent.rs b/components/script/dom/offlineaudiocompletionevent.rs index ae77c5e96d3..f5c39d5bfd4 100644 --- a/components/script/dom/offlineaudiocompletionevent.rs +++ b/components/script/dom/offlineaudiocompletionevent.rs @@ -8,7 +8,7 @@ use crate::dom::bindings::codegen::Bindings::OfflineAudioCompletionEventBinding: use crate::dom::bindings::codegen::Bindings::OfflineAudioCompletionEventBinding::OfflineAudioCompletionEventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::event::{Event, EventBubbles, EventCancelable}; @@ -50,7 +50,7 @@ impl OfflineAudioCompletionEvent { rendered_buffer: &AudioBuffer, ) -> DomRoot { let event = Box::new(OfflineAudioCompletionEvent::new_inherited(rendered_buffer)); - let ev = reflect_dom_object2(event, window, proto); + let ev = reflect_dom_object_with_proto(event, window, proto); { let event = ev.upcast::(); event.init_event(type_, bool::from(bubbles), bool::from(cancelable)); diff --git a/components/script/dom/offlineaudiocontext.rs b/components/script/dom/offlineaudiocontext.rs index 243020f213e..29e3335eeae 100644 --- a/components/script/dom/offlineaudiocontext.rs +++ b/components/script/dom/offlineaudiocontext.rs @@ -13,7 +13,7 @@ use crate::dom::bindings::error::{Error, Fallible}; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::num::Finite; use crate::dom::bindings::refcounted::Trusted; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject}; use crate::dom::bindings::root::DomRoot; use crate::dom::event::{Event, EventBubbles, EventCancelable}; use crate::dom::offlineaudiocompletionevent::OfflineAudioCompletionEvent; @@ -87,7 +87,11 @@ impl OfflineAudioContext { let pipeline_id = window.pipeline_id(); let context = OfflineAudioContext::new_inherited(channel_count, length, sample_rate, pipeline_id); - Ok(reflect_dom_object2(Box::new(context), window, proto)) + Ok(reflect_dom_object_with_proto( + Box::new(context), + window, + proto, + )) } pub fn Constructor( diff --git a/components/script/dom/offscreencanvas.rs b/components/script/dom/offscreencanvas.rs index c607099e04c..0a03f91c4cc 100644 --- a/components/script/dom/offscreencanvas.rs +++ b/components/script/dom/offscreencanvas.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::OffscreenCanvasBinding::{ OffscreenCanvasMethods, OffscreenRenderingContext, }; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::reflector::DomObject; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; @@ -63,7 +63,7 @@ impl OffscreenCanvas { height: u64, placeholder: Option<&HTMLCanvasElement>, ) -> DomRoot { - reflect_dom_object2( + reflect_dom_object_with_proto( Box::new(OffscreenCanvas::new_inherited(width, height, placeholder)), global, proto, diff --git a/components/script/dom/oscillatornode.rs b/components/script/dom/oscillatornode.rs index febc8f95d01..4f7c59a2e4d 100644 --- a/components/script/dom/oscillatornode.rs +++ b/components/script/dom/oscillatornode.rs @@ -14,7 +14,7 @@ use crate::dom::bindings::codegen::Bindings::OscillatorNodeBinding::{ OscillatorOptions, OscillatorType, }; use crate::dom::bindings::error::{Error, ErrorResult, Fallible}; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::window::Window; use dom_struct::dom_struct; @@ -98,7 +98,7 @@ impl OscillatorNode { options: &OscillatorOptions, ) -> Fallible> { let node = OscillatorNode::new_inherited(window, context, options)?; - Ok(reflect_dom_object2(Box::new(node), window, proto)) + Ok(reflect_dom_object_with_proto(Box::new(node), window, proto)) } #[allow(non_snake_case)] diff --git a/components/script/dom/pagetransitionevent.rs b/components/script/dom/pagetransitionevent.rs index c35e24d1628..c924c70c475 100644 --- a/components/script/dom/pagetransitionevent.rs +++ b/components/script/dom/pagetransitionevent.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::PageTransitionEventBinding; use crate::dom::bindings::codegen::Bindings::PageTransitionEventBinding::PageTransitionEventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; @@ -36,7 +36,7 @@ impl PageTransitionEvent { window: &Window, proto: Option, ) -> DomRoot { - reflect_dom_object2( + reflect_dom_object_with_proto( Box::new(PageTransitionEvent::new_inherited()), window, proto, diff --git a/components/script/dom/pannernode.rs b/components/script/dom/pannernode.rs index 22d411878d9..3d1b4d6d112 100644 --- a/components/script/dom/pannernode.rs +++ b/components/script/dom/pannernode.rs @@ -20,7 +20,7 @@ use crate::dom::bindings::codegen::Bindings::PannerNodeBinding::{ use crate::dom::bindings::error::{Error, Fallible}; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::num::Finite; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::window::Window; use dom_struct::dom_struct; @@ -187,7 +187,7 @@ impl PannerNode { options: &PannerOptions, ) -> Fallible> { let node = PannerNode::new_inherited(window, context, options)?; - Ok(reflect_dom_object2(Box::new(node), window, proto)) + Ok(reflect_dom_object_with_proto(Box::new(node), window, proto)) } #[allow(non_snake_case)] diff --git a/components/script/dom/performanceobserver.rs b/components/script/dom/performanceobserver.rs index 2701f488a68..ca83fe7d361 100644 --- a/components/script/dom/performanceobserver.rs +++ b/components/script/dom/performanceobserver.rs @@ -9,7 +9,7 @@ use crate::dom::bindings::codegen::Bindings::PerformanceObserverBinding::Perform use crate::dom::bindings::codegen::Bindings::PerformanceObserverBinding::PerformanceObserverInit; use crate::dom::bindings::codegen::Bindings::PerformanceObserverBinding::PerformanceObserverMethods; use crate::dom::bindings::error::{Error, Fallible}; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::console::Console; @@ -80,7 +80,7 @@ impl PerformanceObserver { entries: DOMPerformanceEntryList, ) -> DomRoot { let observer = PerformanceObserver::new_inherited(callback, DomRefCell::new(entries)); - reflect_dom_object2(Box::new(observer), global, proto) + reflect_dom_object_with_proto(Box::new(observer), global, proto) } #[allow(non_snake_case)] diff --git a/components/script/dom/popstateevent.rs b/components/script/dom/popstateevent.rs index b6095389791..9d6b2c24c7f 100644 --- a/components/script/dom/popstateevent.rs +++ b/components/script/dom/popstateevent.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::PopStateEventBinding; use crate::dom::bindings::codegen::Bindings::PopStateEventBinding::PopStateEventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::bindings::trace::RootedTraceableBox; @@ -38,7 +38,7 @@ impl PopStateEvent { } fn new_uninitialized(window: &Window, proto: Option) -> DomRoot { - reflect_dom_object2(Box::new(PopStateEvent::new_inherited()), window, proto) + reflect_dom_object_with_proto(Box::new(PopStateEvent::new_inherited()), window, proto) } fn new( diff --git a/components/script/dom/progressevent.rs b/components/script/dom/progressevent.rs index e70d3e1db07..93e687e53b3 100644 --- a/components/script/dom/progressevent.rs +++ b/components/script/dom/progressevent.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::ProgressEventBinding; use crate::dom::bindings::codegen::Bindings::ProgressEventBinding::ProgressEventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::event::{Event, EventBubbles, EventCancelable}; @@ -65,7 +65,7 @@ impl ProgressEvent { loaded: u64, total: u64, ) -> DomRoot { - let ev = reflect_dom_object2( + let ev = reflect_dom_object_with_proto( Box::new(ProgressEvent::new_inherited( length_computable, loaded, diff --git a/components/script/dom/promiserejectionevent.rs b/components/script/dom/promiserejectionevent.rs index c136cf8d46a..0ac02f8c439 100644 --- a/components/script/dom/promiserejectionevent.rs +++ b/components/script/dom/promiserejectionevent.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::PromiseRejectionEventBinding; use crate::dom::bindings::codegen::Bindings::PromiseRejectionEventBinding::PromiseRejectionEventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::bindings::trace::RootedTraceableBox; @@ -62,7 +62,7 @@ impl PromiseRejectionEvent { promise: Rc, reason: HandleValue, ) -> DomRoot { - let ev = reflect_dom_object2( + let ev = reflect_dom_object_with_proto( Box::new(PromiseRejectionEvent::new_inherited(promise)), global, proto, diff --git a/components/script/dom/range.rs b/components/script/dom/range.rs index e5d731702ad..0a150866dd8 100644 --- a/components/script/dom/range.rs +++ b/components/script/dom/range.rs @@ -14,7 +14,7 @@ use crate::dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; use crate::dom::bindings::error::{Error, ErrorResult, Fallible}; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::inheritance::{CharacterDataTypeId, NodeTypeId}; -use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, Reflector}; use crate::dom::bindings::root::{Dom, DomRoot, MutDom}; use crate::dom::bindings::str::DOMString; use crate::dom::bindings::trace::JSTraceable; @@ -97,7 +97,7 @@ impl Range { end_container: &Node, end_offset: u32, ) -> DomRoot { - let range = reflect_dom_object2( + let range = reflect_dom_object_with_proto( Box::new(Range::new_inherited( start_container, start_offset, diff --git a/components/script/dom/request.rs b/components/script/dom/request.rs index 10737e93555..da9b57aab13 100644 --- a/components/script/dom/request.rs +++ b/components/script/dom/request.rs @@ -16,7 +16,7 @@ use crate::dom::bindings::codegen::Bindings::RequestBinding::RequestMethods; use crate::dom::bindings::codegen::Bindings::RequestBinding::RequestMode; use crate::dom::bindings::codegen::Bindings::RequestBinding::RequestRedirect; use crate::dom::bindings::error::{Error, Fallible}; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject, Reflector}; use crate::dom::bindings::root::{DomRoot, MutNullableDom}; use crate::dom::bindings::str::{ByteString, DOMString, USVString}; use crate::dom::bindings::trace::RootedTraceableBox; @@ -64,7 +64,7 @@ impl Request { } fn new(global: &GlobalScope, proto: Option, url: ServoUrl) -> DomRoot { - reflect_dom_object2(Box::new(Request::new_inherited(global, url)), global, proto) + reflect_dom_object_with_proto(Box::new(Request::new_inherited(global, url)), global, proto) } // https://fetch.spec.whatwg.org/#dom-request diff --git a/components/script/dom/response.rs b/components/script/dom/response.rs index b42f3cc014f..dbfd1653fd6 100644 --- a/components/script/dom/response.rs +++ b/components/script/dom/response.rs @@ -12,7 +12,7 @@ use crate::dom::bindings::codegen::Bindings::ResponseBinding::{ }; use crate::dom::bindings::codegen::Bindings::XMLHttpRequestBinding::BodyInit; use crate::dom::bindings::error::{Error, Fallible}; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject, Reflector}; use crate::dom::bindings::root::{DomRoot, MutNullableDom}; use crate::dom::bindings::str::{ByteString, USVString}; use crate::dom::globalscope::GlobalScope; @@ -79,7 +79,7 @@ impl Response { } fn new_with_proto(global: &GlobalScope, proto: Option) -> DomRoot { - reflect_dom_object2(Box::new(Response::new_inherited(global)), global, proto) + reflect_dom_object_with_proto(Box::new(Response::new_inherited(global)), global, proto) } // https://fetch.spec.whatwg.org/#initialize-a-response diff --git a/components/script/dom/rtcdatachannelevent.rs b/components/script/dom/rtcdatachannelevent.rs index c8e5ab8c457..7008f4f630e 100644 --- a/components/script/dom/rtcdatachannelevent.rs +++ b/components/script/dom/rtcdatachannelevent.rs @@ -6,7 +6,7 @@ use crate::dom::bindings::codegen::Bindings::EventBinding::EventMethods; use crate::dom::bindings::codegen::Bindings::RTCDataChannelEventBinding::RTCDataChannelEventInit; use crate::dom::bindings::codegen::Bindings::RTCDataChannelEventBinding::RTCDataChannelEventMethods; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; @@ -49,7 +49,7 @@ impl RTCDataChannelEvent { cancelable: bool, channel: &RTCDataChannel, ) -> DomRoot { - let event = reflect_dom_object2( + let event = reflect_dom_object_with_proto( Box::new(RTCDataChannelEvent::new_inherited(&channel)), global, proto, diff --git a/components/script/dom/rtcerror.rs b/components/script/dom/rtcerror.rs index 060e5445b75..bb1bb9c1225 100644 --- a/components/script/dom/rtcerror.rs +++ b/components/script/dom/rtcerror.rs @@ -5,7 +5,7 @@ use crate::dom::bindings::codegen::Bindings::RTCErrorBinding::RTCErrorDetailType; use crate::dom::bindings::codegen::Bindings::RTCErrorBinding::RTCErrorInit; use crate::dom::bindings::codegen::Bindings::RTCErrorBinding::RTCErrorMethods; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::domexception::{DOMErrorName, DOMException}; @@ -51,7 +51,7 @@ impl RTCError { init: &RTCErrorInit, message: DOMString, ) -> DomRoot { - reflect_dom_object2( + reflect_dom_object_with_proto( Box::new(RTCError::new_inherited(global, init, message)), global, proto, diff --git a/components/script/dom/rtcerrorevent.rs b/components/script/dom/rtcerrorevent.rs index 0a4a47c5d5b..de95817e759 100644 --- a/components/script/dom/rtcerrorevent.rs +++ b/components/script/dom/rtcerrorevent.rs @@ -6,7 +6,7 @@ use crate::dom::bindings::codegen::Bindings::EventBinding::EventMethods; use crate::dom::bindings::codegen::Bindings::RTCErrorEventBinding::RTCErrorEventInit; use crate::dom::bindings::codegen::Bindings::RTCErrorEventBinding::RTCErrorEventMethods; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; @@ -49,7 +49,7 @@ impl RTCErrorEvent { cancelable: bool, error: &RTCError, ) -> DomRoot { - let event = reflect_dom_object2( + let event = reflect_dom_object_with_proto( Box::new(RTCErrorEvent::new_inherited(&error)), global, proto, diff --git a/components/script/dom/rtcicecandidate.rs b/components/script/dom/rtcicecandidate.rs index afc7954e70e..0346224d19b 100644 --- a/components/script/dom/rtcicecandidate.rs +++ b/components/script/dom/rtcicecandidate.rs @@ -5,7 +5,7 @@ use crate::dom::bindings::codegen::Bindings::RTCIceCandidateBinding::RTCIceCandidateInit; use crate::dom::bindings::codegen::Bindings::RTCIceCandidateBinding::RTCIceCandidateMethods; use crate::dom::bindings::error::{Error, Fallible}; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::reflector::{DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; @@ -64,7 +64,7 @@ impl RTCIceCandidate { sdp_m_line_index: Option, username_fragment: Option, ) -> DomRoot { - reflect_dom_object2( + reflect_dom_object_with_proto( Box::new(RTCIceCandidate::new_inherited( candidate, sdp_m_id, diff --git a/components/script/dom/rtcpeerconnection.rs b/components/script/dom/rtcpeerconnection.rs index d600c0d8770..df954136867 100644 --- a/components/script/dom/rtcpeerconnection.rs +++ b/components/script/dom/rtcpeerconnection.rs @@ -18,7 +18,7 @@ use crate::dom::bindings::error::Error; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::refcounted::{Trusted, TrustedPromise}; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::reflector::DomObject; use crate::dom::bindings::root::{Dom, DomRoot, MutNullableDom}; use crate::dom::bindings::str::USVString; @@ -198,7 +198,11 @@ impl RTCPeerConnection { proto: Option, config: &RTCConfiguration, ) -> DomRoot { - let this = reflect_dom_object2(Box::new(RTCPeerConnection::new_inherited()), global, proto); + let this = reflect_dom_object_with_proto( + Box::new(RTCPeerConnection::new_inherited()), + global, + proto, + ); let signaller = this.make_signaller(); *this.controller.borrow_mut() = Some(ServoMedia::get().unwrap().create_webrtc(signaller)); if let Some(ref servers) = config.iceServers { diff --git a/components/script/dom/rtcpeerconnectioniceevent.rs b/components/script/dom/rtcpeerconnectioniceevent.rs index 8fbe1564960..e0cae1d6bb6 100644 --- a/components/script/dom/rtcpeerconnectioniceevent.rs +++ b/components/script/dom/rtcpeerconnectioniceevent.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::RTCPeerConnectionIceEventBinding::R use crate::dom::bindings::codegen::Bindings::RTCPeerConnectionIceEventBinding::RTCPeerConnectionIceEventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::reflector::DomObject; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; @@ -56,7 +56,7 @@ impl RTCPeerConnectionIceEvent { url: Option, trusted: bool, ) -> DomRoot { - let e = reflect_dom_object2( + let e = reflect_dom_object_with_proto( Box::new(RTCPeerConnectionIceEvent::new_inherited(candidate, url)), global, proto, diff --git a/components/script/dom/rtcsessiondescription.rs b/components/script/dom/rtcsessiondescription.rs index 83a5e9d998c..07feb795d7f 100644 --- a/components/script/dom/rtcsessiondescription.rs +++ b/components/script/dom/rtcsessiondescription.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::RTCSessionDescriptionBinding::{ RTCSdpType, RTCSessionDescriptionInit, }; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::reflector::{DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; @@ -38,7 +38,7 @@ impl RTCSessionDescription { ty: RTCSdpType, sdp: DOMString, ) -> DomRoot { - reflect_dom_object2( + reflect_dom_object_with_proto( Box::new(RTCSessionDescription::new_inherited(ty, sdp)), global, proto, diff --git a/components/script/dom/rtctrackevent.rs b/components/script/dom/rtctrackevent.rs index e96808170b5..74eebf49e97 100644 --- a/components/script/dom/rtctrackevent.rs +++ b/components/script/dom/rtctrackevent.rs @@ -6,7 +6,7 @@ use crate::dom::bindings::codegen::Bindings::EventBinding::EventBinding::EventMe use crate::dom::bindings::codegen::Bindings::RTCTrackEventBinding::{self, RTCTrackEventMethods}; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; @@ -50,7 +50,7 @@ impl RTCTrackEvent { cancelable: bool, track: &MediaStreamTrack, ) -> DomRoot { - let trackevent = reflect_dom_object2( + let trackevent = reflect_dom_object_with_proto( Box::new(RTCTrackEvent::new_inherited(&track)), global, proto, diff --git a/components/script/dom/stereopannernode.rs b/components/script/dom/stereopannernode.rs index 318308f6abf..96d5e8014bc 100644 --- a/components/script/dom/stereopannernode.rs +++ b/components/script/dom/stereopannernode.rs @@ -12,7 +12,7 @@ use crate::dom::bindings::codegen::Bindings::AudioParamBinding::AutomationRate; use crate::dom::bindings::codegen::Bindings::StereoPannerNodeBinding::StereoPannerNodeMethods; use crate::dom::bindings::codegen::Bindings::StereoPannerNodeBinding::StereoPannerOptions; use crate::dom::bindings::error::{Error, Fallible}; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::window::Window; use dom_struct::dom_struct; @@ -86,7 +86,7 @@ impl StereoPannerNode { options: &StereoPannerOptions, ) -> Fallible> { let node = StereoPannerNode::new_inherited(window, context, options)?; - Ok(reflect_dom_object2(Box::new(node), window, proto)) + Ok(reflect_dom_object_with_proto(Box::new(node), window, proto)) } #[allow(non_snake_case)] diff --git a/components/script/dom/storageevent.rs b/components/script/dom/storageevent.rs index c63b9f80f60..e9bc8e73063 100644 --- a/components/script/dom/storageevent.rs +++ b/components/script/dom/storageevent.rs @@ -8,7 +8,7 @@ use crate::dom::bindings::codegen::Bindings::StorageEventBinding; use crate::dom::bindings::codegen::Bindings::StorageEventBinding::StorageEventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::{DomRoot, MutNullableDom}; use crate::dom::bindings::str::{DOMString, USVString}; use crate::dom::event::{Event, EventBubbles, EventCancelable}; @@ -56,7 +56,7 @@ impl StorageEvent { proto: Option, url: DOMString, ) -> DomRoot { - reflect_dom_object2( + reflect_dom_object_with_proto( Box::new(StorageEvent::new_inherited(None, None, None, url, None)), window, proto, @@ -100,7 +100,7 @@ impl StorageEvent { url: DOMString, storageArea: Option<&Storage>, ) -> DomRoot { - let ev = reflect_dom_object2( + let ev = reflect_dom_object_with_proto( Box::new(StorageEvent::new_inherited( key, oldValue, diff --git a/components/script/dom/submitevent.rs b/components/script/dom/submitevent.rs index 522e225b233..01db87705b3 100644 --- a/components/script/dom/submitevent.rs +++ b/components/script/dom/submitevent.rs @@ -6,7 +6,7 @@ use crate::dom::bindings::codegen::Bindings::EventBinding::EventMethods; use crate::dom::bindings::codegen::Bindings::SubmitEventBinding; use crate::dom::bindings::codegen::Bindings::SubmitEventBinding::SubmitEventMethods; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; @@ -50,7 +50,7 @@ impl SubmitEvent { cancelable: bool, submitter: Option>, ) -> DomRoot { - let ev = reflect_dom_object2( + let ev = reflect_dom_object_with_proto( Box::new(SubmitEvent::new_inherited(submitter)), global, proto, diff --git a/components/script/dom/testbinding.rs b/components/script/dom/testbinding.rs index 55eeb858fa9..369b9a8a058 100644 --- a/components/script/dom/testbinding.rs +++ b/components/script/dom/testbinding.rs @@ -40,7 +40,7 @@ use crate::dom::bindings::error::{Error, Fallible}; use crate::dom::bindings::num::Finite; use crate::dom::bindings::record::Record; use crate::dom::bindings::refcounted::TrustedPromise; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::{ByteString, DOMString, USVString}; use crate::dom::bindings::trace::RootedTraceableBox; @@ -85,7 +85,7 @@ impl TestBinding { } fn new(global: &GlobalScope, proto: Option) -> DomRoot { - reflect_dom_object2(Box::new(TestBinding::new_inherited()), global, proto) + reflect_dom_object_with_proto(Box::new(TestBinding::new_inherited()), global, proto) } pub fn Constructor( diff --git a/components/script/dom/testbindingiterable.rs b/components/script/dom/testbindingiterable.rs index 0dd37f9950c..bfbc4478cc2 100644 --- a/components/script/dom/testbindingiterable.rs +++ b/components/script/dom/testbindingiterable.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::cell::DomRefCell; use crate::dom::bindings::codegen::Bindings::TestBindingIterableBinding::TestBindingIterableMethods; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::globalscope::GlobalScope; @@ -22,7 +22,7 @@ pub struct TestBindingIterable { impl TestBindingIterable { fn new(global: &GlobalScope, proto: Option) -> DomRoot { - reflect_dom_object2( + reflect_dom_object_with_proto( Box::new(TestBindingIterable { reflector: Reflector::new(), vals: DomRefCell::new(vec![]), diff --git a/components/script/dom/testbindingpairiterable.rs b/components/script/dom/testbindingpairiterable.rs index 0bf11198298..4f394ce84bb 100644 --- a/components/script/dom/testbindingpairiterable.rs +++ b/components/script/dom/testbindingpairiterable.rs @@ -8,7 +8,7 @@ use crate::dom::bindings::cell::DomRefCell; use crate::dom::bindings::codegen::Bindings::TestBindingPairIterableBinding::TestBindingPairIterableMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::iterable::Iterable; -use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::globalscope::GlobalScope; @@ -49,7 +49,7 @@ impl Iterable for TestBindingPairIterable { impl TestBindingPairIterable { fn new(global: &GlobalScope, proto: Option) -> DomRoot { - reflect_dom_object2( + reflect_dom_object_with_proto( Box::new(TestBindingPairIterable { reflector: Reflector::new(), map: DomRefCell::new(vec![]), diff --git a/components/script/dom/testworklet.rs b/components/script/dom/testworklet.rs index 09fd53243e7..f9d5591758a 100644 --- a/components/script/dom/testworklet.rs +++ b/components/script/dom/testworklet.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::TestWorkletBinding::TestWorkletMeth use crate::dom::bindings::codegen::Bindings::WorkletBinding::WorkletBinding::WorkletMethods; use crate::dom::bindings::codegen::Bindings::WorkletBinding::WorkletOptions; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::reflector::Reflector; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; @@ -38,7 +38,7 @@ impl TestWorklet { fn new(window: &Window, proto: Option) -> DomRoot { let worklet = Worklet::new(window, WorkletGlobalScopeType::Test); - reflect_dom_object2( + reflect_dom_object_with_proto( Box::new(TestWorklet::new_inherited(&*worklet)), window, proto, diff --git a/components/script/dom/textdecoder.rs b/components/script/dom/textdecoder.rs index b81fd538c6b..67d9d8790ea 100644 --- a/components/script/dom/textdecoder.rs +++ b/components/script/dom/textdecoder.rs @@ -8,7 +8,7 @@ use crate::dom::bindings::codegen::Bindings::TextDecoderBinding::{ }; use crate::dom::bindings::codegen::UnionTypes::ArrayBufferViewOrArrayBuffer; use crate::dom::bindings::error::{Error, Fallible}; -use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::{DOMString, USVString}; use crate::dom::globalscope::GlobalScope; @@ -62,7 +62,7 @@ impl TextDecoder { fatal: bool, ignoreBOM: bool, ) -> DomRoot { - reflect_dom_object2( + reflect_dom_object_with_proto( Box::new(TextDecoder::new_inherited(encoding, fatal, ignoreBOM)), global, proto, diff --git a/components/script/dom/textencoder.rs b/components/script/dom/textencoder.rs index 86d65fa9111..3956683c0e4 100644 --- a/components/script/dom/textencoder.rs +++ b/components/script/dom/textencoder.rs @@ -4,7 +4,7 @@ use crate::dom::bindings::codegen::Bindings::TextEncoderBinding::TextEncoderMethods; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::{DOMString, USVString}; use crate::dom::globalscope::GlobalScope; @@ -29,7 +29,7 @@ impl TextEncoder { } fn new(global: &GlobalScope, proto: Option) -> DomRoot { - reflect_dom_object2(Box::new(TextEncoder::new_inherited()), global, proto) + reflect_dom_object_with_proto(Box::new(TextEncoder::new_inherited()), global, proto) } // https://encoding.spec.whatwg.org/#dom-textencoder diff --git a/components/script/dom/trackevent.rs b/components/script/dom/trackevent.rs index 7959574938e..f8766b766f8 100644 --- a/components/script/dom/trackevent.rs +++ b/components/script/dom/trackevent.rs @@ -9,7 +9,7 @@ use crate::dom::bindings::codegen::Bindings::TrackEventBinding::TrackEventMethod use crate::dom::bindings::codegen::UnionTypes::VideoTrackOrAudioTrackOrTextTrack; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; @@ -76,7 +76,11 @@ impl TrackEvent { cancelable: bool, track: &Option, ) -> DomRoot { - let te = reflect_dom_object2(Box::new(TrackEvent::new_inherited(&track)), global, proto); + let te = reflect_dom_object_with_proto( + Box::new(TrackEvent::new_inherited(&track)), + global, + proto, + ); { let event = te.upcast::(); event.init_event(type_, bubbles, cancelable); diff --git a/components/script/dom/transitionevent.rs b/components/script/dom/transitionevent.rs index cb0c6a81b11..ab32fefc1c3 100644 --- a/components/script/dom/transitionevent.rs +++ b/components/script/dom/transitionevent.rs @@ -9,7 +9,7 @@ use crate::dom::bindings::codegen::Bindings::TransitionEventBinding::{ use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::num::Finite; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; @@ -50,7 +50,7 @@ impl TransitionEvent { type_: Atom, init: &TransitionEventInit, ) -> DomRoot { - let ev = reflect_dom_object2( + let ev = reflect_dom_object_with_proto( Box::new(TransitionEvent::new_inherited(init)), window, proto, diff --git a/components/script/dom/uievent.rs b/components/script/dom/uievent.rs index 0c8aa52cb13..57950f6bf87 100644 --- a/components/script/dom/uievent.rs +++ b/components/script/dom/uievent.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::UIEventBinding; use crate::dom::bindings::codegen::Bindings::UIEventBinding::UIEventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::{DomRoot, MutNullableDom}; use crate::dom::bindings::str::DOMString; use crate::dom::event::{Event, EventBubbles, EventCancelable}; @@ -43,7 +43,7 @@ impl UIEvent { window: &Window, proto: Option, ) -> DomRoot { - reflect_dom_object2(Box::new(UIEvent::new_inherited()), window, proto) + reflect_dom_object_with_proto(Box::new(UIEvent::new_inherited()), window, proto) } pub fn new( diff --git a/components/script/dom/url.rs b/components/script/dom/url.rs index 74056c9f02e..fe3631e93fb 100644 --- a/components/script/dom/url.rs +++ b/components/script/dom/url.rs @@ -5,7 +5,7 @@ use crate::dom::bindings::cell::DomRefCell; use crate::dom::bindings::codegen::Bindings::URLBinding::URLMethods; use crate::dom::bindings::error::{Error, ErrorResult, Fallible}; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject, Reflector}; use crate::dom::bindings::root::{DomRoot, MutNullableDom}; use crate::dom::bindings::str::{DOMString, USVString}; use crate::dom::blob::Blob; @@ -44,7 +44,7 @@ impl URL { } fn new(global: &GlobalScope, proto: Option, url: ServoUrl) -> DomRoot { - reflect_dom_object2(Box::new(URL::new_inherited(url)), global, proto) + reflect_dom_object_with_proto(Box::new(URL::new_inherited(url)), global, proto) } pub fn query_pairs(&self) -> Vec<(String, String)> { diff --git a/components/script/dom/urlsearchparams.rs b/components/script/dom/urlsearchparams.rs index e996f335518..f23991ab098 100644 --- a/components/script/dom/urlsearchparams.rs +++ b/components/script/dom/urlsearchparams.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::URLSearchParamsBinding::URLSearchPa use crate::dom::bindings::codegen::UnionTypes::USVStringSequenceSequenceOrUSVStringUSVStringRecordOrUSVString; use crate::dom::bindings::error::{Error, Fallible}; use crate::dom::bindings::iterable::Iterable; -use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::{DOMString, USVString}; use crate::dom::bindings::weakref::MutableWeakRef; @@ -45,7 +45,7 @@ impl URLSearchParams { proto: Option, url: Option<&URL>, ) -> DomRoot { - reflect_dom_object2(Box::new(URLSearchParams::new_inherited(url)), global, proto) + reflect_dom_object_with_proto(Box::new(URLSearchParams::new_inherited(url)), global, proto) } // https://url.spec.whatwg.org/#dom-urlsearchparams-urlsearchparams diff --git a/components/script/dom/vttcue.rs b/components/script/dom/vttcue.rs index 695ddce5262..fa84fae363b 100644 --- a/components/script/dom/vttcue.rs +++ b/components/script/dom/vttcue.rs @@ -9,7 +9,7 @@ use crate::dom::bindings::codegen::Bindings::VTTCueBinding::{ }; use crate::dom::bindings::error::{Error, ErrorResult}; use crate::dom::bindings::num::Finite; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::documentfragment::DocumentFragment; @@ -65,7 +65,7 @@ impl VTTCue { end_time: f64, text: DOMString, ) -> DomRoot { - reflect_dom_object2( + reflect_dom_object_with_proto( Box::new(Self::new_inherited(start_time, end_time, text)), global, proto, diff --git a/components/script/dom/vttregion.rs b/components/script/dom/vttregion.rs index f061416d3de..24069ded2cd 100644 --- a/components/script/dom/vttregion.rs +++ b/components/script/dom/vttregion.rs @@ -6,7 +6,7 @@ use crate::dom::bindings::cell::DomRefCell; use crate::dom::bindings::codegen::Bindings::VTTRegionBinding::{ScrollSetting, VTTRegionMethods}; use crate::dom::bindings::error::{Error, ErrorResult, Fallible}; use crate::dom::bindings::num::Finite; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::globalscope::GlobalScope; @@ -44,7 +44,7 @@ impl VTTRegion { } fn new(global: &GlobalScope, proto: Option) -> DomRoot { - reflect_dom_object2(Box::new(Self::new_inherited()), global, proto) + reflect_dom_object_with_proto(Box::new(Self::new_inherited()), global, proto) } #[allow(non_snake_case)] diff --git a/components/script/dom/webglcontextevent.rs b/components/script/dom/webglcontextevent.rs index 3d4c43e357e..cd3924c4da5 100644 --- a/components/script/dom/webglcontextevent.rs +++ b/components/script/dom/webglcontextevent.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::WebGLContextEventBinding::WebGLCont use crate::dom::bindings::codegen::Bindings::WebGLContextEventBinding::WebGLContextEventMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::event::{Event, EventBubbles, EventCancelable}; @@ -60,7 +60,7 @@ impl WebGLContextEvent { cancelable: EventCancelable, status_message: DOMString, ) -> DomRoot { - let event = reflect_dom_object2( + let event = reflect_dom_object_with_proto( Box::new(WebGLContextEvent::new_inherited(status_message)), window, proto, diff --git a/components/script/dom/websocket.rs b/components/script/dom/websocket.rs index 4fcd35ff2be..5b5815f90c3 100644 --- a/components/script/dom/websocket.rs +++ b/components/script/dom/websocket.rs @@ -10,7 +10,7 @@ use crate::dom::bindings::conversions::ToJSValConvertible; use crate::dom::bindings::error::{Error, ErrorResult, Fallible}; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::refcounted::Trusted; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::{is_token, DOMString, USVString}; use crate::dom::blob::Blob; @@ -131,7 +131,7 @@ impl WebSocket { url: ServoUrl, sender: IpcSender, ) -> DomRoot { - reflect_dom_object2( + reflect_dom_object_with_proto( Box::new(WebSocket::new_inherited(url, sender)), global, proto, diff --git a/components/script/dom/wheelevent.rs b/components/script/dom/wheelevent.rs index 3e9a35243dc..33418a6f868 100644 --- a/components/script/dom/wheelevent.rs +++ b/components/script/dom/wheelevent.rs @@ -8,7 +8,7 @@ use crate::dom::bindings::codegen::Bindings::WheelEventBinding::WheelEventMethod use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::num::Finite; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::event::{Event, EventBubbles, EventCancelable}; @@ -39,7 +39,7 @@ impl WheelEvent { } fn new_unintialized(window: &Window, proto: Option) -> DomRoot { - reflect_dom_object2(Box::new(WheelEvent::new_inherited()), window, proto) + reflect_dom_object_with_proto(Box::new(WheelEvent::new_inherited()), window, proto) } pub fn new( diff --git a/components/script/dom/worker.rs b/components/script/dom/worker.rs index 1004429a16d..569f8188802 100644 --- a/components/script/dom/worker.rs +++ b/components/script/dom/worker.rs @@ -9,7 +9,7 @@ use crate::dom::bindings::codegen::Bindings::WorkerBinding::{WorkerMethods, Work use crate::dom::bindings::error::{Error, ErrorResult, Fallible}; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::refcounted::Trusted; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::USVString; use crate::dom::bindings::structuredclone; @@ -69,7 +69,7 @@ impl Worker { sender: Sender, closing: Arc, ) -> DomRoot { - reflect_dom_object2( + reflect_dom_object_with_proto( Box::new(Worker::new_inherited(sender, closing)), global, proto, diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs index 4aa9c9f4f91..4f901a13b3b 100644 --- a/components/script/dom/xmlhttprequest.rs +++ b/components/script/dom/xmlhttprequest.rs @@ -13,7 +13,7 @@ use crate::dom::bindings::conversions::ToJSValConvertible; use crate::dom::bindings::error::{Error, ErrorResult, Fallible}; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::refcounted::Trusted; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject}; use crate::dom::bindings::root::{Dom, DomRoot, MutNullableDom}; use crate::dom::bindings::str::{is_token, ByteString, DOMString, USVString}; use crate::dom::blob::{normalize_type_string, Blob}; @@ -216,7 +216,7 @@ impl XMLHttpRequest { } fn new(global: &GlobalScope, proto: Option) -> DomRoot { - reflect_dom_object2( + reflect_dom_object_with_proto( Box::new(XMLHttpRequest::new_inherited(global)), global, proto, diff --git a/components/script/dom/xmlserializer.rs b/components/script/dom/xmlserializer.rs index b0d65424d33..55f0753d8f4 100644 --- a/components/script/dom/xmlserializer.rs +++ b/components/script/dom/xmlserializer.rs @@ -4,7 +4,7 @@ use crate::dom::bindings::codegen::Bindings::XMLSerializerBinding::XMLSerializerMethods; use crate::dom::bindings::error::{Error, Fallible}; -use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, Reflector}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::node::Node; @@ -28,7 +28,7 @@ impl XMLSerializer { } pub fn new(window: &Window, proto: Option) -> DomRoot { - reflect_dom_object2( + reflect_dom_object_with_proto( Box::new(XMLSerializer::new_inherited(window)), window, proto, diff --git a/components/script/dom/xrinputsourceevent.rs b/components/script/dom/xrinputsourceevent.rs index cdbc63b6454..836aa8f981e 100644 --- a/components/script/dom/xrinputsourceevent.rs +++ b/components/script/dom/xrinputsourceevent.rs @@ -8,7 +8,7 @@ use crate::dom::bindings::codegen::Bindings::XRInputSourceEventBinding::{ }; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; @@ -57,7 +57,7 @@ impl XRInputSourceEvent { frame: &XRFrame, source: &XRInputSource, ) -> DomRoot { - let trackevent = reflect_dom_object2( + let trackevent = reflect_dom_object_with_proto( Box::new(XRInputSourceEvent::new_inherited(frame, source)), global, proto, diff --git a/components/script/dom/xrinputsourceschangeevent.rs b/components/script/dom/xrinputsourceschangeevent.rs index 76f662e5eef..ae2fcdfa45f 100644 --- a/components/script/dom/xrinputsourceschangeevent.rs +++ b/components/script/dom/xrinputsourceschangeevent.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::XRInputSourcesChangeEventBinding::{ self, XRInputSourcesChangeEventMethods, }; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; @@ -70,7 +70,7 @@ impl XRInputSourcesChangeEvent { added: &[DomRoot], removed: &[DomRoot], ) -> DomRoot { - let changeevent = reflect_dom_object2( + let changeevent = reflect_dom_object_with_proto( Box::new(XRInputSourcesChangeEvent::new_inherited(session)), global, proto, diff --git a/components/script/dom/xrlayerevent.rs b/components/script/dom/xrlayerevent.rs index dc8cfe3662d..6671a4d1f10 100644 --- a/components/script/dom/xrlayerevent.rs +++ b/components/script/dom/xrlayerevent.rs @@ -5,7 +5,7 @@ use crate::dom::bindings::codegen::Bindings::EventBinding::EventBinding::EventMethods; use crate::dom::bindings::codegen::Bindings::XRLayerEventBinding::XRLayerEventInit; use crate::dom::bindings::codegen::Bindings::XRLayerEventBinding::XRLayerEventMethods; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::root::Dom; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; @@ -32,7 +32,7 @@ impl XRLayerEvent { } fn new(window: &Window, proto: Option, layer: &XRLayer) -> DomRoot { - reflect_dom_object2(Box::new(XRLayerEvent::new_inherited(layer)), window, proto) + reflect_dom_object_with_proto(Box::new(XRLayerEvent::new_inherited(layer)), window, proto) } #[allow(non_snake_case)] diff --git a/components/script/dom/xrmediabinding.rs b/components/script/dom/xrmediabinding.rs index 30c7a0877aa..045d4812c1c 100644 --- a/components/script/dom/xrmediabinding.rs +++ b/components/script/dom/xrmediabinding.rs @@ -6,7 +6,7 @@ use crate::dom::bindings::codegen::Bindings::XRMediaBindingBinding::XRMediaBindi use crate::dom::bindings::codegen::Bindings::XRMediaBindingBinding::XRMediaLayerInit; use crate::dom::bindings::error::Error; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::reflector::Reflector; use crate::dom::bindings::root::Dom; use crate::dom::bindings::root::DomRoot; @@ -38,7 +38,7 @@ impl XRMediaBinding { proto: Option, session: &XRSession, ) -> DomRoot { - reflect_dom_object2( + reflect_dom_object_with_proto( Box::new(XRMediaBinding::new_inherited(session)), global, proto, diff --git a/components/script/dom/xrray.rs b/components/script/dom/xrray.rs index aca7f5b323d..f39813a4ddc 100644 --- a/components/script/dom/xrray.rs +++ b/components/script/dom/xrray.rs @@ -5,7 +5,7 @@ use crate::dom::bindings::codegen::Bindings::DOMPointBinding::DOMPointInit; use crate::dom::bindings::codegen::Bindings::XRRayBinding::{XRRayDirectionInit, XRRayMethods}; use crate::dom::bindings::error::{Error, Fallible}; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::utils::create_typed_array; use crate::dom::dompointreadonly::DOMPointReadOnly; @@ -43,7 +43,7 @@ impl XRRay { proto: Option, ray: Ray, ) -> DomRoot { - reflect_dom_object2(Box::new(XRRay::new_inherited(ray)), global, proto) + reflect_dom_object_with_proto(Box::new(XRRay::new_inherited(ray)), global, proto) } #[allow(non_snake_case)] diff --git a/components/script/dom/xrrigidtransform.rs b/components/script/dom/xrrigidtransform.rs index d2c7696f4c3..74f5e348137 100644 --- a/components/script/dom/xrrigidtransform.rs +++ b/components/script/dom/xrrigidtransform.rs @@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::XRRigidTransformBinding::XRRigidTra use crate::dom::bindings::error::Error; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::reflector::DomObject; -use crate::dom::bindings::reflector::{reflect_dom_object2, Reflector}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, Reflector}; use crate::dom::bindings::root::{DomRoot, MutNullableDom}; use crate::dom::bindings::utils::create_typed_array; use crate::dom::dompointreadonly::DOMPointReadOnly; @@ -54,7 +54,7 @@ impl XRRigidTransform { proto: Option, transform: ApiRigidTransform, ) -> DomRoot { - reflect_dom_object2( + reflect_dom_object_with_proto( Box::new(XRRigidTransform::new_inherited(transform)), global, proto, diff --git a/components/script/dom/xrsessionevent.rs b/components/script/dom/xrsessionevent.rs index 15a2685bda1..68eb1903c82 100644 --- a/components/script/dom/xrsessionevent.rs +++ b/components/script/dom/xrsessionevent.rs @@ -6,7 +6,7 @@ use crate::dom::bindings::codegen::Bindings::EventBinding::EventBinding::EventMe use crate::dom::bindings::codegen::Bindings::XRSessionEventBinding::{self, XRSessionEventMethods}; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::event::Event; @@ -50,7 +50,7 @@ impl XRSessionEvent { cancelable: bool, session: &XRSession, ) -> DomRoot { - let trackevent = reflect_dom_object2( + let trackevent = reflect_dom_object_with_proto( Box::new(XRSessionEvent::new_inherited(&session)), global, proto, diff --git a/components/script/dom/xrwebglbinding.rs b/components/script/dom/xrwebglbinding.rs index fb64c92d7e6..60e2d1be6b4 100644 --- a/components/script/dom/xrwebglbinding.rs +++ b/components/script/dom/xrwebglbinding.rs @@ -13,7 +13,7 @@ use crate::dom::bindings::codegen::Bindings::XRWebGLBindingBinding::XRWebGLBindi use crate::dom::bindings::codegen::UnionTypes::WebGLRenderingContextOrWebGL2RenderingContext; use crate::dom::bindings::error::Error; use crate::dom::bindings::error::Fallible; -use crate::dom::bindings::reflector::reflect_dom_object2; +use crate::dom::bindings::reflector::reflect_dom_object_with_proto; use crate::dom::bindings::reflector::Reflector; use crate::dom::bindings::root::Dom; use crate::dom::bindings::root::DomRoot; @@ -54,7 +54,7 @@ impl XRWebGLBinding { session: &XRSession, context: &WebGLRenderingContext, ) -> DomRoot { - reflect_dom_object2( + reflect_dom_object_with_proto( Box::new(XRWebGLBinding::new_inherited(session, context)), global, proto, diff --git a/components/script/dom/xrwebgllayer.rs b/components/script/dom/xrwebgllayer.rs index bbf6e76e5db..1e414d95779 100644 --- a/components/script/dom/xrwebgllayer.rs +++ b/components/script/dom/xrwebgllayer.rs @@ -10,7 +10,7 @@ use crate::dom::bindings::codegen::Bindings::XRWebGLLayerBinding::XRWebGLRenderi use crate::dom::bindings::error::Error; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::{reflect_dom_object2, DomObject}; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, DomObject}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::globalscope::GlobalScope; use crate::dom::webglframebuffer::WebGLFramebuffer; @@ -88,7 +88,7 @@ impl XRWebGLLayer { framebuffer: Option<&WebGLFramebuffer>, layer_id: Option, ) -> DomRoot { - reflect_dom_object2( + reflect_dom_object_with_proto( Box::new(XRWebGLLayer::new_inherited( session, context,