diff options
Diffstat (limited to 'components/script/dom/bindings/js.rs')
-rw-r--r-- | components/script/dom/bindings/js.rs | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/components/script/dom/bindings/js.rs b/components/script/dom/bindings/js.rs index 02a6c430421..8b8f19e4d97 100644 --- a/components/script/dom/bindings/js.rs +++ b/components/script/dom/bindings/js.rs @@ -614,6 +614,17 @@ impl<T: Reflectable> Root<T> { chain: ContravariantLifetime, } } + + /// Obtain an unsafe reference to the wrapped JS owned-value that can + /// outlive the lifetime of this root. + /// + /// DO NOT CALL. + pub fn get_unsound_ref_forever<'b>(&self) -> JSRef<'b, T> { + JSRef { + ptr: self.jsref.ptr, + chain: ContravariantLifetime, + } + } } #[unsafe_destructor] @@ -623,13 +634,6 @@ impl<T: Reflectable> Drop for Root<T> { } } -impl<'b, T: Reflectable> Deref for Root<T> { - type Target = JSRef<'b, T>; - fn deref<'c>(&'c self) -> &'c JSRef<'b, T> { - &self.jsref - } -} - impl<'a, T: Reflectable> Deref for JSRef<'a, T> { type Target = T; fn deref<'b>(&'b self) -> &'b T { |