зеркало из https://github.com/mozilla/gecko-dev.git
servo: Merge #16263 - Make AnimationValue::from_declaration return computed CSS variable (from hiikezoe:handle-css-variables-in-animations); r=Manishearth
This is a PR of https://bugzilla.mozilla.org/show_bug.cgi?id=1326131 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. <!-- Please describe your changes on the following line: --> --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors <!-- Either: --> - [X] These changes do not require tests because it's for stylo. <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> Source-Repo: https://github.com/servo/servo Source-Revision: a7e18560e52d2b29ee2a8cb96b8592aa9df5e1fe --HG-- extra : subtree_source : https%3A//hg.mozilla.org/projects/converted-servo-linear extra : subtree_revision : 82fe2b16dec7132db86d2f71b98defb349febb15
This commit is contained in:
Родитель
6e2525b4fd
Коммит
92eea71fe1
|
@ -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.
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче