Commit graph

50 commits

Author SHA1 Message Date
Hiroyuki Ikezoe
a0e80666fe Bug 1333846 - Part 2: Evaluate scale values for additive or accumulative animations. r=birtles a=abillings
MozReview-Commit-ID: LSKJNH5OJbs
2017-02-09 11:28:47 +09:00
Hiroyuki Ikezoe
4047570520 Bug 1333846 - Part 1: Move ContainsAnimatedScale() codes into dom/animation/. r=birtles a=abillings
MozReview-Commit-ID: 6bWeTfCmjtd
2017-02-09 11:28:47 +09:00
Boris Chiou
155c2acd50 Bug 1335942 - Part 2: Use mozilla::AnimationValue in AnimationPropertySegment. r=hiro,manishearth
MozReview-Commit-ID: L6U1A223jsa

--HG--
extra : rebase_source : 26d8ec4386443d6526fed2f4926c6e4519e6bbd0
2017-02-04 13:57:08 +08:00
Boris Chiou
93204df88d Bug 1317209 - Part 2: Call Servo's Interpolation from Gecko. r=heycam,manishearth
1. Call Servo's interpolation from KeyframeEffectReadOnly::ComposeStyle().
2. Store the results into ServoAnimationRule.

MozReview-Commit-ID: LOp2mbXforg

--HG--
extra : rebase_source : eda5e275e81f2413b2a729e8d06663eae496c15c
2017-01-24 15:21:52 +08:00
Boris Chiou
05b18b1257 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

--HG--
extra : rebase_source : cd8c6f3a8409abf97f04af888953ff0e77d98348
2017-01-24 15:19:18 +08:00
Hiroyuki Ikezoe
f6d1e334f7 Bug 1330190 - Part 6: Add MOZ_DIAGNOSTIC_ASSERT for mIsComposing. r=birtles
Based on the other changesets in this series, we don't expect to be calling
UpdateProperties() and ComposeStyle() from within ComposeStyle() itself.
However, in case there is some scenario where that does still occur, we leave
the mIsComposing check in place and add an equivalent MOZ_DIAGNOSTIC_ASSERT so
that we are alerted if this does occur on debug / Nightly / DevEdition builds,
but handle it gracefully on beta or release builds.

MozReview-Commit-ID: 2cFpyMFR29Q

--HG--
extra : rebase_source : 8d6175b8785dd062bda85eda7f06c01bec42fbee
2017-01-16 17:41:25 +09:00
Hiroyuki Ikezoe
fdd11f4f75 Bug 1330190 - Part 5: Get style context without all of animation data for base styles. r=birtles
Test case, 1330190-2.html, is another variant of 1325193-1.html. It's for
animation on a pseudo element, causes timeout without part 3 patch.

MozReview-Commit-ID: KX6FE8mkZY2

--HG--
extra : rebase_source : f5efbae0cc30036a511659eab9b29b5091df7539
2017-01-16 17:41:24 +09:00
Hiroyuki Ikezoe
005409105f Bug 1322291 - Part 3: Ensure base styles if there is an additive or accumulate segment for propertis that can be run on the compositor. r=birtles
MozReview-Commit-ID: JjIQkafUh91
2017-01-12 14:48:42 +09:00
Hiroyuki Ikezoe
5e2100a627 Bug 1325193 - Get underlying style value in the case where the last segment is missing keyframe for accumulation of iteration composite. r=birtles
Both of tests in this patch fail and cause lots of assertions without this fix.

MozReview-Commit-ID: CFrWSlM0Us5
2017-01-12 10:28:46 +09:00
Hiroyuki Ikezoe
7af76a1bc9 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
d339d422fb Bug 1311620 - Part 5: Implement effect composite(add). r=birtles
MozReview-Commit-ID: 7t6CD3VibNS

--HG--
extra : rebase_source : 3d683f945db1eac4c208daecc92750710df6c3d0
2016-12-24 19:54:42 +09:00
Hiroyuki Ikezoe
5201cc33f3 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

--HG--
extra : rebase_source : 7bdf83741198fb81c6721cad1764e6464033c240
2016-12-24 19:54:27 +09:00
Hiroyuki Ikezoe
603fea3c36 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

--HG--
extra : rebase_source : 9ef2f078e5ee18735fb8cd3086f20774fe8b1fd0
2016-12-21 13:52:21 +09:00
Hiroyuki Ikezoe
bb044df0ec 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

--HG--
extra : rebase_source : 05dfab033b738bae92706588708bd7b7a29ec7de
2016-12-21 13:52:19 +09:00
Xidorn Quan
200763a985 Bug 1323147 part 1 - Pass string and nsCSSPropertyID for property names across FFI. r=heycam,SimonSapin
MozReview-Commit-ID: 9m39cqaFfx

--HG--
extra : source : fda47b4012965e9e767bad8a87e9b0b1a165d13a
2016-12-16 10:02:48 +11:00
Boris Zbarsky
59f74104a6 Bug 1321879 part 2. Stop using IsCallerChrome() in animations API. r=birtles 2016-12-06 23:47:23 -10:00
Brian Birtles
fab887e2db 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

--HG--
extra : rebase_source : 60a706d51897a0522794cd140734ad7158f4ccd6
extra : histedit_source : cbd0849fcb9077afaf3d2cd3f168201ddb2bf7a4
2016-12-02 10:13:06 +09:00
Brian Birtles
33786b40e1 Bug 1301305 - Add AnimationEffectReadOnly::AffectsGeometry() helper to identify effects that animate geometric properties; r=hiro
MozReview-Commit-ID: 7Q6wvm7ddxy

--HG--
extra : rebase_source : 6b2a719c0c9d744d6204b8cff50efe21f5940e2d
extra : histedit_source : 1cfbe1585c76aa500f8066b99c0d1d438018d400
2016-12-02 10:04:08 +09:00
Brian Birtles
005433850d 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

--HG--
extra : rebase_source : 58462ab48acc0b1298915d0d3572915b6973ac82
extra : histedit_source : d293cfc68ff59483b4f9543a7a63b140d627a4fa
2016-12-02 09:00:05 +09:00
Hiroyuki Ikezoe
8f3df3819f Bug 1291468 - Part 3: Implement effect composite(accumulate). r=birtles
MozReview-Commit-ID: GHowVrDZxvh

--HG--
extra : rebase_source : 26146ddd38f397d14545402b5d347e53a488ce19
2016-12-04 08:07:41 +09:00
Hiroyuki Ikezoe
869c4ead65 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

--HG--
extra : rebase_source : 58342389a3eb1ed2a3c1889b5ce974dbde19c32f
2016-12-04 08:07:41 +09:00
Hiroyuki Ikezoe
b98aba8d33 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
a9ad7c4490 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
aa35d16aa2 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
1f8b99b847 Bug 1305325 - Part 6: Handle missing keyframe whose offset 0 or 1 on the main thread. r=birtles
MozReview-Commit-ID: 5WMiTJQKfZd

--HG--
rename : dom/animation/test/chrome/test_animation_properties.html => dom/animation/test/chrome/test_simulate_compute_values_failure.html
2016-12-04 08:07:40 +09:00
Hiroyuki Ikezoe
20bc31d6c8 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
f045a91867 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

--HG--
extra : rebase_source : 968468b3c9313c4ec3007ee9883075c8fc4ab769
2016-11-22 19:18:18 +08:00
Hiroyuki Ikezoe
ae9b44e039 Bug 1304886 - Part 1: Make StyleAnimationValue::Accumulate() infallible. r=birtles
MozReview-Commit-ID: 9ve3k6a3eAg

--HG--
extra : rebase_source : af536ae0bf9dc7ad26003422d971c3cbdb30e390
2016-11-16 20:32:26 +09:00
Boris Chiou
da317fa21e Bug 1273784 - Part 6: Factor out BuildProperties. r=hiro
Factor out BuildProperties to have a better readability of UpdateProperties.

MozReview-Commit-ID: A3cIS65STAx

--HG--
extra : rebase_source : a09d935d6ced8f4a6c7311e69e3840e195c575a1
2016-11-07 17:01:39 +08:00
Boris Chiou
1225c6b3fa 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

--HG--
extra : rebase_source : 7bbc8c1666451435982651f11af9c00f37708807
2016-11-03 11:36:28 +08:00
Boris Chiou
4560622114 Bug 1273784 - Part 3: Implement KeyframeEffect(ReadOnly) copy constructor API. r=hiro
MozReview-Commit-ID: 9ju9jeJ8cvq

--HG--
extra : rebase_source : eb3aad753c3e4251f8a46db22ec067abd4f259bf
2016-11-01 18:39:06 +08:00
Boris Chiou
feefe8bb14 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

--HG--
extra : rebase_source : 48de18c190dd8cbc61e0363e999960f2e823f2ea
2016-11-01 17:38:15 +08:00
Boris Chiou
ab45c606ea Bug 1273784 - Part 1: Add the copy constructor of KeyframeEffect(ReadOnly) in webidl. r=smaug
MozReview-Commit-ID: Fkddf8axUrU

--HG--
extra : rebase_source : 85e78c8a7fcebfbd5feb75950d5da34c2c05d255
2016-10-28 15:41:08 +08:00
Boris Chiou
304026cd9d Bug 1272549 - Part 9: Compute distance for mismatched transform lists. r=birtles
MozReview-Commit-ID: JJWcMgj88GX

--HG--
extra : rebase_source : 3f1c314a2bf9c7c12991fb3873738c79b0152ea9
2016-10-05 15:36:16 +08:00
Xidorn Quan
d5b39f0e15 Bug 1311598 part 1 - Move PropertyValuePair::operator== into cpp file. r=birtles
MozReview-Commit-ID: 3TC11FtqDsu

--HG--
extra : rebase_source : 9b2f8abe575b14368b8962c5a51c776fcb9ad3d1
extra : source : 8a45444e157137455409e639ddd743b079ed9b0f
2016-10-24 20:16:46 +11:00
Hiroyuki Ikezoe
ca0f6e0ff5 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

--HG--
extra : rebase_source : 5715c1f9ec43da3c8374f08cdca82e2ca29fe474
2016-10-14 19:14:12 +09:00
Hiroyuki Ikezoe
ff84f76fce 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
6182caa3b9 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
d7f92dae54 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
256c9cf9ff Merge mozilla-central to autoland 2016-10-05 17:15:26 +02:00
Brian Birtles
d70d0c2bd5 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

--HG--
extra : rebase_source : c0330b104afb4b970569c0cb650315e633b7e796
extra : histedit_source : db91b37d3370c9b766976b42b0701f6e0ec56159
2016-09-16 11:35:59 +09:00
Brian Birtles
a803b5ac49 Bug 1302949 - Serialize specified keyframe values; r=heycam
MozReview-Commit-ID: 9BSkci1kqU6

--HG--
extra : rebase_source : b0532e144b3208d79e1e26ce3bff9a20c896abad
2016-09-16 09:26:48 +09:00
Hiroyuki Ikezoe
f5b0e6e0b3 Bug 1304922 - Part 7: Drop mWinsInCascade. r=birtles
MozReview-Commit-ID: 1q4glZenZNa

--HG--
extra : rebase_source : 7855710197758505a195f1cf7063e74cb5493534
2016-10-05 14:48:05 +09:00
Hiroyuki Ikezoe
c354bf91e5 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

--HG--
extra : rebase_source : ff295aecb08bb672ac5f02e26e37a4ea4f3eb7c0
2016-10-05 14:42:56 +09:00
Boris Chiou
cd6c2e6bff Bug 1304805 - Make spacing, iteration composite and effect composite work if the caller is chrome. r=hiro
MozReview-Commit-ID: 30BOUA8QPh8

--HG--
extra : rebase_source : 21af58ad6f27f47404affe2f87fb9a426f01b496
2016-09-23 14:31:34 +08:00
Hiroyuki Ikezoe
7de848f9c8 Bug 1294651 - Don't apply iterationComposite value if the preference for Web Animations API is not enabled. r=boris
MozReview-Commit-ID: 5ckKyDSBv3S

--HG--
extra : rebase_source : 5bf069db17cecac17035bd2c9c925abc4c4e5f2c
2016-09-21 19:17:18 +09:00
Hiroyuki Ikezoe
5f5f888c4b 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
f98523cf02 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
3e295e6280 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
48f29038db Bug 1300045 part 2 - Split KeyframeEffect.cpp into KeyframeEffect{ReadOnly}.cpp r=hiro,smaug
MozReview-Commit-ID: DdBEicunApv

--HG--
rename : dom/animation/KeyframeEffect.cpp => dom/animation/KeyframeEffectReadOnly.cpp
rename : dom/animation/KeyframeEffect.h => dom/animation/KeyframeEffectReadOnly.h
extra : rebase_source : 70063d8ba09c9c457f22771e9b514ddc9fee1612
2016-09-04 16:34:21 +09:00