diff options
author | Josh Matthews <josh@joshmatthews.net> | 2023-05-25 23:59:02 -0400 |
---|---|---|
committer | Josh Matthews <josh@joshmatthews.net> | 2023-05-28 23:23:12 -0400 |
commit | d9600ff50f3c1bdd8c44e2dfc15a18416d80cb82 (patch) | |
tree | 6a56ce1cf4458292f41791399e0ac269e3d6d46e /components/script/dom/bindings/reflector.rs | |
parent | 4ee789a85c50bb31521a00176b311ecdb8ccbcc5 (diff) | |
download | servo-d9600ff50f3c1bdd8c44e2dfc15a18416d80cb82.tar.gz servo-d9600ff50f3c1bdd8c44e2dfc15a18416d80cb82.zip |
Support arbitrary protos when wrapping EventTarget objects.
Diffstat (limited to 'components/script/dom/bindings/reflector.rs')
-rw-r--r-- | components/script/dom/bindings/reflector.rs | 14 |
1 files changed, 12 insertions, 2 deletions
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<GlobalScope>, { 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<T, U>(obj: Box<T>, global: &U, proto: HandleObject) -> DomRoot<T> +where + T: DomObject + DomObjectWrap, + U: DerivedFrom<GlobalScope>, +{ + 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<Self>) -> Root<Dom<Self>>; + const WRAP: unsafe fn(JSContext, &GlobalScope, Option<HandleObject>, Box<Self>) -> Root<Dom<Self>>; } /// 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<HandleObject>, Box<IterableIterator<Self>>, ) -> Root<Dom<IterableIterator<Self>>>; } |