mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
Get rid of a bunch of explicit derefs
This commit is contained in:
parent
ca56ebbb09
commit
722aa86c89
49 changed files with 340 additions and 360 deletions
|
@ -67,7 +67,7 @@ pub fn handle_get_root_node(page: &Rc<Page>, pipeline: PipelineId, reply: IpcSen
|
|||
pub fn handle_get_document_element(page: &Rc<Page>, pipeline: PipelineId, reply: IpcSender<NodeInfo>) {
|
||||
let page = get_page(&*page, pipeline);
|
||||
let document = page.document();
|
||||
let document_element = document.r().GetDocumentElement().unwrap();
|
||||
let document_element = document.GetDocumentElement().unwrap();
|
||||
|
||||
let node = document_element.upcast::<Node>();
|
||||
reply.send(node.summarize()).unwrap();
|
||||
|
@ -79,7 +79,7 @@ fn find_node_by_unique_id(page: &Rc<Page>, pipeline: PipelineId, node_id: String
|
|||
let node = document.upcast::<Node>();
|
||||
|
||||
for candidate in node.traverse_preorder() {
|
||||
if candidate.r().get_unique_id() == node_id {
|
||||
if candidate.get_unique_id() == node_id {
|
||||
return candidate;
|
||||
}
|
||||
}
|
||||
|
@ -89,8 +89,8 @@ fn find_node_by_unique_id(page: &Rc<Page>, pipeline: PipelineId, node_id: String
|
|||
|
||||
pub fn handle_get_children(page: &Rc<Page>, pipeline: PipelineId, node_id: String, reply: IpcSender<Vec<NodeInfo>>) {
|
||||
let parent = find_node_by_unique_id(&*page, pipeline, node_id);
|
||||
let children = parent.r().children().map(|child| {
|
||||
child.r().summarize()
|
||||
let children = parent.children().map(|child| {
|
||||
child.summarize()
|
||||
}).collect();
|
||||
reply.send(children).unwrap();
|
||||
}
|
||||
|
@ -187,7 +187,7 @@ pub fn handle_request_animation_frame(page: &Rc<Page>, id: PipelineId, actor_nam
|
|||
let page = page.find(id).expect("There is no such page");
|
||||
let doc = page.document();
|
||||
let devtools_sender = page.window().devtools_chan().unwrap();
|
||||
doc.r().request_animation_frame(box move |time| {
|
||||
doc.request_animation_frame(box move |time| {
|
||||
let msg = ScriptToDevtoolsControlMsg::FramerateTick(actor_name, time);
|
||||
devtools_sender.send(msg).unwrap();
|
||||
});
|
||||
|
|
|
@ -225,7 +225,7 @@ impl AttrMethods for Attr {
|
|||
match self.owner() {
|
||||
None => *self.value.borrow_mut() = AttrValue::String(value),
|
||||
Some(owner) => {
|
||||
let value = owner.r().parse_attribute(&self.namespace, self.local_name(), value);
|
||||
let value = owner.parse_attribute(&self.namespace, self.local_name(), value);
|
||||
self.set_value(value, owner.r());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -760,7 +760,7 @@ pub fn native_from_handleobject<T>(obj: HandleObject) -> Result<Root<T>, ()>
|
|||
|
||||
impl<T: Reflectable> ToJSValConvertible for Root<T> {
|
||||
fn to_jsval(&self, cx: *mut JSContext, rval: MutableHandleValue) {
|
||||
self.r().reflector().to_jsval(cx, rval);
|
||||
self.reflector().to_jsval(cx, rval);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -491,7 +491,7 @@ impl RootCollection {
|
|||
debug_assert!(task_state::get().is_script());
|
||||
unsafe {
|
||||
let mut roots = &mut *self.roots.get();
|
||||
let old_reflector = &*rooted.r().reflector();
|
||||
let old_reflector = &*rooted.reflector();
|
||||
match roots.iter().rposition(|r| *r == old_reflector) {
|
||||
Some(idx) => {
|
||||
roots.remove(idx);
|
||||
|
|
|
@ -106,7 +106,7 @@ unsafe fn GetSubframeWindow(cx: *mut JSContext, proxy: HandleObject, id: HandleI
|
|||
let target = RootedObject::new(cx, GetProxyPrivate(*proxy.ptr).to_object());
|
||||
let win: Root<Window> = native_from_handleobject(target.handle()).unwrap();
|
||||
let mut found = false;
|
||||
return win.r().IndexedGetter(index, &mut found);
|
||||
return win.IndexedGetter(index, &mut found);
|
||||
}
|
||||
|
||||
None
|
||||
|
|
|
@ -298,7 +298,7 @@ impl CanvasRenderingContext2D {
|
|||
None => return Err(Error::InvalidState),
|
||||
};
|
||||
|
||||
let renderer = context.r().get_ipc_renderer();
|
||||
let renderer = context.get_ipc_renderer();
|
||||
let (sender, receiver) = ipc::channel::<Vec<u8>>().unwrap();
|
||||
// Reads pixels from source image
|
||||
renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::GetImageData(source_rect.to_i32(),
|
||||
|
@ -787,7 +787,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D {
|
|||
self.state.borrow_mut().stroke_style = CanvasFillOrStrokeStyle::Gradient(
|
||||
JS::from_ref(gradient.r()));
|
||||
let msg = CanvasMsg::Canvas2d(
|
||||
Canvas2dMsg::SetStrokeStyle(gradient.r().to_fill_or_stroke_style()));
|
||||
Canvas2dMsg::SetStrokeStyle(gradient.to_fill_or_stroke_style()));
|
||||
self.ipc_renderer.send(msg).unwrap();
|
||||
},
|
||||
_ => {}
|
||||
|
@ -824,12 +824,12 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D {
|
|||
self.state.borrow_mut().fill_style = CanvasFillOrStrokeStyle::Gradient(
|
||||
JS::from_rooted(&gradient));
|
||||
let msg = CanvasMsg::Canvas2d(
|
||||
Canvas2dMsg::SetFillStyle(gradient.r().to_fill_or_stroke_style()));
|
||||
Canvas2dMsg::SetFillStyle(gradient.to_fill_or_stroke_style()));
|
||||
self.ipc_renderer.send(msg).unwrap();
|
||||
}
|
||||
StringOrCanvasGradientOrCanvasPattern::eCanvasPattern(pattern) => {
|
||||
self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::SetFillStyle(
|
||||
pattern.r().to_fill_or_stroke_style()))).unwrap();
|
||||
pattern.to_fill_or_stroke_style()))).unwrap();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -944,17 +944,15 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D {
|
|||
repetition: DOMString) -> Fallible<Root<CanvasPattern>> {
|
||||
let (image_data, image_size) = match image {
|
||||
HTMLImageElementOrHTMLCanvasElementOrCanvasRenderingContext2D::eHTMLImageElement(image) => {
|
||||
let image_element = image.r();
|
||||
// https://html.spec.whatwg.org/multipage/#img-error
|
||||
// If the image argument is an HTMLImageElement object that is in the broken state,
|
||||
// then throw an InvalidStateError exception
|
||||
match self.fetch_image_data(&image_element) {
|
||||
match self.fetch_image_data(&image.r()) {
|
||||
Some((data, size)) => (data, size),
|
||||
None => return Err(Error::InvalidState),
|
||||
}
|
||||
},
|
||||
HTMLImageElementOrHTMLCanvasElementOrCanvasRenderingContext2D::eHTMLCanvasElement(canvas) => {
|
||||
let canvas = canvas.r();
|
||||
let _ = canvas.get_or_init_2d_context();
|
||||
|
||||
match canvas.fetch_all_data() {
|
||||
|
@ -963,8 +961,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D {
|
|||
}
|
||||
},
|
||||
HTMLImageElementOrHTMLCanvasElementOrCanvasRenderingContext2D::eCanvasRenderingContext2D(context) => {
|
||||
let canvas = context.r().Canvas();
|
||||
let canvas = canvas.r();
|
||||
let canvas = context.Canvas();
|
||||
let _ = canvas.get_or_init_2d_context();
|
||||
|
||||
match canvas.fetch_all_data() {
|
||||
|
|
|
@ -156,8 +156,7 @@ impl CharacterData {
|
|||
|
||||
fn content_changed(&self) {
|
||||
let node = self.upcast::<Node>();
|
||||
let document = node.owner_doc();
|
||||
document.r().content_changed(node, NodeDamage::OtherNodeDamage);
|
||||
node.owner_doc().content_changed(node, NodeDamage::OtherNodeDamage);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -216,7 +216,7 @@ impl CSSStyleDeclarationMethods for CSSStyleDeclaration {
|
|||
|
||||
// Step 6
|
||||
let window = window_from_node(&*self.owner);
|
||||
let declarations = parse_one_declaration(&property, &value, &window.r().get_url());
|
||||
let declarations = parse_one_declaration(&property, &value, &window.get_url());
|
||||
|
||||
// Step 7
|
||||
let declarations = if let Ok(declarations) = declarations {
|
||||
|
@ -235,7 +235,7 @@ impl CSSStyleDeclarationMethods for CSSStyleDeclaration {
|
|||
|
||||
let document = document_from_node(element);
|
||||
let node = element.upcast();
|
||||
document.r().content_changed(node, NodeDamage::NodeStyleDamaged);
|
||||
document.content_changed(node, NodeDamage::NodeStyleDamaged);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
@ -268,7 +268,7 @@ impl CSSStyleDeclarationMethods for CSSStyleDeclaration {
|
|||
|
||||
let document = document_from_node(element);
|
||||
let node = element.upcast();
|
||||
document.r().content_changed(node, NodeDamage::NodeStyleDamaged);
|
||||
document.content_changed(node, NodeDamage::NodeStyleDamaged);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
|
|
@ -42,7 +42,7 @@ impl CustomEvent {
|
|||
cancelable: bool,
|
||||
detail: HandleValue) -> Root<CustomEvent> {
|
||||
let ev = CustomEvent::new_uninitialized(global);
|
||||
ev.r().InitCustomEvent(global.get_cx(), type_, bubbles, cancelable, detail);
|
||||
ev.InitCustomEvent(global.get_cx(), type_, bubbles, cancelable, detail);
|
||||
ev
|
||||
}
|
||||
#[allow(unsafe_code)]
|
||||
|
|
|
@ -449,7 +449,7 @@ impl Document {
|
|||
let check_anchor = |node: &HTMLAnchorElement| {
|
||||
let elem = node.upcast::<Element>();
|
||||
elem.get_attribute(&ns!(""), &atom!("name")).map_or(false, |attr| {
|
||||
&**attr.r().value() == fragid
|
||||
&**attr.value() == fragid
|
||||
})
|
||||
};
|
||||
let doc_node = self.upcast::<Node>();
|
||||
|
@ -498,7 +498,7 @@ impl Document {
|
|||
EventBubbles::DoesNotBubble,
|
||||
EventCancelable::NotCancelable);
|
||||
let target = self.upcast::<EventTarget>();
|
||||
let _ = event.r().fire(target);
|
||||
let _ = event.fire(target);
|
||||
}
|
||||
|
||||
/// Return whether scripting is enabled or not
|
||||
|
@ -567,7 +567,7 @@ impl Document {
|
|||
pub fn dirty_all_nodes(&self) {
|
||||
let root = self.upcast::<Node>();
|
||||
for node in root.traverse_preorder() {
|
||||
node.r().dirty(NodeDamage::OtherNodeDamage)
|
||||
node.dirty(NodeDamage::OtherNodeDamage)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -591,7 +591,7 @@ impl Document {
|
|||
let el = match node.downcast::<Element>() {
|
||||
Some(el) => Root::from_ref(el),
|
||||
None => {
|
||||
let parent = node.r().GetParentNode();
|
||||
let parent = node.GetParentNode();
|
||||
match parent.and_then(Root::downcast::<Element>) {
|
||||
Some(parent) => parent,
|
||||
None => return,
|
||||
|
@ -747,7 +747,7 @@ impl Document {
|
|||
let el = match node.downcast::<Element>() {
|
||||
Some(el) => Root::from_ref(el),
|
||||
None => {
|
||||
let parent = node.r().GetParentNode();
|
||||
let parent = node.GetParentNode();
|
||||
match parent.and_then(Root::downcast::<Element>) {
|
||||
Some(parent) => parent,
|
||||
None => return false
|
||||
|
@ -923,13 +923,13 @@ impl Document {
|
|||
for node in nodes {
|
||||
match node {
|
||||
NodeOrString::eNode(node) => {
|
||||
try!(fragment.r().AppendChild(node.r()));
|
||||
try!(fragment.AppendChild(node.r()));
|
||||
},
|
||||
NodeOrString::eString(string) => {
|
||||
let node = Root::upcast::<Node>(self.CreateTextNode(string));
|
||||
// No try!() here because appending a text node
|
||||
// should not fail.
|
||||
fragment.r().AppendChild(node.r()).unwrap();
|
||||
fragment.AppendChild(node.r()).unwrap();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1108,8 +1108,8 @@ impl Document {
|
|||
};
|
||||
|
||||
if self.script_blocking_stylesheets_count.get() == 0 &&
|
||||
script.r().is_ready_to_be_executed() {
|
||||
script.r().execute();
|
||||
script.is_ready_to_be_executed() {
|
||||
script.execute();
|
||||
self.pending_parsing_blocking_script.set(None);
|
||||
return ParserBlockedByScript::Unblocked;
|
||||
}
|
||||
|
@ -1151,10 +1151,10 @@ impl Document {
|
|||
// Re-borrowing the list for each step because it can also be borrowed under execute.
|
||||
while self.asap_in_order_scripts_list.borrow().len() > 0 {
|
||||
let script = Root::from_ref(&*self.asap_in_order_scripts_list.borrow()[0]);
|
||||
if !script.r().is_ready_to_be_executed() {
|
||||
if !script.is_ready_to_be_executed() {
|
||||
break;
|
||||
}
|
||||
script.r().execute();
|
||||
script.execute();
|
||||
self.asap_in_order_scripts_list.borrow_mut().remove(0);
|
||||
}
|
||||
|
||||
|
@ -1162,11 +1162,11 @@ impl Document {
|
|||
// Re-borrowing the set for each step because it can also be borrowed under execute.
|
||||
while idx < self.asap_scripts_set.borrow().len() {
|
||||
let script = Root::from_ref(&*self.asap_scripts_set.borrow()[idx]);
|
||||
if !script.r().is_ready_to_be_executed() {
|
||||
if !script.is_ready_to_be_executed() {
|
||||
idx += 1;
|
||||
continue;
|
||||
}
|
||||
script.r().execute();
|
||||
script.execute();
|
||||
self.asap_scripts_set.borrow_mut().swap_remove(idx);
|
||||
}
|
||||
}
|
||||
|
@ -1205,7 +1205,7 @@ impl Document {
|
|||
self.upcast::<Node>()
|
||||
.traverse_preorder()
|
||||
.filter_map(Root::downcast::<HTMLIFrameElement>)
|
||||
.find(|node| node.r().subpage_id() == Some(subpage_id))
|
||||
.find(|node| node.subpage_id() == Some(subpage_id))
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1693,11 +1693,11 @@ impl DocumentMethods for Document {
|
|||
// https://html.spec.whatwg.org/multipage/#document.title
|
||||
fn Title(&self) -> DOMString {
|
||||
let title = self.GetDocumentElement().and_then(|root| {
|
||||
if root.r().namespace() == &ns!(SVG) && root.r().local_name() == &atom!("svg") {
|
||||
if root.namespace() == &ns!(SVG) && root.local_name() == &atom!("svg") {
|
||||
// Step 1.
|
||||
root.upcast::<Node>().child_elements().find(|node| {
|
||||
node.r().namespace() == &ns!(SVG) &&
|
||||
node.r().local_name() == &atom!("title")
|
||||
node.namespace() == &ns!(SVG) &&
|
||||
node.local_name() == &atom!("title")
|
||||
}).map(Root::upcast::<Node>)
|
||||
} else {
|
||||
// Step 2.
|
||||
|
@ -1711,7 +1711,7 @@ impl DocumentMethods for Document {
|
|||
None => DOMString::new(),
|
||||
Some(ref title) => {
|
||||
// Steps 3-4.
|
||||
let value = Node::collect_text_contents(title.r().children());
|
||||
let value = Node::collect_text_contents(title.children());
|
||||
str_join(split_html_space_chars(&value), " ")
|
||||
},
|
||||
}
|
||||
|
@ -1724,11 +1724,11 @@ impl DocumentMethods for Document {
|
|||
None => return,
|
||||
};
|
||||
|
||||
let elem = if root.r().namespace() == &ns!(SVG) &&
|
||||
root.r().local_name() == &atom!("svg") {
|
||||
let elem = if root.namespace() == &ns!(SVG) &&
|
||||
root.local_name() == &atom!("svg") {
|
||||
let elem = root.upcast::<Node>().child_elements().find(|node| {
|
||||
node.r().namespace() == &ns!(SVG) &&
|
||||
node.r().local_name() == &atom!("title")
|
||||
node.namespace() == &ns!(SVG) &&
|
||||
node.local_name() == &atom!("title")
|
||||
});
|
||||
match elem {
|
||||
Some(elem) => Root::upcast::<Node>(elem),
|
||||
|
@ -1741,10 +1741,10 @@ impl DocumentMethods for Document {
|
|||
.unwrap()
|
||||
}
|
||||
}
|
||||
} else if root.r().namespace() == &ns!(HTML) {
|
||||
} else if root.namespace() == &ns!(HTML) {
|
||||
let elem = root.upcast::<Node>()
|
||||
.traverse_preorder()
|
||||
.find(|node| node.r().is::<HTMLTitleElement>());
|
||||
.find(|node| node.is::<HTMLTitleElement>());
|
||||
match elem {
|
||||
Some(elem) => elem,
|
||||
None => {
|
||||
|
@ -1765,7 +1765,7 @@ impl DocumentMethods for Document {
|
|||
return
|
||||
};
|
||||
|
||||
elem.r().SetTextContent(Some(title));
|
||||
elem.SetTextContent(Some(title));
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#dom-document-head
|
||||
|
@ -1785,7 +1785,7 @@ impl DocumentMethods for Document {
|
|||
self.get_html_element().and_then(|root| {
|
||||
let node = root.upcast::<Node>();
|
||||
node.children().find(|child| {
|
||||
match child.r().type_id() {
|
||||
match child.type_id() {
|
||||
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLBodyElement)) |
|
||||
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLFrameSetElement)) => true,
|
||||
_ => false
|
||||
|
@ -1845,7 +1845,7 @@ impl DocumentMethods for Document {
|
|||
return false;
|
||||
}
|
||||
element.get_attribute(&ns!(""), &atom!("name")).map_or(false, |attr| {
|
||||
&**attr.r().value() == &*name
|
||||
&**attr.value() == &*name
|
||||
})
|
||||
})
|
||||
}
|
||||
|
@ -2028,10 +2028,10 @@ impl DocumentMethods for Document {
|
|||
match html_elem_type {
|
||||
HTMLElementTypeId::HTMLAppletElement => {
|
||||
match elem.get_attribute(&ns!(""), &atom!("name")) {
|
||||
Some(ref attr) if attr.r().value().as_atom() == name => true,
|
||||
Some(ref attr) if attr.value().as_atom() == name => true,
|
||||
_ => {
|
||||
match elem.get_attribute(&ns!(""), &atom!("id")) {
|
||||
Some(ref attr) => attr.r().value().as_atom() == name,
|
||||
Some(ref attr) => attr.value().as_atom() == name,
|
||||
None => false,
|
||||
}
|
||||
},
|
||||
|
@ -2039,18 +2039,18 @@ impl DocumentMethods for Document {
|
|||
},
|
||||
HTMLElementTypeId::HTMLFormElement => {
|
||||
match elem.get_attribute(&ns!(""), &atom!("name")) {
|
||||
Some(ref attr) => attr.r().value().as_atom() == name,
|
||||
Some(ref attr) => attr.value().as_atom() == name,
|
||||
None => false,
|
||||
}
|
||||
},
|
||||
HTMLElementTypeId::HTMLImageElement => {
|
||||
match elem.get_attribute(&ns!(""), &atom!("name")) {
|
||||
Some(ref attr) => {
|
||||
if attr.r().value().as_atom() == name {
|
||||
if attr.value().as_atom() == name {
|
||||
true
|
||||
} else {
|
||||
match elem.get_attribute(&ns!(""), &atom!("id")) {
|
||||
Some(ref attr) => attr.r().value().as_atom() == name,
|
||||
Some(ref attr) => attr.value().as_atom() == name,
|
||||
None => false,
|
||||
}
|
||||
}
|
||||
|
@ -2074,7 +2074,7 @@ impl DocumentMethods for Document {
|
|||
*found = true;
|
||||
// TODO: Step 2.
|
||||
// Step 3.
|
||||
return first.r().reflector().get_jsobject().get()
|
||||
return first.reflector().get_jsobject().get()
|
||||
}
|
||||
} else {
|
||||
*found = false;
|
||||
|
@ -2085,7 +2085,7 @@ impl DocumentMethods for Document {
|
|||
*found = true;
|
||||
let filter = NamedElementFilter { name: name };
|
||||
let collection = HTMLCollection::create(self.window(), root, box filter);
|
||||
collection.r().reflector().get_jsobject().get()
|
||||
collection.reflector().get_jsobject().get()
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#dom-tree-accessors:supported-property-names
|
||||
|
@ -2133,17 +2133,17 @@ impl DocumentProgressHandler {
|
|||
|
||||
fn set_ready_state_complete(&self) {
|
||||
let document = self.addr.root();
|
||||
document.r().set_ready_state(DocumentReadyState::Complete);
|
||||
document.set_ready_state(DocumentReadyState::Complete);
|
||||
}
|
||||
|
||||
fn dispatch_load(&self) {
|
||||
let document = self.addr.root();
|
||||
let window = document.r().window();
|
||||
let window = document.window();
|
||||
let event = Event::new(GlobalRef::Window(window), "load".to_owned(),
|
||||
EventBubbles::DoesNotBubble,
|
||||
EventCancelable::NotCancelable);
|
||||
let wintarget = window.upcast::<EventTarget>();
|
||||
event.r().set_trusted(true);
|
||||
event.set_trusted(true);
|
||||
let _ = wintarget.dispatch_event_with_target(document.upcast(), &event);
|
||||
|
||||
let browsing_context = window.browsing_context();
|
||||
|
@ -2157,10 +2157,10 @@ impl DocumentProgressHandler {
|
|||
event.fire(frame_element.upcast());
|
||||
};
|
||||
|
||||
document.r().notify_constellation_load();
|
||||
document.notify_constellation_load();
|
||||
|
||||
// https://developer.mozilla.org/en-US/docs/Web/Events/mozbrowserloadend
|
||||
document.r().trigger_mozbrowser_event(MozBrowserEvent::LoadEnd);
|
||||
document.trigger_mozbrowser_event(MozBrowserEvent::LoadEnd);
|
||||
|
||||
window.reflow(ReflowGoal::ForDisplay,
|
||||
ReflowQueryType::NoQuery,
|
||||
|
@ -2171,7 +2171,7 @@ impl DocumentProgressHandler {
|
|||
impl Runnable for DocumentProgressHandler {
|
||||
fn handler(self: Box<DocumentProgressHandler>) {
|
||||
let document = self.addr.root();
|
||||
let window = document.r().window();
|
||||
let window = document.window();
|
||||
if window.is_alive() {
|
||||
self.set_ready_state_complete();
|
||||
self.dispatch_load();
|
||||
|
|
|
@ -70,7 +70,7 @@ impl DOMImplementationMethods for DOMImplementation {
|
|||
let maybe_elem = if qname.is_empty() {
|
||||
None
|
||||
} else {
|
||||
match doc.r().CreateElementNS(namespace, qname) {
|
||||
match doc.CreateElementNS(namespace, qname) {
|
||||
Err(error) => return Err(error),
|
||||
Ok(elem) => Some(elem)
|
||||
}
|
||||
|
|
|
@ -63,7 +63,7 @@ impl DOMParserMethods for DOMParser {
|
|||
DocumentSource::FromParser,
|
||||
loader);
|
||||
parse_html(document.r(), s, url, ParseContext::Owner(None));
|
||||
document.r().set_ready_state(DocumentReadyState::Complete);
|
||||
document.set_ready_state(DocumentReadyState::Complete);
|
||||
Ok(document)
|
||||
}
|
||||
Text_xml => {
|
||||
|
|
|
@ -642,9 +642,9 @@ impl Element {
|
|||
pub fn summarize(&self) -> Vec<AttrInfo> {
|
||||
let attrs = self.Attributes();
|
||||
let mut summarized = vec!();
|
||||
for i in 0..attrs.r().Length() {
|
||||
let attr = attrs.r().Item(i).unwrap();
|
||||
summarized.push(attr.r().summarize());
|
||||
for i in 0..attrs.Length() {
|
||||
let attr = attrs.Item(i).unwrap();
|
||||
summarized.push(attr.summarize());
|
||||
}
|
||||
summarized
|
||||
}
|
||||
|
@ -800,11 +800,11 @@ impl Element {
|
|||
|
||||
// Step 2.
|
||||
let attrs = element.Attributes();
|
||||
for i in 0..attrs.r().Length() {
|
||||
let attr = attrs.r().Item(i).unwrap();
|
||||
if *attr.r().prefix() == Some(atom!("xmlns")) &&
|
||||
**attr.r().value() == *namespace.0 {
|
||||
return Some(attr.r().LocalName());
|
||||
for i in 0..attrs.Length() {
|
||||
let attr = attrs.Item(i).unwrap();
|
||||
if *attr.prefix() == Some(atom!("xmlns")) &&
|
||||
**attr.value() == *namespace.0 {
|
||||
return Some(attr.LocalName());
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -994,7 +994,7 @@ impl Element {
|
|||
Quirks => lhs.eq_ignore_ascii_case(&rhs)
|
||||
};
|
||||
self.get_attribute(&ns!(""), &atom!("class")).map(|attr| {
|
||||
attr.r().value().as_tokens().iter().any(|atom| is_equal(name, atom))
|
||||
attr.value().as_tokens().iter().any(|atom| is_equal(name, atom))
|
||||
}).unwrap_or(false)
|
||||
}
|
||||
|
||||
|
@ -1027,7 +1027,7 @@ impl Element {
|
|||
}
|
||||
let url = self.get_string_attribute(local_name);
|
||||
let doc = document_from_node(self);
|
||||
let base = doc.r().url();
|
||||
let base = doc.url();
|
||||
// https://html.spec.whatwg.org/multipage/#reflect
|
||||
// XXXManishearth this doesn't handle `javascript:` urls properly
|
||||
match UrlParser::new().base_url(&base).parse(&url) {
|
||||
|
@ -1041,7 +1041,7 @@ impl Element {
|
|||
|
||||
pub fn get_string_attribute(&self, local_name: &Atom) -> DOMString {
|
||||
match self.get_attribute(&ns!(""), local_name) {
|
||||
Some(x) => x.r().Value(),
|
||||
Some(x) => x.Value(),
|
||||
None => "".to_owned()
|
||||
}
|
||||
}
|
||||
|
@ -1076,7 +1076,7 @@ impl Element {
|
|||
let attribute = self.get_attribute(&ns!(""), local_name);
|
||||
match attribute {
|
||||
Some(ref attribute) => {
|
||||
match *attribute.r().value() {
|
||||
match *attribute.value() {
|
||||
AttrValue::UInt(_, value) => value,
|
||||
_ => panic!("Expected an AttrValue::UInt: \
|
||||
implement parse_plain_attribute"),
|
||||
|
@ -1155,7 +1155,7 @@ impl ElementMethods for Element {
|
|||
// https://dom.spec.whatwg.org/#dom-element-getattribute
|
||||
fn GetAttribute(&self, name: DOMString) -> Option<DOMString> {
|
||||
self.GetAttributeNode(name)
|
||||
.map(|s| s.r().Value())
|
||||
.map(|s| s.Value())
|
||||
}
|
||||
|
||||
// https://dom.spec.whatwg.org/#dom-element-getattributens
|
||||
|
@ -1163,7 +1163,7 @@ impl ElementMethods for Element {
|
|||
namespace: Option<DOMString>,
|
||||
local_name: DOMString) -> Option<DOMString> {
|
||||
self.GetAttributeNodeNS(namespace, local_name)
|
||||
.map(|attr| attr.r().Value())
|
||||
.map(|attr| attr.Value())
|
||||
}
|
||||
|
||||
// https://dom.spec.whatwg.org/#dom-element-getattributenode
|
||||
|
@ -1345,7 +1345,7 @@ impl ElementMethods for Element {
|
|||
Some(parent) => parent,
|
||||
};
|
||||
|
||||
let parent = match context_parent.r().type_id() {
|
||||
let parent = match context_parent.type_id() {
|
||||
// Step 3.
|
||||
NodeTypeId::Document => return Err(Error::NoModificationAllowed),
|
||||
|
||||
|
@ -1360,7 +1360,7 @@ impl ElementMethods for Element {
|
|||
};
|
||||
|
||||
// Step 5.
|
||||
let frag = try!(parent.r().parse_fragment(value));
|
||||
let frag = try!(parent.parse_fragment(value));
|
||||
// Step 6.
|
||||
try!(context_parent.ReplaceChild(frag.upcast(), context_node));
|
||||
Ok(())
|
||||
|
@ -1659,7 +1659,7 @@ impl<'a> ::selectors::Element for Root<Element> {
|
|||
where F: FnMut(&Atom)
|
||||
{
|
||||
if let Some(ref attr) = self.get_attribute(&ns!(""), &atom!("class")) {
|
||||
let tokens = attr.r().value();
|
||||
let tokens = attr.value();
|
||||
let tokens = tokens.as_tokens();
|
||||
for token in tokens {
|
||||
callback(token);
|
||||
|
@ -1692,7 +1692,7 @@ impl<'a> ::selectors::Element for Root<Element> {
|
|||
NamespaceConstraint::Specific(ref ns) => {
|
||||
self.get_attribute(ns, local_name)
|
||||
.map_or(false, |attr| {
|
||||
test(&attr.r().value())
|
||||
test(&attr.value())
|
||||
})
|
||||
},
|
||||
NamespaceConstraint::Any => {
|
||||
|
@ -1783,7 +1783,7 @@ impl Element {
|
|||
// Step 4
|
||||
let e = self.nearest_activable_element();
|
||||
match e {
|
||||
Some(ref el) => match el.r().as_maybe_activatable() {
|
||||
Some(ref el) => match el.as_maybe_activatable() {
|
||||
Some(elem) => {
|
||||
// Step 5-6
|
||||
elem.pre_click_activation();
|
||||
|
@ -1880,7 +1880,7 @@ impl Element {
|
|||
return;
|
||||
}
|
||||
match ancestor.children()
|
||||
.find(|child| child.r().is::<HTMLLegendElement>())
|
||||
.find(|child| child.is::<HTMLLegendElement>())
|
||||
{
|
||||
Some(ref legend) => {
|
||||
// XXXabinader: should we save previous ancestor to avoid this iteration?
|
||||
|
@ -1898,7 +1898,7 @@ impl Element {
|
|||
if self.get_disabled_state() { return; }
|
||||
let node = self.upcast::<Node>();
|
||||
if let Some(ref parent) = node.GetParentNode() {
|
||||
if parent.r().is::<HTMLOptGroupElement>() && parent.downcast::<Element>().unwrap().get_disabled_state() {
|
||||
if parent.is::<HTMLOptGroupElement>() && parent.downcast::<Element>().unwrap().get_disabled_state() {
|
||||
self.set_disabled_state(true);
|
||||
self.set_enabled_state(false);
|
||||
}
|
||||
|
|
|
@ -88,7 +88,7 @@ impl Event {
|
|||
bubbles: EventBubbles,
|
||||
cancelable: EventCancelable) -> Root<Event> {
|
||||
let event = Event::new_uninitialized(global);
|
||||
event.r().InitEvent(type_, bubbles == EventBubbles::Bubbles, cancelable == EventCancelable::Cancelable);
|
||||
event.InitEvent(type_, bubbles == EventBubbles::Bubbles, cancelable == EventCancelable::Cancelable);
|
||||
event
|
||||
}
|
||||
|
||||
|
|
|
@ -138,7 +138,7 @@ impl Activatable for HTMLAnchorElement {
|
|||
fn activation_behavior(&self, event: &Event, target: &EventTarget) {
|
||||
//Step 1. If the node document is not fully active, abort.
|
||||
let doc = document_from_node(self);
|
||||
if !doc.r().is_fully_active() {
|
||||
if !doc.is_fully_active() {
|
||||
return;
|
||||
}
|
||||
//TODO: Step 2. Check if browsing context is specified and act accordingly.
|
||||
|
@ -150,7 +150,7 @@ impl Activatable for HTMLAnchorElement {
|
|||
if target.is::<HTMLImageElement>() && element.has_attribute(&atom!("ismap")) {
|
||||
|
||||
let target_node = element.upcast::<Node>();
|
||||
let rect = window_from_node(target_node).r().content_box_query(
|
||||
let rect = window_from_node(target_node).content_box_query(
|
||||
target_node.to_trusted_node_address());
|
||||
ismap_suffix = Some(
|
||||
format!("?{},{}", mouse_event.ClientX().to_f32().unwrap() - rect.origin.x.to_f32_px(),
|
||||
|
|
|
@ -75,26 +75,22 @@ impl HTMLBodyElementMethods for HTMLBodyElement {
|
|||
|
||||
// https://html.spec.whatwg.org/multipage/#the-body-element
|
||||
fn GetOnunload(&self) -> Option<Rc<EventHandlerNonNull>> {
|
||||
let win = window_from_node(self);
|
||||
win.r().GetOnunload()
|
||||
window_from_node(self).GetOnunload()
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#the-body-element
|
||||
fn SetOnunload(&self, listener: Option<Rc<EventHandlerNonNull>>) {
|
||||
let win = window_from_node(self);
|
||||
win.r().SetOnunload(listener)
|
||||
window_from_node(self).SetOnunload(listener)
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#the-body-element
|
||||
fn GetOnstorage(&self) -> Option<Rc<EventHandlerNonNull>> {
|
||||
let win = window_from_node(self);
|
||||
win.r().GetOnstorage()
|
||||
window_from_node(self).GetOnstorage()
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#the-body-element
|
||||
fn SetOnstorage(&self, listener: Option<Rc<EventHandlerNonNull>>) {
|
||||
let win = window_from_node(self);
|
||||
win.r().SetOnstorage(listener)
|
||||
window_from_node(self).SetOnstorage(listener)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -137,9 +133,9 @@ impl VirtualMethods for HTMLBodyElement {
|
|||
}
|
||||
|
||||
let window = window_from_node(self);
|
||||
let document = window.r().Document();
|
||||
document.r().set_reflow_timeout(time::precise_time_ns() + INITIAL_REFLOW_DELAY);
|
||||
let ConstellationChan(ref chan) = window.r().constellation_chan();
|
||||
let document = window.Document();
|
||||
document.set_reflow_timeout(time::precise_time_ns() + INITIAL_REFLOW_DELAY);
|
||||
let ConstellationChan(ref chan) = window.constellation_chan();
|
||||
let event = ConstellationMsg::HeadParsed;
|
||||
chan.send(event).unwrap();
|
||||
}
|
||||
|
|
|
@ -173,7 +173,7 @@ impl VirtualMethods for HTMLButtonElement {
|
|||
|
||||
let node = self.upcast::<Node>();
|
||||
let el = self.upcast::<Element>();
|
||||
if node.ancestors().any(|ancestor| ancestor.r().is::<HTMLFieldSetElement>()) {
|
||||
if node.ancestors().any(|ancestor| ancestor.is::<HTMLFieldSetElement>()) {
|
||||
el.check_ancestors_disabled_state_for_form_control();
|
||||
} else {
|
||||
el.check_disabled_attribute();
|
||||
|
@ -209,7 +209,7 @@ impl<'a> Activatable for &'a HTMLButtonElement {
|
|||
//https://html.spec.whatwg.org/multipage/#attr-button-type-submit-state
|
||||
ButtonType::Submit => {
|
||||
self.form_owner().map(|o| {
|
||||
o.r().submit(SubmittedFrom::NotFromFormSubmitMethod,
|
||||
o.submit(SubmittedFrom::NotFromFormSubmitMethod,
|
||||
FormSubmitter::ButtonElement(self.clone()))
|
||||
});
|
||||
},
|
||||
|
@ -228,7 +228,7 @@ impl<'a> Activatable for &'a HTMLButtonElement {
|
|||
}
|
||||
node.query_selector_iter("button[type=submit]".to_owned()).unwrap()
|
||||
.filter_map(Root::downcast::<HTMLButtonElement>)
|
||||
.find(|r| r.r().form_owner() == owner)
|
||||
.find(|r| r.form_owner() == owner)
|
||||
.map(|s| s.r().synthetic_click_activation(ctrlKey, shiftKey, altKey, metaKey));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -215,8 +215,8 @@ impl HTMLCollectionMethods for HTMLCollection {
|
|||
|
||||
// Step 2.
|
||||
self.elements_iter().find(|elem| {
|
||||
elem.r().get_string_attribute(&atom!("name")) == key ||
|
||||
elem.r().get_string_attribute(&atom!("id")) == key
|
||||
elem.get_string_attribute(&atom!("name")) == key ||
|
||||
elem.get_string_attribute(&atom!("id")) == key
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
@ -153,19 +153,16 @@ impl HTMLElementMethods for HTMLElement {
|
|||
// https://html.spec.whatwg.org/multipage/#handler-onload
|
||||
fn GetOnload(&self) -> Option<Rc<EventHandlerNonNull>> {
|
||||
if self.is_body_or_frameset() {
|
||||
let win = window_from_node(self);
|
||||
win.r().GetOnload()
|
||||
window_from_node(self).GetOnload()
|
||||
} else {
|
||||
let target = self.upcast::<EventTarget>();
|
||||
target.get_event_handler_common("load")
|
||||
self.upcast::<EventTarget>().get_event_handler_common("load")
|
||||
}
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#handler-onload
|
||||
fn SetOnload(&self, listener: Option<Rc<EventHandlerNonNull>>) {
|
||||
if self.is_body_or_frameset() {
|
||||
let win = window_from_node(self);
|
||||
win.r().SetOnload(listener)
|
||||
window_from_node(self).SetOnload(listener)
|
||||
} else {
|
||||
self.upcast::<EventTarget>().set_event_handler_common("load", listener)
|
||||
}
|
||||
|
@ -202,9 +199,9 @@ impl HTMLElementMethods for HTMLElement {
|
|||
}
|
||||
// https://html.spec.whatwg.org/multipage/#unfocusing-steps
|
||||
let document = document_from_node(self);
|
||||
document.r().begin_focus_transaction();
|
||||
document.begin_focus_transaction();
|
||||
// If `request_focus` is not called, focus will be set to None.
|
||||
document.r().commit_focus_transaction(FocusType::Element);
|
||||
document.commit_focus_transaction(FocusType::Element);
|
||||
}
|
||||
|
||||
// https://drafts.csswg.org/cssom-view/#extensions-to-the-htmlelement-interface
|
||||
|
@ -332,7 +329,7 @@ impl HTMLElement {
|
|||
pub fn get_custom_attr(&self, local_name: DOMString) -> Option<DOMString> {
|
||||
let local_name = Atom::from_slice(&to_snake_case(local_name));
|
||||
self.upcast::<Element>().get_attribute(&ns!(""), &local_name).map(|attr| {
|
||||
(**attr.r().value()).to_owned()
|
||||
(**attr.value()).to_owned()
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -419,9 +416,9 @@ impl VirtualMethods for HTMLElement {
|
|||
match (attr.local_name(), mutation) {
|
||||
(name, AttributeMutation::Set(_)) if name.starts_with("on") => {
|
||||
let window = window_from_node(self);
|
||||
let (cx, url, reflector) = (window.r().get_cx(),
|
||||
window.r().get_url(),
|
||||
window.r().reflector().get_jsobject());
|
||||
let (cx, url, reflector) = (window.get_cx(),
|
||||
window.get_url(),
|
||||
window.reflector().get_jsobject());
|
||||
let evtarget = self.upcast::<EventTarget>();
|
||||
evtarget.set_event_handler_uncompiled(cx, url, reflector,
|
||||
&name[2..],
|
||||
|
|
|
@ -113,7 +113,7 @@ impl VirtualMethods for HTMLFieldSetElement {
|
|||
});
|
||||
let fields = children.flat_map(|child| {
|
||||
child.traverse_preorder().filter(|descendant| {
|
||||
match descendant.r().type_id() {
|
||||
match descendant.type_id() {
|
||||
NodeTypeId::Element(
|
||||
ElementTypeId::HTMLElement(
|
||||
HTMLElementTypeId::HTMLButtonElement)) |
|
||||
|
|
|
@ -155,7 +155,7 @@ impl HTMLFormElement {
|
|||
// Step 1
|
||||
let doc = document_from_node(self);
|
||||
let win = window_from_node(self);
|
||||
let base = doc.r().url();
|
||||
let base = doc.url();
|
||||
// TODO: Handle browsing contexts
|
||||
// TODO: Handle validation
|
||||
let event = Event::new(GlobalRef::Window(win.r()),
|
||||
|
@ -163,7 +163,7 @@ impl HTMLFormElement {
|
|||
EventBubbles::Bubbles,
|
||||
EventCancelable::Cancelable);
|
||||
event.fire(self.upcast());
|
||||
if event.r().DefaultPrevented() {
|
||||
if event.DefaultPrevented() {
|
||||
return;
|
||||
}
|
||||
// Step 6
|
||||
|
@ -211,8 +211,8 @@ impl HTMLFormElement {
|
|||
}
|
||||
|
||||
// This is wrong. https://html.spec.whatwg.org/multipage/#planned-navigation
|
||||
win.r().main_thread_script_chan().send(MainThreadScriptMsg::Navigate(
|
||||
win.r().pipeline(), load_data)).unwrap();
|
||||
win.main_thread_script_chan().send(MainThreadScriptMsg::Navigate(
|
||||
win.pipeline(), load_data)).unwrap();
|
||||
}
|
||||
|
||||
fn get_unclean_dataset(&self, submitter: Option<FormSubmitter>) -> Vec<FormDatum> {
|
||||
|
@ -225,11 +225,11 @@ impl HTMLFormElement {
|
|||
_ => return None,
|
||||
}
|
||||
|
||||
if child.r().ancestors()
|
||||
if child.ancestors()
|
||||
.any(|a| Root::downcast::<HTMLDataListElement>(a).is_some()) {
|
||||
return None;
|
||||
}
|
||||
match child.r().type_id() {
|
||||
match child.type_id() {
|
||||
NodeTypeId::Element(ElementTypeId::HTMLElement(element)) => {
|
||||
match element {
|
||||
HTMLElementTypeId::HTMLInputElement => {
|
||||
|
@ -315,14 +315,14 @@ impl HTMLFormElement {
|
|||
EventBubbles::Bubbles,
|
||||
EventCancelable::Cancelable);
|
||||
event.fire(self.upcast());
|
||||
if event.r().DefaultPrevented() {
|
||||
if event.DefaultPrevented() {
|
||||
return;
|
||||
}
|
||||
|
||||
// TODO: This is an incorrect way of getting controls owned
|
||||
// by the form, but good enough until html5ever lands
|
||||
for child in self.upcast::<Node>().traverse_preorder() {
|
||||
match child.r().type_id() {
|
||||
match child.type_id() {
|
||||
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLInputElement)) => {
|
||||
child.downcast::<HTMLInputElement>().unwrap().reset();
|
||||
}
|
||||
|
@ -466,7 +466,7 @@ pub trait FormControl: DerivedFrom<Element> + Reflectable {
|
|||
let owner = elem.get_string_attribute(&atom!("form"));
|
||||
if !owner.is_empty() {
|
||||
let doc = document_from_node(elem);
|
||||
let owner = doc.r().GetElementById(owner);
|
||||
let owner = doc.GetElementById(owner);
|
||||
match owner {
|
||||
Some(ref o) => {
|
||||
let maybe_form = o.downcast::<HTMLFormElement>();
|
||||
|
|
|
@ -69,12 +69,12 @@ impl HTMLIFrameElement {
|
|||
pub fn get_url(&self) -> Option<Url> {
|
||||
let element = self.upcast::<Element>();
|
||||
element.get_attribute(&ns!(""), &atom!("src")).and_then(|src| {
|
||||
let url = src.r().value();
|
||||
let url = src.value();
|
||||
if url.is_empty() {
|
||||
None
|
||||
} else {
|
||||
let window = window_from_node(self);
|
||||
UrlParser::new().base_url(&window.r().get_url())
|
||||
UrlParser::new().base_url(&window.get_url())
|
||||
.parse(&url).ok()
|
||||
}
|
||||
})
|
||||
|
@ -85,7 +85,7 @@ impl HTMLIFrameElement {
|
|||
|
||||
let old_subpage_id = self.subpage_id.get();
|
||||
let win = window_from_node(self);
|
||||
let subpage_id = win.r().get_next_subpage_id();
|
||||
let subpage_id = win.get_next_subpage_id();
|
||||
self.subpage_id.set(Some(subpage_id));
|
||||
(subpage_id, old_subpage_id)
|
||||
}
|
||||
|
@ -138,7 +138,7 @@ impl HTMLIFrameElement {
|
|||
|
||||
if self.Mozbrowser() {
|
||||
let window = window_from_node(self);
|
||||
let cx = window.r().get_cx();
|
||||
let cx = window.get_cx();
|
||||
let _ar = JSAutoRequest::new(cx);
|
||||
let _ac = JSAutoCompartment::new(cx, window.reflector().get_jsobject().get());
|
||||
let mut detail = RootedValue::new(cx, UndefinedValue());
|
||||
|
@ -272,7 +272,7 @@ impl HTMLIFrameElementMethods for HTMLIFrameElement {
|
|||
let children = window.page().children.borrow();
|
||||
children.iter().find(|page| {
|
||||
let window = page.window();
|
||||
window.r().subpage() == Some(subpage_id)
|
||||
window.subpage() == Some(subpage_id)
|
||||
}).map(|page| page.window())
|
||||
})
|
||||
}
|
||||
|
@ -284,10 +284,10 @@ impl HTMLIFrameElementMethods for HTMLIFrameElement {
|
|||
Some(self_url) => self_url,
|
||||
None => return None,
|
||||
};
|
||||
let win_url = window_from_node(self).r().get_url();
|
||||
let win_url = window_from_node(self).get_url();
|
||||
|
||||
if UrlHelper::SameOrigin(&self_url, &win_url) {
|
||||
Some(window.r().Document())
|
||||
Some(window.Document())
|
||||
} else {
|
||||
None
|
||||
}
|
||||
|
|
|
@ -85,7 +85,7 @@ impl Runnable for ImageResponseHandlerRunnable {
|
|||
event.fire(element.upcast());
|
||||
|
||||
// Trigger reflow
|
||||
window.r().add_pending_reflow();
|
||||
window.add_pending_reflow();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -94,7 +94,7 @@ impl HTMLImageElement {
|
|||
/// prefetching the image. This method must be called after `src` is changed.
|
||||
fn update_image(&self, value: Option<(DOMString, Url)>) {
|
||||
let document = document_from_node(self);
|
||||
let window = document.r().window();
|
||||
let window = document.window();
|
||||
let image_cache = window.image_cache_task();
|
||||
match value {
|
||||
None => {
|
||||
|
|
|
@ -367,8 +367,8 @@ fn broadcast_radio_checked(broadcaster: &HTMLInputElement, group: Option<&Atom>)
|
|||
.filter_map(Root::downcast::<HTMLInputElement>)
|
||||
.filter(|r| in_same_group(r.r(), owner, group) && broadcaster != r.r());
|
||||
for ref r in iter {
|
||||
if r.r().Checked() {
|
||||
r.r().SetChecked(false);
|
||||
if r.Checked() {
|
||||
r.SetChecked(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -379,11 +379,9 @@ fn broadcast_radio_checked(broadcaster: &HTMLInputElement, group: Option<&Atom>)
|
|||
// https://html.spec.whatwg.org/multipage/#radio-button-group
|
||||
fn in_same_group(other: &HTMLInputElement, owner: Option<&HTMLFormElement>,
|
||||
group: Option<&Atom>) -> bool {
|
||||
let other_owner = other.form_owner();
|
||||
let other_owner = other_owner.r();
|
||||
other.input_type.get() == InputType::InputRadio &&
|
||||
// TODO Both a and b are in the same home subtree.
|
||||
other_owner == owner &&
|
||||
other.form_owner().r() == owner &&
|
||||
match (other.get_radio_group_name(), group) {
|
||||
(Some(ref s1), Some(s2)) => compatibility_caseless_match_str(s1, s2) && s2 != &atom!(""),
|
||||
_ => false
|
||||
|
@ -714,7 +712,7 @@ impl Activatable for HTMLInputElement {
|
|||
.filter_map(Root::downcast::<HTMLInputElement>)
|
||||
.find(|r| {
|
||||
in_same_group(r.r(), owner.r(), group.as_ref()) &&
|
||||
r.r().Checked()
|
||||
r.Checked()
|
||||
});
|
||||
cache.checked_radio = checked_member.r().map(JS::from_ref);
|
||||
cache.checked_changed = self.checked_changed.get();
|
||||
|
@ -789,7 +787,7 @@ impl Activatable for HTMLInputElement {
|
|||
// FIXME (Manishearth): support document owners (needs ability to get parent browsing context)
|
||||
if self.mutable() /* and document owner is fully active */ {
|
||||
self.form_owner().map(|o| {
|
||||
o.r().submit(SubmittedFrom::NotFromFormSubmitMethod,
|
||||
o.submit(SubmittedFrom::NotFromFormSubmitMethod,
|
||||
FormSubmitter::InputElement(self.clone()))
|
||||
});
|
||||
}
|
||||
|
@ -799,7 +797,7 @@ impl Activatable for HTMLInputElement {
|
|||
// FIXME (Manishearth): support document owners (needs ability to get parent browsing context)
|
||||
if self.mutable() /* and document owner is fully active */ {
|
||||
self.form_owner().map(|o| {
|
||||
o.r().reset(ResetFrom::NotFromFormResetMethod)
|
||||
o.reset(ResetFrom::NotFromFormResetMethod)
|
||||
});
|
||||
}
|
||||
},
|
||||
|
@ -844,18 +842,18 @@ impl Activatable for HTMLInputElement {
|
|||
let submit_button;
|
||||
submit_button = node.query_selector_iter("input[type=submit]".to_owned()).unwrap()
|
||||
.filter_map(Root::downcast::<HTMLInputElement>)
|
||||
.find(|r| r.r().form_owner() == owner);
|
||||
.find(|r| r.form_owner() == owner);
|
||||
match submit_button {
|
||||
Some(ref button) => {
|
||||
if button.r().is_instance_activatable() {
|
||||
button.r().synthetic_click_activation(ctrlKey, shiftKey, altKey, metaKey)
|
||||
if button.is_instance_activatable() {
|
||||
button.synthetic_click_activation(ctrlKey, shiftKey, altKey, metaKey)
|
||||
}
|
||||
}
|
||||
None => {
|
||||
let inputs = node.query_selector_iter("input".to_owned()).unwrap()
|
||||
.filter_map(Root::downcast::<HTMLInputElement>)
|
||||
.filter(|input| {
|
||||
input.r().form_owner() == owner && match &*input.r().Type() {
|
||||
input.form_owner() == owner && match &*input.Type() {
|
||||
"text" | "search" | "url" | "tel" |
|
||||
"email" | "password" | "datetime" |
|
||||
"date" | "month" | "week" | "time" |
|
||||
|
@ -869,7 +867,7 @@ impl Activatable for HTMLInputElement {
|
|||
// lazily test for > 1 submission-blocking inputs
|
||||
return;
|
||||
}
|
||||
form.r().submit(SubmittedFrom::NotFromFormSubmitMethod,
|
||||
form.submit(SubmittedFrom::NotFromFormSubmitMethod,
|
||||
FormSubmitter::FormElement(form.r()));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -58,7 +58,7 @@ impl HTMLLinkElement {
|
|||
|
||||
fn get_attr(element: &Element, local_name: &Atom) -> Option<String> {
|
||||
let elem = element.get_attribute(&ns!(""), local_name);
|
||||
elem.r().map(|e| {
|
||||
elem.map(|e| {
|
||||
let value = e.value();
|
||||
(**value).to_owned()
|
||||
})
|
||||
|
@ -168,7 +168,7 @@ impl HTMLLinkElement {
|
|||
let link_element = Trusted::new(window.get_cx(), self, window.script_chan().clone());
|
||||
let load_dispatcher = StylesheetLoadDispatcher::new(link_element);
|
||||
|
||||
let pending = doc.r().prepare_async_load(LoadType::Stylesheet(url.clone()));
|
||||
let pending = doc.prepare_async_load(LoadType::Stylesheet(url.clone()));
|
||||
let LayoutChan(ref layout_chan) = window.layout_chan();
|
||||
layout_chan.send(Msg::LoadStylesheet(url, media, pending, box load_dispatcher)).unwrap();
|
||||
}
|
||||
|
|
|
@ -58,7 +58,7 @@ impl HTMLMetaElement {
|
|||
if !content.is_empty() {
|
||||
if let Some(translated_rule) = ViewportRule::from_meta(&**content) {
|
||||
let win = window_from_node(self);
|
||||
let LayoutChan(ref layout_chan) = win.r().layout_chan();
|
||||
let LayoutChan(ref layout_chan) = win.layout_chan();
|
||||
|
||||
layout_chan.send(Msg::AddMetaViewport(translated_rule)).unwrap();
|
||||
}
|
||||
|
|
|
@ -154,11 +154,11 @@ impl AsyncResponseListener for ScriptContext {
|
|||
});
|
||||
let elem = self.elem.root();
|
||||
// TODO: maybe set this to None again after script execution to save memory.
|
||||
*elem.r().load.borrow_mut() = Some(ScriptOrigin::External(load));
|
||||
*elem.load.borrow_mut() = Some(ScriptOrigin::External(load));
|
||||
elem.ready_to_be_parser_executed.set(true);
|
||||
|
||||
let document = document_from_node(elem.r());
|
||||
document.r().finish_load(LoadType::Script(self.url.clone()));
|
||||
document.finish_load(LoadType::Script(self.url.clone()));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -237,7 +237,7 @@ impl HTMLScriptElement {
|
|||
|
||||
// Step 13.
|
||||
if let Some(ref charset) = element.get_attribute(&ns!(""), &atom!("charset")) {
|
||||
if let Some(encodingRef) = encoding_from_whatwg_label(&charset.r().Value()) {
|
||||
if let Some(encodingRef) = encoding_from_whatwg_label(&charset.Value()) {
|
||||
*self.block_character_encoding.borrow_mut() = encodingRef;
|
||||
}
|
||||
}
|
||||
|
@ -296,7 +296,7 @@ impl HTMLScriptElement {
|
|||
listener.notify(message.to().unwrap());
|
||||
});
|
||||
|
||||
doc.r().load_async(LoadType::Script(url), response_target);
|
||||
doc.load_async(LoadType::Script(url), response_target);
|
||||
}
|
||||
}
|
||||
true
|
||||
|
@ -310,32 +310,32 @@ impl HTMLScriptElement {
|
|||
deferred &&
|
||||
was_parser_inserted &&
|
||||
!async {
|
||||
doc.r().add_deferred_script(self);
|
||||
doc.add_deferred_script(self);
|
||||
// Second part implemented in Document::process_deferred_scripts.
|
||||
return NextParserState::Continue;
|
||||
// Step 15.b, has src, was parser-inserted, is not async.
|
||||
} else if is_external &&
|
||||
was_parser_inserted &&
|
||||
!async {
|
||||
doc.r().set_pending_parsing_blocking_script(Some(self));
|
||||
doc.set_pending_parsing_blocking_script(Some(self));
|
||||
// Second part implemented in the load result handler.
|
||||
// Step 15.c, doesn't have src, was parser-inserted, is blocked on stylesheet.
|
||||
} else if !is_external &&
|
||||
was_parser_inserted &&
|
||||
// TODO: check for script nesting levels.
|
||||
doc.r().get_script_blocking_stylesheets_count() > 0 {
|
||||
doc.r().set_pending_parsing_blocking_script(Some(self));
|
||||
doc.get_script_blocking_stylesheets_count() > 0 {
|
||||
doc.set_pending_parsing_blocking_script(Some(self));
|
||||
*self.load.borrow_mut() = Some(ScriptOrigin::Internal(text, base_url));
|
||||
self.ready_to_be_parser_executed.set(true);
|
||||
// Step 15.d, has src, isn't async, isn't non-blocking.
|
||||
} else if is_external &&
|
||||
!async &&
|
||||
!self.non_blocking.get() {
|
||||
doc.r().push_asap_in_order_script(self);
|
||||
doc.push_asap_in_order_script(self);
|
||||
// Second part implemented in Document::process_asap_scripts.
|
||||
// Step 15.e, has src.
|
||||
} else if is_external {
|
||||
doc.r().add_asap_script(self);
|
||||
doc.add_asap_script(self);
|
||||
// Second part implemented in Document::process_asap_scripts.
|
||||
// Step 15.f, otherwise.
|
||||
} else {
|
||||
|
@ -347,8 +347,8 @@ impl HTMLScriptElement {
|
|||
}
|
||||
// TODO: make this suspension happen automatically.
|
||||
if was_parser_inserted {
|
||||
if let Some(parser) = doc.r().get_current_parser() {
|
||||
parser.r().suspend();
|
||||
if let Some(parser) = doc.get_current_parser() {
|
||||
parser.suspend();
|
||||
}
|
||||
}
|
||||
return NextParserState::Suspend;
|
||||
|
@ -432,8 +432,8 @@ impl HTMLScriptElement {
|
|||
// Step 2.b.6.
|
||||
// TODO: Create a script...
|
||||
let window = window_from_node(self);
|
||||
let mut rval = RootedValue::new(window.r().get_cx(), UndefinedValue());
|
||||
window.r().evaluate_script_on_global_with_result(&*source,
|
||||
let mut rval = RootedValue::new(window.get_cx(), UndefinedValue());
|
||||
window.evaluate_script_on_global_with_result(&*source,
|
||||
&*url.serialize(),
|
||||
rval.handle_mut());
|
||||
|
||||
|
@ -451,8 +451,8 @@ impl HTMLScriptElement {
|
|||
if external {
|
||||
self.dispatch_load_event();
|
||||
} else {
|
||||
let chan = window.r().script_chan();
|
||||
let handler = Trusted::new(window.r().get_cx(), self, chan.clone());
|
||||
let chan = window.script_chan();
|
||||
let handler = Trusted::new(window.get_cx(), self, chan.clone());
|
||||
let dispatcher = box EventDispatcher {
|
||||
element: handler,
|
||||
is_error: false,
|
||||
|
@ -632,9 +632,9 @@ impl Runnable for EventDispatcher {
|
|||
fn handler(self: Box<EventDispatcher>) {
|
||||
let target = self.element.root();
|
||||
if self.is_error {
|
||||
target.r().dispatch_error_event();
|
||||
target.dispatch_error_event();
|
||||
} else {
|
||||
target.r().dispatch_load_event();
|
||||
target.dispatch_load_event();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -204,7 +204,7 @@ impl VirtualMethods for HTMLSelectElement {
|
|||
|
||||
let node = self.upcast::<Node>();
|
||||
let el = self.upcast::<Element>();
|
||||
if node.ancestors().any(|ancestor| ancestor.r().is::<HTMLFieldSetElement>()) {
|
||||
if node.ancestors().any(|ancestor| ancestor.is::<HTMLFieldSetElement>()) {
|
||||
el.check_ancestors_disabled_state_for_form_control();
|
||||
} else {
|
||||
el.check_disabled_attribute();
|
||||
|
|
|
@ -45,12 +45,11 @@ impl HTMLStyleElement {
|
|||
assert!(node.is_in_doc());
|
||||
|
||||
let win = window_from_node(node);
|
||||
let win = win.r();
|
||||
let url = win.get_url();
|
||||
|
||||
let mq_attribute = element.get_attribute(&ns!(""), &atom!("media"));
|
||||
let mq_str = match mq_attribute {
|
||||
Some(a) => String::from(&**a.r().value()),
|
||||
Some(a) => String::from(&**a.value()),
|
||||
None => String::new(),
|
||||
};
|
||||
let mut css_parser = CssParser::new(&mq_str);
|
||||
|
|
|
@ -372,6 +372,6 @@ pub struct ChangeEventRunnable {
|
|||
impl Runnable for ChangeEventRunnable {
|
||||
fn handler(self: Box<ChangeEventRunnable>) {
|
||||
let target = self.element.root();
|
||||
target.r().dispatch_change_event();
|
||||
target.dispatch_change_event();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -72,8 +72,7 @@ impl VirtualMethods for HTMLTitleElement {
|
|||
fn bind_to_tree(&self, is_in_doc: bool) {
|
||||
let node = self.upcast::<Node>();
|
||||
if is_in_doc {
|
||||
let document = node.owner_doc();
|
||||
document.r().title_changed();
|
||||
node.owner_doc().title_changed();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -84,7 +84,7 @@ impl KeyboardEvent {
|
|||
char_code: Option<u32>,
|
||||
key_code: u32) -> Root<KeyboardEvent> {
|
||||
let ev = KeyboardEvent::new_uninitialized(window);
|
||||
ev.r().InitKeyboardEvent(type_, canBubble, cancelable, view, key_string, location,
|
||||
ev.InitKeyboardEvent(type_, canBubble, cancelable, view, key_string, location,
|
||||
"".to_owned(), repeat, "".to_owned());
|
||||
// FIXME(https://github.com/rust-lang/rust/issues/23338)
|
||||
{
|
||||
|
|
|
@ -84,7 +84,7 @@ macro_rules! make_url_or_base_getter(
|
|||
let url = element.get_url_attribute(&Atom::from_slice($htmlname));
|
||||
if url.is_empty() {
|
||||
let window = window_from_node(self);
|
||||
window.r().get_url().serialize()
|
||||
window.get_url().serialize()
|
||||
} else {
|
||||
url
|
||||
}
|
||||
|
|
|
@ -74,7 +74,7 @@ impl MouseEvent {
|
|||
button: i16,
|
||||
relatedTarget: Option<&EventTarget>) -> Root<MouseEvent> {
|
||||
let ev = MouseEvent::new_uninitialized(window);
|
||||
ev.r().InitMouseEvent(type_, canBubble == EventBubbles::Bubbles, cancelable == EventCancelable::Cancelable,
|
||||
ev.InitMouseEvent(type_, canBubble == EventBubbles::Bubbles, cancelable == EventCancelable::Cancelable,
|
||||
view, detail,
|
||||
screenX, screenY, clientX, clientY,
|
||||
ctrlKey, altKey, shiftKey, metaKey,
|
||||
|
|
|
@ -270,7 +270,7 @@ impl Node {
|
|||
None => self.first_child.set(Some(new_child)),
|
||||
Some(ref last_child) => {
|
||||
assert!(last_child.next_sibling.get().is_none());
|
||||
last_child.r().next_sibling.set(Some(new_child));
|
||||
last_child.next_sibling.set(Some(new_child));
|
||||
new_child.prev_sibling.set(Some(&last_child));
|
||||
}
|
||||
}
|
||||
|
@ -368,7 +368,7 @@ impl Node {
|
|||
pub fn teardown(&self) {
|
||||
self.layout_data.dispose(self);
|
||||
for kid in self.children() {
|
||||
kid.r().teardown();
|
||||
kid.teardown();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -389,7 +389,7 @@ impl Node {
|
|||
|
||||
// FIXME: this should have a pure version?
|
||||
for kid in self.children() {
|
||||
kid.r().dump_indent(indent + 1)
|
||||
kid.dump_indent(indent + 1)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -515,8 +515,8 @@ impl Node {
|
|||
|
||||
// 4. Dirty ancestors.
|
||||
for ancestor in self.ancestors() {
|
||||
if !force_ancestors && ancestor.r().get_has_dirty_descendants() { break }
|
||||
ancestor.r().set_has_dirty_descendants(true);
|
||||
if !force_ancestors && ancestor.get_has_dirty_descendants() { break }
|
||||
ancestor.set_has_dirty_descendants(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -585,15 +585,15 @@ impl Node {
|
|||
}
|
||||
|
||||
pub fn get_bounding_content_box(&self) -> Rect<Au> {
|
||||
window_from_node(self).r().content_box_query(self.to_trusted_node_address())
|
||||
window_from_node(self).content_box_query(self.to_trusted_node_address())
|
||||
}
|
||||
|
||||
pub fn get_content_boxes(&self) -> Vec<Rect<Au>> {
|
||||
window_from_node(self).r().content_boxes_query(self.to_trusted_node_address())
|
||||
window_from_node(self).content_boxes_query(self.to_trusted_node_address())
|
||||
}
|
||||
|
||||
pub fn get_client_rect(&self) -> Rect<i32> {
|
||||
window_from_node(self).r().client_rect_query(self.to_trusted_node_address())
|
||||
window_from_node(self).client_rect_query(self.to_trusted_node_address())
|
||||
}
|
||||
|
||||
// https://dom.spec.whatwg.org/#dom-childnode-before
|
||||
|
@ -658,9 +658,9 @@ impl Node {
|
|||
Some(ref parent_node) => {
|
||||
// Step 2.
|
||||
let doc = self.owner_doc();
|
||||
let node = try!(doc.r().node_from_nodes_and_strings(nodes));
|
||||
let node = try!(doc.node_from_nodes_and_strings(nodes));
|
||||
// Step 3.
|
||||
parent_node.r().ReplaceChild(node.r(), self).map(|_| ())
|
||||
parent_node.ReplaceChild(node.r(), self).map(|_| ())
|
||||
},
|
||||
}
|
||||
}
|
||||
|
@ -669,7 +669,7 @@ impl Node {
|
|||
pub fn prepend(&self, nodes: Vec<NodeOrString>) -> ErrorResult {
|
||||
// Step 1.
|
||||
let doc = self.owner_doc();
|
||||
let node = try!(doc.r().node_from_nodes_and_strings(nodes));
|
||||
let node = try!(doc.node_from_nodes_and_strings(nodes));
|
||||
// Step 2.
|
||||
let first_child = self.first_child.get();
|
||||
Node::pre_insert(node.r(), self, first_child.r()).map(|_| ())
|
||||
|
@ -679,7 +679,7 @@ impl Node {
|
|||
pub fn append(&self, nodes: Vec<NodeOrString>) -> ErrorResult {
|
||||
// Step 1.
|
||||
let doc = self.owner_doc();
|
||||
let node = try!(doc.r().node_from_nodes_and_strings(nodes));
|
||||
let node = try!(doc.node_from_nodes_and_strings(nodes));
|
||||
// Step 2.
|
||||
self.AppendChild(node.r()).map(|_| ())
|
||||
}
|
||||
|
@ -745,7 +745,7 @@ impl Node {
|
|||
}
|
||||
|
||||
pub fn is_in_html_doc(&self) -> bool {
|
||||
self.owner_doc().r().is_html_document()
|
||||
self.owner_doc().is_html_document()
|
||||
}
|
||||
|
||||
pub fn children(&self) -> NodeSiblingIterator {
|
||||
|
@ -782,11 +782,11 @@ impl Node {
|
|||
NodeInfo {
|
||||
uniqueId: self.get_unique_id(),
|
||||
baseURI: self.BaseURI(),
|
||||
parent: self.GetParentNode().map(|node| node.r().get_unique_id()).unwrap_or("".to_owned()),
|
||||
parent: self.GetParentNode().map(|node| node.get_unique_id()).unwrap_or("".to_owned()),
|
||||
nodeType: self.NodeType(),
|
||||
namespaceURI: "".to_owned(), //FIXME
|
||||
nodeName: self.NodeName(),
|
||||
numChildren: self.ChildNodes().r().Length() as usize,
|
||||
numChildren: self.ChildNodes().Length() as usize,
|
||||
|
||||
//FIXME doctype nodes only
|
||||
name: "".to_owned(),
|
||||
|
@ -809,7 +809,7 @@ impl Node {
|
|||
pub fn parse_fragment(&self, markup: DOMString) -> Fallible<Root<DocumentFragment>> {
|
||||
let context_document = document_from_node(self);
|
||||
let fragment = DocumentFragment::new(context_document.r());
|
||||
if context_document.r().is_html_document() {
|
||||
if context_document.is_html_document() {
|
||||
parse_html_fragment(self.upcast(), markup, fragment.upcast());
|
||||
} else {
|
||||
// FIXME: XML case
|
||||
|
@ -1052,7 +1052,7 @@ impl Iterator for NodeSiblingIterator {
|
|||
None => return None,
|
||||
Some(current) => current,
|
||||
};
|
||||
self.current = current.r().GetNextSibling();
|
||||
self.current = current.GetNextSibling();
|
||||
Some(current)
|
||||
}
|
||||
}
|
||||
|
@ -1069,7 +1069,7 @@ impl Iterator for ReverseSiblingIterator {
|
|||
None => return None,
|
||||
Some(current) => current,
|
||||
};
|
||||
self.current = current.r().GetPreviousSibling();
|
||||
self.current = current.GetPreviousSibling();
|
||||
Some(current)
|
||||
}
|
||||
}
|
||||
|
@ -1089,9 +1089,9 @@ impl Iterator for FollowingNodeIterator {
|
|||
Some(current) => current,
|
||||
};
|
||||
|
||||
if let Some(first_child) = current.r().GetFirstChild() {
|
||||
if let Some(first_child) = current.GetFirstChild() {
|
||||
self.current = Some(first_child);
|
||||
return current.r().GetFirstChild()
|
||||
return current.GetFirstChild()
|
||||
}
|
||||
|
||||
if self.root == current {
|
||||
|
@ -1099,18 +1099,18 @@ impl Iterator for FollowingNodeIterator {
|
|||
return None;
|
||||
}
|
||||
|
||||
if let Some(next_sibling) = current.r().GetNextSibling() {
|
||||
if let Some(next_sibling) = current.GetNextSibling() {
|
||||
self.current = Some(next_sibling);
|
||||
return current.r().GetNextSibling()
|
||||
return current.GetNextSibling()
|
||||
}
|
||||
|
||||
for ancestor in current.r().inclusive_ancestors() {
|
||||
for ancestor in current.inclusive_ancestors() {
|
||||
if self.root == ancestor {
|
||||
break;
|
||||
}
|
||||
if let Some(next_sibling) = ancestor.r().GetNextSibling() {
|
||||
if let Some(next_sibling) = ancestor.GetNextSibling() {
|
||||
self.current = Some(next_sibling);
|
||||
return ancestor.r().GetNextSibling()
|
||||
return ancestor.GetNextSibling()
|
||||
}
|
||||
}
|
||||
self.current = None;
|
||||
|
@ -1139,24 +1139,24 @@ impl Iterator for PrecedingNodeIterator {
|
|||
}
|
||||
|
||||
let node = current;
|
||||
if let Some(previous_sibling) = node.r().GetPreviousSibling() {
|
||||
if let Some(previous_sibling) = node.GetPreviousSibling() {
|
||||
if self.root == previous_sibling {
|
||||
self.current = None;
|
||||
return None
|
||||
}
|
||||
|
||||
if let Some(last_child) = previous_sibling.r().descending_last_children().last() {
|
||||
if let Some(last_child) = previous_sibling.descending_last_children().last() {
|
||||
self.current = Some(last_child);
|
||||
return previous_sibling.r().descending_last_children().last()
|
||||
return previous_sibling.descending_last_children().last()
|
||||
}
|
||||
|
||||
self.current = Some(previous_sibling);
|
||||
return node.r().GetPreviousSibling()
|
||||
return node.GetPreviousSibling()
|
||||
};
|
||||
|
||||
if let Some(parent_node) = node.r().GetParentNode() {
|
||||
if let Some(parent_node) = node.GetParentNode() {
|
||||
self.current = Some(parent_node);
|
||||
return node.r().GetParentNode()
|
||||
return node.GetParentNode()
|
||||
}
|
||||
|
||||
self.current = None;
|
||||
|
@ -1176,7 +1176,7 @@ impl Iterator for LastChildIterator {
|
|||
None => return None,
|
||||
Some(current) => current,
|
||||
};
|
||||
self.current = current.r().GetLastChild();
|
||||
self.current = current.GetLastChild();
|
||||
Some(current)
|
||||
}
|
||||
}
|
||||
|
@ -1193,7 +1193,7 @@ impl Iterator for AncestorIterator {
|
|||
None => return None,
|
||||
Some(current) => current,
|
||||
};
|
||||
self.current = current.r().GetParentNode();
|
||||
self.current = current.GetParentNode();
|
||||
Some(current)
|
||||
}
|
||||
}
|
||||
|
@ -1221,16 +1221,16 @@ impl Iterator for TreeIterator {
|
|||
None => return None,
|
||||
Some(current) => current,
|
||||
};
|
||||
if let Some(first_child) = current.r().GetFirstChild() {
|
||||
if let Some(first_child) = current.GetFirstChild() {
|
||||
self.current = Some(first_child);
|
||||
self.depth += 1;
|
||||
return Some(current);
|
||||
};
|
||||
for ancestor in current.r().inclusive_ancestors() {
|
||||
for ancestor in current.inclusive_ancestors() {
|
||||
if self.depth == 0 {
|
||||
break;
|
||||
}
|
||||
if let Some(next_sibling) = ancestor.r().GetNextSibling() {
|
||||
if let Some(next_sibling) = ancestor.GetNextSibling() {
|
||||
self.current = Some(next_sibling);
|
||||
return Some(current);
|
||||
}
|
||||
|
@ -1359,7 +1359,7 @@ impl Node {
|
|||
NodeTypeId::DocumentFragment => {
|
||||
// Step 6.1.1(b)
|
||||
if node.children()
|
||||
.any(|c| c.r().is::<Text>())
|
||||
.any(|c| c.is::<Text>())
|
||||
{
|
||||
return Err(Error::HierarchyRequest);
|
||||
}
|
||||
|
@ -1372,7 +1372,7 @@ impl Node {
|
|||
}
|
||||
if let Some(child) = child {
|
||||
if child.inclusively_following_siblings()
|
||||
.any(|child| child.r().is_doctype()) {
|
||||
.any(|child| child.is_doctype()) {
|
||||
return Err(Error::HierarchyRequest);
|
||||
}
|
||||
}
|
||||
|
@ -1388,7 +1388,7 @@ impl Node {
|
|||
}
|
||||
if let Some(ref child) = child {
|
||||
if child.inclusively_following_siblings()
|
||||
.any(|child| child.r().is_doctype()) {
|
||||
.any(|child| child.is_doctype()) {
|
||||
return Err(Error::HierarchyRequest);
|
||||
}
|
||||
}
|
||||
|
@ -1396,7 +1396,7 @@ impl Node {
|
|||
// Step 6.3
|
||||
NodeTypeId::DocumentType => {
|
||||
if parent.children()
|
||||
.any(|c| c.r().is_doctype())
|
||||
.any(|c| c.is_doctype())
|
||||
{
|
||||
return Err(Error::HierarchyRequest);
|
||||
}
|
||||
|
@ -1404,7 +1404,7 @@ impl Node {
|
|||
Some(child) => {
|
||||
if parent.children()
|
||||
.take_while(|c| c.r() != child)
|
||||
.any(|c| c.r().is::<Element>())
|
||||
.any(|c| c.is::<Element>())
|
||||
{
|
||||
return Err(Error::HierarchyRequest);
|
||||
}
|
||||
|
@ -1635,7 +1635,7 @@ impl Node {
|
|||
Some(doc) => Root::from_ref(doc),
|
||||
None => Root::from_ref(document.r()),
|
||||
};
|
||||
assert!(copy.r().owner_doc() == document);
|
||||
assert!(copy.owner_doc() == document);
|
||||
|
||||
// Step 4 (some data already copied in step 2).
|
||||
match node.type_id() {
|
||||
|
@ -1834,7 +1834,7 @@ impl NodeMethods for Node {
|
|||
fn ChildNodes(&self) -> Root<NodeList> {
|
||||
self.child_list.or_init(|| {
|
||||
let doc = self.owner_doc();
|
||||
let window = doc.r().window();
|
||||
let window = doc.window();
|
||||
NodeList::new_child_list(window, self)
|
||||
})
|
||||
}
|
||||
|
@ -1923,7 +1923,7 @@ impl NodeMethods for Node {
|
|||
|
||||
// Notify the document that the content of this node is different
|
||||
let document = self.owner_doc();
|
||||
document.r().content_changed(self, NodeDamage::OtherNodeDamage);
|
||||
document.content_changed(self, NodeDamage::OtherNodeDamage);
|
||||
}
|
||||
NodeTypeId::DocumentType |
|
||||
NodeTypeId::Document => {}
|
||||
|
@ -2102,7 +2102,7 @@ impl NodeMethods for Node {
|
|||
}
|
||||
},
|
||||
None => {
|
||||
child.r().Normalize();
|
||||
child.Normalize();
|
||||
prev_text = None;
|
||||
}
|
||||
}
|
||||
|
@ -2241,7 +2241,7 @@ impl NodeMethods for Node {
|
|||
NodeConstants::DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC;
|
||||
}
|
||||
|
||||
for child in lastself.r().traverse_preorder() {
|
||||
for child in lastself.traverse_preorder() {
|
||||
if child.r() == other {
|
||||
// step 6.
|
||||
return NodeConstants::DOCUMENT_POSITION_PRECEDING;
|
||||
|
@ -2279,13 +2279,13 @@ impl NodeMethods for Node {
|
|||
},
|
||||
NodeTypeId::Document => {
|
||||
self.downcast::<Document>().unwrap().GetDocumentElement().and_then(|element| {
|
||||
element.r().lookup_prefix(namespace)
|
||||
element.lookup_prefix(namespace)
|
||||
})
|
||||
},
|
||||
NodeTypeId::DocumentType | NodeTypeId::DocumentFragment => None,
|
||||
_ => {
|
||||
self.GetParentElement().and_then(|element| {
|
||||
element.r().lookup_prefix(namespace)
|
||||
element.lookup_prefix(namespace)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
@ -2330,7 +2330,7 @@ pub fn document_from_node<T: DerivedFrom<Node> + Reflectable>(derived: &T) -> Ro
|
|||
|
||||
pub fn window_from_node<T: DerivedFrom<Node> + Reflectable>(derived: &T) -> Root<Window> {
|
||||
let document = document_from_node(derived);
|
||||
Root::from_ref(document.r().window())
|
||||
Root::from_ref(document.window())
|
||||
}
|
||||
|
||||
impl VirtualMethods for Node {
|
||||
|
|
|
@ -121,7 +121,7 @@ impl NodeIteratorMethods for NodeIterator {
|
|||
}
|
||||
|
||||
// Step 3-1.
|
||||
for following_node in node.r().following_nodes(&self.root_node) {
|
||||
for following_node in node.following_nodes(&self.root_node) {
|
||||
// Step 3-2.
|
||||
let result = try!(self.accept_node(following_node.r()));
|
||||
|
||||
|
@ -165,7 +165,7 @@ impl NodeIteratorMethods for NodeIterator {
|
|||
}
|
||||
|
||||
// Step 3-1.
|
||||
for preceding_node in node.r().preceding_nodes(&self.root_node) {
|
||||
for preceding_node in node.preceding_nodes(&self.root_node) {
|
||||
|
||||
// Step 3-2.
|
||||
let result = try!(self.accept_node(preceding_node.r()));
|
||||
|
|
|
@ -810,10 +810,10 @@ fn bp_position(a_node: &Node, a_offset: u32,
|
|||
// Step 3-1, 3-2.
|
||||
let mut b_ancestors = b_node.inclusive_ancestors();
|
||||
let child = b_ancestors.find(|child| {
|
||||
child.r().GetParentNode().unwrap().r() == a_node
|
||||
child.GetParentNode().unwrap().r() == a_node
|
||||
}).unwrap();
|
||||
// Step 3-3.
|
||||
if child.r().index() < a_offset {
|
||||
if child.index() < a_offset {
|
||||
Some(Ordering::Greater)
|
||||
} else {
|
||||
// Step 4.
|
||||
|
|
|
@ -159,7 +159,7 @@ impl AsyncResponseListener for ParserContext {
|
|||
Some(parser) => parser.root(),
|
||||
None => return,
|
||||
};
|
||||
parser.r().parse_chunk(data);
|
||||
parser.parse_chunk(data);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -175,9 +175,9 @@ impl AsyncResponseListener for ParserContext {
|
|||
// TODO(Savago): we should send a notification to callers #5463.
|
||||
}
|
||||
|
||||
parser.r().last_chunk_received.set(true);
|
||||
if !parser.r().is_suspended() {
|
||||
parser.r().parse_sync();
|
||||
parser.last_chunk_received.set(true);
|
||||
if !parser.is_suspended() {
|
||||
parser.parse_sync();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -58,7 +58,7 @@ impl TextMethods for Text {
|
|||
// Step 5.
|
||||
let node = self.upcast::<Node>();
|
||||
let owner_doc = node.owner_doc();
|
||||
let new_node = owner_doc.r().CreateTextNode(new_data);
|
||||
let new_node = owner_doc.CreateTextNode(new_data);
|
||||
// Step 6.
|
||||
let parent = node.GetParentNode();
|
||||
if let Some(ref parent) = parent {
|
||||
|
@ -79,10 +79,10 @@ impl TextMethods for Text {
|
|||
// https://dom.spec.whatwg.org/#dom-text-wholetext
|
||||
fn WholeText(&self) -> DOMString {
|
||||
let first = self.upcast::<Node>().inclusively_preceding_siblings()
|
||||
.take_while(|node| node.r().is::<Text>())
|
||||
.take_while(|node| node.is::<Text>())
|
||||
.last().unwrap();
|
||||
let nodes = first.r().inclusively_following_siblings()
|
||||
.take_while(|node| node.r().is::<Text>());
|
||||
let nodes = first.inclusively_following_siblings()
|
||||
.take_while(|node| node.is::<Text>());
|
||||
let mut text = DOMString::new();
|
||||
for ref node in nodes {
|
||||
let cdata = node.downcast::<CharacterData>().unwrap();
|
||||
|
|
|
@ -151,7 +151,7 @@ impl TreeWalkerMethods for TreeWalker {
|
|||
// "2. While node is not root, run these substeps:"
|
||||
while !self.is_root_node(node.r()) {
|
||||
// "1. Let sibling be the previous sibling of node."
|
||||
let mut sibling_op = node.r().GetPreviousSibling();
|
||||
let mut sibling_op = node.GetPreviousSibling();
|
||||
// "2. While sibling is not null, run these subsubsteps:"
|
||||
while sibling_op.is_some() {
|
||||
// "1. Set node to sibling."
|
||||
|
@ -183,7 +183,7 @@ impl TreeWalkerMethods for TreeWalker {
|
|||
return Ok(None)
|
||||
}
|
||||
// "4. Set node to its parent."
|
||||
match node.r().GetParentNode() {
|
||||
match node.GetParentNode() {
|
||||
None =>
|
||||
// This can happen if the user set the current node to somewhere
|
||||
// outside of the tree rooted at the original root.
|
||||
|
@ -214,7 +214,7 @@ impl TreeWalkerMethods for TreeWalker {
|
|||
if NodeFilterConstants::FILTER_REJECT == result {
|
||||
break;
|
||||
}
|
||||
match node.r().GetFirstChild() {
|
||||
match node.GetFirstChild() {
|
||||
None => break,
|
||||
Some (child) => {
|
||||
// "1. Set node to its first child."
|
||||
|
|
|
@ -47,7 +47,7 @@ impl UIEvent {
|
|||
view: Option<&Window>,
|
||||
detail: i32) -> Root<UIEvent> {
|
||||
let ev = UIEvent::new_uninitialized(window);
|
||||
ev.r().InitUIEvent(type_, can_bubble == EventBubbles::Bubbles,
|
||||
ev.InitUIEvent(type_, can_bubble == EventBubbles::Bubbles,
|
||||
cancelable == EventCancelable::Cancelable, view, detail);
|
||||
ev
|
||||
}
|
||||
|
|
|
@ -45,11 +45,11 @@ impl URLSearchParams {
|
|||
match init {
|
||||
Some(eUSVString(init)) => {
|
||||
// Step 2.
|
||||
*query.r().list.borrow_mut() = parse(init.0.as_bytes());
|
||||
*query.list.borrow_mut() = parse(init.0.as_bytes());
|
||||
},
|
||||
Some(eURLSearchParams(init)) => {
|
||||
// Step 3.
|
||||
*query.r().list.borrow_mut() = init.r().list.borrow().clone();
|
||||
*query.list.borrow_mut() = init.list.borrow().clone();
|
||||
},
|
||||
None => {}
|
||||
}
|
||||
|
|
|
@ -844,7 +844,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
|||
(image_data.get_data_array(&global.r()), image_data.get_size())
|
||||
},
|
||||
ImageDataOrHTMLImageElementOrHTMLCanvasElementOrHTMLVideoElement::eHTMLImageElement(image) => {
|
||||
let img_url = match image.r().get_url() {
|
||||
let img_url = match image.get_url() {
|
||||
Some(url) => url,
|
||||
None => return,
|
||||
};
|
||||
|
@ -900,7 +900,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
|||
constants::TEXTURE_2D |
|
||||
constants::TEXTURE_CUBE_MAP => {
|
||||
if let Some(texture) = self.bound_texture_for(target) {
|
||||
let result = texture.r().tex_parameter(target, name, TexParameterValue::Float(value));
|
||||
let result = texture.tex_parameter(target, name, TexParameterValue::Float(value));
|
||||
handle_potential_webgl_error!(self, result);
|
||||
} else {
|
||||
return self.webgl_error(InvalidOperation);
|
||||
|
@ -917,7 +917,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
|||
constants::TEXTURE_2D |
|
||||
constants::TEXTURE_CUBE_MAP => {
|
||||
if let Some(texture) = self.bound_texture_for(target) {
|
||||
let result = texture.r().tex_parameter(target, name, TexParameterValue::Int(value));
|
||||
let result = texture.tex_parameter(target, name, TexParameterValue::Int(value));
|
||||
handle_potential_webgl_error!(self, result);
|
||||
} else {
|
||||
return self.webgl_error(InvalidOperation);
|
||||
|
|
|
@ -439,7 +439,7 @@ impl Runnable for ConnectionEstablishedTask {
|
|||
fn handler(self: Box<Self>) {
|
||||
let ws = self.addr.root();
|
||||
|
||||
*ws.r().sender.borrow_mut() = Some(self.sender);
|
||||
*ws.sender.borrow_mut() = Some(self.sender);
|
||||
|
||||
// Step 1: Protocols.
|
||||
|
||||
|
|
|
@ -379,7 +379,7 @@ impl WindowMethods for Window {
|
|||
|
||||
// https://html.spec.whatwg.org/multipage/#dom-location
|
||||
fn Location(&self) -> Root<Location> {
|
||||
self.Document().r().Location()
|
||||
self.Document().Location()
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#dom-sessionstorage
|
||||
|
@ -533,13 +533,13 @@ impl WindowMethods for Window {
|
|||
let _ = callback.Call__(Finite::wrap(now), ExceptionHandling::Report);
|
||||
};
|
||||
|
||||
doc.r().request_animation_frame(Box::new(callback))
|
||||
doc.request_animation_frame(Box::new(callback))
|
||||
}
|
||||
|
||||
/// https://html.spec.whatwg.org/multipage/#dom-window-cancelanimationframe
|
||||
fn CancelAnimationFrame(&self, ident: u32) {
|
||||
let doc = self.Document();
|
||||
doc.r().cancel_animation_frame(ident);
|
||||
doc.cancel_animation_frame(ident);
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#dom-window-captureevents
|
||||
|
@ -908,7 +908,7 @@ impl Window {
|
|||
goal: goal,
|
||||
page_clip_rect: self.page_clip_rect.get(),
|
||||
},
|
||||
document: self.Document().r().upcast::<Node>().to_trusted_node_address(),
|
||||
document: self.Document().upcast::<Node>().to_trusted_node_address(),
|
||||
window_size: window_size,
|
||||
script_join_chan: join_chan,
|
||||
query_type: query_type,
|
||||
|
@ -1042,8 +1042,7 @@ impl Window {
|
|||
}
|
||||
|
||||
pub fn get_url(&self) -> Url {
|
||||
let doc = self.Document();
|
||||
(*doc.r().url()).clone()
|
||||
(*self.Document().url()).clone()
|
||||
}
|
||||
|
||||
pub fn resource_task(&self) -> ResourceTask {
|
||||
|
@ -1140,8 +1139,7 @@ impl Window {
|
|||
|
||||
// Push the document title to the compositor since we are
|
||||
// activating this document due to a navigation.
|
||||
let document = self.Document();
|
||||
document.r().title_changed();
|
||||
self.Document().title_changed();
|
||||
}
|
||||
|
||||
pub fn freeze(&self) {
|
||||
|
|
|
@ -205,7 +205,7 @@ impl XMLHttpRequest {
|
|||
if response.network_error {
|
||||
let mut context = self.xhr.lock().unwrap();
|
||||
let xhr = context.xhr.root();
|
||||
xhr.r().process_partial_response(XHRProgress::Errored(context.gen_id, Error::Network));
|
||||
xhr.process_partial_response(XHRProgress::Errored(context.gen_id, Error::Network));
|
||||
*context.sync_status.borrow_mut() = Some(Err(Error::Network));
|
||||
return;
|
||||
}
|
||||
|
@ -239,7 +239,7 @@ impl XMLHttpRequest {
|
|||
impl AsyncResponseListener for XHRContext {
|
||||
fn headers_available(&mut self, metadata: Metadata) {
|
||||
let xhr = self.xhr.root();
|
||||
let rv = xhr.r().process_headers_available(self.cors_request.clone(),
|
||||
let rv = xhr.process_headers_available(self.cors_request.clone(),
|
||||
self.gen_id,
|
||||
metadata);
|
||||
if rv.is_err() {
|
||||
|
@ -249,21 +249,18 @@ impl XMLHttpRequest {
|
|||
|
||||
fn data_available(&mut self, payload: Vec<u8>) {
|
||||
self.buf.borrow_mut().push_all(&payload);
|
||||
let xhr = self.xhr.root();
|
||||
xhr.r().process_data_available(self.gen_id, self.buf.borrow().clone());
|
||||
self.xhr.root().process_data_available(self.gen_id, self.buf.borrow().clone());
|
||||
}
|
||||
|
||||
fn response_complete(&mut self, status: Result<(), String>) {
|
||||
let xhr = self.xhr.root();
|
||||
let rv = xhr.r().process_response_complete(self.gen_id, status);
|
||||
let rv = self.xhr.root().process_response_complete(self.gen_id, status);
|
||||
*self.sync_status.borrow_mut() = Some(rv);
|
||||
}
|
||||
}
|
||||
|
||||
impl PreInvoke for XHRContext {
|
||||
fn should_invoke(&self) -> bool {
|
||||
let xhr = self.xhr.root();
|
||||
xhr.r().generation_id.get() == self.gen_id
|
||||
self.xhr.root().generation_id.get() == self.gen_id
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -949,8 +946,8 @@ impl XMLHttpRequest {
|
|||
fn handler(self: Box<XHRTimeout>) {
|
||||
let this = *self;
|
||||
let xhr = this.xhr.root();
|
||||
if xhr.r().ready_state.get() != XMLHttpRequestState::Done {
|
||||
xhr.r().process_partial_response(XHRProgress::Errored(this.gen_id, Error::Timeout));
|
||||
if xhr.ready_state.get() != XMLHttpRequestState::Done {
|
||||
xhr.process_partial_response(XHRProgress::Errored(this.gen_id, Error::Timeout));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1110,7 +1107,7 @@ impl Extractable for SendParam {
|
|||
},
|
||||
eURLSearchParams(ref usp) => {
|
||||
// Default encoding is UTF-8.
|
||||
usp.r().serialize(None).into_bytes()
|
||||
usp.serialize(None).into_bytes()
|
||||
},
|
||||
}
|
||||
}
|
||||
|
|
|
@ -71,7 +71,7 @@ impl<'a> TreeSink for servohtmlparser::Sink {
|
|||
ElementCreator::ParserCreated);
|
||||
|
||||
for attr in attrs {
|
||||
elem.r().set_attribute_from_parser(attr.name, attr.value.into(), None);
|
||||
elem.set_attribute_from_parser(attr.name, attr.value.into(), None);
|
||||
}
|
||||
|
||||
JS::from_ref(elem.upcast())
|
||||
|
@ -92,7 +92,7 @@ impl<'a> TreeSink for servohtmlparser::Sink {
|
|||
};
|
||||
|
||||
let child = self.get_or_create(new_node);
|
||||
assert!(parent.r().InsertBefore(child.r(), Some(&*sibling)).is_ok());
|
||||
assert!(parent.InsertBefore(child.r(), Some(&*sibling)).is_ok());
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
@ -129,7 +129,7 @@ impl<'a> TreeSink for servohtmlparser::Sink {
|
|||
|
||||
fn remove_from_parent(&mut self, target: JS<Node>) {
|
||||
if let Some(ref parent) = target.GetParentNode() {
|
||||
parent.r().RemoveChild(&*target).unwrap();
|
||||
parent.RemoveChild(&*target).unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -246,7 +246,7 @@ pub fn parse_html(document: &Document,
|
|||
ParseContext::Fragment(fc) =>
|
||||
ServoHTMLParser::new_for_fragment(Some(url), document, fc),
|
||||
};
|
||||
parser.r().parse_chunk(input.into());
|
||||
parser.parse_chunk(input.into());
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#parsing-html-fragments
|
||||
|
@ -267,11 +267,11 @@ pub fn parse_html_fragment(context_node: &Node,
|
|||
loader);
|
||||
|
||||
// Step 2.
|
||||
document.r().set_quirks_mode(context_document.quirks_mode());
|
||||
document.set_quirks_mode(context_document.quirks_mode());
|
||||
|
||||
// Step 11.
|
||||
let form = context_node.inclusive_ancestors()
|
||||
.find(|element| element.r().is::<HTMLFormElement>());
|
||||
.find(|element| element.is::<HTMLFormElement>());
|
||||
let fragment_context = FragmentContext {
|
||||
context_elem: context_node,
|
||||
form_elem: form.r(),
|
||||
|
@ -279,7 +279,7 @@ pub fn parse_html_fragment(context_node: &Node,
|
|||
parse_html(document.r(), input, url.clone(), ParseContext::Fragment(fragment_context));
|
||||
|
||||
// Step 14.
|
||||
let root_element = document.r().GetDocumentElement().expect("no document element");
|
||||
let root_element = document.GetDocumentElement().expect("no document element");
|
||||
for child in root_element.upcast::<Node>().children() {
|
||||
output.AppendChild(child.r()).unwrap();
|
||||
}
|
||||
|
|
|
@ -451,7 +451,7 @@ impl<'a> Drop for ScriptMemoryFailsafe<'a> {
|
|||
let page = owner.page.borrow_for_script_deallocation();
|
||||
for page in page.iter() {
|
||||
let window = page.window();
|
||||
window.r().clear_js_runtime_for_script_deallocation();
|
||||
window.clear_js_runtime_for_script_deallocation();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -714,9 +714,9 @@ impl ScriptTask {
|
|||
for page in page.iter() {
|
||||
// Only process a resize if layout is idle.
|
||||
let window = page.window();
|
||||
let resize_event = window.r().steal_resize_event();
|
||||
let resize_event = window.steal_resize_event();
|
||||
match resize_event {
|
||||
Some(size) => resizes.push((window.r().pipeline(), size)),
|
||||
Some(size) => resizes.push((window.pipeline(), size)),
|
||||
None => ()
|
||||
}
|
||||
}
|
||||
|
@ -866,9 +866,9 @@ impl ScriptTask {
|
|||
if let Some(page) = page.as_ref() {
|
||||
for page in page.iter() {
|
||||
let window = page.window();
|
||||
let pending_reflows = window.r().get_pending_reflow_count();
|
||||
let pending_reflows = window.get_pending_reflow_count();
|
||||
if pending_reflows > 0 {
|
||||
window.r().reflow(ReflowGoal::ForDisplay,
|
||||
window.reflow(ReflowGoal::ForDisplay,
|
||||
ReflowQueryType::NoQuery,
|
||||
ReflowReason::ImageLoaded);
|
||||
}
|
||||
|
@ -1014,7 +1014,7 @@ impl ScriptTask {
|
|||
pipeline ID not associated with this script task. This is a bug.");
|
||||
let window = page.window();
|
||||
|
||||
window.r().handle_fire_timer(id);
|
||||
window.handle_fire_timer(id);
|
||||
}
|
||||
|
||||
fn handle_msg_from_devtools(&self, msg: DevtoolScriptControlMsg) {
|
||||
|
@ -1086,7 +1086,7 @@ impl ScriptTask {
|
|||
if let Some(ref page) = page.as_ref() {
|
||||
if let Some(ref page) = page.find(id) {
|
||||
let window = page.window();
|
||||
window.r().set_resize_event(size);
|
||||
window.set_resize_event(size);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -1103,7 +1103,7 @@ impl ScriptTask {
|
|||
if let Some(page) = page.as_ref() {
|
||||
if let Some(ref inner_page) = page.find(id) {
|
||||
let window = inner_page.window();
|
||||
if window.r().set_page_clip_rect_with_new_viewport(rect) {
|
||||
if window.set_page_clip_rect_with_new_viewport(rect) {
|
||||
let page = get_page(page, id);
|
||||
self.rebuild_and_force_reflow(&*page, ReflowReason::Viewport);
|
||||
}
|
||||
|
@ -1122,7 +1122,7 @@ impl ScriptTask {
|
|||
fn handle_resource_loaded(&self, pipeline: PipelineId, load: LoadType) {
|
||||
let page = get_page(&self.root_page(), pipeline);
|
||||
let doc = page.document();
|
||||
doc.r().finish_load(load);
|
||||
doc.finish_load(load);
|
||||
}
|
||||
|
||||
/// Get the current state of a given pipeline.
|
||||
|
@ -1143,15 +1143,15 @@ impl ScriptTask {
|
|||
// has been kicked off. Since the script task does a join with
|
||||
// layout, this ensures there are no race conditions that can occur
|
||||
// between load completing and the first layout completing.
|
||||
let load_pending = doc.r().ReadyState() != DocumentReadyState::Complete;
|
||||
let load_pending = doc.ReadyState() != DocumentReadyState::Complete;
|
||||
if load_pending {
|
||||
return ScriptState::DocumentLoading;
|
||||
}
|
||||
|
||||
// Checks if the html element has reftest-wait attribute present.
|
||||
// See http://testthewebforward.org/docs/reftests.html
|
||||
let html_element = doc.r().GetDocumentElement();
|
||||
let reftest_wait = html_element.r().map_or(false, |elem| elem.has_class(&Atom::from_slice("reftest-wait")));
|
||||
let html_element = doc.GetDocumentElement();
|
||||
let reftest_wait = html_element.map_or(false, |elem| elem.has_class(&Atom::from_slice("reftest-wait")));
|
||||
if reftest_wait {
|
||||
return ScriptState::DocumentLoading;
|
||||
}
|
||||
|
@ -1204,7 +1204,7 @@ impl ScriptTask {
|
|||
|
||||
// Kick off the fetch for the new resource.
|
||||
let new_load = InProgressLoad::new(new_pipeline_id, Some((containing_pipeline_id, subpage_id)),
|
||||
layout_chan, parent_window.r().window_size(),
|
||||
layout_chan, parent_window.window_size(),
|
||||
load_data.url.clone());
|
||||
self.start_page_load(new_load, load_data);
|
||||
}
|
||||
|
@ -1317,7 +1317,7 @@ impl ScriptTask {
|
|||
let page = page.find(id).expect("ScriptTask: received freeze msg for a
|
||||
pipeline ID not associated with this script task. This is a bug.");
|
||||
let window = page.window();
|
||||
window.r().freeze();
|
||||
window.freeze();
|
||||
}
|
||||
|
||||
/// Handles thaw message
|
||||
|
@ -1332,7 +1332,7 @@ impl ScriptTask {
|
|||
}
|
||||
|
||||
let window = page.window();
|
||||
window.r().thaw();
|
||||
window.thaw();
|
||||
}
|
||||
|
||||
fn handle_focus_iframe_msg(&self,
|
||||
|
@ -1345,9 +1345,9 @@ impl ScriptTask {
|
|||
let frame_element = doc.find_iframe(subpage_id);
|
||||
|
||||
if let Some(ref frame_element) = frame_element {
|
||||
doc.r().begin_focus_transaction();
|
||||
doc.r().request_focus(frame_element.upcast());
|
||||
doc.r().commit_focus_transaction(FocusType::Parent);
|
||||
doc.begin_focus_transaction();
|
||||
doc.request_focus(frame_element.upcast());
|
||||
doc.commit_focus_transaction(FocusType::Parent);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1365,7 +1365,7 @@ impl ScriptTask {
|
|||
});
|
||||
|
||||
if let Some(ref frame_element) = frame_element {
|
||||
frame_element.r().dispatch_mozbrowser_event(event);
|
||||
frame_element.dispatch_mozbrowser_event(event);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1380,7 +1380,7 @@ impl ScriptTask {
|
|||
doc.find_iframe(old_subpage_id)
|
||||
});
|
||||
|
||||
frame_element.r().unwrap().update_subpage_id(new_subpage_id);
|
||||
frame_element.unwrap().update_subpage_id(new_subpage_id);
|
||||
}
|
||||
|
||||
/// Window was resized, but this script was not active, so don't reflow yet
|
||||
|
@ -1389,7 +1389,7 @@ impl ScriptTask {
|
|||
let page = page.find(id).expect("Received resize message for PipelineId not associated
|
||||
with a page in the page tree. This is a bug.");
|
||||
let window = page.window();
|
||||
window.r().set_window_size(new_size);
|
||||
window.set_window_size(new_size);
|
||||
page.set_reflow_status(true);
|
||||
}
|
||||
|
||||
|
@ -1432,7 +1432,7 @@ impl ScriptTask {
|
|||
fn handle_get_title_msg(&self, pipeline_id: PipelineId) {
|
||||
let page = get_page(&self.root_page(), pipeline_id);
|
||||
let document = page.document();
|
||||
document.r().send_title_to_compositor();
|
||||
document.send_title_to_compositor();
|
||||
}
|
||||
|
||||
/// Handles a request to exit the script task and shut down layout.
|
||||
|
@ -1468,7 +1468,7 @@ impl ScriptTask {
|
|||
// If root is being exited, shut down all pages
|
||||
let page = self.root_page();
|
||||
let window = page.window();
|
||||
if window.r().pipeline() == id {
|
||||
if window.pipeline() == id {
|
||||
debug!("shutting down layout for root page {:?}", id);
|
||||
shut_down_layout(&page, exit_type);
|
||||
return true
|
||||
|
@ -1485,7 +1485,7 @@ impl ScriptTask {
|
|||
fn handle_tick_all_animations(&self, id: PipelineId) {
|
||||
let page = get_page(&self.root_page(), id);
|
||||
let document = page.document();
|
||||
document.r().run_the_animation_frame_callbacks();
|
||||
document.run_the_animation_frame_callbacks();
|
||||
}
|
||||
|
||||
/// Handles a Web font being loaded. Does nothing if the page no longer exists.
|
||||
|
@ -1626,7 +1626,7 @@ impl ScriptTask {
|
|||
loader);
|
||||
|
||||
let frame_element = frame_element.r().map(Castable::upcast);
|
||||
window.r().init_browsing_context(document.r(), frame_element);
|
||||
window.init_browsing_context(document.r(), frame_element);
|
||||
|
||||
// Create the root frame
|
||||
page.set_frame(Some(Frame {
|
||||
|
@ -1639,7 +1639,7 @@ impl ScriptTask {
|
|||
let _ar = JSAutoRequest::new(self.get_cx());
|
||||
let evalstr = incomplete.url.non_relative_scheme_data().unwrap();
|
||||
let mut jsval = RootedValue::new(self.get_cx(), UndefinedValue());
|
||||
window.r().evaluate_js_on_global_with_result(evalstr, jsval.handle_mut());
|
||||
window.evaluate_js_on_global_with_result(evalstr, jsval.handle_mut());
|
||||
let strval = FromJSValConvertible::from_jsval(self.get_cx(), jsval.handle(),
|
||||
StringificationBehavior::Empty);
|
||||
strval.unwrap_or("".to_owned())
|
||||
|
@ -1652,7 +1652,7 @@ impl ScriptTask {
|
|||
|
||||
page_remover.neuter();
|
||||
|
||||
document.r().get_current_parser().unwrap()
|
||||
document.get_current_parser().unwrap()
|
||||
}
|
||||
|
||||
fn notify_devtools(&self, title: DOMString, url: Url, ids: (PipelineId, Option<WorkerId>)) {
|
||||
|
@ -1691,9 +1691,9 @@ impl ScriptTask {
|
|||
/// Reflows non-incrementally, rebuilding the entire layout tree in the process.
|
||||
fn rebuild_and_force_reflow(&self, page: &Page, reason: ReflowReason) {
|
||||
let document = page.document();
|
||||
document.r().dirty_all_nodes();
|
||||
document.dirty_all_nodes();
|
||||
let window = window_from_node(document.r());
|
||||
window.r().reflow(ReflowGoal::ForDisplay, ReflowQueryType::NoQuery, reason);
|
||||
window.reflow(ReflowGoal::ForDisplay, ReflowQueryType::NoQuery, reason);
|
||||
}
|
||||
|
||||
/// This is the main entry point for receiving and dispatching DOM events.
|
||||
|
@ -1731,7 +1731,7 @@ impl ScriptTask {
|
|||
// handle_mouse_move_event() in a safe RootedVec container.
|
||||
let mut mouse_over_targets = RootedVec::new();
|
||||
std_mem::swap(&mut *self.mouse_over_targets.borrow_mut(), &mut *mouse_over_targets);
|
||||
document.r().handle_mouse_move_event(self.js_runtime.rt(), point, &mut mouse_over_targets);
|
||||
document.handle_mouse_move_event(self.js_runtime.rt(), point, &mut mouse_over_targets);
|
||||
|
||||
// Notify Constellation about anchors that are no longer mouse over targets.
|
||||
for target in &*prev_mouse_over_targets {
|
||||
|
@ -1751,7 +1751,7 @@ impl ScriptTask {
|
|||
let status = target.get_attribute(&ns!(""), &atom!("href"))
|
||||
.and_then(|href| {
|
||||
let value = href.value();
|
||||
let url = document.r().url();
|
||||
let url = document.url();
|
||||
UrlParser::new().base_url(&url).parse(&value).map(|url| url.serialize()).ok()
|
||||
});
|
||||
let event = ConstellationMsg::NodeStatus(status);
|
||||
|
@ -1788,7 +1788,7 @@ impl ScriptTask {
|
|||
KeyEvent(key, state, modifiers) => {
|
||||
let page = get_page(&self.root_page(), pipeline_id);
|
||||
let document = page.document();
|
||||
document.r().dispatch_key_event(
|
||||
document.dispatch_key_event(
|
||||
key, state, modifiers, &mut self.compositor.borrow_mut());
|
||||
}
|
||||
}
|
||||
|
@ -1801,7 +1801,7 @@ impl ScriptTask {
|
|||
point: Point2D<f32>) {
|
||||
let page = get_page(&self.root_page(), pipeline_id);
|
||||
let document = page.document();
|
||||
document.r().handle_mouse_event(self.js_runtime.rt(), button, point, mouse_event_type);
|
||||
document.handle_mouse_event(self.js_runtime.rt(), button, point, mouse_event_type);
|
||||
}
|
||||
|
||||
fn handle_touch_event(&self,
|
||||
|
@ -1812,7 +1812,7 @@ impl ScriptTask {
|
|||
-> bool {
|
||||
let page = get_page(&self.root_page(), pipeline_id);
|
||||
let document = page.document();
|
||||
document.r().handle_touch_event(self.js_runtime.rt(), event_type, identifier, point)
|
||||
document.handle_touch_event(self.js_runtime.rt(), event_type, identifier, point)
|
||||
}
|
||||
|
||||
/// https://html.spec.whatwg.org/multipage/#navigating-across-documents
|
||||
|
@ -1861,14 +1861,14 @@ impl ScriptTask {
|
|||
fn handle_resize_event(&self, pipeline_id: PipelineId, new_size: WindowSizeData) {
|
||||
let page = get_page(&self.root_page(), pipeline_id);
|
||||
let window = page.window();
|
||||
window.r().set_window_size(new_size);
|
||||
window.r().force_reflow(ReflowGoal::ForDisplay,
|
||||
window.set_window_size(new_size);
|
||||
window.force_reflow(ReflowGoal::ForDisplay,
|
||||
ReflowQueryType::NoQuery,
|
||||
ReflowReason::WindowResize);
|
||||
|
||||
let document = page.document();
|
||||
let fragment_node = window.r().steal_fragment_name()
|
||||
.and_then(|name| document.r().find_fragment_node(&*name));
|
||||
let fragment_node = window.steal_fragment_name()
|
||||
.and_then(|name| document.find_fragment_node(&*name));
|
||||
match fragment_node {
|
||||
Some(ref node) => self.scroll_fragment_point(pipeline_id, node.r()),
|
||||
None => {}
|
||||
|
@ -1931,33 +1931,33 @@ impl ScriptTask {
|
|||
};
|
||||
|
||||
let document = page.document();
|
||||
let final_url = document.r().url();
|
||||
let final_url = document.url();
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#the-end step 1
|
||||
document.r().set_ready_state(DocumentReadyState::Interactive);
|
||||
document.set_ready_state(DocumentReadyState::Interactive);
|
||||
|
||||
// TODO: Execute step 2 here.
|
||||
|
||||
// Kick off the initial reflow of the page.
|
||||
debug!("kicking off initial reflow of {:?}", final_url);
|
||||
document.r().disarm_reflow_timeout();
|
||||
document.r().content_changed(document.upcast(),
|
||||
document.disarm_reflow_timeout();
|
||||
document.content_changed(document.upcast(),
|
||||
NodeDamage::OtherNodeDamage);
|
||||
let window = window_from_node(document.r());
|
||||
window.r().reflow(ReflowGoal::ForDisplay, ReflowQueryType::NoQuery, ReflowReason::FirstLoad);
|
||||
window.reflow(ReflowGoal::ForDisplay, ReflowQueryType::NoQuery, ReflowReason::FirstLoad);
|
||||
|
||||
// No more reflow required
|
||||
page.set_reflow_status(false);
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#the-end steps 3-4.
|
||||
document.r().process_deferred_scripts();
|
||||
document.process_deferred_scripts();
|
||||
|
||||
window.r().set_fragment_name(final_url.fragment.clone());
|
||||
window.set_fragment_name(final_url.fragment.clone());
|
||||
|
||||
// Notify devtools that a new script global exists.
|
||||
//TODO: should this happen as soon as the global is created, or at least once the first
|
||||
// script runs?
|
||||
self.notify_devtools(document.r().Title(), (*final_url).clone(), (id, None));
|
||||
self.notify_devtools(document.Title(), (*final_url).clone(), (id, None));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1978,7 +1978,7 @@ fn shut_down_layout(page_tree: &Rc<Page>, exit_type: PipelineExitType) {
|
|||
// processed this message.
|
||||
let (response_chan, response_port) = channel();
|
||||
let window = page.window();
|
||||
let LayoutChan(chan) = window.r().layout_chan();
|
||||
let LayoutChan(chan) = window.layout_chan();
|
||||
if chan.send(layout_interface::Msg::PrepareToExit(response_chan)).is_ok() {
|
||||
channels.push(chan);
|
||||
response_port.recv().unwrap();
|
||||
|
@ -1988,7 +1988,7 @@ fn shut_down_layout(page_tree: &Rc<Page>, exit_type: PipelineExitType) {
|
|||
// Drop our references to the JSContext and DOM objects.
|
||||
for page in page_tree.iter() {
|
||||
let window = page.window();
|
||||
window.r().clear_js_runtime();
|
||||
window.clear_js_runtime();
|
||||
// Sever the connection between the global and the DOM tree
|
||||
page.set_frame(None);
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@ fn find_node_by_unique_id(page: &Rc<Page>, pipeline: PipelineId, node_id: String
|
|||
let node = document.upcast::<Node>();
|
||||
|
||||
for candidate in node.traverse_preorder() {
|
||||
if candidate.r().get_unique_id() == node_id {
|
||||
if candidate.get_unique_id() == node_id {
|
||||
return Some(candidate);
|
||||
}
|
||||
}
|
||||
|
@ -64,9 +64,9 @@ pub fn handle_execute_script(page: &Rc<Page>,
|
|||
reply: IpcSender<WebDriverJSResult>) {
|
||||
let page = get_page(&*page, pipeline);
|
||||
let window = page.window();
|
||||
let cx = window.r().get_cx();
|
||||
let cx = window.get_cx();
|
||||
let mut rval = RootedValue::new(cx, UndefinedValue());
|
||||
window.r().evaluate_js_on_global_with_result(&eval, rval.handle_mut());
|
||||
window.evaluate_js_on_global_with_result(&eval, rval.handle_mut());
|
||||
|
||||
reply.send(jsval_to_webdriver(cx, rval.handle())).unwrap();
|
||||
}
|
||||
|
@ -77,10 +77,10 @@ pub fn handle_execute_async_script(page: &Rc<Page>,
|
|||
reply: IpcSender<WebDriverJSResult>) {
|
||||
let page = get_page(&*page, pipeline);
|
||||
let window = page.window();
|
||||
let cx = window.r().get_cx();
|
||||
window.r().set_webdriver_script_chan(Some(reply));
|
||||
let cx = window.get_cx();
|
||||
window.set_webdriver_script_chan(Some(reply));
|
||||
let mut rval = RootedValue::new(cx, UndefinedValue());
|
||||
window.r().evaluate_js_on_global_with_result(&eval, rval.handle_mut());
|
||||
window.evaluate_js_on_global_with_result(&eval, rval.handle_mut());
|
||||
}
|
||||
|
||||
pub fn handle_get_frame_id(page: &Rc<Page>,
|
||||
|
@ -105,17 +105,17 @@ pub fn handle_get_frame_id(page: &Rc<Page>,
|
|||
},
|
||||
WebDriverFrameId::Parent => {
|
||||
let window = page.window();
|
||||
Ok(window.r().parent())
|
||||
Ok(window.parent())
|
||||
}
|
||||
};
|
||||
|
||||
let frame_id = window.map(|x| x.map(|x| x.r().pipeline()));
|
||||
let frame_id = window.map(|x| x.map(|x| x.pipeline()));
|
||||
reply.send(frame_id).unwrap()
|
||||
}
|
||||
|
||||
pub fn handle_find_element_css(page: &Rc<Page>, _pipeline: PipelineId, selector: String,
|
||||
reply: IpcSender<Result<Option<String>, ()>>) {
|
||||
reply.send(match page.document().r().QuerySelector(selector) {
|
||||
reply.send(match page.document().QuerySelector(selector) {
|
||||
Ok(node) => {
|
||||
Ok(node.map(|x| x.upcast::<Node>().get_unique_id()))
|
||||
}
|
||||
|
@ -127,12 +127,12 @@ pub fn handle_find_elements_css(page: &Rc<Page>,
|
|||
_pipeline: PipelineId,
|
||||
selector: String,
|
||||
reply: IpcSender<Result<Vec<String>, ()>>) {
|
||||
reply.send(match page.document().r().QuerySelectorAll(selector) {
|
||||
reply.send(match page.document().QuerySelectorAll(selector) {
|
||||
Ok(ref nodes) => {
|
||||
let mut result = Vec::with_capacity(nodes.r().Length() as usize);
|
||||
for i in 0..nodes.r().Length() {
|
||||
if let Some(ref node) = nodes.r().Item(i) {
|
||||
result.push(node.r().get_unique_id());
|
||||
let mut result = Vec::with_capacity(nodes.Length() as usize);
|
||||
for i in 0..nodes.Length() {
|
||||
if let Some(ref node) = nodes.Item(i) {
|
||||
result.push(node.get_unique_id());
|
||||
}
|
||||
}
|
||||
Ok(result)
|
||||
|
@ -146,12 +146,12 @@ pub fn handle_find_elements_css(page: &Rc<Page>,
|
|||
pub fn handle_get_active_element(page: &Rc<Page>,
|
||||
_pipeline: PipelineId,
|
||||
reply: IpcSender<Option<String>>) {
|
||||
reply.send(page.document().r().GetActiveElement().map(
|
||||
reply.send(page.document().GetActiveElement().map(
|
||||
|elem| elem.upcast::<Node>().get_unique_id())).unwrap();
|
||||
}
|
||||
|
||||
pub fn handle_get_title(page: &Rc<Page>, _pipeline: PipelineId, reply: IpcSender<String>) {
|
||||
reply.send(page.document().r().Title()).unwrap();
|
||||
reply.send(page.document().Title()).unwrap();
|
||||
}
|
||||
|
||||
pub fn handle_get_text(page: &Rc<Page>,
|
||||
|
@ -160,7 +160,7 @@ pub fn handle_get_text(page: &Rc<Page>,
|
|||
reply: IpcSender<Result<String, ()>>) {
|
||||
reply.send(match find_node_by_unique_id(&*page, pipeline, node_id) {
|
||||
Some(ref node) => {
|
||||
Ok(node.r().GetTextContent().unwrap_or("".to_owned()))
|
||||
Ok(node.GetTextContent().unwrap_or("".to_owned()))
|
||||
},
|
||||
None => Err(())
|
||||
}).unwrap();
|
||||
|
@ -182,6 +182,6 @@ pub fn handle_get_url(page: &Rc<Page>,
|
|||
_pipeline: PipelineId,
|
||||
reply: IpcSender<Url>) {
|
||||
let document = page.document();
|
||||
let url = document.r().url();
|
||||
let url = document.url();
|
||||
reply.send((*url).clone()).unwrap();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue