aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/bindings/reflector.rs
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2023-05-25 23:59:02 -0400
committerJosh Matthews <josh@joshmatthews.net>2023-05-28 23:23:12 -0400
commitd9600ff50f3c1bdd8c44e2dfc15a18416d80cb82 (patch)
tree6a56ce1cf4458292f41791399e0ac269e3d6d46e /components/script/dom/bindings/reflector.rs
parent4ee789a85c50bb31521a00176b311ecdb8ccbcc5 (diff)
downloadservo-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.rs14
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>>>;
}