aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/cssstyledeclaration.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/cssstyledeclaration.rs')
-rw-r--r--components/script/dom/cssstyledeclaration.rs81
1 files changed, 41 insertions, 40 deletions
diff --git a/components/script/dom/cssstyledeclaration.rs b/components/script/dom/cssstyledeclaration.rs
index b41adcb8b06..c76ccee38fe 100644
--- a/components/script/dom/cssstyledeclaration.rs
+++ b/components/script/dom/cssstyledeclaration.rs
@@ -4,9 +4,7 @@
use dom::bindings::codegen::Bindings::CSSStyleDeclarationBinding::{self, CSSStyleDeclarationMethods};
use dom::bindings::codegen::InheritTypes::{NodeCast, ElementCast};
-use dom::bindings::error::Error;
-use dom::bindings::error::ErrorResult;
-use dom::bindings::error::Fallible;
+use dom::bindings::error::{Error, ErrorResult, Fallible};
use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, JSRef, OptionalRootedRootable, Temporary};
use dom::bindings::utils::{Reflector, reflect_dom_object};
@@ -50,20 +48,14 @@ macro_rules! css_properties(
);
fn serialize_list(list: &Vec<PropertyDeclaration>) -> DOMString {
- let mut result = String::new();
- for declaration in list.iter() {
- result.push_str(serialize_value(declaration).as_slice());
- result.push_str(" ");
- }
- result
-}
-
-fn serialize_value(declaration: &PropertyDeclaration) -> DOMString {
- declaration.value()
+ list.iter().fold(String::new(), |accum, ref declaration| {
+ accum + &declaration.value() + " "
+ })
}
impl CSSStyleDeclaration {
- pub fn new_inherited(owner: JSRef<HTMLElement>, modification_access: CSSModificationAccess) -> CSSStyleDeclaration {
+ pub fn new_inherited(owner: JSRef<HTMLElement>,
+ modification_access: CSSModificationAccess) -> CSSStyleDeclaration {
CSSStyleDeclaration {
reflector_: Reflector::new(),
owner: JS::from_rooted(owner),
@@ -71,7 +63,8 @@ impl CSSStyleDeclaration {
}
}
- pub fn new(global: JSRef<Window>, owner: JSRef<HTMLElement>, modification_access: CSSModificationAccess) -> Temporary<CSSStyleDeclaration> {
+ pub fn new(global: JSRef<Window>, owner: JSRef<HTMLElement>,
+ modification_access: CSSModificationAccess) -> Temporary<CSSStyleDeclaration> {
reflect_dom_object(box CSSStyleDeclaration::new_inherited(owner, modification_access),
GlobalRef::Window(global),
CSSStyleDeclarationBinding::Wrap)
@@ -98,6 +91,7 @@ impl<'a> PrivateCSSStyleDeclarationHelpers for JSRef<'a, CSSStyleDeclaration> {
}
impl<'a> CSSStyleDeclarationMethods for JSRef<'a, CSSStyleDeclaration> {
+ // http://dev.w3.org/csswg/cssom/#dom-cssstyledeclaration-length
fn Length(self) -> u32 {
let owner = self.owner.root();
let elem: JSRef<Element> = ElementCast::from_ref(owner.r());
@@ -108,6 +102,7 @@ impl<'a> CSSStyleDeclarationMethods for JSRef<'a, CSSStyleDeclaration> {
len as u32
}
+ // http://dev.w3.org/csswg/cssom/#dom-cssstyledeclaration-item
fn Item(self, index: u32) -> DOMString {
let index = index as usize;
let owner = self.owner.root();
@@ -131,10 +126,10 @@ impl<'a> CSSStyleDeclarationMethods for JSRef<'a, CSSStyleDeclaration> {
// http://dev.w3.org/csswg/cssom/#dom-cssstyledeclaration-getpropertyvalue
fn GetPropertyValue(self, property: DOMString) -> DOMString {
// Step 1
- let property = Atom::from_slice(property.as_slice().to_ascii_lowercase().as_slice());
+ let property = Atom::from_slice(&property.to_ascii_lowercase());
// Step 2
- let longhand_properties = longhands_from_shorthand(property.as_slice());
+ let longhand_properties = longhands_from_shorthand(&property);
if let Some(longhand_properties) = longhand_properties {
// Step 2.1
let mut list = vec!();
@@ -142,7 +137,7 @@ impl<'a> CSSStyleDeclarationMethods for JSRef<'a, CSSStyleDeclaration> {
// Step 2.2
for longhand in longhand_properties.iter() {
// Step 2.2.1
- let declaration = self.get_declaration(&Atom::from_slice(longhand.as_slice()));
+ let declaration = self.get_declaration(&Atom::from_slice(&longhand));
// Step 2.2.2 & 2.2.3
match declaration {
@@ -157,7 +152,7 @@ impl<'a> CSSStyleDeclarationMethods for JSRef<'a, CSSStyleDeclaration> {
// Step 3 & 4
if let Some(ref declaration) = self.get_declaration(&property) {
- serialize_value(declaration)
+ declaration.value()
} else {
"".to_owned()
}
@@ -166,15 +161,15 @@ impl<'a> CSSStyleDeclarationMethods for JSRef<'a, CSSStyleDeclaration> {
// http://dev.w3.org/csswg/cssom/#dom-cssstyledeclaration-getpropertypriority
fn GetPropertyPriority(self, property: DOMString) -> DOMString {
// Step 1
- let property = Atom::from_slice(property.as_slice().to_ascii_lowercase().as_slice());
+ let property = Atom::from_slice(&property.to_ascii_lowercase());
// Step 2
- let longhand_properties = longhands_from_shorthand(property.as_slice());
+ let longhand_properties = longhands_from_shorthand(&property);
if let Some(longhand_properties) = longhand_properties {
// Step 2.1 & 2.2 & 2.3
if longhand_properties.iter()
.map(|longhand| self.GetPropertyPriority(longhand.clone()))
- .all(|priority| priority.as_slice() == "important") {
+ .all(|priority| priority == "important") {
return "important".to_owned();
}
@@ -196,10 +191,10 @@ impl<'a> CSSStyleDeclarationMethods for JSRef<'a, CSSStyleDeclaration> {
}
// Step 2
- let property = property.as_slice().to_ascii_lowercase();
+ let property = property.to_ascii_lowercase();
// Step 3
- if !is_supported_property(property.as_slice()) {
+ if !is_supported_property(&property) {
return Ok(());
}
@@ -209,20 +204,19 @@ impl<'a> CSSStyleDeclarationMethods for JSRef<'a, CSSStyleDeclaration> {
}
// Step 5
- let priority = priority.as_slice().to_ascii_lowercase();
- if priority.as_slice() != "!important" && !priority.is_empty() {
+ let priority = priority.to_ascii_lowercase();
+ if priority != "!important" && !priority.is_empty() {
return Ok(());
}
// Step 6
- let mut synthesized_declaration = String::from_str(property.as_slice());
+ let mut synthesized_declaration = String::from_str(&property);
synthesized_declaration.push_str(": ");
- synthesized_declaration.push_str(value.as_slice());
+ synthesized_declaration.push_str(&value);
let owner = self.owner.root();
let window = window_from_node(owner.r()).root();
- let decl_block = parse_style_attribute(synthesized_declaration.as_slice(),
- &window.r().get_url());
+ let decl_block = parse_style_attribute(&synthesized_declaration, &window.r().get_url());
// Step 7
if decl_block.normal.len() == 0 {
@@ -235,7 +229,11 @@ impl<'a> CSSStyleDeclarationMethods for JSRef<'a, CSSStyleDeclaration> {
// Step 8
for decl in decl_block.normal.iter() {
// Step 9
- let style_priority = if priority.is_empty() { StylePriority::Normal } else { StylePriority::Important };
+ let style_priority = if priority.is_empty() {
+ StylePriority::Normal
+ } else {
+ StylePriority::Important
+ };
element.update_inline_style(decl.clone(), style_priority);
}
@@ -253,29 +251,32 @@ impl<'a> CSSStyleDeclarationMethods for JSRef<'a, CSSStyleDeclaration> {
}
// Step 2
- let property = property.as_slice().to_ascii_lowercase();
+ let property = property.to_ascii_lowercase();
// Step 3
- if !is_supported_property(property.as_slice()) {
+ if !is_supported_property(&property) {
return Ok(());
}
// Step 4
- let priority = priority.as_slice().to_ascii_lowercase();
- if priority.as_slice() != "important" && !priority.is_empty() {
+ let priority = priority.to_ascii_lowercase();
+ if priority != "important" && !priority.is_empty() {
return Ok(());
}
let owner = self.owner.root();
let window = window_from_node(owner.r()).root();
- let decl_block = parse_style_attribute(property.as_slice(),
- &window.r().get_url());
+ let decl_block = parse_style_attribute(&property, &window.r().get_url());
let element: JSRef<Element> = ElementCast::from_ref(owner.r());
// Step 5
for decl in decl_block.normal.iter() {
// Step 6
- let style_priority = if priority.is_empty() { StylePriority::Normal } else { StylePriority::Important };
+ let style_priority = if priority.is_empty() {
+ StylePriority::Normal
+ } else {
+ StylePriority::Important
+ };
element.update_inline_style(decl.clone(), style_priority);
}
@@ -298,12 +299,12 @@ impl<'a> CSSStyleDeclarationMethods for JSRef<'a, CSSStyleDeclaration> {
}
// Step 2
- let property = property.as_slice().to_ascii_lowercase();
+ let property = property.to_ascii_lowercase();
// Step 3
let value = self.GetPropertyValue(property.clone());
- let longhand_properties = longhands_from_shorthand(property.as_slice());
+ let longhand_properties = longhands_from_shorthand(&property);
match longhand_properties {
Some(longhands) => {
// Step 4