Commit Graph

152 Commits

Author SHA1 Message Date
Hiroyuki Ikezoe
d65d560c39 Bug 1340958 - Templatize ComposeStyle. r=birtles
Later in this patch series we will replace ServoAnimationRule with a hashmap.
At that point, we would like to pass the hashmap to ComposeStyle. In order
to achieve that, this patch templatizes the 'animation rule' parameter of
ComposeStyle in both Animation and KeyframeEffectReadOnly so that it can
represent a hashmap instead.

MozReview-Commit-ID: H5bMxjN3W8n
2017-03-17 13:22:13 +09:00
Hiroyuki Ikezoe
aab08dd5f9 Bug 1340958 - Do not call EffectCompositor::GetServoAnimationRule for print preview. r=heycam
The only one caller of GetServoAnimationRule is Gecko_GetAnimationRule.
There is no risk that pres context is destroyed in Gecko_GetAnimationRule.

MozReview-Commit-ID: 52pxbCiCNoJ
2017-03-17 12:48:34 +09:00
Hiroyuki Ikezoe
cf65f136ac Bug 1347806 - Fix pseudo nsIAtom for ::before and ::after. r=birtles
cssPseudoElementBeforeProperty and cssPseudoElementAfterProperty are for
CSSPseudoElement.

MozReview-Commit-ID: 3WETv4QeC5
2017-03-16 14:01:44 +09:00
Boris Chiou
145c1a6575 Bug 1339704 - Part 2 - Filter out unwanted CascadeLevel::Transitions. r=birtles,hiro
We always call TElement::get_animation_rules() for both cascade levels while
there are animations or transitions, so we want to handle the following cases:
1. Have both CascadeLevel::Animations and CascadeLevel::Transitions:
  * We use EffectSet::mPropertiesForAnimationsLevel to filter out
    CascadeLevel::Transitions because transitions are suppressed when both
    are presented.
2. Have CascadeLevel::Animations, but don't have CascadeLevel::Transitions:
  * We also use EffectSet::mPropertiesForAnimationsLevel to filter out
    the unwanted CascadeLevel::Transitions.
3. Don't Have CascadeLevel::Animations, but have CascadeLevel::Transitions:
  * EffectSet::mPropertiesForAnimationsLevel doesn't work for this case.
    In Gecko, mElementsToRestyle can help us to filter out the unwanted
    CascadeLevel::Animations, However, mElementsToRestyle is cleared in
    Pre-Traversal, so now we rely on the cascade ordering of transitions to
    override animations. I think we still need to optimize this eventually.
4. No animations:
  * EffectSet helps us to check if there is any animations/transitions.

Therefore, we need to call MaybeUpdateCascadeResults(), which updates
mPropertiesForAnimationsLevel, in Pre-Traversal.

MozReview-Commit-ID: IHYw56EX7Ta
2017-03-13 21:09:50 +08:00
Boris Chiou
aad2d0b3f5 Bug 1339704 - Part 1 - Rename nsCSSPropertyIDSet::Invert as Inverse. r=hiro
This makes it more obvious that the object is not being modified but a
new object is being returned.

MozReview-Commit-ID: A6dH8f12h5A
2017-03-14 11:30:20 +08:00
BharatR123
72f593ede3 Bug 1302888 - Replace GetPresContext() with nsContentUtils::GetContextForContent() to obtain nsPresContext* in dom/animation r=hiro
Edited all function calls in KeyFrameEffectReadOnly.cpp and one function call in EffectCompositor.cpp

MozReview-Commit-ID: BzSHLZna4xX
2017-03-13 20:39:49 +05:30
Hiroyuki Ikezoe
f85a661e97 Bug 1341985 - Trigger the second traversal for updating CSS animations in the case of Servo_ResolveStyleLazily. r=heycam
MozReview-Commit-ID: 7E4unP9M7FQ
2017-03-10 11:53:19 +09:00
Hiroyuki Ikezoe
d9c3518720 Bug 1341985 - Trigger the second traversal for updating CSS animations. r=birtles,heycam
The restyle request during restyling is a result of creating/updating/removing
CSS animations that will come from a SequentialTask which will be implemented
in a subsequent patch.

MozReview-Commit-ID: JoAqvcN3y51
2017-03-10 11:53:19 +09:00
Hiroyuki Ikezoe
500774de7b Bug 1344619 - Part 7: Drop EffectCompositor::ClearElementsToRestyle. r=birtles
MozReview-Commit-ID: DlTj2OR0wI0
2017-03-09 05:20:17 +09:00
Hiroyuki Ikezoe
2648271681 Bug 1344619 - Part 5: Introduce EffectCompositor::PreTraverse() for an element. r=birtles
MozReview-Commit-ID: KCLkwIE8LTM
2017-03-09 05:20:17 +09:00
Hiroyuki Ikezoe
a351785413 Bug 1344619 - Part 2: Introduce EffectCompositor::PreTraverse(). r=birtles
MozReview-Commit-ID: 6ijDJttB9eo
2017-03-09 05:20:17 +09:00
Hiroyuki Ikezoe
0388ff334b Bug 1344619 - Part 1: Introduce WillCompose() to update various state that we need to update as the result of ComposeStyle(). r=birtles
MozReview-Commit-ID: JznBR3OghKG
2017-03-09 05:20:17 +09:00
Hiroyuki Ikezoe
3c41587983 Bug 1341987 - Part 3: Update the last refresh time for transform only when we send transform animations to the compositor. r=birtles
We don't need to update the time during composing style, we just need to
update when transform animations are sent to the compositor. The most
recent refresh time of nsRefreshDriver should be the same in either side.
If the time is skewed, that means we skip composing style, if it happened
that's another bug.

MozReview-Commit-ID: Dxtuocf1ml1
2017-02-27 11:34:46 +09:00
Hiroyuki Ikezoe
bce3f36bb2 Bug 1341987 - Part 2: Drop cascade level from last refresh time for transform. r=birtles
We no longer need separate time for cascade levels respectively since we do
send all type of animations on the same element to the compositor regardless
of cascade level.

MozReview-Commit-ID: 7cGQGE3yHvm
2017-02-27 11:30:56 +09:00
Hiroyuki Ikezoe
42243bd080 Bug 1341987 - Part 1: Rename AnimationRuleRefreshTime to LastTransformSyncTime. r=birtles
It's just for transform animations on the compositor.

MozReview-Commit-ID: 288CcG4kko4
2017-02-27 11:29:27 +09:00
Cameron McCormack
87f3ad6dfb Bug 1297899 - Part 6: Move RestyleManagerHandle functionality into RestyleManager. r=bholley
MozReview-Commit-ID: 7lsti0bGzNr
2017-02-13 11:21:33 +08:00
Hiroyuki Ikezoe
a6db5ea712 Bug 1331704 - Part 3: Drop all of unused stuff. r=birtles a=abillings
MozReview-Commit-ID: BWAC0iZLw6t
2017-02-11 19:11:45 +09:00
Sebastian Hengst
0a388f09bd Backed out changeset 0077d103e862 (bug 1331704) 2017-02-11 11:32:10 +01:00
Hiroyuki Ikezoe
db4e65d866 Bug 1331704 - Part 3: Drop all of unused stuff. r=birtles a=abillings
MozReview-Commit-ID: BWAC0iZLw6t
2017-02-11 19:11:45 +09:00
Cameron McCormack
c6a66bcfd8 Bug 1334735 - Part 2: Add separate flag to track need to flush throttled animations. r=bz,birtles
MozReview-Commit-ID: 6Vi3laKcbmG
2017-02-10 10:42:28 +08:00
Cameron McCormack
334e0fe231 Bug 1334735 - Part 1: Move need style/flush flags from document to pres shell. r=bz
MozReview-Commit-ID: 2Amf9yGRiJA
2017-02-10 10:42:27 +08:00
Hiroyuki Ikezoe
eb36bd1a03 Bug 1334982 - Convert animation restyle hints only if we are not in process of restyling. r=heycam
MozReview-Commit-ID: 4pWeWhGaTJv
2017-01-31 16:37:39 +09:00
Boris Chiou
8019f824cb Bug 1324691 - Part 1: Use warnings instead of assertions for unsupported OMTA. r=heycam
Make FindAnimationsForCompositor return false because we don't support
OMTA, and use warnings, instead of assertions, because animations sill
work.

We call RequestRestyle(Layer) not only for OMTA but also for
non-compositor-driven animations, so just skip the animation generation part,
and use warnings, instead of assertions.

MozReview-Commit-ID: LNw5aC8jOvh
2017-01-26 15:27:44 +08:00
Boris Chiou
1f024d5ff3 Bug 1317209 - Part 5: Trigger composeStyle if there is an animation. r=heycam
1. Add one new FFI, Gecko_GetAnimationRule, which will try
   to update the animation rule and retrieve a ServoAnimationRule
   from EffectSet.
2. Add GetServoAnimationRule, which calls Animation::ComposeStyle and updates
   mElementsToRestyle.
3. There is no eRestyle_{CSSAnimations|CSSTransitions}, so we use
   eRestyle_Self and eRestyle_Subtree for stylo.

MozReview-Commit-ID: 9RpJurPSFMk
2017-01-24 15:27:56 +08:00
Boris Chiou
9bb79bff75 Bug 1317209 - Part 1: Introduce ServoAnimationRule and implement uncompute FFI. r=heycam,manishearth
1. Introduce ServoAnimationRule, which is an equivalent of AnimValuesStyleRule.
2. Wrap ServoAnimationRule and AnimValuesStyleRule into a struct, and
   use it as the parameter of Animation::ComposeStyle and
   KeyframeEffectReadOnly::ComposeStyle.
3. Uncompute the RawServoAnimationValues in ServoAnimationRule when we
   need it.

MozReview-Commit-ID: HahXDYBCAhH
2017-01-24 15:19:18 +08:00
Hiroyuki Ikezoe
6044c74e91 Bug 1330190 - Part 2: Add a new function named ResolveStyleWithoutAnimation. r=heycam
Unlike the other one this function does not need an old nsStyleContext.
This function just resolves style without all animation data in the first place.
The existing ResolveStyleWithoutAnimation is renamed to
ResolveStyleByRemovingAnimation.

MozReview-Commit-ID: 1RmCQNw0MmW
2017-01-16 16:57:13 +09:00
Hiroyuki Ikezoe
09f4791ea1 Bug 1322382 - Add EffectCompositor::GetBaseStyle for nsIFrame. r=birtles
Currently this function is used when an nsIFrame is generated by reframing. In
reframing, we call EffectCompositor::UpdateEffectProperties, as a result, we
have to clear the base style that we resolved once. So, for such cases, we need
to re-resolve the base style with the style context that is associated with the
nsIFrame.

MozReview-Commit-ID: F90OuF44SPI
2016-12-10 09:16:33 +09:00
Brian Birtles
3f905c79ce Bug 1301305 - Notify animations when they should synchronize with geometric animations; r=hiro
MozReview-Commit-ID: 9Ploi5UwseA
2016-12-02 10:21:11 +09:00
Brian Birtles
adb08b5c74 Bug 1301305 - Factor out check for main-thread synchronization to a method on Animation; r=hiro
This should be easier to read and provide us a convenient place to check for
other cases where we need to synchronize with the main thread (such as the
change introduced in this bug where we synchronize with other animations
started at the same time).

MozReview-Commit-ID: 8iuA7P4ycwM
2016-12-02 10:13:06 +09:00
Hiroyuki Ikezoe
d6f70f8d26 Bug 1305325 - Part 11: Cache non-animated base values. r=birtles
This patch adds a hashtable to store the non-animated base style of each
property in EffectSet class if the following conditions are met.

1) the effect is the lowest priority of the effect
2) the effect is additive or accumulative

The styles are stored as StyleAnimationValue objects since it's handy class to
store a CSS value for different properties.

MozReview-Commit-ID: 1MZV7MnqzfI
2016-12-04 08:07:40 +09:00
Hiroyuki Ikezoe
d8041fa2b6 Bug 1305325 - Part 9: Send animations even if it's paused, finished or zero playback rate. r=birtles.
If all of animations on an element are paused, finished or zero playback rate,
we don't send those animations to the compositor.
Also in this change, we send zero active duration animations to the compositor
in the same way as normail animations.

MozReview-Commit-ID: CHjv6Buy5fa
2016-12-02 15:34:13 +09:00
Hiroyuki Ikezoe
24bd60c4e9 Bug 1305325 - Part 4: Add a function that returns the resolved base style on an element for a given property with nsStyleContext. r=birtles
MozReview-Commit-ID: FPzyX9fxxx3
2016-11-16 06:30:57 +09:00
Hiroyuki Ikezoe
bfbe5cdf92 Bug 1318697 - Part 1: Skip composing styles for properties depending on cascade level. r=birtles
When we are composing style for the Animations level of the cascade,
if we have transitions-level animations, we *also* need to compose them if we
have animations-level animations that build on top of them using additive or
accumulative composite modes.

However, we should not build those transitions-level animations unless they will
be built on or overridden by a regular animations-level animation. Otherwise
we will end up with transitions-level animations in the animations-level and
while transitions-level will override the animations-level in the cascade,
once the transition finishes there will be nothing to remove the cached
animations-level animation rule.

MozReview-Commit-ID: LaRabzDSsO5
2016-11-29 15:04:17 +09:00
Cameron McCormack
3bd168f1a5 Bug 1319336 - Add some assertions and early returns to animation code to make stylo tests progress further. r=birtles
MozReview-Commit-ID: 14rghu0zYG1
2016-11-24 12:45:51 +08:00
Nathan Froyd
844a073368 Bug 1311068 - remove InitializerList.h; r=botond
We needed this polyfill for <initializer_list> when some of our C++
standard libraries did not support said header.  They all do now, so the
polyfill is redundant.
2016-10-19 00:33:14 -04:00
Hiroyuki Ikezoe
3f94f938ab Bug 1223658 - Part 5: Send animations to compositor even though it's in delay phase. r=birtles
To send animations to compositor in the delay phase we need to
modify Animation::IsPlaying returning true in the delay phase.

Note about background-position-in-delay.html:
After this patch, background-position animation also creates an active layer
from its delay phase.

Also note about test cases in test_animations_omta.html:
After landing bug 1279071, getOMTAStyle() returns the style value only
specified by animations, also in this patch we don't apply any opacity or
transform values in the delay phase, as a result we can't tell animating
value during delay phase on the compositor.

MozReview-Commit-ID: ILYKig3c08d
2016-10-14 19:14:12 +09:00
Hiroyuki Ikezoe
0d6fbdaea1 Bug 1278136 - Part 5: Create a stacking context for opacity/transform animations even if it's in delay phase and even if the property is overridden by !important rules. r=birtles
This patch introduces a new functions named HasEffectiveAnimationOfProperty.
This function checks that a given CSS property is overridden by !important
rules.
On the other hand, now KeyframeEffetReadOnly::HasAnimationOfProperty() does
just check that the effect has a given CSS property.  This is used to create
a stacking context because we should create a stacking context for opacity or
transform animations even if the property is overridden by !important rules.

Note about no-stacking-context-(opacity|transform)-removing-animation-in-delay.html
Before this patch we don't create any stacking context for animations overridden
by !important rules, but after this patch we do create a stacking context for
such animations.  As a result, in the test case we did paint a stacking context
in the first rAF callback and then in the second rAF callback we did clear the
painted stacking context. Unfortunately sometimes the second rAF callback was
called prior to clear the stacking context on the compositor because of
compositor delay. To avoid this situation, we have to wait for MozAfterPaint
instead of rAF callback.

MozReview-Commit-ID: AG1Y0IgoB3U
2016-10-13 16:54:25 +09:00
Hiroyuki Ikezoe
0ce2732c78 Bug 1307295 - Do not request restyle for animations on orphaned element. r=birtles
Also we skip to update the cascade and compose style for orphaned elements if
the animation reqeusted restyle but the target element has been removed from
document before a subsequent tick.

MozReview-Commit-ID: 3I6uyvuSPO5
2016-10-12 15:58:53 +09:00
Hiroyuki Ikezoe
293dcb19aa Bug 1304922 - Part 9: Early return from FindAnimationsForCompositor() if we have neither transitions and animations level effect for a given property. r=birtles
MozReview-Commit-ID: 8BZkKA2Jcs1
2016-10-05 14:53:58 +09:00
Hiroyuki Ikezoe
e0b5695bf6 Bug 1304922 - Part 7: Drop mWinsInCascade. r=birtles
MozReview-Commit-ID: 1q4glZenZNa
2016-10-05 14:48:05 +09:00
Hiroyuki Ikezoe
70a6a0cd0c Bug 1304922 - Part 6: Introduce mPropertiesWithImportantRules and mPropertiesForAnimationsLevel and use it to detect conditions that we need to update layers. r=birtles
This patch also makes composite order lowest to highest, as a result we also
need to replace mWinsInCascade checks with the the properties.
The mWinsInCascade membed itself will be removed in a subsequent patch.

Now we call RequestRestyle(Layer) respectively for transition and animation,
so a test case in test_restyles.html works as expected.

And now lower-priority animations are also sent to the compositor so this patch
fixed some tests in test_running_on_compositor.html and
test_animation_performance_warning.html

MozReview-Commit-ID: BchUsJbmatg
2016-10-05 14:42:56 +09:00
Hiroyuki Ikezoe
e52c2a0e9a Bug 1304922 - Part 2: Sort animation array before sending animations to the compositor. r=birtles
The result animatons of FindAnimationsForCompositor() should be sorted
by composite order because SampleAnimations() on the compositor expects
the animations are sorted by the order.

MozReview-Commit-ID: 4eI4EldFVcu
2016-10-05 14:26:25 +09:00
Brian Birtles
cf51ad1c35 Bug 1300045 part 2 - Split KeyframeEffect.cpp into KeyframeEffect{ReadOnly}.cpp r=hiro,smaug
MozReview-Commit-ID: DdBEicunApv
2016-09-04 16:34:21 +09:00
Jonathan Chan
2eeb9e0a7f Bug 1293739 - Part 2: Rename nsCSSPropertySet to nsCSSPropertyIDSet. r=dholbert
The previous patch in this series renamed nsCSSProperty to nsCSSPropertyID.
This patch renames nsCSSPropertySet to nsCSSPropertyIDSet accordingly.

This patch is generated by the following commands (note: if you're running
using OS X's sed, which accepts slightly different flags, you'll have to
specify an actual backup suffix in -i, or use gsed from Homebrew):

  hg stat -c \
  | cut -c 3-  \
  | tr '\n' '\0' \
  | xargs -0 -P 8 gsed --follow-symlinks 's/\bnsCSSPropertySet\b/nsCSSPropertyIDSet/g' -i''

Then:

  hg mv layout/style/nsCSSPropertySet.h layout/style/nsCSSPropertyIDSet.h

... and finally, manually renaming nsCSSPropertySet in the include guard in
nsCSSPropertyIDSet.h.

(NOTE: Re-landing this patch on a CLOSED TREE to correctly-address the merge bustage that closed the tree.)

MozReview-Commit-ID: ASUNs7FWbKP
2016-08-16 18:46:58 -07:00
Jonathan Chan
e201b93c16 Bug 1293739 - Part 1: Rename nsCSSProperty to nsCSSPropertyID. r=dholbert
This patch is generated by the following commands (note: if you're running
using OS X's sed, which accepts slightly different flags, you'll have to
specify an actual backup suffix in -i, or use gsed from Homebrew):

  hg stat -c \
  | cut -c 3-  \
  | tr '\n' '\0' \
  | xargs -0 -P 8 gsed --follow-symlinks 's/\bnsCSSProperty\b/nsCSSPropertyID/g' -i''

Then:

  hg mv layout/style/nsCSSProperty.h layout/style/nsCSSPropertyID.h

... and finally, manually renaming nsCSSProperty in the include guard in
nsCSSProperty.h.

MozReview-Commit-ID: ZV6jyvmLfA
2016-08-16 18:37:48 -07:00
Gregory Szorc
3bcd02ebea Backed out changesets dcdb85fc5517, 702bca0deee2, 9cKX8gC1ATA (bug 1293739) for build bustage; a=bustage
The merge from inbound to central conflicted with the merge from
autoland to central, it appears. Per tree rules, the commit from the
autoland repo wins and the inbound commit gets backed out.

CLOSED TREE
2016-08-16 17:50:40 -07:00
Jonathan Chan
fafebb61e5 Bug 1293739 - Part 2: Rename nsCSSPropertySet to nsCSSPropertyIDSet. r=dholbert
The previous patch in this series renamed nsCSSProperty to nsCSSPropertyID.
This patch renames nsCSSPropertySet to nsCSSPropertyIDSet accordingly.

This patch is generated by the following commands (note: if you're running
using OS X's sed, which accepts slightly different flags, you'll have to
specify an actual backup suffix in -i, or use gsed from Homebrew):

  hg stat -c \
  | cut -c 3-  \
  | tr '\n' '\0' \
  | xargs -0 -P 8 gsed --follow-symlinks 's/\bnsCSSPropertySet\b/nsCSSPropertyIDSet/g' -i''

Then:

  hg mv layout/style/nsCSSPropertySet.h layout/style/nsCSSPropertyIDSet.h

... and finally, manually renaming nsCSSPropertySet in the include guard in
nsCSSPropertyIDSet.h.

MozReview-Commit-ID: ASUNs7FWbKP
2016-08-09 16:28:21 -07:00
Jonathan Chan
23ccd0531f Bug 1293739 - Part 1: Rename nsCSSProperty to nsCSSPropertyID. r=dholbert
This patch is generated by the following commands (note: if you're running
using OS X's sed, which accepts slightly different flags, you'll have to
specify an actual backup suffix in -i, or use gsed from Homebrew):

  hg stat -c \
  | cut -c 3-  \
  | tr '\n' '\0' \
  | xargs -0 -P 8 gsed --follow-symlinks 's/\bnsCSSProperty\b/nsCSSPropertyID/g' -i''

Then:

  hg mv layout/style/nsCSSProperty.h layout/style/nsCSSPropertyID.h

... and finally, manually renaming nsCSSProperty in the include guard in
nsCSSProperty.h.

MozReview-Commit-ID: ZV6jyvmLfA
2016-08-09 16:28:19 -07:00
Matt Woodrow
9a8304b054 Bug 1282312 - Part 2: Disable async animations when we have rendering observers. r=bbirtles 2016-07-29 17:58:32 +12:00
Hiroyuki Ikezoe
9dd7474656 Bug 1285407 - Part 4: Drop EffectCompositor::MaybeUpdateCascadeResults(Element*, CSSPseudoElementType) because it's essentially the same as another one. r=birtles
MozReview-Commit-ID: 2Locox5zmP4
2016-07-11 17:28:19 +09:00