diff options
Diffstat (limited to 'components/script/dom')
-rw-r--r-- | components/script/dom/bindings/js.rs | 6 | ||||
-rw-r--r-- | components/script/dom/window.rs | 17 |
2 files changed, 14 insertions, 9 deletions
diff --git a/components/script/dom/bindings/js.rs b/components/script/dom/bindings/js.rs index 72f4c16e832..f390a6444ee 100644 --- a/components/script/dom/bindings/js.rs +++ b/components/script/dom/bindings/js.rs @@ -91,6 +91,12 @@ impl<T: Reflectable> Unrooted<T> { } } + /// Create a new unrooted value from a `Temporary<T>`. + #[allow(unrooted_must_root)] + pub fn from_temporary(ptr: Temporary<T>) -> Unrooted<T> { + Unrooted::from_js(ptr.inner) + } + /// Get the `Reflector` for this pointer. pub fn reflector<'a>(&'a self) -> &'a Reflector { unsafe { diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs index 038ec358f73..88178374a45 100644 --- a/components/script/dom/window.rs +++ b/components/script/dom/window.rs @@ -155,6 +155,14 @@ pub struct Window { } impl Window { + #[allow(unsafe_code)] + pub fn clear_js_context_for_script_deallocation(&self) { + unsafe { + *self.js_context.borrow_for_script_deallocation() = None; + *self.browser_context.borrow_for_script_deallocation() = None; + } + } + pub fn get_cx(&self) -> *mut JSContext { self.js_context.borrow().as_ref().unwrap().ptr } @@ -425,7 +433,6 @@ impl<'a> WindowMethods for JSRef<'a, Window> { pub trait WindowHelpers { fn clear_js_context(self); - fn clear_js_context_for_script_deallocation(self); fn init_browser_context(self, doc: JSRef<Document>, frame_element: Option<JSRef<Element>>); fn load_url(self, href: DOMString); fn handle_fire_timer(self, timer_id: TimerId); @@ -499,14 +506,6 @@ impl<'a> WindowHelpers for JSRef<'a, Window> { *self.browser_context.borrow_mut() = None; } - #[allow(unsafe_code)] - fn clear_js_context_for_script_deallocation(self) { - unsafe { - *self.js_context.borrow_for_script_deallocation() = None; - *self.browser_context.borrow_for_script_deallocation() = None; - } - } - /// Reflows the page if it's possible to do so and the page is dirty. This method will wait /// for the layout thread to complete (but see the `TODO` below). If there is no window size /// yet, the page is presumed invisible and no reflow is performed. |