3a75759624a08a038094cb19fce565a74eff5498: Bug 1232563 part 4 - Don't perform style updates when the effect progress has not changed; r=heycam
Brian Birtles <birtles@gmail.com> - Wed, 06 Jan 2016 11:04:06 +0900 - rev 319246
Push 8999 by benj@benj.me at Wed, 06 Jan 2016 10:10:00 +0000
Bug 1232563 part 4 - Don't perform style updates when the effect progress has not changed; r=heycam Now that restyle requests are handled by the effect, we can more easily detect cases where we don't need to trigger a style update by looking for when the output of the effect could actually differ. Currently, any changes that require updates where the progress does *not* change (e.g. pausing) are triggered by the Animation. The exception is when we update timing properties (e.g. animation-iteration-count) from CSS but current nsAnimationManager takes care to adjust the animation generation in this case.
b101f84e39535a6a5d5a11fbf833993ace959ffd: Bug 1232563 part 3 - Drop check for an empty set of properties when requesting restyles from KeyframeEffectReadOnly; r=heycam
Brian Birtles <birtles@gmail.com> - Wed, 06 Jan 2016 11:04:06 +0900 - rev 319245
Push 8999 by benj@benj.me at Wed, 06 Jan 2016 10:10:00 +0000
Bug 1232563 part 3 - Drop check for an empty set of properties when requesting restyles from KeyframeEffectReadOnly; r=heycam This is because rather than simply requesting a throttled restyle when there were no properties, as of the previous patch, we no longer request a restyle at all in this case. We should be able to restore this optimization in bug 1235002 when we properly encapsulate the properties of a keyframe effect.
86b2881f552737f3723563fc88707b69d8e6e5f8: Bug 1232563 part 2 - Move RequestRestyle calls to the effect; r=heycam
Brian Birtles <birtles@gmail.com> - Wed, 06 Jan 2016 11:04:06 +0900 - rev 319244
Push 8999 by benj@benj.me at Wed, 06 Jan 2016 10:10:00 +0000
Bug 1232563 part 2 - Move RequestRestyle calls to the effect; r=heycam
aeaec67959aab9b198a262df0aa6863001c1a6c9: Bug 1232563 part 1 - Request a layer update if an animation is newly finished; r=heycam
Brian Birtles <birtles@gmail.com> - Wed, 06 Jan 2016 11:04:06 +0900 - rev 319243
Push 8999 by benj@benj.me at Wed, 06 Jan 2016 10:10:00 +0000
Bug 1232563 part 1 - Request a layer update if an animation is newly finished; r=heycam When requesting restyles we take special care to detect when an animation has newly finished so we perform the necessary restyle to represent the fill state. However, we should really explicitly pull the animation off the layer at this point by requesting a layer update. (That is, when an animation is newly-finished we should use RestyleType::Layer instead of RestyleType::Standard. Currently we just use RestyleType::Standard.) In this bug we plan to move restyle requests down to the effect (since it is the *effect* that is restyled). However, only the Animation has the notion of "finished" or not so we detect this particular case in the Animation and request the layer update there. We already request layer updates in the Animation for other situations such as pausing so doing *layer* updates in the Animation and regular restyles in the effect is not inconsistent. This patch also tweaks test_animations_omta.html since it was previously erroneously testing that a finished animation was still running on the compositor.
df95b504dc3baac86cc2014a9ea305aa1544cf10: Bug 1232561 part 4 - Add EffectCompositor::ComposeAnimationRule; r=heycam
Brian Birtles <birtles@gmail.com> - Wed, 06 Jan 2016 11:04:06 +0900 - rev 319242
Push 8999 by benj@benj.me at Wed, 06 Jan 2016 10:10:00 +0000
Bug 1232561 part 4 - Add EffectCompositor::ComposeAnimationRule; r=heycam This patch just moves a piece of functionality from AnimationCollection::EnsureStyleRuleFor to the EffectCompositor. In subsequent bugs we will move more and more of this functionality across until this logic is fully contained in the EffectCompositor.
32728ff57fcf51fb0d4f7281e3c57c22165015d4: Bug 1232561 part 3 - Move AnimValuesStyleRule to a separate file; r=heycam
Brian Birtles <birtles@gmail.com> - Wed, 06 Jan 2016 11:04:06 +0900 - rev 319241
Push 8999 by benj@benj.me at Wed, 06 Jan 2016 10:10:00 +0000
Bug 1232561 part 3 - Move AnimValuesStyleRule to a separate file; r=heycam As we gradually move logic from layout/style/AnimationCommon.cpp to dom/animation/EffectSet and EffectCompositor it makes sense to let this class live in its own file inside dom/animation where it is used.
8ab3174e31a51247c328344154c0511767c58b2a: Bug 1232561 part 2 - Move the animation style rules from AnimationCollection to EffectSet; r=heycam
Brian Birtles <birtles@gmail.com> - Wed, 06 Jan 2016 11:04:06 +0900 - rev 319240
Push 8999 by benj@benj.me at Wed, 06 Jan 2016 10:10:00 +0000
Bug 1232561 part 2 - Move the animation style rules from AnimationCollection to EffectSet; r=heycam This is needed in order to support script-generated animations since they do not belong to any AnimationCollection. This patch adopts the naming "animation rule" over "style rule". Currently we are inconsistent about this (e.g. GetAnimationRule vs EnsureStyleRuleFor). We don't do a mass rename here but just a few places near where we're touching. Many of the other references to "style rule" will be revised in this bug or related bugs so we can fix those references when we come to them.
b329d19647b58ce805abde98de7f4a68e185f60b: Bug 1232561 part 1 - Replace AppliesToTransitionsLevel() with a cascade level enumeration; r=heycam
Brian Birtles <birtles@gmail.com> - Wed, 06 Jan 2016 11:04:05 +0900 - rev 319239
Push 8999 by benj@benj.me at Wed, 06 Jan 2016 10:10:00 +0000
Bug 1232561 part 1 - Replace AppliesToTransitionsLevel() with a cascade level enumeration; r=heycam Introducing an enum will simplify further patches in this series by providing a common vocabulary for this distinction.
c0dab741d32e2159319f2be787494f93ac35a1d2: Bug 1229280 - Move animation generation from AnimationCollection to EffectSet; r=dbaron
Brian Birtles <birtles@gmail.com> - Wed, 06 Jan 2016 11:04:05 +0900 - rev 319238
Push 8999 by benj@benj.me at Wed, 06 Jan 2016 10:10:00 +0000
Bug 1229280 - Move animation generation from AnimationCollection to EffectSet; r=dbaron
d2d5e8fa8696f7754d920702fefd6a55014fcf18: Bug 1228229 part 11 - Avoid calling nsRuleNode::ComputePropertiesOverridingAnimation when there are no compositor-animatable properties; r=dbaron
Brian Birtles <birtles@gmail.com> - Wed, 06 Jan 2016 11:04:05 +0900 - rev 319237
Push 8999 by benj@benj.me at Wed, 06 Jan 2016 10:10:00 +0000
Bug 1228229 part 11 - Avoid calling nsRuleNode::ComputePropertiesOverridingAnimation when there are no compositor-animatable properties; r=dbaron This restores the code removed in part 3 but adjusts it to iterate over an effect set instead of an AnimationCollection. It also adds an early return for the case where no compositor-animatable properties are found.
4f7f1ba2036b6ec91fe393d8b22282b5add84d05: Bug 1228229 part 10 - Remove no-longer-used cascade functions; r=dbaron
Brian Birtles <birtles@gmail.com> - Wed, 06 Jan 2016 11:04:05 +0900 - rev 319236
Push 8999 by benj@benj.me at Wed, 06 Jan 2016 10:10:00 +0000
Bug 1228229 part 10 - Remove no-longer-used cascade functions; r=dbaron
5efd7a041b2da52d2bfb07d9766e3c12a382171f: Bug 1228229 part 9 - Use EffectCompositor::UpdateCascadeResults; r=dbaron
Brian Birtles <birtles@gmail.com> - Wed, 06 Jan 2016 11:04:05 +0900 - rev 319235
Push 8999 by benj@benj.me at Wed, 06 Jan 2016 10:10:00 +0000
Bug 1228229 part 9 - Use EffectCompositor::UpdateCascadeResults; r=dbaron
6c8576a04c467bcc823d5c68f76a6ff597a7f8cd: Bug 1228229 part 8 - Add EffectCompositor::(Maybe)UpdateCascadeResults; r=dbaron
Brian Birtles <birtles@gmail.com> - Wed, 06 Jan 2016 11:04:05 +0900 - rev 319234
Push 8999 by benj@benj.me at Wed, 06 Jan 2016 10:10:00 +0000
Bug 1228229 part 8 - Add EffectCompositor::(Maybe)UpdateCascadeResults; r=dbaron
4974afc6e1a5e578b9a82e03f3ae6efe71d79c77: Bug 1228229 part 7 - Add a method to Animation to indicate if it applies to the transitions level of the cascade; r=dbaron
Brian Birtles <birtles@gmail.com> - Wed, 06 Jan 2016 11:04:05 +0900 - rev 319233
Push 8999 by benj@benj.me at Wed, 06 Jan 2016 10:10:00 +0000
Bug 1228229 part 7 - Add a method to Animation to indicate if it applies to the transitions level of the cascade; r=dbaron For transitions, this method returns true so long as the transition is bound to markup. This is based on the below discussion, https://github.com/w3c/web-animations/issues/97 https://github.com/w3c/web-animations/issues/62#issuecomment-117357703 https://github.com/w3c/web-animations/issues/62#issuecomment-117374689 We will likely reuse this method when we come to implement animation style rule generation in a more generic manner.
9e2e1114aece2cfb745f62d4b061798c8264d112: Bug 1228229 part 6 - Mark the animation cascade results as dirty when an effect goes in or out of being "in effect"; r=dbaron
Brian Birtles <birtles@gmail.com> - Wed, 06 Jan 2016 11:04:05 +0900 - rev 319232
Push 8999 by benj@benj.me at Wed, 06 Jan 2016 10:10:00 +0000
Bug 1228229 part 6 - Mark the animation cascade results as dirty when an effect goes in or out of being "in effect"; r=dbaron This patch implements "case 2" described in the commit message from part 4 of this patch series.
04b47b12e54655b52b9d5e56e30084b3fa8683f6: Bug 1228229 part 5 - Separate target element registration in NotifyAnimationTimingUpdated; r=dbaron
Brian Birtles <birtles@gmail.com> - Wed, 06 Jan 2016 11:04:04 +0900 - rev 319231
Push 8999 by benj@benj.me at Wed, 06 Jan 2016 10:10:00 +0000
Bug 1228229 part 5 - Separate target element registration in NotifyAnimationTimingUpdated; r=dbaron KeyframeEffectReadOnly::NotifyAnimationTimingUpdated currently just acts as an alias for UpdateTargetRegistration. However, bug 1226118 added logic to UpdateTargetRegistration which is not strictly related to updating the target element registration. This patch tidies this up so that UpdateTargetRegistration only does what its name suggests. This is in preparation for adding more logic to NotifyAnimationTimingUpdated.
8185bed25178ac5c5a6966a5a13df9d070289aaa: Bug 1228229 part 4 - Add a flag to EffectSet to mark when the cascade needs to be updated; r=dbaron
Brian Birtles <birtles@gmail.com> - Wed, 06 Jan 2016 11:04:04 +0900 - rev 319230
Push 8999 by benj@benj.me at Wed, 06 Jan 2016 10:10:00 +0000
Bug 1228229 part 4 - Add a flag to EffectSet to mark when the cascade needs to be updated; r=dbaron There are three situations when the cascade results of effects needs to be updated. 1. The sets of effects (animations) has changed. 2. One or more effects have changed their "in effect" status. 3. Other style properties affecting the element have changing meaning that animations applied at the animations-level of the cascade may now be overridden or become active again. We want to detect these situations so we can avoid updating the cascade when none of these possibilities exist. Currently we handle case 1 by calling UpdateCascadeResults at the appropriate point in nsAnimationManager and nsTransitionManager when we build animations/transtiions. Case 2 only affects animations (since whether transitions are in effect or not makes no difference to the cascade--they have a lower "composite order" than animations and never overlap with each other so they can't override anything). As a result, we handle it by adding a flag to CSSAnimation to track when an animation was in effect last time we checked or not. For case 3, we take care to call UpdateCascadeResults when the style context changed in nsAnimationManager::CheckAnimationRule (called from nsStyleSet::GetContext). We want to generalize this detection to handle script-generated animations too. In order to do that this patch introduces a flag to EffectSet that we will use to mark when the cascade needs to be updated in cases 1 and 2. This patch also sets the flag when we detect case 1. A subsequent patch sets the flag for case 2. Case 3 is more difficult to detect and so we simply maintain the existing behavior of making nsAnimationManager::CheckAnimationRule unconditionally update the cascade without checking if the "needs update" flag is set.
a9982cf043032622ff44b0c915f9e39ec3a0b87a: Bug 1228229 part 3 - Factor out a method to get compositor-animatable overridden properties; r=dbaron
Brian Birtles <birtles@gmail.com> - Wed, 06 Jan 2016 11:04:04 +0900 - rev 319229
Push 8999 by benj@benj.me at Wed, 06 Jan 2016 10:10:00 +0000
Bug 1228229 part 3 - Factor out a method to get compositor-animatable overridden properties; r=dbaron This patch also simplifies this logic by simply always looking for overrides of 'transform' and 'opacity'.
5548611f65c450760dc6ee435257bbbea8e867d6: Bug 1228229 part 2 - Add a helper to get the appropriate (pseudo-)element for a frame; r=dbaron
Brian Birtles <birtles@gmail.com> - Wed, 06 Jan 2016 11:04:04 +0900 - rev 319228
Push 8999 by benj@benj.me at Wed, 06 Jan 2016 10:10:00 +0000
Bug 1228229 part 2 - Add a helper to get the appropriate (pseudo-)element for a frame; r=dbaron We will use similar logic later in this patch series so we separate it out into a separate helper function here.
7eb46e50210c2a084e880bb304bf67e8c6b14582: Bug 1237075 - Navigating from 'manual' to 'auto' session history entry should scroll the page, r=jst
Olli Pettay <Olli.Pettay@helsinki.fi> - Wed, 06 Jan 2016 04:03:42 +0200 - rev 319227
Push 8999 by benj@benj.me at Wed, 06 Jan 2016 10:10:00 +0000
Bug 1237075 - Navigating from 'manual' to 'auto' session history entry should scroll the page, r=jst
(0) -300000 -100000 -30000 -10000 -3000 -1000 -300 -100 -50 -20 +20 +50 +100 +300 +1000 +3000 +10000 +30000 +100000 +300000 tip