mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +01:00
Make AnimationValue::from_declaration return computed CSS variable.
In Gecko, we resolve CSS variables when we generate keyframes for each animations (i.e. when we create script animations, when we create/update CSS animations). AnimationValue::from_declaration is only called in both cases.
This commit is contained in:
parent
8d8fea0b4b
commit
ec40d1db91
1 changed files with 38 additions and 4 deletions
|
@ -301,7 +301,10 @@ impl AnimationValue {
|
|||
|
||||
/// Construct an AnimationValue from a property declaration
|
||||
pub fn from_declaration(decl: &PropertyDeclaration, context: &Context, initial: &ComputedValues) -> Option<Self> {
|
||||
use error_reporting::StdoutErrorReporter;
|
||||
use properties::LonghandId;
|
||||
use properties::DeclaredValue;
|
||||
|
||||
match *decl {
|
||||
% for prop in data.longhands:
|
||||
% if prop.animatable:
|
||||
|
@ -344,10 +347,41 @@ impl AnimationValue {
|
|||
% endif
|
||||
% endfor
|
||||
}
|
||||
}
|
||||
PropertyDeclaration::WithVariables(_, _) => {
|
||||
// https://bugzilla.mozilla.org/show_bug.cgi?id=1326131
|
||||
unimplemented!()
|
||||
},
|
||||
PropertyDeclaration::WithVariables(id, ref variables) => {
|
||||
let custom_props = context.style().custom_properties();
|
||||
let reporter = StdoutErrorReporter;
|
||||
match id {
|
||||
% for prop in data.longhands:
|
||||
% if prop.animatable:
|
||||
LonghandId::${prop.camel_case} => {
|
||||
let mut result = None;
|
||||
::properties::substitute_variables_${prop.ident}_slow(
|
||||
&variables.css,
|
||||
variables.first_token_type,
|
||||
&variables.url_data,
|
||||
variables.from_shorthand,
|
||||
&custom_props,
|
||||
|v| {
|
||||
let declaration = match *v {
|
||||
DeclaredValue::Value(value) => {
|
||||
PropertyDeclaration::${prop.camel_case}(value.clone())
|
||||
},
|
||||
DeclaredValue::CSSWideKeyword(keyword) => {
|
||||
PropertyDeclaration::CSSWideKeyword(id, keyword)
|
||||
},
|
||||
DeclaredValue::WithVariables(_) => unreachable!(),
|
||||
};
|
||||
result = AnimationValue::from_declaration(&declaration, context, initial);
|
||||
},
|
||||
&reporter);
|
||||
result
|
||||
},
|
||||
% else:
|
||||
LonghandId::${prop.camel_case} => None,
|
||||
% endif
|
||||
% endfor
|
||||
}
|
||||
},
|
||||
_ => None // non animatable properties will get included because of shorthands. ignore.
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue