mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-20 00:35:44 +00:00
servo: Merge #1251 - Make Attr::local_name always initialized (from Ms2ger:attr-localname); r=kmcallister
Source-Repo: https://github.com/servo/servo Source-Revision: 82dd9b56998ed5559e349033f8f75e18f169314b
This commit is contained in:
parent
859c0b2914
commit
bce26ac3fa
@ -8,13 +8,11 @@ use dom::bindings::utils::reflect_dom_object;
|
|||||||
use dom::namespace::{Namespace, Null};
|
use dom::namespace::{Namespace, Null};
|
||||||
use dom::window::Window;
|
use dom::window::Window;
|
||||||
|
|
||||||
use std::str::eq_slice;
|
|
||||||
|
|
||||||
pub struct Attr {
|
pub struct Attr {
|
||||||
reflector_: Reflector,
|
reflector_: Reflector,
|
||||||
priv local_name: Option<~str>,
|
local_name: DOMString,
|
||||||
value: ~str,
|
value: DOMString,
|
||||||
name: ~str,
|
name: DOMString,
|
||||||
namespace: Namespace,
|
namespace: Namespace,
|
||||||
prefix: Option<DOMString>
|
prefix: Option<DOMString>
|
||||||
}
|
}
|
||||||
@ -30,8 +28,9 @@ impl Reflectable for Attr {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Attr {
|
impl Attr {
|
||||||
fn new_inherited(name: ~str, value: ~str, local_name: Option<~str>,
|
fn new_inherited(local_name: DOMString, value: DOMString,
|
||||||
namespace: Namespace, prefix: Option<~str>) -> Attr {
|
name: DOMString, namespace: Namespace,
|
||||||
|
prefix: Option<DOMString>) -> Attr {
|
||||||
Attr {
|
Attr {
|
||||||
reflector_: Reflector::new(),
|
reflector_: Reflector::new(),
|
||||||
local_name: local_name,
|
local_name: local_name,
|
||||||
@ -42,35 +41,25 @@ impl Attr {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn new(window: &Window, name: ~str, value: ~str) -> @mut Attr {
|
pub fn new(window: &Window, local_name: DOMString, value: DOMString) -> @mut Attr {
|
||||||
Attr::new_helper(window, name, value, None, Null, None)
|
let name = local_name.clone();
|
||||||
|
Attr::new_helper(window, local_name, value, name, Null, None)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn new_ns(window: &Window, name: ~str, value: ~str, local_name: ~str, namespace: Namespace,
|
pub fn new_ns(window: &Window, local_name: DOMString, value: DOMString,
|
||||||
prefix: Option<~str>) -> @mut Attr {
|
name: DOMString, namespace: Namespace,
|
||||||
let local_name = if eq_slice(local_name, name) {
|
prefix: Option<DOMString>) -> @mut Attr {
|
||||||
None
|
|
||||||
} else {
|
|
||||||
Some(local_name)
|
|
||||||
};
|
|
||||||
Attr::new_helper(window, name, value, local_name, namespace, prefix)
|
Attr::new_helper(window, name, value, local_name, namespace, prefix)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn new_helper(window: &Window, name: ~str, value: ~str, local_name: Option<~str>,
|
fn new_helper(window: &Window, name: DOMString, value: DOMString, local_name: DOMString,
|
||||||
namespace: Namespace, prefix: Option<~str>) -> @mut Attr {
|
namespace: Namespace, prefix: Option<DOMString>) -> @mut Attr {
|
||||||
let attr = Attr::new_inherited(name, value, local_name, namespace, prefix);
|
let attr = Attr::new_inherited(name, value, local_name, namespace, prefix);
|
||||||
reflect_dom_object(@mut attr, window, AttrBinding::Wrap)
|
reflect_dom_object(@mut attr, window, AttrBinding::Wrap)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn local_name<'a>(&'a self) -> &'a str {
|
|
||||||
match self.local_name {
|
|
||||||
Some(ref x) => x.as_slice(),
|
|
||||||
None => self.name.as_slice()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn LocalName(&self) -> DOMString {
|
pub fn LocalName(&self) -> DOMString {
|
||||||
self.local_name().to_owned()
|
self.local_name.clone()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn Value(&self) -> DOMString {
|
pub fn Value(&self) -> DOMString {
|
||||||
|
@ -175,7 +175,7 @@ impl<'self> Element {
|
|||||||
let name = name.to_ascii_lower();
|
let name = name.to_ascii_lower();
|
||||||
self.attrs.find_equiv(&name).and_then(|attrs| {
|
self.attrs.find_equiv(&name).and_then(|attrs| {
|
||||||
do attrs.iter().find |attr| {
|
do attrs.iter().find |attr| {
|
||||||
eq_slice(attr.local_name(), name) && attr.namespace == namespace
|
eq_slice(attr.local_name, name) && attr.namespace == namespace
|
||||||
}.map(|x| *x)
|
}.map(|x| *x)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -227,7 +227,7 @@ impl<'self> Element {
|
|||||||
// update value.
|
// update value.
|
||||||
let mut found = false;
|
let mut found = false;
|
||||||
for attr in old_value.mut_iter() {
|
for attr in old_value.mut_iter() {
|
||||||
if eq_slice(attr.local_name(), *name) &&
|
if eq_slice(attr.local_name, *name) &&
|
||||||
attr.namespace == new_value.namespace {
|
attr.namespace == new_value.namespace {
|
||||||
*attr = new_value;
|
*attr = new_value;
|
||||||
found = true;
|
found = true;
|
||||||
|
Loading…
Reference in New Issue
Block a user