Commit Graph

317 Commits

Author SHA1 Message Date
Boris Chiou
e4faea3b76 Bug 1067769 - Part 12: Use Maybe<OwningAnimationTarget> in KeyframeEffect(ReadOnly) constructors. r=birtles
MozReview-Commit-ID: Euv76D6sIFX
2016-04-28 23:22:44 +08:00
Mantaroh Yoshinaga
e64459e2ab Bug 1134163 - Part1.Modify animationstart event timing in order to fire event after end of pending task. r=birtles
MozReview-Commit-ID: 8BwLRIKe1kV
2016-04-28 16:29:12 +09:00
Hiroyuki Ikezoe
48f8dca92a Bug 1263063 - Part 2: Add an assertion to ensure that iteration count is nonnegative and finite. r=dholbert
MozReview-Commit-ID: JvVaCVQAxW4
2016-04-14 19:36:01 +09:00
Brian Birtles
a1af5ae788 Bug 1260655 - Drop some no-longer-needed code for setting up CSS animations using AnimationProperty objects; r=heycam
MozReview-Commit-ID: JDzvQIxlsX6
2016-03-30 13:01:20 +09:00
Brian Birtles
550a63216b Bug 1260655 - Use CSSAnimationBuilder::BuildAnimationFrames to set up CSS animations using Keyframe objects; r=heycam
MozReview-Commit-ID: BMLvYP8iIIa
2016-03-30 13:01:13 +09:00
Brian Birtles
ec4c0ef6fb Bug 1260655 - Add methods to CSSAnimationBuilder to build a set of Keyframe objects; r=heycam
We will call this method in the next patch in this series.

MozReview-Commit-ID: E8QnGOIt91
2016-03-30 12:59:33 +09:00
Daisuke Akatsuka
6e47cd9f0c Bug 1237173 - Part2: Change type of duration to Maybe<StickyTimeDuration>. r=birtles 2016-03-09 14:14:20 +09:00
Brian Birtles
bd3bf14dca Bug 1239945 part 8 - Add GetOrCreateAnimationCollection; r=dholbert
Rather than passing around a bool flag to indicate if we should be creating
an AnimationCollection when none is found, it would be a lot easier to read
if we simply introduce a separate method for this.

MozReview-Commit-ID: 6bg8jGoH5pL
2016-03-09 12:55:39 +09:00
Brian Birtles
3ad43fba1f Bug 1239945 part 7 - Move GetAnimationCollection to AnimationCollection; r=dholbert
By moving GetAnimationCollection to AnimationCollection itself, we can remove
a bunch of virtual methods on the animation managers, simplify call sites,
and provide better type safety by ensuring a correspondence between element
property names and concrete animation types.

One change in behavior, however, is that in doing this we can no longer
add any newly-created AnimationCollection to the corresponding manager's linked
list of collections inside GetAnimationCollection. Instead we take a bool
outparam to indicate if a new collection was created and leave managing the
linked list to the manager. This is just a temporary measure, however, since
by the end of this patch series will will eliminate this linked list altogether
along with this flag.

MozReview-Commit-ID: 1jsc4QcmVDg
2016-03-09 12:55:39 +09:00
Brian Birtles
bd2759cad0 Bug 1239945 part 6 - Templatize AnimationCollection based on the concrete type of Animation stored; r=dholbert
This patch templatizes the type of Animation stored in an AnimationCollection.
This allows us to remove a number AsCSSAnimation() calls in nsAnimationManager.

This patch also removes the AnimationPtrArray typedef. In its place we
introduce OwningCSSAnimationPtrArray and OwningCSSTransitionPtrArray but we
don't use these as widely. There was some comment previously that the typedefs
in animation code make it hard to read, particularly when these typedefs don't
make it clear if the data type is an owning reference or not.

In doing this we need to templatize CommonAnimationManager as well and move the
implementation of its (few) methods to the header file. We may be able to
remove the need for templatizing CommonAnimationManager later in this patch
series depending on how we ultimately decide to handle the lifetime of
AnimationCollection objects.

CommonAnimationManager::GetAnimationCollection is a bit messy but this will be
significantly tidied up in subsequent patches in this series.

MozReview-Commit-ID: 3ywatY53pRR
2016-03-09 12:55:39 +09:00
Hiroyuki Ikezoe
8305721610 Bug 1242872 - Part 7: Eliminate creation of temporary animations. r=dbaron
This patch removes a loop for the new temporary animation collection in
CheckAnimationRule.  The old collection is passed to CSSAnimationBuilder,
and CSSAnimationBuilder removes each animation which matches to new animation
name in it.
:birtles took care of storing animations in AnimationCollection in reverse order.
Thanks so much!

MozReview-Commit-ID: KmlnjFptKdv
2016-02-19 14:10:43 +09:00
Hiroyuki Ikezoe
fa41998a83 Bug 1242872 - Part 6: Trigger a layer update explicitly when copying animation properties. r=birtles
MozReview-Commit-ID: AWL43ypqLPT
2016-02-19 09:16:15 +09:00
Hiroyuki Ikezoe
21c8776f15 Bug 1242872 - Part 5: Change CopyPropertiesFrom to UpdateProperties. r=birtles
Once we don't create any temporary effect, we do not need to pass
the effect to CopyPropertiesFrom.

MozReview-Commit-ID: HczU5IU6Ggp
2016-02-19 09:16:15 +09:00
Hiroyuki Ikezoe
8eedb2b772 Bug 1242872 - Part 4: Factor updating animation properties process out. r=dbaron
MozReview-Commit-ID: 8VWdC3wFRZX
2016-02-19 09:16:15 +09:00
Hiroyuki Ikezoe
bd3dd2dcec Bug 1242872 - Part 3: Factor finding old animations process out. r=dbaron
MozReview-Commit-ID: H4bFKGpnhpX
2016-02-19 09:16:15 +09:00
Hiroyuki Ikezoe
190519c209 Bug 1242872 - Part 2: Set timeline in CSSAnimationBuilder::Build. r=dbaron
MozReview-Commit-ID: 6bisME1VK0d
2016-02-19 09:16:15 +09:00
Hiroyuki Ikezoe
f1bdbf0976 Bug 1242872 - Part 1.1: Move AnimationManager::BuildAnimations. r=dbaron
MozReview-Commit-ID: ENfBlECSiDP
2016-02-19 09:16:15 +09:00
Hiroyuki Ikezoe
c0b29736ae Bug 1242872 - Part 1: Introduce CSSAnimationBuilder to factor a bunch of stuff in BuildAnimations and CheckAnimationRule out. r=dbaron
MozReview-Commit-ID: 7921De3IVA6
2016-02-19 09:16:15 +09:00
Cameron McCormack
471cf640eb Bug 1248864 - Part 1: Move RestyleManager.h to EXPORTS.mozilla. r=dholbert 2016-02-24 18:01:12 +11:00
Cameron McCormack
8a879b8032 Bug 1244068 - Part 4: Use StyleSetHandle instead of concrete style set class in most places. r=dholbert 2016-02-24 18:01:11 +11:00
Boris Chiou
32cdf253b7 Bug 1244049 - Part 2: Replace nsCSSPseudoElements::Type with CSSPseudoElementType. r=dbaron
Also, try to use forward declaraions for CSSPseudoElementType;
2016-02-17 21:37:00 +01:00
Brian Birtles
19070757e2 Bug 1246046 part 1 - Get the animation rule in nsStyleSet::GetContext even if there are no CSS animations; r=heycam
Without this patch, when we have script-generated animations but *no* CSS
animations, nsStyleSet::GetContext will not use the updated animation rule.
2016-02-15 16:08:33 +09:00
Birunthan Mohanathas
56725f4917 Bug 1235261 - Part 6: Rename AutoInfallibleTArray to AutoTArray. r=froydnj 2016-02-02 17:36:31 +02:00
Hiroyuki Ikezoe
0c2186cd41 Bug 1216842 - Part 3: Change ComputedTimingFunction* to Maybe<ComputedTimingFunction>. r=cam
Nothing() represents linear function, i.e. skip calculation.
ParseEasing is changed to return a Maybe<ComputedTimingFunction>,
if timing function is linear function, ParseEasing returns Nothing().
2016-01-29 14:44:00 +01:00
Phil Ringnalda
d871b9515f Back out 7 changesets (bug 1235261) for cpptest failures in TestTArray
CLOSED TREE

Backed out changeset d66c3f19a210 (bug 1235261)
Backed out changeset 467d945426bb (bug 1235261)
Backed out changeset 32b61df13142 (bug 1235261)
Backed out changeset c50bb8ed4196 (bug 1235261)
Backed out changeset 0ff0fa6fe81f (bug 1235261)
Backed out changeset df70e89669da (bug 1235261)
Backed out changeset 064969357fc9 (bug 1235261)
2016-01-31 10:10:57 -08:00
Birunthan Mohanathas
a41f0be192 Bug 1235261 - Part 6: Rename AutoInfallibleTArray to AutoTArray. r=froydnj 2016-01-31 17:12:12 +02:00
Brian Birtles
0cc26e3047 Bug 1235112 - Move animation style rule processors to EffectCompositor; r=heycam 2016-01-15 15:15:47 +09:00
Boris Chiou
427e00a9b4 Bug 1214536 - Part 7: Rename AnimationTiming as TimingParams. r=birtles, r=smaug
1. struct AnimationTiming -> struct TimingParams
2. AnimationEffectReadOnly::TimingAsObject() -> AnimationEffectReadOnly::Timing()
3. KeyframeEffectReadOnly::Timing() -> KeyframeEffectReadOnly::SpecifiedTiming()
2016-01-13 18:41:00 +01:00
Boris Chiou
8d3197c34c Bug 1214536 - Part 4: Use OwingUnrestrictedDoubleOrString for duration. r=birtles
We store the original value of duration in AnimationTiming, and add
computed duration in ComputedTiming, so both the Timing model and
AnimationEffectTimingReadOnly can get what they want.

By the way, replace mIterationDuration with mDuration.
2016-01-13 18:36:00 +01:00
Boris Chiou
0f434dc51e Bug 1214536 - Part 3: Store the original value of fill. r=birtles
FillMode could be 'auto', and we should treat it as 'none' in the timing model.
However, AnimationEffectTimingReadOnly should get its original value.

By the way, replace mFillMode with mFill.
2016-01-13 18:36:00 +01:00
Boris Chiou
388b167a82 Bug 1214536 - Part 1: Use unrestricted double for iterations. r=birtles
We want to store the original value from KeyframeEffectOptions whose
iterations is unrestricted double. Therefore, we can get the original value
of iterations by AnimationEffectTimingReadOnly.

By the way, replace mIterationCount with mIterations.
2016-01-10 18:41:00 +01:00
Nigel Babu
517be4569b Backed out 5 changesets (bug 1235112, bug 1237467) for nsRuleNode::Transition crashes
Backed out changeset ac21baf87df2 (bug 1235112)
Backed out changeset c47a6e0a6d95 (bug 1237467)
Backed out changeset 7609ca218902 (bug 1237467)
Backed out changeset d63ca2677bd5 (bug 1237467)
Backed out changeset 5a3d7e16b1e0 (bug 1237467)
2016-01-14 11:35:06 +05:30
Brian Birtles
a189b22f06 Bug 1234095 - Rework sorting to handle to script-generated animations; r=heycam 2016-01-14 10:24:24 +09:00
Brian Birtles
c904a0daa8 Bug 1235112 - Move animation style rule processors to EffectCompositor; r=heycam 2016-01-14 08:02:39 +09:00
Brian Birtles
a1de676a86 Bug 1238660 part 2 - Preserve "wins in cascade" state when updating animations; r=hiro
When updating animations, we shouldn't unnecessarily clobber the "wins in
cascade" state of their properties since this can lead to unnecessary restyles
when we then decide we need to update the cascade.
2016-01-13 13:38:16 +09:00
Brian Birtles
2ad87bdd50 Bug 1232577 part 16 - Move GetAnimationRule to EffectCompositor; r=heycam 2016-01-13 07:54:55 +09:00
Brian Birtles
2b42ff2169 Bug 1232577 part 13 - Move EnsureStyleRuleFor from AnimationCollection to EffectCompositor 2016-01-13 07:54:55 +09:00
Brian Birtles
d7c3a1756f Bug 1232577 part 12 - Move the remainder of RequestRestyle from AnimationCollection to EffectCompositor; r=heycam
This also allows us to remove all references to AnimationCollection and the
animation managers from Animation.
2016-01-13 07:54:54 +09:00
Brian Birtles
33c395cfdf Bug 1232577 part 10 - Remove AnimationCollection::mStyleChanging; r=heycam
This flag is no longer needed because in bug 1232563 we introduced a more
thorough optimization that detects when the animation is not changing by
comparing the progress value between samples and avoids requesting restyles
when it does not change.
2016-01-13 07:54:54 +09:00
Brian Birtles
468f7d08cc Bug 1232577 part 9 - Remove AnimationCollection::mStyleRuleRefreshTime; r=heycam
Now that we track whether or not animations are up to date using the hashset in
EffectCompositor, we can remove the mStyleRuleRefreshTime flag that is, as of
part 5 of this patch series, now only used for detecting whether or not
animations are up to date.

In order to preserve the existing behavior of FlushAnimations, however, this
patch temporarily introduces a method to indicate if there are throttled
animations or not.

It might not be obvious that FlushAnimations is only concerned with throttled
animations due to its name. FlushAnimations is simply intended to post
animation restyles for out-of-date animations. Any animations that are *not*
throttled will either be up to date, or we will have already posted an
animation restyle so we only need to consider throttled animations in this case.
2016-01-13 07:54:54 +09:00
Brian Birtles
8567bec480 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.
2016-01-06 11:04:06 +09:00
Brian Birtles
6a634e5c4f Bug 1229280 - Move animation generation from AnimationCollection to EffectSet; r=dbaron 2016-01-06 11:04:05 +09:00
Brian Birtles
73d9bd2996 Bug 1228229 part 10 - Remove no-longer-used cascade functions; r=dbaron 2016-01-06 11:04:05 +09:00
Brian Birtles
a77c9644b8 Bug 1228229 part 9 - Use EffectCompositor::UpdateCascadeResults; r=dbaron 2016-01-06 11:04:05 +09:00
Brian Birtles
3e4a34e52e 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'.
2016-01-06 11:04:04 +09:00
Hiroyuki Ikezoe
d8d92c7336 Bug 1219543 - Part 2: Avoid the period that mIsRunningOnCompositor is false between restyling and building display list. r=bbirtles
Without this fix, mIsRunningOnCompositor will be unpredictable in
MutationObserver callbacks.

For example:

 mIsRunningOnCompositor will be false if the micro task for
 the MutationObserver is processed before building display list.

 mIsRunningOnCompositor will be true if there is no room to process
 the micro task before building display list.
2015-12-20 14:17:00 +01:00
Hiroyuki Ikezoe
e2f772ff7c Bug 1219543 - Part 1: isRunningOnCompositor flag is now a member of AnimationProperty. r=bbirtles 2015-12-20 14:16:00 +01:00
Brian Birtles
5e823e8dec Bug 1226118 part 12b - Rename CommonAnimationManager::GetAnimations to GetAnimationCollection; r=dholbert
This is to align with the existing GetAnimationCollection method that takes
a frame. Also, by making this name more specific hopefully it will be used less
since we are trying to move as much code as possible over to using EffectSet
instead of AnimationCollection.
2015-12-04 08:34:17 +09:00
L. David Baron
ed10b92bf9 Bug 978833 patch 19 - Fix ResolvedStyleCache to use Declaration rather than nsCSSKeyframeRule as keys. r=heycam
This isn't needed today, but it makes more sense, and if we ever gave
the cache a longer lifetime, it would be needed, since the
nsCSSKeyframeRule can maintain its identity across style changes whereas
a matched Declaration cannot.
2015-11-05 16:44:11 +08:00
L. David Baron
d3896c62bf Bug 978833 patch 12 - Use the css::Declaration instead of the css::StyleRule as the matching rule. r=heycam
This is the key change in this patch series; it changes the object we
use for style data (currently nsIStyleRule) identity.  It allows
removing some hacks we have to deal with that for StyleRule, and avoids
having to write similar hacks for nsCSSKeyframeRule and nsCSSPageRule
(which are broken without this).

I confirmed locally that it is this patch that fixes both of the todo_is
mochitests, by building and testing with the patch queue through patch
11, and again through patch 12.
2015-11-05 16:44:10 +08:00