aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorbors-servo <release+servo@mozilla.com>2013-12-13 15:40:13 -0800
committerbors-servo <release+servo@mozilla.com>2013-12-13 15:40:13 -0800
commitc5d81f13c167ba46836b78359389e8d1a3f817d6 (patch)
tree18d84f9ef91a06076a7a6642457047ef06d5acd2 /src
parenta9980b992c47e6fcac1f6c4510e36a49aa22fbbd (diff)
parentcf537469b18224e2c6dda120d1db00009f8cd885 (diff)
downloadservo-c5d81f13c167ba46836b78359389e8d1a3f817d6.tar.gz
servo-c5d81f13c167ba46836b78359389e8d1a3f817d6.zip
auto merge of #1388 : hyunjunekim/servo/cssissues, r=kmcallister
Fixed this issue ( https://github.com/mozilla/rust/issues/10683 )
Diffstat (limited to 'src')
-rw-r--r--src/components/script/dom/htmliframeelement.rs4
-rw-r--r--src/components/style/common_types.rs4
-rw-r--r--src/components/style/media_queries.rs4
-rw-r--r--src/components/style/properties.rs.mako46
-rw-r--r--src/components/style/selectors.rs32
5 files changed, 60 insertions, 30 deletions
diff --git a/src/components/script/dom/htmliframeelement.rs b/src/components/script/dom/htmliframeelement.rs
index 3f8ff80a5c7..d1579164f41 100644
--- a/src/components/script/dom/htmliframeelement.rs
+++ b/src/components/script/dom/htmliframeelement.rs
@@ -98,7 +98,9 @@ impl HTMLIFrameElement {
if "sandbox" == name {
let mut modes = AllowNothing as u8;
for word in value.split_iter(' ') {
- modes |= match word.to_ascii_lower().as_slice() {
+ // FIXME: Workaround for https://github.com/mozilla/rust/issues/10683
+ let word_lower = word.to_ascii_lower();
+ modes |= match word_lower.as_slice() {
"allow-same-origin" => AllowSameOrigin,
"allow-forms" => AllowForms,
"allow-pointer-lock" => AllowPointerLock,
diff --git a/src/components/style/common_types.rs b/src/components/style/common_types.rs
index 723ffa989e3..4eace37554e 100644
--- a/src/components/style/common_types.rs
+++ b/src/components/style/common_types.rs
@@ -50,7 +50,9 @@ pub mod specified {
Length::parse_internal(input, /* negative_ok = */ false)
}
pub fn parse_dimension(value: CSSFloat, unit: &str) -> Option<Length> {
- match unit.to_ascii_lower().as_slice() {
+ // FIXME: Workaround for https://github.com/mozilla/rust/issues/10683
+ let unit_lower = unit.to_ascii_lower();
+ match unit_lower.as_slice() {
"px" => Some(Length::from_px(value)),
"in" => Some(Au_(Au((value * AU_PER_IN) as i32))),
"cm" => Some(Au_(Au((value * AU_PER_CM) as i32))),
diff --git a/src/components/style/media_queries.rs b/src/components/style/media_queries.rs
index d8f1e0f1d26..abccc41e7f5 100644
--- a/src/components/style/media_queries.rs
+++ b/src/components/style/media_queries.rs
@@ -82,7 +82,9 @@ pub fn parse_media_query_list(input: &[ComponentValue]) -> MediaQueryList {
loop {
let mq = match next {
Some(&Ident(ref value)) => {
- match value.to_ascii_lower().as_slice() {
+ // FIXME: Workaround for https://github.com/mozilla/rust/issues/10683
+ let value_lower = value.to_ascii_lower();
+ match value_lower.as_slice() {
"screen" => Some(MediaQuery{ media_type: MediaType(Screen) }),
"print" => Some(MediaQuery{ media_type: MediaType(Print) }),
"all" => Some(MediaQuery{ media_type: All }),
diff --git a/src/components/style/properties.rs.mako b/src/components/style/properties.rs.mako
index 26f05cfacaa..5fefde01f4b 100644
--- a/src/components/style/properties.rs.mako
+++ b/src/components/style/properties.rs.mako
@@ -189,11 +189,15 @@ pub mod longhands {
pub fn parse_border_width(component_value: &ComponentValue) -> Option<specified::Length> {
match component_value {
- &Ident(ref value) => match value.to_ascii_lower().as_slice() {
- "thin" => Some(specified::Length::from_px(1.)),
- "medium" => Some(specified::Length::from_px(3.)),
- "thick" => Some(specified::Length::from_px(5.)),
- _ => None
+ &Ident(ref value) => {
+ // FIXME: Workaround for https://github.com/mozilla/rust/issues/10683
+ let value_lower = value.to_ascii_lower();
+ match value_lower.as_slice() {
+ "thin" => Some(specified::Length::from_px(1.)),
+ "medium" => Some(specified::Length::from_px(3.)),
+ "thick" => Some(specified::Length::from_px(5.)),
+ _ => None
+ }
},
_ => specified::Length::parse_non_negative(component_value)
}
@@ -332,11 +336,15 @@ pub mod longhands {
/// | <percentage> | <length>
pub fn from_component_value(input: &ComponentValue) -> Option<SpecifiedValue> {
match input {
- &Ident(ref value) => match value.to_ascii_lower().as_slice() {
- % for keyword in vertical_align_keywords:
+ &Ident(ref value) => {
+ // FIXME: Workaround for https://github.com/mozilla/rust/issues/10683
+ let value_lower = value.to_ascii_lower();
+ match value_lower.as_slice() {
+ % for keyword in vertical_align_keywords:
"${keyword}" => Some(Specified_${to_rust_ident(keyword)}),
- % endfor
- _ => None,
+ % endfor
+ _ => None,
+ }
},
_ => specified::LengthOrPercentage::parse_non_negative(input)
.map(SpecifiedLengthOrPercentage)
@@ -454,8 +462,10 @@ pub mod longhands {
// TODO: avoid copying strings?
Some(&String(ref value)) => add!(FamilyName(value.to_owned())),
Some(&Ident(ref value)) => {
+ // FIXME: Workaround for https://github.com/mozilla/rust/issues/10683
let value = value.as_slice();
- match value.to_ascii_lower().as_slice() {
+ let value_lower = value.to_ascii_lower();
+ match value_lower.as_slice() {
// "serif" => add!(Serif),
// "sans-serif" => add!(SansSerif),
// "cursive" => add!(Cursive),
@@ -503,12 +513,16 @@ pub mod longhands {
/// normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900
pub fn from_component_value(input: &ComponentValue) -> Option<SpecifiedValue> {
match input {
- &Ident(ref value) => match value.to_ascii_lower().as_slice() {
- "bold" => Some(SpecifiedWeight700),
- "normal" => Some(SpecifiedWeight400),
- "bolder" => Some(Bolder),
- "lighter" => Some(Lighther),
- _ => None,
+ &Ident(ref value) => {
+ // FIXME: Workaround for https://github.com/mozilla/rust/issues/10683
+ let value_lower = value.to_ascii_lower();
+ match value_lower.as_slice() {
+ "bold" => Some(SpecifiedWeight700),
+ "normal" => Some(SpecifiedWeight400),
+ "bolder" => Some(Bolder),
+ "lighter" => Some(Lighther),
+ _ => None,
+ }
},
&Number(ref value) => match value.int_value {
Some(100) => Some(SpecifiedWeight100),
diff --git a/src/components/style/selectors.rs b/src/components/style/selectors.rs
index c6042ee655d..3935121fadc 100644
--- a/src/components/style/selectors.rs
+++ b/src/components/style/selectors.rs
@@ -308,14 +308,18 @@ fn parse_one_simple_selector(iter: &mut Iter, namespaces: &NamespaceMap, inside_
iter.next();
match iter.next() {
Some(Ident(name)) => match parse_simple_pseudo_class(name) {
- None => match name.to_ascii_lower().as_slice() {
- // Supported CSS 2.1 pseudo-elements only.
- // ** Do not add to this list! **
- "before" => PseudoElementResult(Before),
- "after" => PseudoElementResult(After),
- "first-line" => PseudoElementResult(FirstLine),
- "first-letter" => PseudoElementResult(FirstLetter),
- _ => InvalidSimpleSelector
+ None => {
+ // FIXME: Workaround for https://github.com/mozilla/rust/issues/10683
+ let name_lower = name.to_ascii_lower();
+ match name_lower.as_slice() {
+ // Supported CSS 2.1 pseudo-elements only.
+ // ** Do not add to this list! **
+ "before" => PseudoElementResult(Before),
+ "after" => PseudoElementResult(After),
+ "first-line" => PseudoElementResult(FirstLine),
+ "first-letter" => PseudoElementResult(FirstLetter),
+ _ => InvalidSimpleSelector
+ }
},
Some(result) => SimpleSelectorResult(result),
},
@@ -443,7 +447,9 @@ fn parse_attribute_selector(content: ~[ComponentValue], namespaces: &NamespaceMa
fn parse_simple_pseudo_class(name: &str) -> Option<SimpleSelector> {
- match name.to_ascii_lower().as_slice() {
+ // FIXME: Workaround for https://github.com/mozilla/rust/issues/10683
+ let name_lower = name.to_ascii_lower();
+ match name_lower.as_slice() {
"any-link" => Some(AnyLink),
"link" => Some(Link),
"visited" => Some(Visited),
@@ -463,7 +469,9 @@ fn parse_simple_pseudo_class(name: &str) -> Option<SimpleSelector> {
fn parse_functional_pseudo_class(name: ~str, arguments: ~[ComponentValue],
namespaces: &NamespaceMap, inside_negation: bool)
-> Option<SimpleSelector> {
- match name.to_ascii_lower().as_slice() {
+ // FIXME: Workaround for https://github.com/mozilla/rust/issues/10683
+ let name_lower = name.to_ascii_lower();
+ match name_lower.as_slice() {
// "lang" => parse_lang(arguments),
"nth-child" => parse_nth(arguments).map(|(a, b)| NthChild(a, b)),
"nth-last-child" => parse_nth(arguments).map(|(a, b)| NthLastChild(a, b)),
@@ -476,7 +484,9 @@ fn parse_functional_pseudo_class(name: ~str, arguments: ~[ComponentValue],
fn parse_pseudo_element(name: ~str) -> Option<PseudoElement> {
- match name.to_ascii_lower().as_slice() {
+ // FIXME: Workaround for https://github.com/mozilla/rust/issues/10683
+ let name_lower = name.to_ascii_lower();
+ match name_lower.as_slice() {
// All supported pseudo-elements
"before" => Some(Before),
"after" => Some(After),