aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/browsercontext.rs
diff options
context:
space:
mode:
authorbors-servo <metajack+bors@gmail.com>2015-10-19 06:32:05 -0600
committerbors-servo <metajack+bors@gmail.com>2015-10-19 06:32:05 -0600
commit1a376aa75d5de8781b17a673850860f8afd2c28f (patch)
tree01650fefa8cb00280835382dfb60c15b57b0dce0 /components/script/dom/browsercontext.rs
parent50ad1b064d6e85e84707d83ca8f4b5b541b6b8da (diff)
parent6dc42dd1d6979cea7059b055de7f0d6f93c14338 (diff)
downloadservo-1a376aa75d5de8781b17a673850860f8afd2c28f.tar.gz
servo-1a376aa75d5de8781b17a673850860f8afd2c28f.zip
Auto merge of #8060 - nox:deref-js, r=Ms2ger
Implement Deref<Target=T> for JS<T> where T: Reflectable We can only borrow `JS<T>` from rooted things, so it's safe to deref it. The only types that provide mutable `JS<T>` things are `MutHeap<JS<T>>` and `MutNullableHeap<JS<T>>`, which don't actually expose that they contain `JS<T>` values. <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8060) <!-- Reviewable:end -->
Diffstat (limited to 'components/script/dom/browsercontext.rs')
-rw-r--r--components/script/dom/browsercontext.rs17
1 files changed, 8 insertions, 9 deletions
diff --git a/components/script/dom/browsercontext.rs b/components/script/dom/browsercontext.rs
index af2bfbdc81e..60dbdc5523e 100644
--- a/components/script/dom/browsercontext.rs
+++ b/components/script/dom/browsercontext.rs
@@ -44,17 +44,16 @@ impl BrowsingContext {
}
}
- pub fn active_document(&self) -> Root<Document> {
- self.history[self.active_index].document.root()
+ pub fn active_document(&self) -> &Document {
+ &*self.history[self.active_index].document
}
- pub fn active_window(&self) -> Root<Window> {
- let doc = self.active_document();
- doc.r().window()
+ pub fn active_window(&self) -> &Window {
+ self.active_document().window()
}
- pub fn frame_element(&self) -> Option<Root<Element>> {
- self.frame_element.as_ref().map(JS::root)
+ pub fn frame_element(&self) -> Option<&Element> {
+ self.frame_element.as_ref().map(|element| &**element)
}
pub fn window_proxy(&self) -> *mut JSObject {
@@ -64,8 +63,8 @@ impl BrowsingContext {
#[allow(unsafe_code)]
pub fn create_window_proxy(&mut self) {
- let win = self.active_window();
- let win = win.r();
+ // We inline self.active_window() because we can't borrow *self here.
+ let win = self.history[self.active_index].document.window();
let WindowProxyHandler(handler) = win.windowproxy_handler();
assert!(!handler.is_null());