mirror of
https://github.com/servo/servo.git
synced 2025-08-06 22:15:33 +01:00
style: Use update() to update declarations from Servo_DeclarationBlock_SetPropertyToAnimationValue.
This method is used when updating the SMIL override style and from Web Animations' Animation.commitStyles method. By using update we accurately return false when no change is made to a declaration block. For SMIL this simply acts as an optimization, meaning we can avoid updating the SMIL override style ub some cases. For Animation.commitStyles, however, this allows us to avoid generating a mutation record. Normally making a redundant change to an attribute *does* generate a mutation record but the style attribute is different. All browsers avoid generating a mutation record for a redundant change to inline style. This is specified in the behavior for setProperty[1] which does not update the style attribute if updated is false. [1] https://drafts.csswg.org/cssom/#dom-cssstyledeclaration-setproperty Differential Revision: https://phabricator.services.mozilla.com/D30871
This commit is contained in:
parent
eba393cc82
commit
7cf2e38bb7
1 changed files with 8 additions and 0 deletions
|
@ -2337,6 +2337,14 @@ impl SourcePropertyDeclaration {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Create one with a single PropertyDeclaration.
|
||||||
|
#[inline]
|
||||||
|
pub fn with_one(decl: PropertyDeclaration) -> Self {
|
||||||
|
let mut result = Self::new();
|
||||||
|
result.declarations.push(decl);
|
||||||
|
result
|
||||||
|
}
|
||||||
|
|
||||||
/// Similar to Vec::drain: leaves this empty when the return value is dropped.
|
/// Similar to Vec::drain: leaves this empty when the return value is dropped.
|
||||||
pub fn drain(&mut self) -> SourcePropertyDeclarationDrain {
|
pub fn drain(&mut self) -> SourcePropertyDeclarationDrain {
|
||||||
SourcePropertyDeclarationDrain {
|
SourcePropertyDeclarationDrain {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue