Merge pull request #2697 from saneyuki/js

Remove "DerefMut" implementation from Root/JSRef; r=jdm
This commit is contained in:
Ms2ger 2014-06-22 15:10:17 +02:00
commit 927ae39817
10 changed files with 19 additions and 33 deletions

View file

@ -432,12 +432,6 @@ impl<'a, 'b, T: Reflectable> Deref<JSRef<'b, T>> for Root<'a, 'b, T> {
}
}
impl<'a, 'b, T: Reflectable> DerefMut<JSRef<'b, T>> for Root<'a, 'b, T> {
fn deref_mut<'c>(&'c mut self) -> &'c mut JSRef<'b, T> {
&mut self.jsref
}
}
impl<'a, T: Reflectable> Deref<T> for JSRef<'a, T> {
fn deref<'b>(&'b self) -> &'b T {
unsafe {
@ -446,14 +440,6 @@ impl<'a, T: Reflectable> Deref<T> for JSRef<'a, T> {
}
}
impl<'a, T: Reflectable> DerefMut<T> for JSRef<'a, T> {
fn deref_mut<'b>(&'b mut self) -> &'b mut T {
unsafe {
&mut *(self.ptr as *mut T)
}
}
}
/// Encapsulates a reference to something that is guaranteed to be alive. This is freely copyable.
pub struct JSRef<'a, T> {
ptr: *T,

View file

@ -186,7 +186,7 @@ impl<'a> DocumentHelpers for JSRef<'a, Document> {
}
fn load_anchor_href(&self, href: DOMString) {
let mut window = self.window.root();
let window = self.window.root();
window.load_url(href);
}
}
@ -197,7 +197,7 @@ impl Document {
wrap_fn: extern "Rust" fn(*mut JSContext, &JSRef<Window>, Box<Document>) -> JS<Document>)
-> Temporary<Document> {
assert!(document.reflector().get_jsobject().is_null());
let mut raw_doc = reflect_dom_object(document, window, wrap_fn).root();
let raw_doc = reflect_dom_object(document, window, wrap_fn).root();
assert!(raw_doc.reflector().get_jsobject().is_not_null());
let doc_alias = raw_doc.clone();
@ -693,7 +693,7 @@ impl<'a> DocumentMethods for JSRef<'a, Document> {
}
let element: &JSRef<Element> = ElementCast::to_ref(node).unwrap();
element.get_attribute(Null, "name").root().map_or(false, |mut attr| {
element.get_attribute(Null, "name").root().map_or(false, |attr| {
attr.value().as_slice() == name.as_slice()
})
})
@ -804,7 +804,7 @@ impl<'a> DocumentMethods for JSRef<'a, Document> {
}
fn Location(&self) -> Temporary<Location> {
let mut window = self.window.root();
let window = self.window.root();
window.Location()
}

View file

@ -76,7 +76,7 @@ impl<'a> DOMImplementationMethods for JSRef<'a, DOMImplementation> {
let win = self.owner.root();
// Step 1.
let mut doc = Document::new(&win.root_ref(), None, NonHTMLDocument, None).root();
let doc = Document::new(&win.root_ref(), None, NonHTMLDocument, None).root();
// Step 2-3.
let maybe_elem = if qname.is_empty() {
None

View file

@ -794,7 +794,7 @@ impl<'a> VirtualMethods for JSRef<'a, Element> {
"id" => {
let node: &JSRef<Node> = NodeCast::from_ref(self);
if node.is_in_doc() {
let mut doc = document_from_node(self).root();
let doc = document_from_node(self).root();
doc.register_named_element(self, value.clone());
}
}
@ -817,7 +817,7 @@ impl<'a> VirtualMethods for JSRef<'a, Element> {
"id" => {
let node: &JSRef<Node> = NodeCast::from_ref(self);
if node.is_in_doc() {
let mut doc = document_from_node(self).root();
let doc = document_from_node(self).root();
doc.unregister_named_element(self, value);
}
}

View file

@ -58,7 +58,7 @@ impl<'a> PrivateHTMLAnchorElementHelpers for JSRef<'a, HTMLAnchorElement> {
let value = href.Value();
debug!("clicked on link to {:s}", value);
let node: &JSRef<Node> = NodeCast::from_ref(self);
let mut doc = node.owner_doc().root();
let doc = node.owner_doc().root();
doc.load_anchor_href(value);
}
None => ()

View file

@ -76,7 +76,7 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLBodyElement> {
"onbeforeunload", "onhashchange", "onlanguagechange", "onmessage",
"onoffline", "ononline", "onpagehide", "onpageshow", "onpopstate",
"onstorage", "onresize", "onunload", "onerror"];
let mut window = window_from_node(self).root();
let window = window_from_node(self).root();
let (cx, url, reflector) = (window.get_cx(),
window.get_url(),
window.reflector().get_jsobject());

View file

@ -105,7 +105,7 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLElement> {
}
if name.as_slice().starts_with("on") {
let mut window = window_from_node(self).root();
let window = window_from_node(self).root();
let (cx, url, reflector) = (window.get_cx(),
window.get_url(),
window.reflector().get_jsobject());

View file

@ -1137,7 +1137,7 @@ impl Node {
for node in nodes.mut_iter() {
parent.add_child(node, child);
let is_in_doc = parent.is_in_doc();
for mut kid in node.traverse_preorder() {
for kid in node.traverse_preorder() {
if is_in_doc {
kid.flags.deref().borrow_mut().insert(IsInDoc);
} else {
@ -1248,7 +1248,7 @@ impl Node {
// Step 2.
// XXXabinader: clone() for each node as trait?
let mut copy: Root<Node> = match node.type_id() {
let copy: Root<Node> = match node.type_id() {
DoctypeNodeTypeId => {
let doctype: &JSRef<DocumentType> = DocumentTypeCast::to_ref(node).unwrap();
let doctype = doctype.deref();

View file

@ -379,7 +379,7 @@ pub fn parse_html(page: &Page,
SvgNs => namespace::SVG,
ns => fail!("Not expecting namespace {:?}", ns),
};
let mut element: Root<Element> = build_element_from_tag(tag.name.clone(), namespace, *tmp).root();
let element: Root<Element> = build_element_from_tag(tag.name.clone(), namespace, *tmp).root();
debug!("-- attach attrs");
for attr in tag.attributes.iter() {

View file

@ -540,11 +540,11 @@ impl ScriptTask {
let cx = self.js_context.borrow();
let cx = cx.get_ref();
// Create the window and document objects.
let mut window = Window::new(cx.deref().ptr,
page.clone(),
self.chan.clone(),
self.compositor.dup(),
self.image_cache_task.clone()).root();
let window = Window::new(cx.deref().ptr,
page.clone(),
self.chan.clone(),
self.compositor.dup(),
self.image_cache_task.clone()).root();
let document = Document::new(&*window, Some(url.clone()), HTMLDocument, None).root();
window.deref().init_browser_context(&*document);
@ -679,7 +679,7 @@ impl ScriptTask {
};
match window.root() {
Some(mut window) => {
Some(window) => {
// http://dev.w3.org/csswg/cssom-view/#resizing-viewports
// https://dvcs.w3.org/hg/dom3events/raw-file/tip/html/DOM3-Events.html#event-type-resize
let uievent = UIEvent::new(&window.clone(),