Commit Graph

274 Commits

Author SHA1 Message Date
Lee Salzman
941b4c7134 Bug 771367 - Refactor GetAnimationContent and GetAnimationCollection into CommonAnimationManager to hide atom and pseudo-element voodoo. r=bbirtles 2015-07-01 14:43:13 -04:00
Lee Salzman
fad233b142 Bug 771367 - Support compositor animation for pseudo-elements. r=dbaron 2015-07-01 11:55:51 -04:00
L. David Baron
c28ce9340e Bug 1176969 - Disable OMT animation for any frame in a preserve-3d scene rather than only frames whose parent and child are in a preserve-3d scene. r=mattwoodrow
frame->Preserves3D() is whether the frame's parent has transform-style:
preserve-3d, which means that the frame is part of the same 3-D scene as
its parent.  frame->Preserves3DChildren() is whether the frame itself
has transform-style: preserve-3d, which means that the frame is part of
the same 3-D scene as its children.

Neither of these are valid cases for doing off-main-thread (OMT)
animation because all of the layers in a preserve-3d scene are currently
siblings of each other, rather than preserving ancestor/descendant
relationships.  This means that it's not valid to animate transform of
the parent on the compositor because the compositor animation won't
update any of its children that have layers.  Likewise, it's not valid
to animate transform of the child on the compositor because the code
that sends transform information to the compositor doesn't handle the
accumulation of transforms needed to get the "right" transform for the
child (i.e., with the transforms of its ancestors up to the top of the
3-D scene merged in).

This means that we do OMT animation for slightly fewer cases with the
patch than we did without the patch.  This means it's pretty low risk in
terms of correctness, although there's a chance it might regress
performance on one of the (somewhat limited) set of cases where the
optimization was valid.  (Bug 779598 covers doing OMT animation for
preserve-3d cases, and depends on the work ongoing in bug 1097464.)

The animate-preserve3d-parent.html reftest doesn't fail without the
patch, since something seems to invalidate in the test; it was testing
the testcase that showed correct behavior when the mouse was moving, so
this isn't incredibly surprising (although that invalidation from mouse
movement is itself worth debugging).  The animate-preserve3d-child.html
test does fail without the patch, though.

(With an initial transform of none instead of the 30deg transform, both
tests also show an invalidation bug without the patch.)
2015-06-30 11:29:55 -07:00
L. David Baron
b5de8d7239 Bug 1161049 patch 1 - Back out changeset 962e15b81684 (part of bug 947753) in order to fix the bug a different way. r=mstange
This patch seems to be leading to too many complications; it requires us
to predict whether a layer that would be created for an element will use
off-main-thread compositing prior to the creation of that layer, which
has led to complications on both Mac (fixed by the other patches in bug
947753) and Android (bug 1161049).
2015-05-08 15:56:36 +02:00
L. David Baron
6d9965aa23 Bug 947753 / Bug 1122526 - Don't claim to support off-main-thread animations when the nearest widget is not using OMT compositing. r=birtles
This moves the test for whether off-main-thread compositor is enabled
*earlier* in CanPerformOnCompositorThread, since
CanAnimatePropertyOnCompositor is called only from
CanPerformOnCompositorThread.  This change means we're using a more
accurate test for whether we actually have off-main-thread compositing
than the pref, since in some cases we won't use off-main-thread
compositing for certain widgets (e.g., transparent widgets on Windows)
even when the pref is enabled.
2015-04-16 18:36:29 -07: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
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
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
L. David Baron
5f35e8f020 Back out changeset 60b7888a323b (bug 947753 / bug 1122526) for Mac OS X mochitest-4 failure.
The failure was:
TEST-UNEXPECTED-FAIL | gfx/tests/mochitest/test_acceleration.html | Acceleration enabled on x86-64 OS X - didn't expect 0, but got it

I'm guessing this is because we're calling GetLayerManager earlier than
we were before.

CLOSED TREE
2015-04-16 20:19:03 -07:00
L. David Baron
74cc092e54 Bug 947753 / Bug 1122526 - Don't claim to support off-main-thread animations when the nearest widget is not using OMT compositing. r=birtles
This moves the test for whether off-main-thread compositor is enabled
*earlier* in CanPerformOnCompositorThread, since
CanAnimatePropertyOnCompositor is called only from
CanPerformOnCompositorThread.  This change means we're using a more
accurate test for whether we actually have off-main-thread compositing
than the pref, since in some cases we won't use off-main-thread
compositing for certain widgets (e.g., transparent widgets on Windows)
even when the pref is enabled.
2015-04-16 18:36:29 -07:00
Brian Birtles
625921b452 Bug 1153734 part 4 - Rename other uses of 'source' and 'source content'; r=jwatt
This patch also tightens up a one or two references to 'target effect' replacing
them with just 'effect'. This is because 'target effect' is longer and easily
confused with 'target element'. 'effect' should be sufficient. 'target element'
is a term from the Web Animations specification and in that context, simply
referring to the 'effect' would sound a little odd.
2015-04-15 08:48:21 +09: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
L. David Baron
e82b5181c4 Bug 1149848 patch 2 - Remove no-longer-needed flags to GetAnimationsForCompositor. r=birtles
This reverts all of bug 1109390 part 20 (except for a whitespace change
and a comment removal that patch 1 made irrelevant) and some of part 21.
2015-04-06 18:13:48 -07:00
L. David Baron
3ac0308bfb Bug 1149848 - Stop calling NotifyAnimated (and thus repeatedly cycling layer activity) when sending OMT animations to the compositor. r=birtles
I checked in gdb that with the patch, we're no longer calling
PresShell::Paint repeatedly on the testcase (whereas we are without the
patch).
2015-04-06 18:13:48 -07:00
Markus Stange
7e172378c8 Bug 1151346 - Make ActiveLayerTracker::IsOffsetOrMarginStyleAnimated respect CSS animations. r=roc 2015-04-05 22:53:51 -04:00
Brian Birtles
c2f771e043 Bug 1061364 - Don't force transitions to refresh their style rule; r=dbaron 2015-04-06 09:13:20 +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
Brian Birtles
2f1514b37b Bug 1117603 part 1 - Don't assume style rules have been refreshed in GetAnimationRule; r=dbaron
Typically when GetAnimationRule is called, at least for CSS Animations, the
animation style rule will have been refreshed. However, in some cases such as
when the Web Animations API is used, the style rule will be marked as needing
to be refreshed outside of the usual flow. This rule will be refreshed when
nsAnimationManager::WillRefresh flushes animations but if the refresh driver
for the chrome document fires first, we will visit GetAnimationRule before
this happens.

This patch removes the assertion that expects animations to have been
refreshed by the time we reach GetAnimationRule causing it to update
the animation style rule as necessary.
2015-03-24 09:06:06 +09:00
Brian Birtles
708ec0ab3f Bug 1109390 part 20 - Add an options flag to GetAnimationsForCompositor to control; r=jwatt
This patch adds an options flag to GetAnimationsForCompositor for two reasons.

a) We want to reuse this functionality in nsLayoutUtils.cpp rather than
   duplicating the same logic. To do that and maintain the existing behavior,
   however, we need to *not* update the active layer tracker when calling this
   from nsLayoutUtils.cpp.

b) It's surprising that GetAnimationsForCompositor also has this side effect of
   updating the active layer tracker. Adding this as an option makes it clear at
   the call site that this is what will happen.
2015-04-01 12:23:24 +09:00
L. David Baron
4fb65977dd Bug 847287 patch 11 - Only check that we can throttle animations once per refresh cycle (or invalidation of style rule), to make it cheaper to call EnsureStyleRuleFor more than once per refresh cycle. r=birtles
This saves some extra work that we don't need to do.

Mechanically, the patch moves a chunk of code that is around the last
part of the function and converts it to an early return that's slightly
earlier than that last part, thus also including the skipping of the
throttling checks in what we skip for the early return.

I want to do this here since patch 9 introduces a new call to
EnsureStyleRuleFor.
2015-03-31 15:05:55 -07:00
L. David Baron
24efa33dcc Bug 847287 patch 10 - Only call CheckNeedsRefresh if we might have changed mNeedsRefreshes, to make it cheaper to call EnsureStyleRuleFor more than once per refresh cycle. r=birtles
This saves some extra work that we don't need to do.

I want to do this here since patch 9 introduces a new call to
EnsureStyleRuleFor.
2015-03-31 15:05:55 -07:00
L. David Baron
a6e7a20e57 Bug 847287 patch 8 - Only update transition manager's cascade results when an animation starts or stops being in effect. r=birtles
This avoids some extra work that was added in bug 1125455 now that we
have a mechanism for detecting when animations start and stop being in
effect (introduced in patch 7).

This is also needed to prevent infinite recursion in patch 9.
2015-03-31 15:05:54 -07:00
L. David Baron
9fa1037b95 Bug 847287 patch 7 - Dynamically update cascade results when animations start or stop being in effect. r=birtles
This is an additional part of the main work in this bug; it keeps
mWinsInCascade updated in cases where we need to update it.
2015-03-31 15:05:54 -07:00
L. David Baron
b063019c94 Bug 847287 patch 5 - Add method to update animations on layer. r=birtles
This does somewhat less work than PostRestyleForAnimation, although I
believe PostRestyleForAnimation would be a sufficient alternative.

This is used in patch 6.
2015-03-31 15:05:54 -07:00
L. David Baron
ded5b5383c Bug 847287 patch 3 - Add assertions about consistency of the flags for animating on the compositor. r=birtles
These flags were added in patch 2.
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
Brian Birtles
e5a51a2e74 Bug 1109390 part 18 - Rename AnimationPlayer::IsRunning to IsPlaying and reuse IsInPlay definition; r=jwatt
This patch renames the confusing IsRunning method since IsRunning() is *not*
the same as (PlayState() == AnimationPlayState::Running). It also removes
the old definition to make better re-use of PlayState() and IsInPlay().
2015-03-27 18:01:00 +09:00
Brian Birtles
aea15ae14b Bug 1109390 part 16 - Update IsCurrent to take a player parameter; r=jwatt
In preparation for introducing IsInPlay (where "in play" is a term in the Web
Animations spec), this patch aligns the existing IsCurrent with the definition
in the spec that says an animation effect is only current if it is attached
to an animation (player in our current naming) that is not finished. In order
to ensure that we need to pass the animation/player into the method.

This actually changes the behavior of IsCurrent since now we will return false
for animations that are finished. As far as I can tell, all the call sites that
are requesting current animations should only be concerned with animations that
are actually running. If not, they need to be adjusted to look for animations
that are either current or in effect.
2015-03-27 17:44:38 +09:00
Carsten "Tomcat" Book
816420d635 Backed out changeset 550a27b00121 (bug 1117603) for perma OSX m-oth test failures on a CLOSED TREE 2015-03-20 10:25:28 +01:00
Carsten "Tomcat" Book
9773582b70 Backed out changeset 9590d9ed9e76 (bug 1117603) 2015-03-20 10:22:27 +01:00
Brian Birtles
eca94ded1b Bug 1117603 part 2 - Don't unregister from the refresh driver unless we are also queueing events; r=dbaron 2015-03-20 13:10:38 +09:00
Brian Birtles
6bb8b0c31c Bug 1117603 part 1 - Don't assume style rules have been refreshed in GetAnimationRule; r=dbaron
Typically when GetAnimationRule is called, at least for CSS Animations, the
animation style rule will have been refreshed. However, in some cases such as
when the Web Animations API is used, the style rule will be marked as needing
to be refreshed outside of the usual flow. This rule will be refreshed when
nsAnimationManager::WillRefresh flushes animations but if the refresh driver
for the chrome document fires first, we will visit GetAnimationRule before
this happens.

This patch removes the assertion that expects animations to have been
refreshed by the time we reach GetAnimationRule causing it to update
the animation style rule as necessary.
2015-03-20 13:10:38 +09: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
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
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
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
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
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
Nicholas Nethercote
0247de46d8 Bug 1127201 (attempt 2, part 1) - Replace most NS_ABORT_IF_FALSE calls with MOZ_ASSERT. r=Waldo. 2015-02-09 14:34:50 -08:00
Andrew McCreight
e048a7df33 Back out Bug 1127201 (part 2) for various problems. 2015-02-06 15:04:32 -08:00
Nicholas Nethercote
40ab0270d5 Bug 1127201 (part 2) - Convert all NS_ABORT_IF_FALSE calls to MOZ_ASSERT. r=Waldo. 2015-02-04 20:05:36 -08:00
Milan Loveless
79d0082bb2 Bug 1107595 - Changed spelling of behaviour to behavior in AnimationCommon.cpp; r=birtles 2014-12-04 12:37:28 -08:00
L. David Baron
ff080cde67 Bug 1100773 patch 2 - Convert style rule List methods to use fprintf_stderr. r=heycam
Note that getting decent logcat output on Android and B2G requires not
splitting lines of output across multiple fprintf_stderr calls.
2014-11-26 22:29:44 -08:00
L. David Baron
4bd15269cc Bug 1100773 patch 1 - Fix bracing of indent loops in style rule print functions. r=heycam 2014-11-26 22:29:44 -08:00
David Zbarsky
531eab435f Bug 1085769: Merge RulesMatching, GetAnimationPlayers, and GetAnimationRule r=birtles 2014-11-19 21:48:41 -05:00
Brian Birtles
3307c6ed04 Bug 1073336 part 16 - Factor out animation-layer related information to a common database; r=dbaron 2014-11-17 13:46:00 +09:00