Commit Graph

191 Commits

Author SHA1 Message Date
Hiroyuki Ikezoe
ff89ef496a Bug 1325193 - Stop processing KeyframeEffectReadOnly::UpdateProperties while composing the same effect's style. r=birtles 2017-01-10 09:49:05 +09:00
Hiroyuki Ikezoe
4f4daacdfb Bug 1311620 - Part 5: Implement effect composite(add). r=birtles
MozReview-Commit-ID: 7t6CD3VibNS
2016-12-24 19:54:42 +09:00
Hiroyuki Ikezoe
e84cd6194f Bug 1311620 - Part 4: Implement keyframe composite(add). r=birtles
This patch also fixes expected computed offset values in frame at 0.5 offset for
add composite.

MozReview-Commit-ID: 8PNp237NoV4
2016-12-24 19:54:27 +09:00
Hiroyuki Ikezoe
dd61e4a549 Bug 1322291 - Part 2: Make sure that the base style is set even if additive or accumulates animations are in the delay phase. r=birtles
Before this patch we skipped KeyframeEffectReadOnly::ComposeStyle() for
animations that are not in effect.
After this patch we call KeyframeEffectReadOnly::ComposeStyle() even if the
animation is not in-effect state in order to prepare the base style for
properties that can be run on the compositor because the in-effect animation
will be sent to the compositor and might be composed onto the base style on the
compositor after the animation gets out of its delay phase.

MozReview-Commit-ID: FuAZv4jqVMJ
2016-12-21 13:52:21 +09:00
Hiroyuki Ikezoe
f9c4fc410e Bug 1322291 - Part 1: Block nested calls of KeyframeEffectReadOnly::ComposeStyle(). r=birtles
KeyframeEffectReadOnly::ComposeStyle() might call nsStyleSet::ResolveStyleFor(),
and KeyframeEffectReadOnly::ComposeStyle() itself is called from
nsStyleSet::ResolveStyleFor(). So we have to carefully avoid nested calls of ComposeStyle.

MozReview-Commit-ID: IRM99bGUFLa
2016-12-21 13:52:19 +09:00
Xidorn Quan
28332e39ad Bug 1323147 part 1 - Pass string and nsCSSPropertyID for property names across FFI. r=heycam,SimonSapin
MozReview-Commit-ID: 9m39cqaFfx
2016-12-16 10:02:48 +11:00
Boris Zbarsky
e33d290417 Bug 1321879 part 2. Stop using IsCallerChrome() in animations API. r=birtles 2016-12-06 23:47:23 -10: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
Brian Birtles
994abf9736 Bug 1301305 - Add AnimationEffectReadOnly::AffectsGeometry() helper to identify effects that animate geometric properties; r=hiro
MozReview-Commit-ID: 7Q6wvm7ddxy
2016-12-02 10:04:08 +09:00
Brian Birtles
0fd938843a Bug 1301305 - Expand the set of geometric properties to include margin and padding properties; r=hiro
If margin or padding is being animated then we should synchronize with transform
animations.

Originally I included the border-*-width properties in this set. However
I removed them because:

1. Generally animations of border-width are more subtle and it won't be
   noticeable if they are not synchronized with transform animations.

2. If authors animate the border shorthand (e.g. border: 1px blue -> 1px black)
   we will end up interpolating each of the longhands (including the widths
   despite there being no change) and yet such an animation does not really need
   to be synchronized with transform animations. Until we add code to workaround
   that it seems best to ignore border properties.

I have verified that the tests added in this patch fail without the code changes
in this patch.

MozReview-Commit-ID: AJiDAvTpFuN
2016-12-02 09:00:05 +09:00
Hiroyuki Ikezoe
c1ccf3b725 Bug 1291468 - Part 3: Implement effect composite(accumulate). r=birtles
MozReview-Commit-ID: GHowVrDZxvh
2016-12-04 08:07:41 +09:00
Hiroyuki Ikezoe
4ffef1866b Bug 1291468 - Part 2: Implement keyframe composite(accumulate). r=birtles
Test cases in file_composite.html are matching pair of tests in
web-platform-tests.

MozReview-Commit-ID: ApuvVCHKQ8Y
2016-12-04 08:07:41 +09:00
Hiroyuki Ikezoe
51dbd0134d Bug 1305325 - Part 14: Compose base values on the compositor. r=birtles
MozReview-Commit-ID: EWumBqQ82RT
2016-12-04 08:07:40 +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
d92d4141d2 Bug 1305325 - Part 6: Handle missing keyframe whose offset 0 or 1 on the main thread. r=birtles
MozReview-Commit-ID: 5WMiTJQKfZd
2016-12-04 08:07:40 +09:00
Hiroyuki Ikezoe
e7438cb417 Bug 1305325 - Part 3: Make AnimationPropertyValueDetails::mValue optional. r=birtles,smaug
MozReview-Commit-ID: H2fhRfC0Uoh
2016-12-04 08:07:39 +09:00
Boris Chiou
fd66e19a4b Bug 1317178 - Pass the property name to Servo_DeclarationBlock_SerializeOneValue. r=birtles
In order to use single_value_to_css() in
Servo_DeclarationBlock_SerializeOneValue(), we need to pass the property name
and a flag for custom properties.

MozReview-Commit-ID: 5HfI2qOmPwP
2016-11-22 19:18:18 +08:00
Hiroyuki Ikezoe
723ccec4d8 Bug 1304886 - Part 1: Make StyleAnimationValue::Accumulate() infallible. r=birtles
MozReview-Commit-ID: 9ve3k6a3eAg
2016-11-16 20:32:26 +09:00
Boris Chiou
e69d77917e Bug 1273784 - Part 6: Factor out BuildProperties. r=hiro
Factor out BuildProperties to have a better readability of UpdateProperties.

MozReview-Commit-ID: A3cIS65STAx
2016-11-07 17:01:39 +08:00
Boris Chiou
109d318a0b Bug 1273784 - Part 5: Avoid re-building the animation properties and re-calculating computed offsets. r=hiro
We don't need to rebuild the animation properties and recalculate the
computed offsets of Keyframes while copy-constructing a new
KeyframeEffect(ReadOnly) object, so avoid calling SetKeyframes()
directly. And we also need a customized copy constructor for AnimationProperty
to avoid copy mIsRunningOnCompositor.

MozReview-Commit-ID: CIF3Ibgc1tM
2016-11-03 11:36:28 +08:00
Boris Chiou
80234aac5e Bug 1273784 - Part 3: Implement KeyframeEffect(ReadOnly) copy constructor API. r=hiro
MozReview-Commit-ID: 9ju9jeJ8cvq
2016-11-01 18:39:06 +08:00
Boris Chiou
c553c19c4e Bug 1273784 - Part 2: Overload ConstructKeyframeEffect for copy constructor. r=hiro
The copy constructors of KeyframeEffectReadOnly and KeyframeEffect are
similar, so we overload ConstructKeyframeEffect<...>(...) for copy
constructors.

MozReview-Commit-ID: 37hClpn9ZUG
2016-11-01 17:38:15 +08:00
Boris Chiou
567b9edea6 Bug 1273784 - Part 1: Add the copy constructor of KeyframeEffect(ReadOnly) in webidl. r=smaug
MozReview-Commit-ID: Fkddf8axUrU
2016-10-28 15:41:08 +08:00
Boris Chiou
5e5fbf62e9 Bug 1272549 - Part 9: Compute distance for mismatched transform lists. r=birtles
MozReview-Commit-ID: JJWcMgj88GX
2016-10-05 15:36:16 +08:00
Xidorn Quan
682f8eafaa Bug 1311598 part 1 - Move PropertyValuePair::operator== into cpp file. r=birtles
MozReview-Commit-ID: 3TC11FtqDsu
2016-10-24 20:16:46 +11: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
Phil Ringnalda
2ab744056c Backed out 2 changesets (bug 1278136) for failures in no-stacking-context-opacity-removing-animation-in-delay.html
Backed out changeset 62cf4a7d6007 (bug 1278136)
Backed out changeset 5f2db29e67ca (bug 1278136)

MozReview-Commit-ID: K9WcZFjL2XB
2016-10-11 20:40:36 -07:00
Hiroyuki Ikezoe
ecfa2ce611 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.

MozReview-Commit-ID: AG1Y0IgoB3U
2016-10-12 09:59:03 +09:00
Sebastian Hengst
7305938aa8 Merge mozilla-central to autoland 2016-10-05 17:15:26 +02:00
Brian Birtles
001b646593 Bug 1302949 - Skip calling CalculateCumulativeChangeHint; r=heycam
There are a few pieces missing before we can do this with Servo. Since this
only enables an optimization for off-screen animations we should skip this
for now so it doesn't block animations from running.

MozReview-Commit-ID: GecHWQZYxpK
2016-09-16 11:35:59 +09:00
Brian Birtles
385364fa2f Bug 1302949 - Serialize specified keyframe values; r=heycam
MozReview-Commit-ID: 9BSkci1kqU6
2016-09-16 09:26:48 +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
Boris Chiou
a346b0477a Bug 1304805 - Make spacing, iteration composite and effect composite work if the caller is chrome. r=hiro
MozReview-Commit-ID: 30BOUA8QPh8
2016-09-23 14:31:34 +08:00
Hiroyuki Ikezoe
64d7ecade3 Bug 1294651 - Don't apply iterationComposite value if the preference for Web Animations API is not enabled. r=boris
MozReview-Commit-ID: 5ckKyDSBv3S
2016-09-21 19:17:18 +09:00
Hiroyuki Ikezoe
ddbf4fde17 Bug 1216843 - Part 15: Update styles when current iteration changed. r=birtles
MozReview-Commit-ID: 33JtZplxiAz
2016-09-13 11:48:45 +09:00
Hiroyuki Ikezoe
68331a33cc Bug 1216843 - Part 2: Implement effect iteration composition. r=birtles, r=smaug
MozReview-Commit-ID: 6u7WtXwL3y3
2016-09-13 11:48:44 +09:00
Mike de Boer
34c97f402f Bug 1290914 - support Element.animate() on AnonymousContent nodes through the AnonymousContent.setAnimationForElement() method. r=bz
MozReview-Commit-ID: 39QPaCea7Dx
2016-09-08 22:38:53 +02: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