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
Handling missing keyframe is behind the pref value regardless whether the
script runs on chrome privilege or not. So the pref has to be set explicitly.
MozReview-Commit-ID: 8f83wgGDF4a
--HG--
extra : rebase_source : ac6cfff90680a080194c3c7f92b3636f84cea3b9
We have added a test case in bug 1197620 that finished animation with
fill:forwards on hidden elements restarts when the element gets visible, but
it did not catch this bug. We should have added a case without fill:forwards.
MozReview-Commit-ID: 5lfJkO3i9ME
--HG--
extra : rebase_source : f3c1d28bd8e58b28f17ec927dae7be1372d9c18e
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
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
Note that the default values of the prefs are chosen so as to preserve
existing behaviour.
The patch also updates a user-visible warning message, which was
already out of date as of bug 1274991.
MozReview-Commit-ID: AqBBoIucShT
--HG--
extra : rebase_source : 010aa55255d49e4875cb6870f309649a9ca762d5
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
--HG--
extra : rebase_source : ef163681f49b11887d4ea546d28a9fd217251d97
Note that the default values of the prefs are chosen so as to preserve
existing behaviour.
The patch also updates a user-visible warning message, which was
already out of date as of bug 1274991.
MozReview-Commit-ID: AqBBoIucShT
--HG--
extra : rebase_source : 9750899e35829dc5388f575dd56c2c888ec6ea99
The approach here is to lazily check if we have such animations. This allows
animations to be modified after being added to the pending animation tracker
(but not after HasPlayPendingGeometricAnimations is called since we cache the
result at that point) and avoids poor performance when calling
RemovePlayPending.
MozReview-Commit-ID: LRLpCRnzvw
--HG--
extra : rebase_source : 59d2fea0458f833a97a3b32413930f9970c7eddb
extra : histedit_source : afbdb4148c21638160c3d2a3d57db71b07180862
Note that in this patch, the mSyncWithGeometricAnimations member is never set
to true since no one calls NotifyGeometricAnimationsStartingThisFrame yet.
MozReview-Commit-ID: GSTQmfkSdoy
--HG--
extra : rebase_source : 1304cdf678095f2eeaa32588b92c0531e8c64fcd
extra : histedit_source : bc25fc10a2451121a2b9fec247db3f92965e9b5b
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
This patch adds a new performance warning type for the case when we start
a transform animation at the same time as an animation that includes a
geometric property. In that case we run the transform animation on the main
thread so that it is synchronized with the geometric animation (which we can
only run on the main thread).
This differs from CompositorAnimationWarningTransformWithGeometricProperties
in that this applies across different elements whilst the existing warning
only covers the case when the same animation animates both transform and
geometric properties.
MozReview-Commit-ID: EcOMo4VDAYY
--HG--
extra : rebase_source : b4bbc3e4ffa69d0d741fe6d67aba0349b9325b3e
extra : histedit_source : 9fd1b33e8776e270241cde40f1905e74fdfcb630
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
We would like to use this method in the next patch.
MozReview-Commit-ID: CSdwlVInyds
--HG--
extra : rebase_source : 5e9af4f0ffacaaf08ecee4e6018bed1ee4a74047
extra : histedit_source : b73144f07097982236038c3efb391f6b7d00e5ed
Currently we have:
assert_animation_property_state_equals
assert_animation_property_state_on_compositor
and it's not clear what the difference is. This patch renames the latter to make
it clear it is testing that all properties are running on the compositor.
MozReview-Commit-ID: 3PRm8fse9UI
--HG--
extra : rebase_source : ff89d0e6a5f9e59990ead431200726b492f71e81
extra : histedit_source : c003d1806baf2a97252a734506ac2934e01a4839
Currently these tests are hard to read because the test data is separated from
the test function so it's not clear what each of the fields mean or how to use
it. This patch just brings the test data and test functions alongside
one-another so they are easier to read.
MozReview-Commit-ID: EzFLDG4YiXh
--HG--
extra : rebase_source : 9a6745e908e1794dd92c8d264acc6c61923f4242
extra : histedit_source : 1961454b749bc9cf74d5ae9eef4ac9e4d827179c
Test cases in file_composite.html are matching pair of tests in
web-platform-tests.
MozReview-Commit-ID: ApuvVCHKQ8Y
--HG--
extra : rebase_source : 58342389a3eb1ed2a3c1889b5ce974dbde19c32f
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
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
To check simulateComputeValuesFailure flag in chrome privilege, we will need
to know the core Web Animations API preference is enabled in chrome privilege.
MozReview-Commit-ID: GYRMc9Od4Bm
Missing keyframe will be handled only if the Web Animatins API is enabled.
Test cases in file_partial_keyframes.html will not throw any exceptions once
we handle missing keyframe because they are run with the Animations API pref,
but still we should run the test cases with disabled the pref. So we are now
going to move the test cases into file_disable_animations_api_code.html.
We can't use KeyframeEffectReadOnly contructor in a new test file since the
constructor is also behind the Web Animations API pref.
MozReview-Commit-ID: 9ApVxJebBUj
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
--HG--
extra : rebase_source : 256efb5779a8cbcc8ae906295b40b160a55641c9
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
Only replace addDiv with createDiv in spacing-keyframes-transform.html.
Others are the same.
MozReview-Commit-ID: JNSpyc6WNtP
--HG--
extra : rebase_source : 05af4176e85234e1d89023f1e74012d0e1481230
Factor out BuildProperties to have a better readability of UpdateProperties.
MozReview-Commit-ID: A3cIS65STAx
--HG--
extra : rebase_source : a09d935d6ced8f4a6c7311e69e3840e195c575a1
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
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
This test is skipped on Android, since on Android it takes too long to send
the transition to the compositor. On an Android emulator, it took 5s!
For this test case, 5s duration transition needs busyness on the main thread
more than 5s, it's undesirable.
MozReview-Commit-ID: DIqcwsnLttV
--HG--
extra : rebase_source : 256978c2a58fb483da4c0acac1db0e51fcf45ccd
tree_ordering test can not be moved because the test waits for animationend
event.
createPseudo() were picked from
testing/web-platform/tests/web-animations/testcommon.js .
MozReview-Commit-ID: EZ2sGEgdMFM
--HG--
extra : rebase_source : 1ebf46dd91f42ba75f5711e781d72e77948e6150
All of cleaning up code were dropped. Also some trivial comments were dropped.
Note that test cases can not be rewritten to synchronous test.
* Waiting for events, e.g. transitionend.
* single_transition
* single_animation
* Manipulated by style, e.g. style.animationDuraton = "0.5s".
* single_transition_cancelled_property
* single_transition_cancelled_value
* single_transition_cancelled_noninterpolable
* single_transition_reversed
* multiple_transitions
* single_animation_cancelled_name
* single_animation_cancelled_duration
* single_animation_cancelled_delay
* single_animation_cancelled_fill
* single_animation_cancelled_iteration_count
* single_animation_change_XXX
* coalesce_change_cancel
* Falling into a pending state, e.g. play() or pause().
* finish_from_pause
* finish_from_pause_pending
* play
* play_filling_forwards
* play_after_finish
* pause
* pause_while_pause_pending
* aborted_pause
MozReview-Commit-ID: 5bTzO7GtEHF
--HG--
extra : rebase_source : 905f5144706e20c743030b4bcff428ef124abfff
So that the new subclass of DeclarationBlock could just be
ServoDeclarationBlock.
MozReview-Commit-ID: 55KgfmWmmyU
--HG--
extra : source : 27c55355da341fce112b15d966eb9b2fa2c8834b
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.