Skip to content

Commit

Permalink
Box custom property
Browse files Browse the repository at this point in the history
  • Loading branch information
canova authored and SimonSapin committed Feb 9, 2017
1 parent 78afe2b commit 43731c5
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 9 deletions.
13 changes: 7 additions & 6 deletions components/style/custom_properties.rs
Expand Up @@ -8,7 +8,7 @@

use Atom;
use cssparser::{Delimiter, Parser, SourcePosition, Token, TokenSerializationType};
use parser::{Parse, ParserContext};
use parser::ParserContext;
use properties::DeclaredValue;
use std::ascii::AsciiExt;
use std::borrow::Cow;
Expand Down Expand Up @@ -129,16 +129,17 @@ impl ComputedValue {
}
}

impl Parse for SpecifiedValue {
fn parse(_context: &ParserContext, input: &mut Parser) -> Result<Self, ()> {
impl SpecifiedValue {
/// Parse a custom property SpecifiedValue.
pub fn parse(_context: &ParserContext, input: &mut Parser) -> Result<Box<Self>, ()> {
let mut references = Some(HashSet::new());
let (first, css, last) = try!(parse_self_contained_declaration_value(input, &mut references));
Ok(SpecifiedValue {
Ok(Box::new(SpecifiedValue {
css: css.into_owned(),
first_token_type: first,
last_token_type: last,
references: references.unwrap(),
})
}))
}
}

Expand Down Expand Up @@ -328,7 +329,7 @@ pub fn cascade<'a>(custom_properties: &mut Option<HashMap<&'a Name, BorrowedSpec
inherited: &'a Option<Arc<HashMap<Name, ComputedValue>>>,
seen: &mut HashSet<&'a Name>,
name: &'a Name,
specified_value: &'a DeclaredValue<SpecifiedValue>) {
specified_value: &'a DeclaredValue<Box<SpecifiedValue>>) {
let was_already_present = !seen.insert(name);
if was_already_present {
return;
Expand Down
5 changes: 3 additions & 2 deletions components/style/properties/properties.mako.rs
Expand Up @@ -850,7 +850,7 @@ pub enum PropertyDeclaration {
% endfor
/// A custom property declaration, with the property name and the declared
/// value.
Custom(::custom_properties::Name, DeclaredValue<::custom_properties::SpecifiedValue>),
Custom(::custom_properties::Name, DeclaredValue<Box<::custom_properties::SpecifiedValue>>),
}

impl HasViewportPercentage for PropertyDeclaration {
Expand Down Expand Up @@ -1029,7 +1029,8 @@ impl PropertyDeclaration {
Err(()) => return PropertyDeclarationParseResult::InvalidValue,
}
};
result_list.push((PropertyDeclaration::Custom(name, value), Importance::Normal));
result_list.push((PropertyDeclaration::Custom(name, value),
Importance::Normal));
return PropertyDeclarationParseResult::ValidOrIgnoredDeclaration;
}
PropertyId::Longhand(id) => match id {
Expand Down
2 changes: 1 addition & 1 deletion tests/unit/style/size_of.rs
Expand Up @@ -7,7 +7,7 @@ use style::properties::{PropertyDeclaration, specified_value_sizes};

#[test]
fn size_of_property_declaration() {
let old = 96;
let old = 72;
let new = size_of::<PropertyDeclaration>();
if new < old {
panic!("Your changes have decreased the stack size of PropertyDeclaration enum from {} to {}. \
Expand Down

0 comments on commit 43731c5

Please sign in to comment.