Remove doublepointer in VirtualMethods, and from_borrowed_ref

Most of the heavy lifting done by:

```
$ ls *rs | xargs gawk -i inplace '/let .*: &&.*from_borrowed_ref/{sub("&&", "\\&");sub("_borrowed_","_");} {print $0}'
$ ls *rs | xargs gawk -i inplace "/impl.*VirtualMethods/{in_vm=1; sub(/<'a>/,\"\");sub(/&'a /,\"\")} /^}\$/{in_vm=0;} in_vm{\$0=gensub(/\\*self([^.])/,\"self\\\1\",\"g\"); sub(/from_borrowed_ref/,\"from_ref\")} {print}"
```
This commit is contained in:
Manish Goregaokar 2015-08-27 01:07:34 +05:30
parent 5e83a3f0a3
commit b33c5427bc
34 changed files with 159 additions and 164 deletions

View file

@ -5839,11 +5839,6 @@ impl ${name}Cast {
unsafe { mem::transmute(derived) }
}
#[inline]
pub fn from_borrowed_ref<'a, 'b, T: ${fromBound}+Reflectable>(derived: &'a &'b T) -> &'a &'b ${name} {
unsafe { mem::transmute(derived) }
}
#[inline]
#[allow(unrooted_must_root)]
pub fn from_layout_js<T: ${fromBound}+Reflectable>(derived: &LayoutJS<T>) -> LayoutJS<${name}> {

View file

@ -1543,9 +1543,9 @@ impl<'a> ElementMethods for &'a Element {
}
}
impl<'a> VirtualMethods for &'a Element {
impl VirtualMethods for Element {
fn super_type<'b>(&'b self) -> Option<&'b VirtualMethods> {
let node: &&Node = NodeCast::from_borrowed_ref(self);
let node: &Node = NodeCast::from_ref(self);
Some(node as &VirtualMethods)
}
@ -1554,11 +1554,11 @@ impl<'a> VirtualMethods for &'a Element {
s.after_set_attr(attr);
}
let node = NodeCast::from_ref(*self);
let node = NodeCast::from_ref(self);
match attr.local_name() {
&atom!("style") => {
// Modifying the `style` attribute might change style.
let doc = document_from_node(*self);
let doc = document_from_node(self);
let base_url = doc.r().base_url();
let value = attr.value();
let style = Some(parse_style_attribute(&value, &base_url));
@ -1571,7 +1571,7 @@ impl<'a> VirtualMethods for &'a Element {
&atom!("class") => {
// Modifying a class can change style.
if node.is_in_doc() {
let document = document_from_node(*self);
let document = document_from_node(self);
document.r().content_changed(node, NodeDamage::NodeStyleDamaged);
}
}
@ -1579,10 +1579,10 @@ impl<'a> VirtualMethods for &'a Element {
// Modifying an ID might change style.
let value = attr.value();
if node.is_in_doc() {
let doc = document_from_node(*self);
let doc = document_from_node(self);
if !value.is_empty() {
let value = value.atom().unwrap().clone();
doc.r().register_named_element(*self, value);
doc.r().register_named_element(self, value);
}
doc.r().content_changed(node, NodeDamage::NodeStyleDamaged);
}
@ -1590,7 +1590,7 @@ impl<'a> VirtualMethods for &'a Element {
_ => {
// Modifying any other attribute might change arbitrary things.
if node.is_in_doc() {
let document = document_from_node(*self);
let document = document_from_node(self);
document.r().content_changed(node, NodeDamage::OtherNodeDamage);
}
}
@ -1602,14 +1602,14 @@ impl<'a> VirtualMethods for &'a Element {
s.before_remove_attr(attr);
}
let node = NodeCast::from_ref(*self);
let node = NodeCast::from_ref(self);
match attr.local_name() {
&atom!("style") => {
// Modifying the `style` attribute might change style.
*self.style_attribute.borrow_mut() = None;
if node.is_in_doc() {
let doc = document_from_node(*self);
let doc = document_from_node(self);
doc.r().content_changed(node, NodeDamage::NodeStyleDamaged);
}
}
@ -1617,10 +1617,10 @@ impl<'a> VirtualMethods for &'a Element {
// Modifying an ID can change style.
let value = attr.value();
if node.is_in_doc() {
let doc = document_from_node(*self);
let doc = document_from_node(self);
if !value.is_empty() {
let value = value.atom().unwrap().clone();
doc.r().unregister_named_element(*self, value);
doc.r().unregister_named_element(self, value);
}
doc.r().content_changed(node, NodeDamage::NodeStyleDamaged);
}
@ -1628,14 +1628,14 @@ impl<'a> VirtualMethods for &'a Element {
&atom!("class") => {
// Modifying a class can change style.
if node.is_in_doc() {
let document = document_from_node(*self);
let document = document_from_node(self);
document.r().content_changed(node, NodeDamage::NodeStyleDamaged);
}
}
_ => {
// Modifying any other attribute might change arbitrary things.
if node.is_in_doc() {
let doc = document_from_node(*self);
let doc = document_from_node(self);
doc.r().content_changed(node, NodeDamage::OtherNodeDamage);
}
}
@ -1658,11 +1658,11 @@ impl<'a> VirtualMethods for &'a Element {
if !tree_in_doc { return; }
if let Some(ref attr) = self.get_attribute(&ns!(""), &atom!("id")) {
let doc = document_from_node(*self);
let doc = document_from_node(self);
let value = attr.r().Value();
if !value.is_empty() {
let value = Atom::from_slice(&value);
doc.r().register_named_element(*self, value);
doc.r().register_named_element(self, value);
}
}
}
@ -1675,11 +1675,11 @@ impl<'a> VirtualMethods for &'a Element {
if !tree_in_doc { return; }
if let Some(ref attr) = self.get_attribute(&ns!(""), &atom!("id")) {
let doc = document_from_node(*self);
let doc = document_from_node(self);
let value = attr.r().Value();
if !value.is_empty() {
let value = Atom::from_slice(&value);
doc.r().unregister_named_element(*self, value);
doc.r().unregister_named_element(self, value);
}
}
}

View file

@ -367,7 +367,7 @@ impl<'a> EventTargetMethods for &'a EventTarget {
}
}
impl<'a> VirtualMethods for &'a EventTarget {
impl VirtualMethods for EventTarget {
fn super_type<'b>(&'b self) -> Option<&'b VirtualMethods> {
None
}

View file

@ -67,9 +67,9 @@ impl HTMLAnchorElement {
}
}
impl<'a> VirtualMethods for &'a HTMLAnchorElement {
impl VirtualMethods for HTMLAnchorElement {
fn super_type<'b>(&'b self) -> Option<&'b VirtualMethods> {
let htmlelement: &&HTMLElement = HTMLElementCast::from_borrowed_ref(self);
let htmlelement: &HTMLElement = HTMLElementCast::from_ref(self);
Some(htmlelement as &VirtualMethods)
}

View file

@ -58,9 +58,9 @@ impl<'a> HTMLAppletElementMethods for &'a HTMLAppletElement {
make_atomic_setter!(SetName, "name");
}
impl<'a> VirtualMethods for &'a HTMLAppletElement {
impl VirtualMethods for HTMLAppletElement {
fn super_type<'b>(&'b self) -> Option<&'b VirtualMethods> {
Some(HTMLElementCast::from_borrowed_ref(self) as &VirtualMethods)
Some(HTMLElementCast::from_ref(self) as &VirtualMethods)
}
fn parse_plain_attribute(&self, name: &Atom, value: DOMString) -> AttrValue {

View file

@ -53,9 +53,9 @@ impl HTMLAreaElement {
}
}
impl<'a> VirtualMethods for &'a HTMLAreaElement {
impl VirtualMethods for HTMLAreaElement {
fn super_type<'b>(&'b self) -> Option<&'b VirtualMethods> {
let htmlelement: &&HTMLElement = HTMLElementCast::from_borrowed_ref(self);
let htmlelement: &HTMLElement = HTMLElementCast::from_ref(self);
Some(htmlelement as &VirtualMethods)
}

View file

@ -80,9 +80,9 @@ impl HTMLBaseElement {
}
}
impl<'a> VirtualMethods for &'a HTMLBaseElement {
impl VirtualMethods for HTMLBaseElement {
fn super_type<'b>(&'b self) -> Option<&'b VirtualMethods> {
Some(HTMLElementCast::from_borrowed_ref(self) as &VirtualMethods)
Some(HTMLElementCast::from_ref(self) as &VirtualMethods)
}
fn after_set_attr(&self, attr: &Attr) {

View file

@ -106,9 +106,9 @@ impl<'a> HTMLBodyElementHelpers for &'a HTMLBodyElement {
}
}
impl<'a> VirtualMethods for &'a HTMLBodyElement {
impl VirtualMethods for HTMLBodyElement {
fn super_type<'b>(&'b self) -> Option<&'b VirtualMethods> {
let element: &&HTMLElement = HTMLElementCast::from_borrowed_ref(self);
let element: &HTMLElement = HTMLElementCast::from_ref(self);
Some(element as &VirtualMethods)
}
@ -121,7 +121,7 @@ impl<'a> VirtualMethods for &'a HTMLBodyElement {
return
}
let window = window_from_node(*self);
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();
@ -141,7 +141,7 @@ impl<'a> VirtualMethods for &'a HTMLBodyElement {
"onbeforeunload", "onhashchange", "onlanguagechange", "onmessage",
"onoffline", "ononline", "onpagehide", "onpageshow", "onpopstate",
"onstorage", "onresize", "onunload", "onerror"];
let window = window_from_node(*self);
let window = window_from_node(self);
let (cx, url, reflector) = (window.r().get_cx(),
window.r().get_url(),
window.r().reflector().get_jsobject());
@ -149,7 +149,7 @@ impl<'a> VirtualMethods for &'a HTMLBodyElement {
if FORWARDED_EVENTS.iter().any(|&event| &**name == event) {
EventTargetCast::from_ref(window.r())
} else {
EventTargetCast::from_ref(*self)
EventTargetCast::from_ref(self)
};
evtarget.set_event_handler_uncompiled(cx, url, reflector,
&name[2..],
@ -161,7 +161,7 @@ impl<'a> VirtualMethods for &'a HTMLBodyElement {
self.background_color.set(str::parse_legacy_color(&attr.value()).ok())
}
&atom!("background") => {
let doc = document_from_node(*self);
let doc = document_from_node(self);
let base = doc.r().url();
*self.background.borrow_mut() = UrlParser::new().base_url(&base).parse(&attr.value()).ok();

View file

@ -132,9 +132,9 @@ impl<'a> HTMLButtonElementMethods for &'a HTMLButtonElement {
make_setter!(SetValue, "value");
}
impl<'a> VirtualMethods for &'a HTMLButtonElement {
impl VirtualMethods for HTMLButtonElement {
fn super_type<'b>(&'b self) -> Option<&'b VirtualMethods> {
let htmlelement: &&HTMLElement = HTMLElementCast::from_borrowed_ref(self);
let htmlelement: &HTMLElement = HTMLElementCast::from_ref(self);
Some(htmlelement as &VirtualMethods)
}
@ -145,7 +145,7 @@ impl<'a> VirtualMethods for &'a HTMLButtonElement {
match attr.local_name() {
&atom!("disabled") => {
let node = NodeCast::from_ref(*self);
let node = NodeCast::from_ref(self);
node.set_disabled_state(true);
node.set_enabled_state(false);
},
@ -160,7 +160,7 @@ impl<'a> VirtualMethods for &'a HTMLButtonElement {
match attr.local_name() {
&atom!("disabled") => {
let node = NodeCast::from_ref(*self);
let node = NodeCast::from_ref(self);
node.set_disabled_state(false);
node.set_enabled_state(true);
node.check_ancestors_disabled_state_for_form_control();
@ -174,7 +174,7 @@ impl<'a> VirtualMethods for &'a HTMLButtonElement {
s.bind_to_tree(tree_in_doc);
}
let node = NodeCast::from_ref(*self);
let node = NodeCast::from_ref(self);
node.check_ancestors_disabled_state_for_form_control();
}
@ -183,7 +183,7 @@ impl<'a> VirtualMethods for &'a HTMLButtonElement {
s.unbind_from_tree(tree_in_doc);
}
let node = NodeCast::from_ref(*self);
let node = NodeCast::from_ref(self);
if node.ancestors().any(|ancestor| ancestor.r().is_htmlfieldsetelement()) {
node.check_ancestors_disabled_state_for_form_control();
} else {

View file

@ -260,9 +260,9 @@ impl<'a> HTMLCanvasElementMethods for &'a HTMLCanvasElement {
}
}
impl<'a> VirtualMethods for &'a HTMLCanvasElement {
impl VirtualMethods for HTMLCanvasElement {
fn super_type<'b>(&'b self) -> Option<&'b VirtualMethods> {
let element: &&HTMLElement = HTMLElementCast::from_borrowed_ref(self);
let element: &HTMLElement = HTMLElementCast::from_ref(self);
Some(element as &VirtualMethods)
}

View file

@ -322,9 +322,9 @@ impl<'a> HTMLElementCustomAttributeHelpers for &'a HTMLElement {
}
}
impl<'a> VirtualMethods for &'a HTMLElement {
impl VirtualMethods for HTMLElement {
fn super_type<'b>(&'b self) -> Option<&'b VirtualMethods> {
let element: &&Element = ElementCast::from_borrowed_ref(self);
let element: &Element = ElementCast::from_ref(self);
Some(element as &VirtualMethods)
}
@ -348,11 +348,11 @@ impl<'a> VirtualMethods for &'a HTMLElement {
let name = attr.local_name();
if name.starts_with("on") {
let window = window_from_node(*self);
let window = window_from_node(self);
let (cx, url, reflector) = (window.r().get_cx(),
window.r().get_url(),
window.r().reflector().get_jsobject());
let evtarget = EventTargetCast::from_ref(*self);
let evtarget = EventTargetCast::from_ref(self);
evtarget.set_event_handler_uncompiled(cx, url, reflector,
&name[2..],
(**attr.value()).to_owned());

View file

@ -85,9 +85,9 @@ impl<'a> HTMLFieldSetElementMethods for &'a HTMLFieldSetElement {
make_bool_setter!(SetDisabled, "disabled");
}
impl<'a> VirtualMethods for &'a HTMLFieldSetElement {
impl VirtualMethods for HTMLFieldSetElement {
fn super_type<'b>(&'b self) -> Option<&'b VirtualMethods> {
let htmlelement: &&HTMLElement = HTMLElementCast::from_borrowed_ref(self);
let htmlelement: &HTMLElement = HTMLElementCast::from_ref(self);
Some(htmlelement as &VirtualMethods)
}
@ -98,7 +98,7 @@ impl<'a> VirtualMethods for &'a HTMLFieldSetElement {
match attr.local_name() {
&atom!("disabled") => {
let node = NodeCast::from_ref(*self);
let node = NodeCast::from_ref(self);
node.set_disabled_state(true);
node.set_enabled_state(false);
let maybe_legend = node.children()
@ -138,7 +138,7 @@ impl<'a> VirtualMethods for &'a HTMLFieldSetElement {
match attr.local_name() {
&atom!("disabled") => {
let node = NodeCast::from_ref(*self);
let node = NodeCast::from_ref(self);
node.set_disabled_state(false);
node.set_enabled_state(true);
let maybe_legend = node.children()

View file

@ -55,9 +55,9 @@ impl<'a> HTMLFontElementMethods for &'a HTMLFontElement {
make_setter!(SetColor, "color");
}
impl<'a> VirtualMethods for &'a HTMLFontElement {
impl VirtualMethods for HTMLFontElement {
fn super_type<'b>(&'b self) -> Option<&'b VirtualMethods> {
let htmlelement = HTMLElementCast::from_borrowed_ref(self);
let htmlelement = HTMLElementCast::from_ref(self);
Some(htmlelement as &VirtualMethods)
}

View file

@ -571,9 +571,9 @@ pub trait FormControl<'a> : Copy + Sized {
fn to_element(self) -> &'a Element;
}
impl<'a> VirtualMethods for &'a HTMLFormElement {
impl VirtualMethods for HTMLFormElement {
fn super_type<'b>(&'b self) -> Option<&'b VirtualMethods> {
Some(HTMLElementCast::from_borrowed_ref(self) as &VirtualMethods)
Some(HTMLElementCast::from_ref(self) as &VirtualMethods)
}
fn parse_plain_attribute(&self, name: &Atom, value: DOMString) -> AttrValue {

View file

@ -46,12 +46,12 @@ impl HTMLHeadElement {
}
}
impl<'a> VirtualMethods for &'a HTMLHeadElement {
impl VirtualMethods for HTMLHeadElement {
fn super_type<'b>(&'b self) -> Option<&'b VirtualMethods> {
let htmlelement: &&HTMLElement = HTMLElementCast::from_borrowed_ref(self);
let htmlelement: &HTMLElement = HTMLElementCast::from_ref(self);
Some(htmlelement as &VirtualMethods)
}
fn bind_to_tree(&self, _tree_in_doc: bool) {
load_script(*self);
load_script(self);
}
}

View file

@ -365,9 +365,9 @@ impl<'a> HTMLIFrameElementMethods for &'a HTMLIFrameElement {
make_setter!(SetHeight, "height");
}
impl<'a> VirtualMethods for &'a HTMLIFrameElement {
impl VirtualMethods for HTMLIFrameElement {
fn super_type<'b>(&'b self) -> Option<&'b VirtualMethods> {
let htmlelement: &&HTMLElement = HTMLElementCast::from_borrowed_ref(self);
let htmlelement: &HTMLElement = HTMLElementCast::from_ref(self);
Some(htmlelement as &VirtualMethods)
}
@ -395,7 +395,7 @@ impl<'a> VirtualMethods for &'a HTMLIFrameElement {
self.sandbox.set(Some(modes));
}
&atom!("src") => {
let node = NodeCast::from_ref(*self);
let node = NodeCast::from_ref(self);
if node.is_in_doc() {
self.process_the_iframe_attributes()
}
@ -440,7 +440,7 @@ impl<'a> VirtualMethods for &'a HTMLIFrameElement {
// https://html.spec.whatwg.org/multipage/#a-browsing-context-is-discarded
match (self.containing_page_pipeline_id(), self.subpage_id()) {
(Some(containing_pipeline_id), Some(subpage_id)) => {
let window = window_from_node(*self);
let window = window_from_node(self);
let window = window.r();
let ConstellationChan(ref chan) = window.constellation_chan();

View file

@ -304,9 +304,9 @@ impl<'a> HTMLImageElementMethods for &'a HTMLImageElement {
make_setter!(SetBorder, "border");
}
impl<'a> VirtualMethods for &'a HTMLImageElement {
impl VirtualMethods for HTMLImageElement {
fn super_type<'b>(&'b self) -> Option<&'b VirtualMethods> {
let htmlelement: &&HTMLElement = HTMLElementCast::from_borrowed_ref(self);
let htmlelement: &HTMLElement = HTMLElementCast::from_ref(self);
Some(htmlelement as &VirtualMethods)
}
@ -317,7 +317,7 @@ impl<'a> VirtualMethods for &'a HTMLImageElement {
match attr.local_name() {
&atom!("src") => {
let window = window_from_node(*self);
let window = window_from_node(self);
let url = window.r().get_url();
self.update_image(Some(((**attr.value()).to_owned(), &url)));
},

View file

@ -456,9 +456,9 @@ impl<'a> HTMLInputElementHelpers for &'a HTMLInputElement {
}
}
impl<'a> VirtualMethods for &'a HTMLInputElement {
impl VirtualMethods for HTMLInputElement {
fn super_type<'b>(&'b self) -> Option<&'b VirtualMethods> {
let htmlelement: &&HTMLElement = HTMLElementCast::from_borrowed_ref(self);
let htmlelement: &HTMLElement = HTMLElementCast::from_ref(self);
Some(htmlelement as &VirtualMethods)
}
@ -469,7 +469,7 @@ impl<'a> VirtualMethods for &'a HTMLInputElement {
match attr.local_name() {
&atom!("disabled") => {
let node = NodeCast::from_ref(*self);
let node = NodeCast::from_ref(self);
node.set_disabled_state(true);
node.set_enabled_state(false);
}
@ -532,7 +532,7 @@ impl<'a> VirtualMethods for &'a HTMLInputElement {
match attr.local_name() {
&atom!("disabled") => {
let node = NodeCast::from_ref(*self);
let node = NodeCast::from_ref(self);
node.set_disabled_state(false);
node.set_enabled_state(true);
node.check_ancestors_disabled_state_for_form_control();
@ -548,7 +548,7 @@ impl<'a> VirtualMethods for &'a HTMLInputElement {
}
&atom!("type") => {
if self.input_type.get() == InputType::InputRadio {
broadcast_radio_checked(*self,
broadcast_radio_checked(self,
self.get_radio_group_name()
.as_ref()
.map(|group| &**group));
@ -584,7 +584,7 @@ impl<'a> VirtualMethods for &'a HTMLInputElement {
s.bind_to_tree(tree_in_doc);
}
let node = NodeCast::from_ref(*self);
let node = NodeCast::from_ref(self);
node.check_ancestors_disabled_state_for_form_control();
}
@ -593,7 +593,7 @@ impl<'a> VirtualMethods for &'a HTMLInputElement {
s.unbind_from_tree(tree_in_doc);
}
let node = NodeCast::from_ref(*self);
let node = NodeCast::from_ref(self);
if node.ancestors().any(|ancestor| ancestor.r().is_htmlfieldsetelement()) {
node.check_ancestors_disabled_state_for_form_control();
} else {
@ -617,8 +617,8 @@ impl<'a> VirtualMethods for &'a HTMLInputElement {
//TODO: set the editing position for text inputs
let doc = document_from_node(*self);
doc.r().request_focus(ElementCast::from_ref(*self));
let doc = document_from_node(self);
doc.r().request_focus(ElementCast::from_ref(self));
} else if &*event.Type() == "keydown" && !event.DefaultPrevented() &&
(self.input_type.get() == InputType::InputText ||
self.input_type.get() == InputType::InputPassword) {

View file

@ -101,9 +101,9 @@ fn is_favicon(value: &Option<String>) -> bool {
}
}
impl<'a> VirtualMethods for &'a HTMLLinkElement {
impl VirtualMethods for HTMLLinkElement {
fn super_type<'b>(&'b self) -> Option<&'b VirtualMethods> {
let htmlelement: &&HTMLElement = HTMLElementCast::from_borrowed_ref(self);
let htmlelement: &HTMLElement = HTMLElementCast::from_ref(self);
Some(htmlelement as &VirtualMethods)
}
@ -112,12 +112,12 @@ impl<'a> VirtualMethods for &'a HTMLLinkElement {
s.after_set_attr(attr);
}
let node = NodeCast::from_ref(*self);
let node = NodeCast::from_ref(self);
if !node.is_in_doc() {
return;
}
let element = ElementCast::from_ref(*self);
let element = ElementCast::from_ref(self);
let rel = get_attr(element, &atom!("rel"));
match (rel, attr.local_name()) {
@ -150,7 +150,7 @@ impl<'a> VirtualMethods for &'a HTMLLinkElement {
}
if tree_in_doc {
let element = ElementCast::from_ref(*self);
let element = ElementCast::from_ref(self);
let rel = get_attr(element, &atom!("rel"));
let href = get_attr(element, &atom!("href"));

View file

@ -99,9 +99,9 @@ impl<'a> HTMLObjectElementMethods for &'a HTMLObjectElement {
make_setter!(SetType, "type");
}
impl<'a> VirtualMethods for &'a HTMLObjectElement {
impl VirtualMethods for HTMLObjectElement {
fn super_type<'b>(&'b self) -> Option<&'b VirtualMethods> {
let htmlelement: &&HTMLElement = HTMLElementCast::from_borrowed_ref(self);
let htmlelement: &HTMLElement = HTMLElementCast::from_ref(self);
Some(htmlelement as &VirtualMethods)
}

View file

@ -60,9 +60,9 @@ impl<'a> HTMLOptGroupElementMethods for &'a HTMLOptGroupElement {
make_bool_setter!(SetDisabled, "disabled");
}
impl<'a> VirtualMethods for &'a HTMLOptGroupElement {
impl VirtualMethods for HTMLOptGroupElement {
fn super_type<'b>(&'b self) -> Option<&'b VirtualMethods> {
let htmlelement: &&HTMLElement = HTMLElementCast::from_borrowed_ref(self);
let htmlelement: &HTMLElement = HTMLElementCast::from_ref(self);
Some(htmlelement as &VirtualMethods)
}
@ -73,7 +73,7 @@ impl<'a> VirtualMethods for &'a HTMLOptGroupElement {
match attr.local_name() {
&atom!("disabled") => {
let node = NodeCast::from_ref(*self);
let node = NodeCast::from_ref(self);
node.set_disabled_state(true);
node.set_enabled_state(false);
for child in node.children() {
@ -94,7 +94,7 @@ impl<'a> VirtualMethods for &'a HTMLOptGroupElement {
match attr.local_name() {
&atom!("disabled") => {
let node = NodeCast::from_ref(*self);
let node = NodeCast::from_ref(self);
node.set_disabled_state(false);
node.set_enabled_state(true);
for child in node.children() {

View file

@ -128,9 +128,9 @@ impl<'a> HTMLOptionElementMethods for &'a HTMLOptionElement {
}
impl<'a> VirtualMethods for &'a HTMLOptionElement {
impl VirtualMethods for HTMLOptionElement {
fn super_type<'b>(&'b self) -> Option<&'b VirtualMethods> {
let htmlelement: &&HTMLElement = HTMLElementCast::from_borrowed_ref(self);
let htmlelement: &HTMLElement = HTMLElementCast::from_ref(self);
Some(htmlelement as &VirtualMethods)
}
@ -141,7 +141,7 @@ impl<'a> VirtualMethods for &'a HTMLOptionElement {
match attr.local_name() {
&atom!("disabled") => {
let node = NodeCast::from_ref(*self);
let node = NodeCast::from_ref(self);
node.set_disabled_state(true);
node.set_enabled_state(false);
},
@ -156,7 +156,7 @@ impl<'a> VirtualMethods for &'a HTMLOptionElement {
match attr.local_name() {
&atom!("disabled") => {
let node = NodeCast::from_ref(*self);
let node = NodeCast::from_ref(self);
node.set_disabled_state(false);
node.set_enabled_state(true);
node.check_parent_disabled_state_for_option();
@ -170,7 +170,7 @@ impl<'a> VirtualMethods for &'a HTMLOptionElement {
s.bind_to_tree(tree_in_doc);
}
let node = NodeCast::from_ref(*self);
let node = NodeCast::from_ref(self);
node.check_parent_disabled_state_for_option();
}
@ -179,7 +179,7 @@ impl<'a> VirtualMethods for &'a HTMLOptionElement {
s.unbind_from_tree(tree_in_doc);
}
let node = NodeCast::from_ref(*self);
let node = NodeCast::from_ref(self);
if node.GetParentNode().is_some() {
node.check_parent_disabled_state_for_option();
} else {

View file

@ -561,9 +561,9 @@ impl<'a> PrivateHTMLScriptElementHelpers for &'a HTMLScriptElement {
}
}
impl<'a> VirtualMethods for &'a HTMLScriptElement {
impl VirtualMethods for HTMLScriptElement {
fn super_type<'b>(&'b self) -> Option<&'b VirtualMethods> {
let htmlelement: &&HTMLElement = HTMLElementCast::from_borrowed_ref(self);
let htmlelement: &HTMLElement = HTMLElementCast::from_ref(self);
Some(htmlelement as &VirtualMethods)
}
@ -571,7 +571,7 @@ impl<'a> VirtualMethods for &'a HTMLScriptElement {
if let Some(ref s) = self.super_type() {
s.after_set_attr(attr);
}
let node = NodeCast::from_ref(*self);
let node = NodeCast::from_ref(self);
if attr.local_name() == &atom!("src") && !self.parser_inserted.get() && node.is_in_doc() {
self.prepare();
}
@ -581,7 +581,7 @@ impl<'a> VirtualMethods for &'a HTMLScriptElement {
if let Some(ref s) = self.super_type() {
s.children_changed(mutation);
}
let node = NodeCast::from_ref(*self);
let node = NodeCast::from_ref(self);
if !self.parser_inserted.get() && node.is_in_doc() {
self.prepare();
}

View file

@ -105,9 +105,9 @@ impl<'a> HTMLSelectElementMethods for &'a HTMLSelectElement {
}
}
impl<'a> VirtualMethods for &'a HTMLSelectElement {
impl VirtualMethods for HTMLSelectElement {
fn super_type<'b>(&'b self) -> Option<&'b VirtualMethods> {
let htmlelement: &&HTMLElement = HTMLElementCast::from_borrowed_ref(self);
let htmlelement: &HTMLElement = HTMLElementCast::from_ref(self);
Some(htmlelement as &VirtualMethods)
}
@ -118,7 +118,7 @@ impl<'a> VirtualMethods for &'a HTMLSelectElement {
match attr.local_name() {
&atom!("disabled") => {
let node = NodeCast::from_ref(*self);
let node = NodeCast::from_ref(self);
node.set_disabled_state(true);
node.set_enabled_state(false);
},
@ -133,7 +133,7 @@ impl<'a> VirtualMethods for &'a HTMLSelectElement {
match attr.local_name() {
&atom!("disabled") => {
let node = NodeCast::from_ref(*self);
let node = NodeCast::from_ref(self);
node.set_disabled_state(false);
node.set_enabled_state(true);
node.check_ancestors_disabled_state_for_form_control();
@ -147,7 +147,7 @@ impl<'a> VirtualMethods for &'a HTMLSelectElement {
s.bind_to_tree(tree_in_doc);
}
let node = NodeCast::from_ref(*self);
let node = NodeCast::from_ref(self);
node.check_ancestors_disabled_state_for_form_control();
}
@ -156,7 +156,7 @@ impl<'a> VirtualMethods for &'a HTMLSelectElement {
s.unbind_from_tree(tree_in_doc);
}
let node = NodeCast::from_ref(*self);
let node = NodeCast::from_ref(self);
if node.ancestors().any(|ancestor| ancestor.r().is_htmlfieldsetelement()) {
node.check_ancestors_disabled_state_for_form_control();
} else {

View file

@ -82,9 +82,9 @@ impl<'a> StyleElementHelpers for &'a HTMLStyleElement {
}
}
impl<'a> VirtualMethods for &'a HTMLStyleElement {
impl VirtualMethods for HTMLStyleElement {
fn super_type<'b>(&'b self) -> Option<&'b VirtualMethods> {
let htmlelement: &&HTMLElement = HTMLElementCast::from_borrowed_ref(self);
let htmlelement: &HTMLElement = HTMLElementCast::from_ref(self);
Some(htmlelement as &VirtualMethods)
}
@ -92,7 +92,7 @@ impl<'a> VirtualMethods for &'a HTMLStyleElement {
if let Some(ref s) = self.super_type() {
s.children_changed(mutation);
}
let node = NodeCast::from_ref(*self);
let node = NodeCast::from_ref(self);
if node.is_in_doc() {
self.parse_own_css();
}

View file

@ -101,9 +101,9 @@ impl<'a> HTMLTableCellElementHelpers for &'a HTMLTableCellElement {
}
}
impl<'a> VirtualMethods for &'a HTMLTableCellElement {
impl VirtualMethods for HTMLTableCellElement {
fn super_type<'b>(&'b self) -> Option<&'b VirtualMethods> {
let htmlelement: &&HTMLElement = HTMLElementCast::from_borrowed_ref(self);
let htmlelement: &HTMLElement = HTMLElementCast::from_ref(self);
Some(htmlelement as &VirtualMethods)
}

View file

@ -158,9 +158,9 @@ impl<'a> HTMLTableElementHelpers for &'a HTMLTableElement {
}
}
impl<'a> VirtualMethods for &'a HTMLTableElement {
impl VirtualMethods for HTMLTableElement {
fn super_type<'b>(&'b self) -> Option<&'b VirtualMethods> {
let htmlelement: &&HTMLElement = HTMLElementCast::from_borrowed_ref(self);
let htmlelement: &HTMLElement = HTMLElementCast::from_ref(self);
Some(htmlelement as &VirtualMethods)
}

View file

@ -64,9 +64,9 @@ impl<'a> HTMLTableRowElementHelpers for &'a HTMLTableRowElement {
}
}
impl<'a> VirtualMethods for &'a HTMLTableRowElement {
impl VirtualMethods for HTMLTableRowElement {
fn super_type<'b>(&'b self) -> Option<&'b VirtualMethods> {
let htmlelement: &&HTMLElement = HTMLElementCast::from_borrowed_ref(self);
let htmlelement: &HTMLElement = HTMLElementCast::from_ref(self);
Some(htmlelement as &VirtualMethods)
}

View file

@ -62,9 +62,9 @@ impl<'a> HTMLTableSectionElementHelpers for &'a HTMLTableSectionElement {
}
}
impl<'a> VirtualMethods for &'a HTMLTableSectionElement {
impl VirtualMethods for HTMLTableSectionElement {
fn super_type<'b>(&'b self) -> Option<&'b VirtualMethods> {
let htmlelement: &&HTMLElement = HTMLElementCast::from_borrowed_ref(self);
let htmlelement: &HTMLElement = HTMLElementCast::from_ref(self);
Some(htmlelement as &VirtualMethods)
}

View file

@ -247,9 +247,9 @@ impl<'a> PrivateHTMLTextAreaElementHelpers for &'a HTMLTextAreaElement {
}
}
impl<'a> VirtualMethods for &'a HTMLTextAreaElement {
impl VirtualMethods for HTMLTextAreaElement {
fn super_type<'b>(&'b self) -> Option<&'b VirtualMethods> {
let htmlelement: &&HTMLElement = HTMLElementCast::from_borrowed_ref(self);
let htmlelement: &HTMLElement = HTMLElementCast::from_ref(self);
Some(htmlelement as &VirtualMethods)
}
@ -260,7 +260,7 @@ impl<'a> VirtualMethods for &'a HTMLTextAreaElement {
match attr.local_name() {
&atom!("disabled") => {
let node = NodeCast::from_ref(*self);
let node = NodeCast::from_ref(self);
node.set_disabled_state(true);
node.set_enabled_state(false);
},
@ -287,7 +287,7 @@ impl<'a> VirtualMethods for &'a HTMLTextAreaElement {
match attr.local_name() {
&atom!("disabled") => {
let node = NodeCast::from_ref(*self);
let node = NodeCast::from_ref(self);
node.set_disabled_state(false);
node.set_enabled_state(true);
node.check_ancestors_disabled_state_for_form_control();
@ -307,7 +307,7 @@ impl<'a> VirtualMethods for &'a HTMLTextAreaElement {
s.bind_to_tree(tree_in_doc);
}
let node = NodeCast::from_ref(*self);
let node = NodeCast::from_ref(self);
node.check_ancestors_disabled_state_for_form_control();
}
@ -324,7 +324,7 @@ impl<'a> VirtualMethods for &'a HTMLTextAreaElement {
s.unbind_from_tree(tree_in_doc);
}
let node = NodeCast::from_ref(*self);
let node = NodeCast::from_ref(self);
if node.ancestors().any(|ancestor| ancestor.r().is_htmlfieldsetelement()) {
node.check_ancestors_disabled_state_for_form_control();
} else {
@ -350,8 +350,8 @@ impl<'a> VirtualMethods for &'a HTMLTextAreaElement {
if &*event.Type() == "click" && !event.DefaultPrevented() {
//TODO: set the editing position for text inputs
let doc = document_from_node(*self);
doc.r().request_focus(ElementCast::from_ref(*self));
let doc = document_from_node(self);
doc.r().request_focus(ElementCast::from_ref(self));
} else if &*event.Type() == "keydown" && !event.DefaultPrevented() {
let keyevent: Option<&KeyboardEvent> = KeyboardEventCast::to_ref(event);
keyevent.map(|kevent| {
@ -361,10 +361,10 @@ impl<'a> VirtualMethods for &'a HTMLTextAreaElement {
self.value_changed.set(true);
if event.IsTrusted() {
let window = window_from_node(*self);
let window = window_from_node(self);
let window = window.r();
let chan = window.script_chan();
let handler = Trusted::new(window.get_cx(), *self, chan.clone());
let handler = Trusted::new(window.get_cx(), self, chan.clone());
let dispatcher = ChangeEventRunnable {
element: handler,
};

View file

@ -70,9 +70,9 @@ impl<'a> HTMLTitleElementMethods for &'a HTMLTitleElement {
}
}
impl<'a> VirtualMethods for &'a HTMLTitleElement {
impl VirtualMethods for HTMLTitleElement {
fn super_type<'b>(&'b self) -> Option<&'b VirtualMethods> {
let htmlelement: &&HTMLElement = HTMLElementCast::from_borrowed_ref(self);
let htmlelement: &HTMLElement = HTMLElementCast::from_ref(self);
Some(htmlelement as &VirtualMethods)
}
@ -80,14 +80,14 @@ impl<'a> VirtualMethods for &'a HTMLTitleElement {
if let Some(ref s) = self.super_type() {
s.children_changed(mutation);
}
let node = NodeCast::from_ref(*self);
let node = NodeCast::from_ref(self);
if node.is_in_doc() {
node.owner_doc().title_changed();
}
}
fn bind_to_tree(&self, is_in_doc: bool) {
let node = NodeCast::from_ref(*self);
let node = NodeCast::from_ref(self);
if is_in_doc {
let document = node.owner_doc();
document.r().title_changed();

View file

@ -2553,9 +2553,9 @@ pub fn window_from_node<T: NodeBase + Reflectable>(derived: &T) -> Root<Window>
document.r().window()
}
impl<'a> VirtualMethods for &'a Node {
impl VirtualMethods for Node {
fn super_type(&self) -> Option<&VirtualMethods> {
let eventtarget: &&EventTarget = EventTargetCast::from_borrowed_ref(self);
let eventtarget: &EventTarget = EventTargetCast::from_ref(self);
Some(eventtarget as &VirtualMethods)
}

View file

@ -18,7 +18,7 @@ use util::resource_files::resources_dir_path;
pub fn load_script(head: &HTMLHeadElement) {
if let Some(ref path_str) = opts::get().userscripts {
let node = NodeCast::from_borrowed_ref(&head);
let node = NodeCast::from_ref(head);
let first_child = node.GetFirstChild();
let doc = node.owner_doc();
let doc = doc.r();
@ -45,8 +45,8 @@ pub fn load_script(head: &HTMLHeadElement) {
let new_script = doc.CreateElement("script".to_owned()).unwrap();
let new_script = new_script.r();
new_script.set_string_attribute(&atom!("src"), name);
let new_script_node = NodeCast::from_borrowed_ref(&new_script);
node.InsertBefore(*new_script_node, first_child.r()).unwrap();
let new_script_node = NodeCast::from_ref(new_script);
node.InsertBefore(new_script_node, first_child.r()).unwrap();
}
}
}

View file

@ -126,126 +126,126 @@ pub trait VirtualMethods {
/// method call on the trait object will invoke the corresponding method on the
/// concrete type, propagating up the parent hierarchy unless otherwise
/// interrupted.
pub fn vtable_for<'a>(node: &'a &'a Node) -> &'a (VirtualMethods + 'a) {
pub fn vtable_for<'a>(node: &'a Node) -> &'a (VirtualMethods + 'a) {
match node.type_id() {
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLAnchorElement)) => {
let element = HTMLAnchorElementCast::to_borrowed_ref(node).unwrap();
let element = HTMLAnchorElementCast::to_ref(node).unwrap();
element as &'a (VirtualMethods + 'a)
}
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLAppletElement)) => {
HTMLAppletElementCast::to_borrowed_ref(node).unwrap() as &'a (VirtualMethods + 'a)
HTMLAppletElementCast::to_ref(node).unwrap() as &'a (VirtualMethods + 'a)
}
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLAreaElement)) => {
let element = HTMLAreaElementCast::to_borrowed_ref(node).unwrap();
let element = HTMLAreaElementCast::to_ref(node).unwrap();
element as &'a (VirtualMethods + 'a)
}
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLBaseElement)) => {
let element = HTMLBaseElementCast::to_borrowed_ref(node).unwrap();
let element = HTMLBaseElementCast::to_ref(node).unwrap();
element as &'a (VirtualMethods + 'a)
}
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLBodyElement)) => {
let element = HTMLBodyElementCast::to_borrowed_ref(node).unwrap();
let element = HTMLBodyElementCast::to_ref(node).unwrap();
element as &'a (VirtualMethods + 'a)
}
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLButtonElement)) => {
let element = HTMLButtonElementCast::to_borrowed_ref(node).unwrap();
let element = HTMLButtonElementCast::to_ref(node).unwrap();
element as &'a (VirtualMethods + 'a)
}
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLCanvasElement)) => {
let element = HTMLCanvasElementCast::to_borrowed_ref(node).unwrap();
let element = HTMLCanvasElementCast::to_ref(node).unwrap();
element as &'a (VirtualMethods + 'a)
}
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLFieldSetElement)) => {
let element = HTMLFieldSetElementCast::to_borrowed_ref(node).unwrap();
let element = HTMLFieldSetElementCast::to_ref(node).unwrap();
element as &'a (VirtualMethods + 'a)
}
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLFontElement)) => {
let element = HTMLFontElementCast::to_borrowed_ref(node).unwrap();
let element = HTMLFontElementCast::to_ref(node).unwrap();
element as &'a (VirtualMethods + 'a)
}
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLFormElement)) => {
let element = HTMLFormElementCast::to_borrowed_ref(node).unwrap();
let element = HTMLFormElementCast::to_ref(node).unwrap();
element as &'a (VirtualMethods + 'a)
}
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLHeadElement)) => {
let element = HTMLHeadElementCast::to_borrowed_ref(node).unwrap();
let element = HTMLHeadElementCast::to_ref(node).unwrap();
element as &'a (VirtualMethods + 'a)
}
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLImageElement)) => {
let element = HTMLImageElementCast::to_borrowed_ref(node).unwrap();
let element = HTMLImageElementCast::to_ref(node).unwrap();
element as &'a (VirtualMethods + 'a)
}
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLIFrameElement)) => {
let element = HTMLIFrameElementCast::to_borrowed_ref(node).unwrap();
let element = HTMLIFrameElementCast::to_ref(node).unwrap();
element as &'a (VirtualMethods + 'a)
}
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLInputElement)) => {
let element = HTMLInputElementCast::to_borrowed_ref(node).unwrap();
let element = HTMLInputElementCast::to_ref(node).unwrap();
element as &'a (VirtualMethods + 'a)
}
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLLinkElement)) => {
let element = HTMLLinkElementCast::to_borrowed_ref(node).unwrap();
let element = HTMLLinkElementCast::to_ref(node).unwrap();
element as &'a (VirtualMethods + 'a)
}
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLObjectElement)) => {
let element = HTMLObjectElementCast::to_borrowed_ref(node).unwrap();
let element = HTMLObjectElementCast::to_ref(node).unwrap();
element as &'a (VirtualMethods + 'a)
}
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLOptGroupElement)) => {
let element = HTMLOptGroupElementCast::to_borrowed_ref(node).unwrap();
let element = HTMLOptGroupElementCast::to_ref(node).unwrap();
element as &'a (VirtualMethods + 'a)
}
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLOptionElement)) => {
let element = HTMLOptionElementCast::to_borrowed_ref(node).unwrap();
let element = HTMLOptionElementCast::to_ref(node).unwrap();
element as &'a (VirtualMethods + 'a)
}
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLScriptElement)) => {
let element = HTMLScriptElementCast::to_borrowed_ref(node).unwrap();
let element = HTMLScriptElementCast::to_ref(node).unwrap();
element as &'a (VirtualMethods + 'a)
}
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLSelectElement)) => {
let element = HTMLSelectElementCast::to_borrowed_ref(node).unwrap();
let element = HTMLSelectElementCast::to_ref(node).unwrap();
element as &'a (VirtualMethods + 'a)
}
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLStyleElement)) => {
let element = HTMLStyleElementCast::to_borrowed_ref(node).unwrap();
let element = HTMLStyleElementCast::to_ref(node).unwrap();
element as &'a (VirtualMethods + 'a)
}
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTableElement)) => {
let element =
HTMLTableElementCast::to_borrowed_ref(node).unwrap();
HTMLTableElementCast::to_ref(node).unwrap();
element as &'a (VirtualMethods + 'a)
}
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTableCellElement(_))) => {
let element =
HTMLTableCellElementCast::to_borrowed_ref(node).unwrap();
HTMLTableCellElementCast::to_ref(node).unwrap();
element as &'a (VirtualMethods + 'a)
}
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTableRowElement)) => {
let element =
HTMLTableRowElementCast::to_borrowed_ref(node).unwrap();
HTMLTableRowElementCast::to_ref(node).unwrap();
element as &'a (VirtualMethods + 'a)
}
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTableSectionElement)) => {
let element =
HTMLTableSectionElementCast::to_borrowed_ref(node).unwrap();
HTMLTableSectionElementCast::to_ref(node).unwrap();
element as &'a (VirtualMethods + 'a)
}
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTextAreaElement)) => {
let element = HTMLTextAreaElementCast::to_borrowed_ref(node).unwrap();
let element = HTMLTextAreaElementCast::to_ref(node).unwrap();
element as &'a (VirtualMethods + 'a)
}
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTitleElement)) => {
let element =
HTMLTitleElementCast::to_borrowed_ref(node).unwrap();
HTMLTitleElementCast::to_ref(node).unwrap();
element as &'a (VirtualMethods + 'a)
}
NodeTypeId::Element(ElementTypeId::Element) => {
let element = ElementCast::to_borrowed_ref(node).unwrap();
let element = ElementCast::to_ref(node).unwrap();
element as &'a (VirtualMethods + 'a)
}
NodeTypeId::Element(_) => {
let element = HTMLElementCast::to_borrowed_ref(node).unwrap();
let element = HTMLElementCast::to_ref(node).unwrap();
element as &'a (VirtualMethods + 'a)
}
_ => {