Commit Graph

413 Commits

Author SHA1 Message Date
Brian Birtles
1e4625eae9 Bug 1171817 part 13 - Add override of HasLowerCompositeOrderThan for CSS transitions; r=dbaron
This patch is quite similar to the code added for CSS animations. We'll factor
out some the common code in a subsequent patch in this series.
2015-06-09 11:13:54 +09:00
Brian Birtles
b627b80a63 Bug 1171817 part 11 - Add CSSTransition::TransitionProperty(); r=dbaron
This patch adds a convenience method for getting the transition property for
a CSS transition (so we can use this when ordering CSS transitions).

We already have ElementPropertyTransition::TransitionProperty() so this might
seem to be redundant, however we add this now because:

* In the proposed CSS Transitions <-> Web Animations integration, the
  CSSTransition interface has a transitionProperty member so we'll need this
  function for that.
* Once we allow script to modify the transition, we'll need to track the
  original transition property for sorting purposes which is what this method
  should do.
* We'll possibly drop ElementPropertyTransition::TransitionProperty() in the
  future.
2015-06-09 11:13:54 +09:00
Brian Birtles
d31f6eaffa Bug 1171817 part 10 - Override sequence numbers for transitions; r=dbaron
Similar to the earlier patch in this series that changed the sequence number
handling for animations, this patch re-uses Animation::mSequenceNum to store
the animation generation number when each transition was generated. When the
transition is cancelled it reverts to using the default animation composite
ordering.
2015-06-09 11:13:54 +09:00
Brian Birtles
e154d3f3b1 Bug 1171817 part 3 - Add CSSTransition::GetOwningElement; r=dbaron
This patch applies the same treatment to CSS transitions that we applied to CSS
animations in the previous patch in this series.
2015-06-09 11:13:53 +09:00
Brian Birtles
aa2601d6e0 Bug 1179111 part 5 - Remove Name() methods; r=jwatt 2015-07-01 15:19:04 +09:00
Brian Birtles
3d089b0755 Bug 1178186 part 1 - Add CSSAnimation and CSSTransition interfaces; r=smaug 2015-06-30 10:00:39 +09:00
Carsten "Tomcat" Book
c2e7a43676 Backed out changeset 1e1ccffd51b8 (bug 1178186) for suspicion of causing bc2 test failures on OSX browser_bug427559.js 2015-07-07 14:22:33 +02:00
Carsten "Tomcat" Book
eeceb92839 Backed out changeset 22cafa2fd162 (bug 1179111) 2015-07-07 14:21:33 +02:00
Brian Birtles
186c0fbe7d Bug 1179111 part 5 - Remove Name() methods; r=jwatt 2015-07-01 15:19:04 +09:00
Brian Birtles
bc9eda9086 Bug 1178186 part 1 - Add CSSAnimation and CSSTransition interfaces; r=smaug 2015-06-30 10:00:39 +09:00
Brian Birtles
e3945987e3 Bug 1166164 part 5 - Make play() throw when it should seek to the end of an infinite effect; r=jwatt, r=smaug 2015-05-19 14:00:48 +09:00
Brian Birtles
700ef02e9e Bug 1164330 - Rename time fraction to (iteration) progress; r=jwatt 2015-05-13 13:57:35 +09:00
Brian Birtles
67c6bec9aa Bug 1159082 - Rename *Readonly animation interfaces to *ReadOnly. r=smaug 2015-04-30 09:06:43 -04:00
Carsten "Tomcat" Book
49dcd0d63c Backed out changeset 1b5fc672f0d4 (bug 1159082) for B2G ICS Emulator opt R6 test failures on a CLOSED TREE 2015-04-30 13:15:04 +02:00
Brian Birtles
e3179b0530 Bug 1159082 - Rename *Readonly animation interfaces to *ReadOnly; r=smaug 2015-04-28 10:16:45 +09:00
L. David Baron
700408b375 Bug 1144410 - Remove finished transitions when a frame transitions away from being display:none. r=birtles
Since bug 960465 patch 14, we've retained finished transitions in order
to handle the issues described in
https://lists.w3.org/Archives/Public/www-style/2015Jan/0444.html .  The
code that did this made the assumption that the transition manager is
notified of the full sequence of style changes that happen to an
element.  However, when an element becomes part of a display:none
subtree and then later becomes displayed again, the transition manager
is not notified of a style change when it becomes displayed again (when
we do not have the old style context).

This patch introduces code to prune the finished transitions when that
happens.

This really fixes only part of the set of problems described in bug
1158431, which also affect running transitions.  However, it's the part
of that set that was a regression from bug 960465, which introduced the
retention of finished transitions, and which makes these issues
substantially easier to hit.

I'd like to fix this part quickly because it's a regression and we
should backport the fix.

Without the patch, I confirmed that the following two tests fail:
INFO TEST-UNEXPECTED-FAIL | layout/style/test/test_transitions_dynamic_changes.html | bug 1144410 test - opacity after starting second transition - got 0, expected 1
INFO TEST-UNEXPECTED-FAIL | layout/style/test/test_transitions_dynamic_changes.html | bug 1144410 test - opacity during second transition - got 0, expected 0.5

With the patch, all the added tests pass.
2015-04-26 19:20:19 -07:00
Brian Birtles
f0bf6d1b5e Bug 1150807 part 3 - Call PostUpdate from Cancel; r=jwatt
This patch makes Cancel() call PostUpdate which clobbers certain state in style
so that animated style is correctly flushed when an animation is cancelled.

The main difficulty with this is that we *don't* want to call this when we're
cancelling an animation as a result of a style update or else we'll trigger
needless work. The pattern elsewhere has been to define a *FromStyle() method
for this case (e.g. CSSAnimation::PlayFromStyle, PauseFromStyle). This isn't
ideal because there's always the danger we will forget to call the appropriate
*FromStyle method. It is, however, consistent. Hopefully in bug 1151731 we'll
find a better way of expressing this.
2015-04-27 08:53:19 +09:00
Brian Birtles
d3540b27a7 Bug 1154615 part 7 - Rename CSSAnimationPlayer and CSSTransitionPlayer; r=jwatt 2015-04-21 10:22:10 +09:00
Brian Birtles
e3a3e6d39d Bug 1154615 part 6 - Rename references to players within layout/; r=jwatt
We will rename CSSAnimationPlayer/CSSTransitionPlayer in a separate patch
2015-04-21 10:22:10 +09:00
Brian Birtles
d81bc13082 Bug 1154615 part 5 - Rename AnimationPlayerCollection to AnimationCollection; r=jwatt 2015-04-21 10:22:10 +09:00
Brian Birtles
4679b63be2 Bug 1154615 part 2 - Rename PendingPlayerTracker to PendingAnimationTracker; r=jwatt
This patch also updates the method names on PendingAnimationTracker but leaves
a number of local variables which will be fixed in a subsequent patch.
2015-04-21 10:22:09 +09:00
Brian Birtles
245d56b34b Bug 1154615 part 1 - Rename AnimationPlayer to Animation in WebIDL; r=smaug
This patch is a fairly minimal rename of the AnimationPlayer interface. It
leaves a bunch of local variables and helper classes still using the word
"player". These will be addressed in subsequent patches that don't require DOM
peer review.
2015-04-21 10:22:09 +09:00
Jonathan Watt
22d72ab6d2 Bug 1149990 - Support replaying of finished CSS transitions by supporting setting of currentTime/startTime. r=birtles 2015-04-06 23:48:55 +01:00
Brian Birtles
a474c0c6c3 Bug 1153734 part 3 - Rename AnimationPlayer.source to AnimationPlayer.effect; r=smaug
There are still some other references to "source" in AnimationPlayer such as
HasInPlayerSource and UpdateSourceContent. These are renamed in a subsequent
patch (that doesn't require DOM peer review).
2015-04-15 08:48:21 +09:00
Brian Birtles
b23bc79d92 Bug 1153734 part 2 - Rename Animation to KeyframeEffectReadonly; r=smaug
We define KeyframeEffectReadonly in KeyframeEffect.cpp since Web Animations also
defines KeyframeEffect and when we come to implement that I expect we'll define
it in the same class, maybe even using the same object.

This patch also adds a few missing includes in places where
KeyframeEffectReadonly is used so that we're not just cargo-culting it in.
2015-04-15 08:48:21 +09:00
Brian Birtles
b7500f3d66 Bug 1122414 part 2 - Return the transitionProperty from Animation.name for CSS transitions; r=jwatt
This is a bit awkward. We lazily set mName to the transition property and then
return it. The reasons for this approach are:

* We don't really want to eagerly fill in mName for all transitions since in
  99% of cases we'll never use it and this will lead to wasted allocations.

* The signature of Name() returns a const nsString reference. This is because
  Name() is used when building CSS Animations (to compare different copies of
  the same animation when updating). For that case we don't really want to
  generate unnecessary copies of nsString objects so we return a reference.
  However, that means for transitions as well we need to return a reference so
  we can't just generate a temporary string on-demand.

  As a result we also have to const-cast ourselves so we can update the mName
  member. We could make mName mutable but seeing as it's only set once, the
  const_cast seems more appropriate.
2015-04-14 09:13:27 +09:00
Brian Birtles
baf7e747c6 Bug 1122414 part 1 - Factor out a TransitionProperty method in ElementPropertyTransition; r=jwatt 2015-04-14 09:11:44 +09:00
Brian Birtles
c2050e93b3 Bug 1152171 part 2 - Rename AnimationTimeline to DocumentTimeline; r=smaug
And then re-add AnimationTimeline as an abstract super-interface of
DocumentTimeline.
2015-04-10 10:34:22 +09:00
Brian Birtles
ca7a4b3285 Bug 1117603 part 2 - Don't unregister from the refresh driver unless we are also queueing events; r=dbaron 2015-03-24 09:06:06 +09:00
L. David Baron
6867486661 Bug 847287 patch 9 - Use fully-updated style rule for animations when updating cascade results for transitions. r=birtles
I don't have a test case that requires this, but it seems like a good
idea.  (It was an incorrect theory for fixing a test failure that I was
debugging, but still seems worth doing.)
2015-03-31 15:05:55 -07:00
L. David Baron
4f21953ec7 Bug 847287 patch 6 - Set mWinsInCascade for CSS Animations. r=birtles
This is the main patch for the bug; it makes us use the mechanism added
in bug 1125455 to avoid sending animations that aren't currently
applying to the compositor.

Patch 7 is needed to make this code rerun in all the cases where we need
to rerun it, though.
2015-03-31 15:05:54 -07:00
Jonathan Watt
0dd92e79dd Bug 1145246, part 3 - Update layout code for the rename of Animatable.getAnimationPlayers() to Animatable.getAnimations(). r=birtles 2015-03-20 18:20:49 +00:00
L. David Baron
ee3bc6abe2 Bug 1125455 patch 4 - For main-thread application of transitions, don't apply transitions when animations are also running. r=birtles
I've verified locally that this patch (not others in this series) fixes
the test failures that match the test changes in this patch.
2015-03-19 21:10:00 -07:00
L. David Baron
2e8a29973d Bug 1125455 patch 2 - Set mWinsInCascade for transitions based on whether there are animations. r=birtles 2015-03-19 21:10:00 -07:00
L. David Baron
915e885e08 Bug 1125455 patch 1 - Add boolean for whether an animation of a property wins in the CSS cascade. r=birtles 2015-03-19 21:10:00 -07:00
Carsten "Tomcat" Book
53ee3d825d Backed out 7 changesets (bug 1125455) for test failures in m1 test_animation-player-ready.html on a CLOSED TREE
Backed out changeset 8a316064caff (bug 1125455)
Backed out changeset ad326dbcbd03 (bug 1125455)
Backed out changeset 83dab9578e23 (bug 1125455)
Backed out changeset 5bd86c20cd02 (bug 1125455)
Backed out changeset 751177025dcb (bug 1125455)
Backed out changeset f60c5b4adf84 (bug 1125455)
Backed out changeset 326ef9a86c85 (bug 1125455)
2015-03-18 16:32:54 +01:00
L. David Baron
39774dfc6b Bug 1125455 patch 4 - For main-thread application of transitions, don't apply transitions when animations are also running. r=birtles
I've verified locally that this patch (not others in this series) fixes
the test failures that match the test changes in this patch.
2015-03-18 07:35:30 -07:00
L. David Baron
408cbb0f2a Bug 1125455 patch 2 - Set mWinsInCascade for transitions based on whether there are animations. r=birtles 2015-03-18 07:35:30 -07:00
L. David Baron
e09634962c Bug 1125455 patch 1 - Add boolean for whether an animation of a property wins in the CSS cascade. r=birtles 2015-03-18 07:35:29 -07:00
Cameron McCormack
98bc793afc Bug 1123523 - Part 8: Dispatch nsIAnimationObserver notifications when an animation is added or removed. r=birtles 2015-03-14 16:34:40 +11:00
Andrea Marchesini
2ce3453b15 Bug 1134280 - Get rid of Tag() - patch 2.12 - layout/style, layout/svg - Fix all the occurrences, m=smaug, r=surkov 2015-03-03 11:09:00 +00:00
Cameron McCormack
5393dd83f3 Bug 1134379 - Cancel old AnimationPlayer when redirecting a transition. r=birtles 2015-02-19 11:52:36 +11:00
L. David Baron
5824028112 Bug 1133375 - Condition starting (or cancelling) CSS transitions on the combined duration, rather than delay and duration both being exactly 0. r=birtles
The two count mochitests fail without the patch (the value tests pass,
though they exist partly just to flush); all tests pass with the patch.
2015-02-19 13:49:51 +13:00
L. David Baron
54a0f52b48 Bug 960465 patch 17 - Remove separate animation and non-animation phases of restyling. r=birtles
Note that this means that when we start transitions, we post restyles
that are processed during the current restyling operation, rather than
in a later phase.  This depends on patch 11, which makes the transition
manager skip style changes that it posts while starting transitions, to
ensure that this doesn't lead to an infinite loop.  This also depends on
patch 16, which only consumes restyle data for the primary frame, to
ensure that the animation restyles posted are processed properly.  It
also depends on patch 14, which makes us retain data on finished
transitions, to avoid triggering extra transitions on descendants when
both an ancestor and a descendant transition an inherited property, and
the descendant does so faster.

This fixes a known failure in layout/style/test/test_animations.html and
test_animations_omta.html (as visible in the patch).  I believe this is
because this patch changes us to compute keyframe values for animations
on top of a style context *with* animation data rather than one without,
which means what we're computing them on top of changes each time.  (The
purpose of patch 3 was to avoid this in the case where avoiding it
matters, i.e., implicit 0% and 100% keyframes.)
2015-02-17 11:15:05 +13:00
L. David Baron
c1d85d0241 Bug 960465 patch 14 - Retain finished transitions until the next style change or until removed from transition-property. r=birtles
Note that this increases memory use for completed transitions since we
don't throw away the data when the transitions complete.  That said,
this matches what we do for CSS Animations, and it's needed (once we
switch to the new rules for starting transitions) to maintain the
invariant that unrelated style changes don't trigger transitions.

The storage issues could be optimized in the future if it turns out to
be a problem, but I think that's unlikely, given that we'll never store
more than one for any element+property combination.
2015-02-17 11:15:04 +13:00
L. David Baron
cb0925fbc0 Bug 960465 patch 13 - Remove the cover rule code, which became unused in the previous patch. r=birtles 2015-02-17 11:15:04 +13:00
L. David Baron
efe91d6c72 Bug 960465 patch 12 - Instead of using the full style covered by the cover rule as the parent style for descendents when we've tried starting transitions, use the after-change style. r=birtles
This switches to the new rules for how transitions start on descendants
when also starting on ancestors.
2015-02-17 11:15:03 +13:00
L. David Baron
dadbe49b60 Bug 960465 patch 11 - nsTransitionManager should skip style changes that it posted while starting transitions. r=birtles
This will be needed when (in later patches) we stop separating animation
phases.
2015-02-17 11:15:03 +13:00
L. David Baron
cf69ecb8af Bug 960465 patch 10 - Invalidate the collection's style rule when we stop some but not all transitions. r=birtles 2015-02-17 11:15:03 +13:00
L. David Baron
4eac088a04 Bug 960465 patch 9 - Move the addition of the cover rule into nsTransitionManager::StyleContextChanged so that later patches can make it other than just addition of a rule. r=birtles 2015-02-17 11:15:02 +13:00