mirror of
https://github.com/servo/servo.git
synced 2025-08-05 05:30:08 +01:00
Merge pull request #3099 from Ms2ger/attr-local_name-atom
Make Attr::local_name an Atom; r=abinader
This commit is contained in:
commit
1c1216de5c
22 changed files with 172 additions and 122 deletions
|
@ -69,7 +69,7 @@ impl AttrValue {
|
||||||
#[deriving(Encodable)]
|
#[deriving(Encodable)]
|
||||||
pub struct Attr {
|
pub struct Attr {
|
||||||
reflector_: Reflector,
|
reflector_: Reflector,
|
||||||
pub local_name: DOMString,
|
local_name: Atom,
|
||||||
value: Traceable<RefCell<AttrValue>>,
|
value: Traceable<RefCell<AttrValue>>,
|
||||||
pub name: Atom,
|
pub name: Atom,
|
||||||
pub namespace: Namespace,
|
pub namespace: Namespace,
|
||||||
|
@ -86,7 +86,7 @@ impl Reflectable for Attr {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Attr {
|
impl Attr {
|
||||||
fn new_inherited(local_name: DOMString, value: AttrValue,
|
fn new_inherited(local_name: Atom, value: AttrValue,
|
||||||
name: Atom, namespace: Namespace,
|
name: Atom, namespace: Namespace,
|
||||||
prefix: Option<DOMString>, owner: &JSRef<Element>) -> Attr {
|
prefix: Option<DOMString>, owner: &JSRef<Element>) -> Attr {
|
||||||
Attr {
|
Attr {
|
||||||
|
@ -100,7 +100,7 @@ impl Attr {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn new(window: &JSRef<Window>, local_name: DOMString, value: AttrValue,
|
pub fn new(window: &JSRef<Window>, local_name: Atom, value: AttrValue,
|
||||||
name: Atom, namespace: Namespace,
|
name: Atom, namespace: Namespace,
|
||||||
prefix: Option<DOMString>, owner: &JSRef<Element>) -> Temporary<Attr> {
|
prefix: Option<DOMString>, owner: &JSRef<Element>) -> Temporary<Attr> {
|
||||||
let attr = Attr::new_inherited(local_name, value, name, namespace, prefix, owner);
|
let attr = Attr::new_inherited(local_name, value, name, namespace, prefix, owner);
|
||||||
|
@ -115,7 +115,9 @@ impl Attr {
|
||||||
match set_type {
|
match set_type {
|
||||||
ReplacedAttr => {
|
ReplacedAttr => {
|
||||||
if namespace_is_null {
|
if namespace_is_null {
|
||||||
vtable_for(node).before_remove_attr(self.local_name.clone(), self.value.deref().borrow().as_slice().to_string());
|
vtable_for(node).before_remove_attr(
|
||||||
|
self.local_name(),
|
||||||
|
self.value.deref().borrow().as_slice().to_string());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
FirstSetAttr => {}
|
FirstSetAttr => {}
|
||||||
|
@ -124,18 +126,24 @@ impl Attr {
|
||||||
*self.value.deref().borrow_mut() = value;
|
*self.value.deref().borrow_mut() = value;
|
||||||
|
|
||||||
if namespace_is_null {
|
if namespace_is_null {
|
||||||
vtable_for(node).after_set_attr(self.local_name.clone(), self.value.deref().borrow().as_slice().to_string());
|
vtable_for(node).after_set_attr(
|
||||||
|
self.local_name(),
|
||||||
|
self.value.deref().borrow().as_slice().to_string());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn value<'a>(&'a self) -> Ref<'a, AttrValue> {
|
pub fn value<'a>(&'a self) -> Ref<'a, AttrValue> {
|
||||||
self.value.deref().borrow()
|
self.value.deref().borrow()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn local_name<'a>(&'a self) -> &'a Atom {
|
||||||
|
&self.local_name
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> AttrMethods for JSRef<'a, Attr> {
|
impl<'a> AttrMethods for JSRef<'a, Attr> {
|
||||||
fn LocalName(&self) -> DOMString {
|
fn LocalName(&self) -> DOMString {
|
||||||
self.local_name.clone()
|
self.local_name().as_slice().to_string()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn Value(&self) -> DOMString {
|
fn Value(&self) -> DOMString {
|
||||||
|
@ -145,7 +153,7 @@ impl<'a> AttrMethods for JSRef<'a, Attr> {
|
||||||
fn SetValue(&self, value: DOMString) {
|
fn SetValue(&self, value: DOMString) {
|
||||||
let owner = self.owner.root();
|
let owner = self.owner.root();
|
||||||
let value = owner.deref().parse_attribute(
|
let value = owner.deref().parse_attribute(
|
||||||
&self.namespace, self.deref().local_name.as_slice(), value);
|
&self.namespace, self.local_name(), value);
|
||||||
self.set_value(ReplacedAttr, value);
|
self.set_value(ReplacedAttr, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -178,7 +178,8 @@ impl RawLayoutElementHelpers for Element {
|
||||||
let attrs: *const Vec<JS<Attr>> = mem::transmute(&self.attrs);
|
let attrs: *const Vec<JS<Attr>> = mem::transmute(&self.attrs);
|
||||||
(*attrs).iter().find(|attr: & &JS<Attr>| {
|
(*attrs).iter().find(|attr: & &JS<Attr>| {
|
||||||
let attr = attr.unsafe_get();
|
let attr = attr.unsafe_get();
|
||||||
name == (*attr).local_name.as_slice() && (*attr).namespace == *namespace
|
name == (*attr).local_name().as_slice() &&
|
||||||
|
(*attr).namespace == *namespace
|
||||||
}).map(|attr| {
|
}).map(|attr| {
|
||||||
let attr = attr.unsafe_get();
|
let attr = attr.unsafe_get();
|
||||||
(*attr).value_ref_forever()
|
(*attr).value_ref_forever()
|
||||||
|
@ -192,7 +193,8 @@ impl RawLayoutElementHelpers for Element {
|
||||||
let attrs: *const Vec<JS<Attr>> = mem::transmute(&self.attrs);
|
let attrs: *const Vec<JS<Attr>> = mem::transmute(&self.attrs);
|
||||||
(*attrs).iter().find(|attr: & &JS<Attr>| {
|
(*attrs).iter().find(|attr: & &JS<Attr>| {
|
||||||
let attr = attr.unsafe_get();
|
let attr = attr.unsafe_get();
|
||||||
name == (*attr).local_name.as_slice() && (*attr).namespace == *namespace
|
name == (*attr).local_name().as_slice() &&
|
||||||
|
(*attr).namespace == *namespace
|
||||||
}).and_then(|attr| {
|
}).and_then(|attr| {
|
||||||
let attr = attr.unsafe_get();
|
let attr = attr.unsafe_get();
|
||||||
(*attr).value_atom_forever()
|
(*attr).value_atom_forever()
|
||||||
|
@ -238,18 +240,18 @@ impl<'a> ElementHelpers for JSRef<'a, Element> {
|
||||||
|
|
||||||
pub trait AttributeHandlers {
|
pub trait AttributeHandlers {
|
||||||
fn get_attribute(&self, namespace: Namespace, name: &str) -> Option<Temporary<Attr>>;
|
fn get_attribute(&self, namespace: Namespace, name: &str) -> Option<Temporary<Attr>>;
|
||||||
fn set_attribute_from_parser(&self, local_name: DOMString,
|
fn set_attribute_from_parser(&self, local_name: Atom,
|
||||||
value: DOMString, namespace: Namespace,
|
value: DOMString, namespace: Namespace,
|
||||||
prefix: Option<DOMString>);
|
prefix: Option<DOMString>);
|
||||||
fn set_attribute(&self, name: &str, value: AttrValue);
|
fn set_attribute(&self, name: &str, value: AttrValue);
|
||||||
fn do_set_attribute(&self, local_name: DOMString, value: AttrValue,
|
fn do_set_attribute(&self, local_name: Atom, value: AttrValue,
|
||||||
name: Atom, namespace: Namespace,
|
name: Atom, namespace: Namespace,
|
||||||
prefix: Option<DOMString>, cb: |&JSRef<Attr>| -> bool);
|
prefix: Option<DOMString>, cb: |&JSRef<Attr>| -> bool);
|
||||||
fn parse_attribute(&self, namespace: &Namespace, local_name: &str,
|
fn parse_attribute(&self, namespace: &Namespace, local_name: &Atom,
|
||||||
value: DOMString) -> AttrValue;
|
value: DOMString) -> AttrValue;
|
||||||
|
|
||||||
fn remove_attribute(&self, namespace: Namespace, name: &str);
|
fn remove_attribute(&self, namespace: Namespace, name: &str);
|
||||||
fn notify_attribute_changed(&self, local_name: DOMString);
|
fn notify_attribute_changed(&self, local_name: &Atom);
|
||||||
fn has_class(&self, name: &str) -> bool;
|
fn has_class(&self, name: &str) -> bool;
|
||||||
|
|
||||||
fn set_atomic_attribute(&self, name: &str, value: DOMString);
|
fn set_atomic_attribute(&self, name: &str, value: DOMString);
|
||||||
|
@ -269,27 +271,26 @@ pub trait AttributeHandlers {
|
||||||
impl<'a> AttributeHandlers for JSRef<'a, Element> {
|
impl<'a> AttributeHandlers for JSRef<'a, Element> {
|
||||||
fn get_attribute(&self, namespace: Namespace, name: &str) -> Option<Temporary<Attr>> {
|
fn get_attribute(&self, namespace: Namespace, name: &str) -> Option<Temporary<Attr>> {
|
||||||
let element: &Element = self.deref();
|
let element: &Element = self.deref();
|
||||||
let is_html_element = self.html_element_in_html_document();
|
let local_name = match self.html_element_in_html_document() {
|
||||||
|
true => Atom::from_slice(name.to_ascii_lower().as_slice()),
|
||||||
|
false => Atom::from_slice(name)
|
||||||
|
};
|
||||||
element.attrs.borrow().iter().map(|attr| attr.root()).find(|attr| {
|
element.attrs.borrow().iter().map(|attr| attr.root()).find(|attr| {
|
||||||
let same_name = if is_html_element {
|
*attr.local_name() == local_name && attr.namespace == namespace
|
||||||
name.to_ascii_lower() == attr.local_name
|
|
||||||
} else {
|
|
||||||
name == attr.local_name.as_slice()
|
|
||||||
};
|
|
||||||
|
|
||||||
same_name && attr.namespace == namespace
|
|
||||||
}).map(|x| Temporary::from_rooted(&*x))
|
}).map(|x| Temporary::from_rooted(&*x))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set_attribute_from_parser(&self, local_name: DOMString,
|
fn set_attribute_from_parser(&self, local_name: Atom,
|
||||||
value: DOMString, namespace: Namespace,
|
value: DOMString, namespace: Namespace,
|
||||||
prefix: Option<DOMString>) {
|
prefix: Option<DOMString>) {
|
||||||
let name = match prefix {
|
let name = match prefix {
|
||||||
None => Atom::from_slice(local_name.as_slice()),
|
None => local_name.clone(),
|
||||||
Some(ref prefix) => Atom::from_slice(format!("{:s}:{:s}", *prefix, local_name).as_slice()),
|
Some(ref prefix) => {
|
||||||
|
let name = format!("{:s}:{:s}", *prefix, local_name.as_slice());
|
||||||
|
Atom::from_slice(name.as_slice())
|
||||||
|
},
|
||||||
};
|
};
|
||||||
let value = self.parse_attribute(&namespace, local_name.as_slice(), value);
|
let value = self.parse_attribute(&namespace, &local_name, value);
|
||||||
self.do_set_attribute(local_name, value, name, namespace, prefix, |_| false)
|
self.do_set_attribute(local_name, value, name, namespace, prefix, |_| false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -300,12 +301,12 @@ impl<'a> AttributeHandlers for JSRef<'a, Element> {
|
||||||
let node: &JSRef<Node> = NodeCast::from_ref(self);
|
let node: &JSRef<Node> = NodeCast::from_ref(self);
|
||||||
node.wait_until_safe_to_modify_dom();
|
node.wait_until_safe_to_modify_dom();
|
||||||
|
|
||||||
self.do_set_attribute(name.to_string(), value, Atom::from_slice(name),
|
let name = Atom::from_slice(name);
|
||||||
namespace::Null, None,
|
self.do_set_attribute(name.clone(), value, name.clone(),
|
||||||
|attr| attr.deref().local_name.as_slice() == name);
|
namespace::Null, None, |attr| *attr.local_name() == name);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn do_set_attribute(&self, local_name: DOMString, value: AttrValue,
|
fn do_set_attribute(&self, local_name: Atom, value: AttrValue,
|
||||||
name: Atom, namespace: Namespace,
|
name: Atom, namespace: Namespace,
|
||||||
prefix: Option<DOMString>, cb: |&JSRef<Attr>| -> bool) {
|
prefix: Option<DOMString>, cb: |&JSRef<Attr>| -> bool) {
|
||||||
let idx = self.deref().attrs.borrow().iter()
|
let idx = self.deref().attrs.borrow().iter()
|
||||||
|
@ -315,7 +316,7 @@ impl<'a> AttributeHandlers for JSRef<'a, Element> {
|
||||||
Some(idx) => (idx, ReplacedAttr),
|
Some(idx) => (idx, ReplacedAttr),
|
||||||
None => {
|
None => {
|
||||||
let window = window_from_node(self).root();
|
let window = window_from_node(self).root();
|
||||||
let attr = Attr::new(&*window, local_name.clone(), value.clone(),
|
let attr = Attr::new(&*window, local_name, value.clone(),
|
||||||
name, namespace.clone(), prefix, self);
|
name, namespace.clone(), prefix, self);
|
||||||
self.deref().attrs.borrow_mut().push_unrooted(&attr);
|
self.deref().attrs.borrow_mut().push_unrooted(&attr);
|
||||||
(self.deref().attrs.borrow().len() - 1, FirstSetAttr)
|
(self.deref().attrs.borrow().len() - 1, FirstSetAttr)
|
||||||
|
@ -325,11 +326,11 @@ impl<'a> AttributeHandlers for JSRef<'a, Element> {
|
||||||
(*self.deref().attrs.borrow())[idx].root().set_value(set_type, value);
|
(*self.deref().attrs.borrow())[idx].root().set_value(set_type, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn parse_attribute(&self, namespace: &Namespace, local_name: &str,
|
fn parse_attribute(&self, namespace: &Namespace, local_name: &Atom,
|
||||||
value: DOMString) -> AttrValue {
|
value: DOMString) -> AttrValue {
|
||||||
if *namespace == namespace::Null {
|
if *namespace == namespace::Null {
|
||||||
vtable_for(NodeCast::from_ref(self))
|
vtable_for(NodeCast::from_ref(self))
|
||||||
.parse_plain_attribute(local_name, value)
|
.parse_plain_attribute(local_name.as_slice(), value)
|
||||||
} else {
|
} else {
|
||||||
StringAttrValue(value)
|
StringAttrValue(value)
|
||||||
}
|
}
|
||||||
|
@ -337,9 +338,10 @@ impl<'a> AttributeHandlers for JSRef<'a, Element> {
|
||||||
|
|
||||||
fn remove_attribute(&self, namespace: Namespace, name: &str) {
|
fn remove_attribute(&self, namespace: Namespace, name: &str) {
|
||||||
let (_, local_name) = get_attribute_parts(name);
|
let (_, local_name) = get_attribute_parts(name);
|
||||||
|
let local_name = Atom::from_slice(local_name);
|
||||||
|
|
||||||
let idx = self.deref().attrs.borrow().iter().map(|attr| attr.root()).position(|attr| {
|
let idx = self.deref().attrs.borrow().iter().map(|attr| attr.root()).position(|attr| {
|
||||||
attr.local_name.as_slice() == local_name
|
*attr.local_name() == local_name
|
||||||
});
|
});
|
||||||
|
|
||||||
match idx {
|
match idx {
|
||||||
|
@ -353,7 +355,8 @@ impl<'a> AttributeHandlers for JSRef<'a, Element> {
|
||||||
if namespace == namespace::Null {
|
if namespace == namespace::Null {
|
||||||
let removed_raw_value = (*self.deref().attrs.borrow())[idx].root().Value();
|
let removed_raw_value = (*self.deref().attrs.borrow())[idx].root().Value();
|
||||||
vtable_for(NodeCast::from_ref(self))
|
vtable_for(NodeCast::from_ref(self))
|
||||||
.before_remove_attr(local_name.to_string(), removed_raw_value);
|
.before_remove_attr(&local_name,
|
||||||
|
removed_raw_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
self.deref().attrs.borrow_mut().remove(idx);
|
self.deref().attrs.borrow_mut().remove(idx);
|
||||||
|
@ -361,7 +364,7 @@ impl<'a> AttributeHandlers for JSRef<'a, Element> {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
fn notify_attribute_changed(&self, local_name: DOMString) {
|
fn notify_attribute_changed(&self, local_name: &Atom) {
|
||||||
let node: &JSRef<Node> = NodeCast::from_ref(self);
|
let node: &JSRef<Node> = NodeCast::from_ref(self);
|
||||||
if node.is_in_doc() {
|
if node.is_in_doc() {
|
||||||
let damage = match local_name.as_slice() {
|
let damage = match local_name.as_slice() {
|
||||||
|
@ -387,11 +390,11 @@ impl<'a> AttributeHandlers for JSRef<'a, Element> {
|
||||||
|
|
||||||
fn has_attribute(&self, name: &str) -> bool {
|
fn has_attribute(&self, name: &str) -> bool {
|
||||||
let name = match self.html_element_in_html_document() {
|
let name = match self.html_element_in_html_document() {
|
||||||
true => name.to_ascii_lower(),
|
true => Atom::from_slice(name.to_ascii_lower().as_slice()),
|
||||||
false => name.to_string()
|
false => Atom::from_slice(name)
|
||||||
};
|
};
|
||||||
self.deref().attrs.borrow().iter().map(|attr| attr.root()).any(|attr| {
|
self.deref().attrs.borrow().iter().map(|attr| attr.root()).any(|attr| {
|
||||||
name == attr.local_name && attr.namespace == Null
|
*attr.local_name() == name && attr.namespace == Null
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -586,10 +589,10 @@ impl<'a> ElementMethods for JSRef<'a, Element> {
|
||||||
};
|
};
|
||||||
|
|
||||||
// Step 3-5.
|
// Step 3-5.
|
||||||
let value = self.parse_attribute(&namespace::Null, name.as_slice(), value);
|
let name = Atom::from_slice(name.as_slice());
|
||||||
let name_atom = Atom::from_slice(name.as_slice());
|
let value = self.parse_attribute(&namespace::Null, &name, value);
|
||||||
self.do_set_attribute(name.clone(), value, name_atom.clone(), namespace::Null, None, |attr| {
|
self.do_set_attribute(name.clone(), value, name.clone(), namespace::Null, None, |attr| {
|
||||||
attr.deref().name == name_atom
|
attr.deref().name.as_slice() == name.as_slice()
|
||||||
});
|
});
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
@ -639,6 +642,7 @@ impl<'a> ElementMethods for JSRef<'a, Element> {
|
||||||
}
|
}
|
||||||
|
|
||||||
let name = Atom::from_slice(name.as_slice());
|
let name = Atom::from_slice(name.as_slice());
|
||||||
|
let local_name = Atom::from_slice(local_name);
|
||||||
let xmlns = Atom::from_slice("xmlns"); // TODO: Make this a static atom type
|
let xmlns = Atom::from_slice("xmlns"); // TODO: Make this a static atom type
|
||||||
|
|
||||||
// Step 7a.
|
// Step 7a.
|
||||||
|
@ -652,12 +656,12 @@ impl<'a> ElementMethods for JSRef<'a, Element> {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Step 9.
|
// Step 9.
|
||||||
let value = self.parse_attribute(&namespace, local_name.as_slice(), value);
|
let value = self.parse_attribute(&namespace, &local_name, value);
|
||||||
self.do_set_attribute(local_name.to_string(), value, name,
|
self.do_set_attribute(local_name.clone(), value, name,
|
||||||
namespace.clone(), prefix.map(|s| s.to_string()),
|
namespace.clone(), prefix.map(|s| s.to_string()),
|
||||||
|attr| {
|
|attr| {
|
||||||
attr.deref().local_name.as_slice() == local_name &&
|
*attr.local_name() == local_name &&
|
||||||
attr.deref().namespace == namespace
|
attr.namespace == namespace
|
||||||
});
|
});
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
@ -803,9 +807,9 @@ impl<'a> VirtualMethods for JSRef<'a, Element> {
|
||||||
Some(node as &VirtualMethods)
|
Some(node as &VirtualMethods)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn after_set_attr(&self, name: DOMString, value: DOMString) {
|
fn after_set_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.after_set_attr(name.clone(), value.clone()),
|
Some(ref s) => s.after_set_attr(name, value.clone()),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -829,9 +833,9 @@ impl<'a> VirtualMethods for JSRef<'a, Element> {
|
||||||
self.notify_attribute_changed(name);
|
self.notify_attribute_changed(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn before_remove_attr(&self, name: DOMString, value: DOMString) {
|
fn before_remove_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.before_remove_attr(name.clone(), value.clone()),
|
Some(ref s) => s.before_remove_attr(name, value.clone()),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,8 @@ use dom::eventtarget::{EventTarget, NodeTargetTypeId};
|
||||||
use dom::htmlelement::HTMLElement;
|
use dom::htmlelement::HTMLElement;
|
||||||
use dom::node::{Node, NodeHelpers, ElementNodeTypeId};
|
use dom::node::{Node, NodeHelpers, ElementNodeTypeId};
|
||||||
use dom::virtualmethods::VirtualMethods;
|
use dom::virtualmethods::VirtualMethods;
|
||||||
|
|
||||||
|
use servo_util::atom::Atom;
|
||||||
use servo_util::namespace::Null;
|
use servo_util::namespace::Null;
|
||||||
use servo_util::str::DOMString;
|
use servo_util::str::DOMString;
|
||||||
|
|
||||||
|
@ -72,9 +74,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLAnchorElement> {
|
||||||
Some(htmlelement as &VirtualMethods)
|
Some(htmlelement as &VirtualMethods)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn after_set_attr(&self, name: DOMString, value: DOMString) {
|
fn after_set_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.after_set_attr(name.clone(), value.clone()),
|
Some(ref s) => s.after_set_attr(name, value.clone()),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -85,9 +87,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLAnchorElement> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn before_remove_attr(&self, name: DOMString, value: DOMString) {
|
fn before_remove_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.before_remove_attr(name.clone(), value.clone()),
|
Some(ref s) => s.before_remove_attr(name, value.clone()),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,8 @@ use dom::eventtarget::{EventTarget, NodeTargetTypeId};
|
||||||
use dom::htmlelement::HTMLElement;
|
use dom::htmlelement::HTMLElement;
|
||||||
use dom::node::{Node, NodeHelpers, ElementNodeTypeId};
|
use dom::node::{Node, NodeHelpers, ElementNodeTypeId};
|
||||||
use dom::virtualmethods::VirtualMethods;
|
use dom::virtualmethods::VirtualMethods;
|
||||||
|
|
||||||
|
use servo_util::atom::Atom;
|
||||||
use servo_util::str::DOMString;
|
use servo_util::str::DOMString;
|
||||||
|
|
||||||
#[deriving(Encodable)]
|
#[deriving(Encodable)]
|
||||||
|
@ -45,9 +47,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLAreaElement> {
|
||||||
Some(htmlelement as &VirtualMethods)
|
Some(htmlelement as &VirtualMethods)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn after_set_attr(&self, name: DOMString, value: DOMString) {
|
fn after_set_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.after_set_attr(name.clone(), value.clone()),
|
Some(ref s) => s.after_set_attr(name, value.clone()),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,9 +60,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLAreaElement> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn before_remove_attr(&self, name: DOMString, value: DOMString) {
|
fn before_remove_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.before_remove_attr(name.clone(), value.clone()),
|
Some(ref s) => s.before_remove_attr(name, value.clone()),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,8 @@ use dom::eventtarget::{EventTarget, NodeTargetTypeId, EventTargetHelpers};
|
||||||
use dom::htmlelement::HTMLElement;
|
use dom::htmlelement::HTMLElement;
|
||||||
use dom::node::{Node, ElementNodeTypeId, window_from_node};
|
use dom::node::{Node, ElementNodeTypeId, window_from_node};
|
||||||
use dom::virtualmethods::VirtualMethods;
|
use dom::virtualmethods::VirtualMethods;
|
||||||
|
|
||||||
|
use servo_util::atom::Atom;
|
||||||
use servo_util::str::DOMString;
|
use servo_util::str::DOMString;
|
||||||
|
|
||||||
#[deriving(Encodable)]
|
#[deriving(Encodable)]
|
||||||
|
@ -60,9 +62,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLBodyElement> {
|
||||||
Some(element as &VirtualMethods)
|
Some(element as &VirtualMethods)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn after_set_attr(&self, name: DOMString, value: DOMString) {
|
fn after_set_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.after_set_attr(name.clone(), value.clone()),
|
Some(ref s) => s.after_set_attr(name, value.clone()),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,8 @@ use dom::htmlelement::HTMLElement;
|
||||||
use dom::node::{DisabledStateHelpers, Node, NodeHelpers, ElementNodeTypeId, window_from_node};
|
use dom::node::{DisabledStateHelpers, Node, NodeHelpers, ElementNodeTypeId, window_from_node};
|
||||||
use dom::validitystate::ValidityState;
|
use dom::validitystate::ValidityState;
|
||||||
use dom::virtualmethods::VirtualMethods;
|
use dom::virtualmethods::VirtualMethods;
|
||||||
|
|
||||||
|
use servo_util::atom::Atom;
|
||||||
use servo_util::str::DOMString;
|
use servo_util::str::DOMString;
|
||||||
|
|
||||||
#[deriving(Encodable)]
|
#[deriving(Encodable)]
|
||||||
|
@ -66,9 +68,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLButtonElement> {
|
||||||
Some(htmlelement as &VirtualMethods)
|
Some(htmlelement as &VirtualMethods)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn after_set_attr(&self, name: DOMString, value: DOMString) {
|
fn after_set_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.after_set_attr(name.clone(), value.clone()),
|
Some(ref s) => s.after_set_attr(name, value.clone()),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,9 +84,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLButtonElement> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn before_remove_attr(&self, name: DOMString, value: DOMString) {
|
fn before_remove_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.before_remove_attr(name.clone(), value),
|
Some(ref s) => s.before_remove_attr(name, value),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,7 @@ use dom::htmlelement::HTMLElement;
|
||||||
use dom::node::{Node, ElementNodeTypeId, window_from_node};
|
use dom::node::{Node, ElementNodeTypeId, window_from_node};
|
||||||
use dom::virtualmethods::VirtualMethods;
|
use dom::virtualmethods::VirtualMethods;
|
||||||
|
|
||||||
|
use servo_util::atom::Atom;
|
||||||
use servo_util::str::DOMString;
|
use servo_util::str::DOMString;
|
||||||
|
|
||||||
use geom::size::Size2D;
|
use geom::size::Size2D;
|
||||||
|
@ -98,9 +99,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLCanvasElement> {
|
||||||
Some(element as &VirtualMethods)
|
Some(element as &VirtualMethods)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn before_remove_attr(&self, name: DOMString, value: DOMString) {
|
fn before_remove_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.before_remove_attr(name.clone(), value.clone()),
|
Some(ref s) => s.before_remove_attr(name, value.clone()),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -125,9 +126,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLCanvasElement> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn after_set_attr(&self, name: DOMString, value: DOMString) {
|
fn after_set_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.after_set_attr(name.clone(), value.clone()),
|
Some(ref s) => s.after_set_attr(name, value.clone()),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,8 @@ use dom::element::{Element, ElementTypeId, HTMLElementTypeId};
|
||||||
use dom::eventtarget::{EventTarget, EventTargetHelpers, NodeTargetTypeId};
|
use dom::eventtarget::{EventTarget, EventTargetHelpers, NodeTargetTypeId};
|
||||||
use dom::node::{Node, ElementNodeTypeId, window_from_node};
|
use dom::node::{Node, ElementNodeTypeId, window_from_node};
|
||||||
use dom::virtualmethods::VirtualMethods;
|
use dom::virtualmethods::VirtualMethods;
|
||||||
|
|
||||||
|
use servo_util::atom::Atom;
|
||||||
use servo_util::namespace;
|
use servo_util::namespace;
|
||||||
use servo_util::str::DOMString;
|
use servo_util::str::DOMString;
|
||||||
|
|
||||||
|
@ -92,9 +94,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLElement> {
|
||||||
Some(element as &VirtualMethods)
|
Some(element as &VirtualMethods)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn after_set_attr(&self, name: DOMString, value: DOMString) {
|
fn after_set_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.after_set_attr(name.clone(), value.clone()),
|
Some(ref s) => s.after_set_attr(name, value.clone()),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,8 @@ use dom::htmlelement::HTMLElement;
|
||||||
use dom::node::{DisabledStateHelpers, Node, NodeHelpers, ElementNodeTypeId, window_from_node};
|
use dom::node::{DisabledStateHelpers, Node, NodeHelpers, ElementNodeTypeId, window_from_node};
|
||||||
use dom::validitystate::ValidityState;
|
use dom::validitystate::ValidityState;
|
||||||
use dom::virtualmethods::VirtualMethods;
|
use dom::virtualmethods::VirtualMethods;
|
||||||
|
|
||||||
|
use servo_util::atom::Atom;
|
||||||
use servo_util::str::{DOMString, StaticStringVec};
|
use servo_util::str::{DOMString, StaticStringVec};
|
||||||
|
|
||||||
#[deriving(Encodable)]
|
#[deriving(Encodable)]
|
||||||
|
@ -85,9 +87,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLFieldSetElement> {
|
||||||
Some(htmlelement as &VirtualMethods)
|
Some(htmlelement as &VirtualMethods)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn after_set_attr(&self, name: DOMString, value: DOMString) {
|
fn after_set_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.after_set_attr(name.clone(), value.clone()),
|
Some(ref s) => s.after_set_attr(name, value.clone()),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -117,9 +119,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLFieldSetElement> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn before_remove_attr(&self, name: DOMString, value: DOMString) {
|
fn before_remove_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.before_remove_attr(name.clone(), value),
|
Some(ref s) => s.before_remove_attr(name, value),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,9 +18,11 @@ use dom::node::{Node, NodeHelpers, ElementNodeTypeId, window_from_node};
|
||||||
use dom::virtualmethods::VirtualMethods;
|
use dom::virtualmethods::VirtualMethods;
|
||||||
use dom::window::Window;
|
use dom::window::Window;
|
||||||
use page::IterablePage;
|
use page::IterablePage;
|
||||||
|
|
||||||
use servo_msg::constellation_msg::{PipelineId, SubpageId};
|
use servo_msg::constellation_msg::{PipelineId, SubpageId};
|
||||||
use servo_msg::constellation_msg::{IFrameSandboxed, IFrameUnsandboxed};
|
use servo_msg::constellation_msg::{IFrameSandboxed, IFrameUnsandboxed};
|
||||||
use servo_msg::constellation_msg::{ConstellationChan, LoadIframeUrlMsg};
|
use servo_msg::constellation_msg::{ConstellationChan, LoadIframeUrlMsg};
|
||||||
|
use servo_util::atom::Atom;
|
||||||
use servo_util::namespace::Null;
|
use servo_util::namespace::Null;
|
||||||
use servo_util::str::DOMString;
|
use servo_util::str::DOMString;
|
||||||
|
|
||||||
|
@ -163,9 +165,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLIFrameElement> {
|
||||||
Some(htmlelement as &VirtualMethods)
|
Some(htmlelement as &VirtualMethods)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn after_set_attr(&self, name: DOMString, value: DOMString) {
|
fn after_set_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.after_set_attr(name.clone(), value.clone()),
|
Some(ref s) => s.after_set_attr(name, value.clone()),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -193,9 +195,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLIFrameElement> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn before_remove_attr(&self, name: DOMString, value: DOMString) {
|
fn before_remove_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.before_remove_attr(name.clone(), value),
|
Some(ref s) => s.before_remove_attr(name, value),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,12 +16,16 @@ use dom::eventtarget::{EventTarget, NodeTargetTypeId};
|
||||||
use dom::htmlelement::HTMLElement;
|
use dom::htmlelement::HTMLElement;
|
||||||
use dom::node::{Node, ElementNodeTypeId, NodeHelpers, window_from_node};
|
use dom::node::{Node, ElementNodeTypeId, NodeHelpers, window_from_node};
|
||||||
use dom::virtualmethods::VirtualMethods;
|
use dom::virtualmethods::VirtualMethods;
|
||||||
use servo_util::geometry::to_px;
|
|
||||||
use servo_net::image_cache_task;
|
use servo_net::image_cache_task;
|
||||||
|
use servo_util::atom::Atom;
|
||||||
|
use servo_util::geometry::to_px;
|
||||||
use servo_util::str::DOMString;
|
use servo_util::str::DOMString;
|
||||||
use std::cell::RefCell;
|
|
||||||
use url::{Url, UrlParser};
|
use url::{Url, UrlParser};
|
||||||
|
|
||||||
|
use std::cell::RefCell;
|
||||||
|
|
||||||
#[deriving(Encodable)]
|
#[deriving(Encodable)]
|
||||||
pub struct HTMLImageElement {
|
pub struct HTMLImageElement {
|
||||||
pub htmlelement: HTMLElement,
|
pub htmlelement: HTMLElement,
|
||||||
|
@ -221,9 +225,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLImageElement> {
|
||||||
Some(htmlelement as &VirtualMethods)
|
Some(htmlelement as &VirtualMethods)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn after_set_attr(&self, name: DOMString, value: DOMString) {
|
fn after_set_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.after_set_attr(name.clone(), value.clone()),
|
Some(ref s) => s.after_set_attr(name, value.clone()),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -234,9 +238,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLImageElement> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn before_remove_attr(&self, name: DOMString, value: DOMString) {
|
fn before_remove_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.before_remove_attr(name.clone(), value.clone()),
|
Some(ref s) => s.before_remove_attr(name, value.clone()),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,8 @@ use dom::eventtarget::{EventTarget, NodeTargetTypeId};
|
||||||
use dom::htmlelement::HTMLElement;
|
use dom::htmlelement::HTMLElement;
|
||||||
use dom::node::{DisabledStateHelpers, Node, NodeHelpers, ElementNodeTypeId};
|
use dom::node::{DisabledStateHelpers, Node, NodeHelpers, ElementNodeTypeId};
|
||||||
use dom::virtualmethods::VirtualMethods;
|
use dom::virtualmethods::VirtualMethods;
|
||||||
|
|
||||||
|
use servo_util::atom::Atom;
|
||||||
use servo_util::str::DOMString;
|
use servo_util::str::DOMString;
|
||||||
|
|
||||||
#[deriving(Encodable)]
|
#[deriving(Encodable)]
|
||||||
|
@ -60,9 +62,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLInputElement> {
|
||||||
Some(htmlelement as &VirtualMethods)
|
Some(htmlelement as &VirtualMethods)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn after_set_attr(&self, name: DOMString, value: DOMString) {
|
fn after_set_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.after_set_attr(name.clone(), value.clone()),
|
Some(ref s) => s.after_set_attr(name, value.clone()),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -76,9 +78,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLInputElement> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn before_remove_attr(&self, name: DOMString, value: DOMString) {
|
fn before_remove_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.before_remove_attr(name.clone(), value),
|
Some(ref s) => s.before_remove_attr(name, value),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,8 @@ use dom::eventtarget::{EventTarget, NodeTargetTypeId};
|
||||||
use dom::htmlelement::HTMLElement;
|
use dom::htmlelement::HTMLElement;
|
||||||
use dom::node::{Node, NodeHelpers, ElementNodeTypeId};
|
use dom::node::{Node, NodeHelpers, ElementNodeTypeId};
|
||||||
use dom::virtualmethods::VirtualMethods;
|
use dom::virtualmethods::VirtualMethods;
|
||||||
|
|
||||||
|
use servo_util::atom::Atom;
|
||||||
use servo_util::str::DOMString;
|
use servo_util::str::DOMString;
|
||||||
|
|
||||||
#[deriving(Encodable)]
|
#[deriving(Encodable)]
|
||||||
|
@ -45,9 +47,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLLinkElement> {
|
||||||
Some(htmlelement as &VirtualMethods)
|
Some(htmlelement as &VirtualMethods)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn after_set_attr(&self, name: DOMString, value: DOMString) {
|
fn after_set_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.after_set_attr(name.clone(), value.clone()),
|
Some(ref s) => s.after_set_attr(name, value.clone()),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,9 +60,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLLinkElement> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn before_remove_attr(&self, name: DOMString, value: DOMString) {
|
fn before_remove_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.before_remove_attr(name.clone(), value.clone()),
|
Some(ref s) => s.before_remove_attr(name, value.clone()),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,11 +17,13 @@ use dom::htmlelement::HTMLElement;
|
||||||
use dom::node::{Node, ElementNodeTypeId, NodeHelpers, window_from_node};
|
use dom::node::{Node, ElementNodeTypeId, NodeHelpers, window_from_node};
|
||||||
use dom::validitystate::ValidityState;
|
use dom::validitystate::ValidityState;
|
||||||
use dom::virtualmethods::VirtualMethods;
|
use dom::virtualmethods::VirtualMethods;
|
||||||
use servo_util::str::DOMString;
|
|
||||||
|
|
||||||
use servo_net::image_cache_task;
|
use servo_net::image_cache_task;
|
||||||
use servo_net::image_cache_task::ImageCacheTask;
|
use servo_net::image_cache_task::ImageCacheTask;
|
||||||
|
use servo_util::atom::Atom;
|
||||||
use servo_util::namespace::Null;
|
use servo_util::namespace::Null;
|
||||||
|
use servo_util::str::DOMString;
|
||||||
|
|
||||||
use url::Url;
|
use url::Url;
|
||||||
|
|
||||||
#[deriving(Encodable)]
|
#[deriving(Encodable)]
|
||||||
|
@ -91,9 +93,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLObjectElement> {
|
||||||
Some(htmlelement as &VirtualMethods)
|
Some(htmlelement as &VirtualMethods)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn after_set_attr(&self, name: DOMString, value: DOMString) {
|
fn after_set_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.after_set_attr(name.clone(), value),
|
Some(ref s) => s.after_set_attr(name, value),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,8 @@ use dom::eventtarget::{EventTarget, NodeTargetTypeId};
|
||||||
use dom::htmlelement::HTMLElement;
|
use dom::htmlelement::HTMLElement;
|
||||||
use dom::node::{DisabledStateHelpers, Node, NodeHelpers, ElementNodeTypeId};
|
use dom::node::{DisabledStateHelpers, Node, NodeHelpers, ElementNodeTypeId};
|
||||||
use dom::virtualmethods::VirtualMethods;
|
use dom::virtualmethods::VirtualMethods;
|
||||||
|
|
||||||
|
use servo_util::atom::Atom;
|
||||||
use servo_util::str::DOMString;
|
use servo_util::str::DOMString;
|
||||||
|
|
||||||
#[deriving(Encodable)]
|
#[deriving(Encodable)]
|
||||||
|
@ -60,9 +62,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLOptGroupElement> {
|
||||||
Some(htmlelement as &VirtualMethods)
|
Some(htmlelement as &VirtualMethods)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn after_set_attr(&self, name: DOMString, value: DOMString) {
|
fn after_set_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.after_set_attr(name.clone(), value.clone()),
|
Some(ref s) => s.after_set_attr(name, value.clone()),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,9 +82,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLOptGroupElement> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn before_remove_attr(&self, name: DOMString, value: DOMString) {
|
fn before_remove_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.before_remove_attr(name.clone(), value),
|
Some(ref s) => s.before_remove_attr(name, value),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,8 @@ use dom::eventtarget::{EventTarget, NodeTargetTypeId};
|
||||||
use dom::htmlelement::HTMLElement;
|
use dom::htmlelement::HTMLElement;
|
||||||
use dom::node::{DisabledStateHelpers, Node, NodeHelpers, ElementNodeTypeId};
|
use dom::node::{DisabledStateHelpers, Node, NodeHelpers, ElementNodeTypeId};
|
||||||
use dom::virtualmethods::VirtualMethods;
|
use dom::virtualmethods::VirtualMethods;
|
||||||
|
|
||||||
|
use servo_util::atom::Atom;
|
||||||
use servo_util::str::DOMString;
|
use servo_util::str::DOMString;
|
||||||
|
|
||||||
#[deriving(Encodable)]
|
#[deriving(Encodable)]
|
||||||
|
@ -60,9 +62,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLOptionElement> {
|
||||||
Some(htmlelement as &VirtualMethods)
|
Some(htmlelement as &VirtualMethods)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn after_set_attr(&self, name: DOMString, value: DOMString) {
|
fn after_set_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.after_set_attr(name.clone(), value.clone()),
|
Some(ref s) => s.after_set_attr(name, value.clone()),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -76,9 +78,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLOptionElement> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn before_remove_attr(&self, name: DOMString, value: DOMString) {
|
fn before_remove_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.before_remove_attr(name.clone(), value),
|
Some(ref s) => s.before_remove_attr(name, value),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,8 @@ use dom::htmlelement::HTMLElement;
|
||||||
use dom::node::{DisabledStateHelpers, Node, NodeHelpers, ElementNodeTypeId, window_from_node};
|
use dom::node::{DisabledStateHelpers, Node, NodeHelpers, ElementNodeTypeId, window_from_node};
|
||||||
use dom::validitystate::ValidityState;
|
use dom::validitystate::ValidityState;
|
||||||
use dom::virtualmethods::VirtualMethods;
|
use dom::virtualmethods::VirtualMethods;
|
||||||
|
|
||||||
|
use servo_util::atom::Atom;
|
||||||
use servo_util::str::DOMString;
|
use servo_util::str::DOMString;
|
||||||
|
|
||||||
#[deriving(Encodable)]
|
#[deriving(Encodable)]
|
||||||
|
@ -72,9 +74,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLSelectElement> {
|
||||||
Some(htmlelement as &VirtualMethods)
|
Some(htmlelement as &VirtualMethods)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn after_set_attr(&self, name: DOMString, value: DOMString) {
|
fn after_set_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.after_set_attr(name.clone(), value.clone()),
|
Some(ref s) => s.after_set_attr(name, value.clone()),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,9 +90,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLSelectElement> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn before_remove_attr(&self, name: DOMString, value: DOMString) {
|
fn before_remove_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.before_remove_attr(name.clone(), value),
|
Some(ref s) => s.before_remove_attr(name, value),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
use servo_util::namespace;
|
|
||||||
use dom::attr::Attr;
|
use dom::attr::Attr;
|
||||||
use dom::bindings::codegen::InheritTypes::{ElementCast, TextCast, CommentCast, NodeCast};
|
use dom::bindings::codegen::InheritTypes::{ElementCast, TextCast, CommentCast, NodeCast};
|
||||||
use dom::bindings::codegen::InheritTypes::{DocumentTypeCast, CharacterDataCast};
|
use dom::bindings::codegen::InheritTypes::{DocumentTypeCast, CharacterDataCast};
|
||||||
|
@ -19,6 +18,9 @@ use dom::node::{TextNodeTypeId, NodeHelpers};
|
||||||
use dom::processinginstruction::ProcessingInstruction;
|
use dom::processinginstruction::ProcessingInstruction;
|
||||||
use dom::text::Text;
|
use dom::text::Text;
|
||||||
|
|
||||||
|
use servo_util::atom::Atom;
|
||||||
|
use servo_util::namespace;
|
||||||
|
|
||||||
pub fn serialize(iterator: &mut NodeIterator) -> String {
|
pub fn serialize(iterator: &mut NodeIterator) -> String {
|
||||||
let mut html = String::new();
|
let mut html = String::new();
|
||||||
let mut open_elements: Vec<String> = vec!();
|
let mut open_elements: Vec<String> = vec!();
|
||||||
|
@ -137,16 +139,16 @@ fn serialize_attr(attr: &JSRef<Attr>, html: &mut String) {
|
||||||
html.push_char(' ');
|
html.push_char(' ');
|
||||||
if attr.deref().namespace == namespace::XML {
|
if attr.deref().namespace == namespace::XML {
|
||||||
html.push_str("xml:");
|
html.push_str("xml:");
|
||||||
html.push_str(attr.deref().local_name.as_slice());
|
html.push_str(attr.local_name().as_slice());
|
||||||
} else if attr.deref().namespace == namespace::XMLNS &&
|
} else if attr.deref().namespace == namespace::XMLNS &&
|
||||||
attr.deref().local_name.as_slice() == "xmlns" {
|
*attr.local_name() == Atom::from_slice("xmlns") {
|
||||||
html.push_str("xmlns");
|
html.push_str("xmlns");
|
||||||
} else if attr.deref().namespace == namespace::XMLNS {
|
} else if attr.deref().namespace == namespace::XMLNS {
|
||||||
html.push_str("xmlns:");
|
html.push_str("xmlns:");
|
||||||
html.push_str(attr.deref().local_name.as_slice());
|
html.push_str(attr.local_name().as_slice());
|
||||||
} else if attr.deref().namespace == namespace::XLink {
|
} else if attr.deref().namespace == namespace::XLink {
|
||||||
html.push_str("xlink:");
|
html.push_str("xlink:");
|
||||||
html.push_str(attr.deref().local_name.as_slice());
|
html.push_str(attr.local_name().as_slice());
|
||||||
} else {
|
} else {
|
||||||
html.push_str(attr.deref().name.as_slice());
|
html.push_str(attr.deref().name.as_slice());
|
||||||
};
|
};
|
||||||
|
|
|
@ -14,6 +14,8 @@ use dom::eventtarget::{EventTarget, NodeTargetTypeId};
|
||||||
use dom::htmlelement::HTMLElement;
|
use dom::htmlelement::HTMLElement;
|
||||||
use dom::node::{DisabledStateHelpers, Node, NodeHelpers, ElementNodeTypeId};
|
use dom::node::{DisabledStateHelpers, Node, NodeHelpers, ElementNodeTypeId};
|
||||||
use dom::virtualmethods::VirtualMethods;
|
use dom::virtualmethods::VirtualMethods;
|
||||||
|
|
||||||
|
use servo_util::atom::Atom;
|
||||||
use servo_util::str::DOMString;
|
use servo_util::str::DOMString;
|
||||||
|
|
||||||
#[deriving(Encodable)]
|
#[deriving(Encodable)]
|
||||||
|
@ -60,9 +62,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLTextAreaElement> {
|
||||||
Some(htmlelement as &VirtualMethods)
|
Some(htmlelement as &VirtualMethods)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn after_set_attr(&self, name: DOMString, value: DOMString) {
|
fn after_set_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.after_set_attr(name.clone(), value.clone()),
|
Some(ref s) => s.after_set_attr(name, value.clone()),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -76,9 +78,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLTextAreaElement> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn before_remove_attr(&self, name: DOMString, value: DOMString) {
|
fn before_remove_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.before_remove_attr(name.clone(), value),
|
Some(ref s) => s.before_remove_attr(name, value),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1374,7 +1374,7 @@ impl Node {
|
||||||
for attr in node_elem.deref().attrs.borrow().iter().map(|attr| attr.root()) {
|
for attr in node_elem.deref().attrs.borrow().iter().map(|attr| attr.root()) {
|
||||||
copy_elem.deref().attrs.borrow_mut().push_unrooted(
|
copy_elem.deref().attrs.borrow_mut().push_unrooted(
|
||||||
&Attr::new(&*window,
|
&Attr::new(&*window,
|
||||||
attr.deref().local_name.clone(), attr.deref().value().clone(),
|
attr.local_name().clone(), attr.deref().value().clone(),
|
||||||
attr.deref().name.clone(), attr.deref().namespace.clone(),
|
attr.deref().name.clone(), attr.deref().namespace.clone(),
|
||||||
attr.deref().prefix.clone(), copy_elem));
|
attr.deref().prefix.clone(), copy_elem));
|
||||||
}
|
}
|
||||||
|
@ -1833,7 +1833,7 @@ impl<'a> NodeMethods for JSRef<'a, Node> {
|
||||||
element.attrs.borrow().iter().map(|attr| attr.root()).all(|attr| {
|
element.attrs.borrow().iter().map(|attr| attr.root()).all(|attr| {
|
||||||
other_element.attrs.borrow().iter().map(|attr| attr.root()).any(|other_attr| {
|
other_element.attrs.borrow().iter().map(|attr| attr.root()).any(|other_attr| {
|
||||||
(attr.namespace == other_attr.namespace) &&
|
(attr.namespace == other_attr.namespace) &&
|
||||||
(attr.local_name == other_attr.local_name) &&
|
(attr.local_name() == other_attr.local_name()) &&
|
||||||
(attr.deref().value().as_slice() == other_attr.deref().value().as_slice())
|
(attr.deref().value().as_slice() == other_attr.deref().value().as_slice())
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
|
@ -59,6 +59,8 @@ use dom::htmlselectelement::HTMLSelectElement;
|
||||||
use dom::htmlstyleelement::HTMLStyleElement;
|
use dom::htmlstyleelement::HTMLStyleElement;
|
||||||
use dom::htmltextareaelement::HTMLTextAreaElement;
|
use dom::htmltextareaelement::HTMLTextAreaElement;
|
||||||
use dom::node::{Node, NodeHelpers, ElementNodeTypeId};
|
use dom::node::{Node, NodeHelpers, ElementNodeTypeId};
|
||||||
|
|
||||||
|
use servo_util::atom::Atom;
|
||||||
use servo_util::str::DOMString;
|
use servo_util::str::DOMString;
|
||||||
|
|
||||||
/// Trait to allow DOM nodes to opt-in to overriding (or adding to) common
|
/// Trait to allow DOM nodes to opt-in to overriding (or adding to) common
|
||||||
|
@ -70,7 +72,7 @@ pub trait VirtualMethods {
|
||||||
|
|
||||||
/// Called when changing or adding attributes, after the attribute's value
|
/// Called when changing or adding attributes, after the attribute's value
|
||||||
/// has been updated.
|
/// has been updated.
|
||||||
fn after_set_attr(&self, name: DOMString, value: DOMString) {
|
fn after_set_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.after_set_attr(name, value),
|
Some(ref s) => s.after_set_attr(name, value),
|
||||||
_ => (),
|
_ => (),
|
||||||
|
@ -79,7 +81,7 @@ pub trait VirtualMethods {
|
||||||
|
|
||||||
/// Called when changing or removing attributes, before any modification
|
/// Called when changing or removing attributes, before any modification
|
||||||
/// has taken place.
|
/// has taken place.
|
||||||
fn before_remove_attr(&self, name: DOMString, value: DOMString) {
|
fn before_remove_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.before_remove_attr(name, value),
|
Some(ref s) => s.before_remove_attr(name, value),
|
||||||
_ => (),
|
_ => (),
|
||||||
|
|
|
@ -20,6 +20,7 @@ use page::Page;
|
||||||
use hubbub::hubbub;
|
use hubbub::hubbub;
|
||||||
use hubbub::hubbub::{NullNs, HtmlNs, MathMlNs, SvgNs, XLinkNs, XmlNs, XmlNsNs};
|
use hubbub::hubbub::{NullNs, HtmlNs, MathMlNs, SvgNs, XLinkNs, XmlNs, XmlNsNs};
|
||||||
use servo_net::resource_task::{Load, LoadData, Payload, Done, ResourceTask, load_whole_resource};
|
use servo_net::resource_task::{Load, LoadData, Payload, Done, ResourceTask, load_whole_resource};
|
||||||
|
use servo_util::atom::Atom;
|
||||||
use servo_util::namespace;
|
use servo_util::namespace;
|
||||||
use servo_util::namespace::{Namespace, Null};
|
use servo_util::namespace::{Namespace, Null};
|
||||||
use servo_util::str::{DOMString, HTML_SPACE_CHARACTERS};
|
use servo_util::str::{DOMString, HTML_SPACE_CHARACTERS};
|
||||||
|
@ -378,7 +379,7 @@ pub fn parse_html(page: &Page,
|
||||||
XmlNsNs => (namespace::XMLNS, Some("xmlns")),
|
XmlNsNs => (namespace::XMLNS, Some("xmlns")),
|
||||||
ns => fail!("Not expecting namespace {:?}", ns),
|
ns => fail!("Not expecting namespace {:?}", ns),
|
||||||
};
|
};
|
||||||
element.set_attribute_from_parser(attr.name.clone(),
|
element.set_attribute_from_parser(Atom::from_slice(attr.name.as_slice()),
|
||||||
attr.value.clone(),
|
attr.value.clone(),
|
||||||
namespace,
|
namespace,
|
||||||
prefix.map(|p| p.to_string()));
|
prefix.map(|p| p.to_string()));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue