Граф коммитов

1575 Коммитов

Автор SHA1 Сообщение Дата
Hiroyuki Ikezoe fedb7434fb Bug 1415780 - Call UpdateTiming() prior to remove the animtion from the timeline in Animation::CancelNoUpdate. r=birtles
Now AnimationEventDispatcher ensures that the refresh driver's next tick
happens for cancel event, so we don't need to re-observe the timeline
(it happens in UpdateTiming) once after removing the animation from the
timeline.

MozReview-Commit-ID: 7ivclmYIkPa

--HG--
extra : rebase_source : 286b3d5d29208496bfe8405819b44b5f52f6671c
2018-01-27 21:17:27 +09:00
Hiroyuki Ikezoe 175bc2d176 Bug 1415780 - Let AnimationEventDispatcher observe nsRefreshDriver. r=birtles
So that we can now ensure nsRefreshDriver ticks (i.e. nsRefreshDriver doesn't
stop its timer) for all queued events.
Before this patch, dispatching CSS animation/transition events relied on the
fact that DocumentTimeline observes nsRefreshDriver.  For this fact,
animationcancel or transitioncancel event did not dispatch properly in some
cases, i.e. the case where the animation was dropped from the DocumentTimeline.

MozReview-Commit-ID: 7JYro0MY2U2

--HG--
extra : rebase_source : 28c8e2a50d29c5344e2c5ca3c43af41f4692fa0f
2018-01-27 21:17:27 +09:00
Hiroyuki Ikezoe 7061542dd0 Bug 1415780 - Make AnimationEventDispatcher::SortEvents() private. r=birtles
Now we sort pending events only when dispatching the events, i.e.
only inside DispatchEvent().

MozReview-Commit-ID: BZbuF8gD39b

--HG--
extra : rebase_source : 2a90697356d980b1fd1329d34936eaef1179d12f
2018-01-27 21:17:27 +09:00
Hiroyuki Ikezoe 7828b6be59 Bug 1415780 - Let nsPresContext have AnimationEventDispatcher. r=birtles
Now we sort CSS animation/transition events by scheduled event time prior
to compositor order.

SortEvents() will be a private method in the next patch in this patch
series.

MozReview-Commit-ID: ICkOayquN0f

--HG--
extra : rebase_source : 405c8232e93c54a073c722a4332873af02daa870
2018-01-27 21:17:27 +09:00
Hiroyuki Ikezoe 21a53275cd Bug 1415780 - Make AnimationEventDispatcher refcountable. r=birtles
In a subsequent patch in this patch series, we want to make nsPresContext
have an AnimationEventDispatcher as RefPtr<>.

Instead, if we were trying to make nsPresContext have the
AnimationEventDispatcher as data object (not RefPtr<>) just like we did in
CommonAnimationManager, we will fall into header inclusion hell since Element.h
includes nsPresContext.h and AnimationEventDispatcher.h ends up including
Element.h.  Even if we could solve the inclusion hell, we will suffer from Rust
bindgen issues for some reasons.

MozReview-Commit-ID: B0nX2JzIRJD

--HG--
extra : rebase_source : 4eb998876b2fc39de8d09cac09c19e1a51cd382e
2018-01-27 21:17:27 +09:00
Hiroyuki Ikezoe 75fc208a71 Bug 1415780 - De-templatize AnimationEventDispatcher. r=birtles,masayuki
Now single AnimationEventDispatcher can handle both CSS animation/transition
events simultaneously.  To do this we had to change AnimationEventInfo and
TransitionEventInfo into a single struct, the struct is also named
AnimationEventInfo.

It results we can sort both CSS animation/transition events altogether.  Thus
we make sure CSS animation/transition events are sorted by scheduled event time
prior to their composite order (i.e. transitions is prior to animations).

At this moment, we don't sort both events altogether since nsAnimationManager
and nsTransitionManager has an AnimationEventDispatcher respectively.  In the
next patch we move AnimationEventDispatcher into nsPresContext, i.e. each
document has an AnimationEventDispatcher without the distinction between
CSS animations and transitions.

Note that, after this patch, we copy all members in InternalTransitionEvent and
InternalAnimationEvent in the copy-constructor of AnimationEventInfo, this
will be fixed once WidgetEvent has move-constructor and move-assignment
(bug 1433008).

MozReview-Commit-ID: 5JAh6N7C6ee

--HG--
extra : rebase_source : 50da76f51cf65cdd1245d93d8b48aaf0ae0ec94b
2018-01-27 21:17:27 +09:00
Hiroyuki Ikezoe 45ef4d82a6 Bug 1415780 - Split AnimationEventDipatcher into an independent file. r=birtles
MozReview-Commit-ID: Fcqtu7G400Z

--HG--
extra : rebase_source : 50de08148dcd4e4db0ea9a9ad1b501718852ca78
2018-01-27 21:17:27 +09:00
Cosmin Sabou 887d9fa276 Backed out 12 changesets (bug 1415780) for build bustages nsRefreshDriver.cpp:1606:1 and AnimationCommon.h:168:51 on a CLOSED TREE
Backed out changeset 1fa2f138319e (bug 1415780)
Backed out changeset 6bad89a17566 (bug 1415780)
Backed out changeset a88250ad7a3e (bug 1415780)
Backed out changeset 43d42ca7308f (bug 1415780)
Backed out changeset 79e980195ee8 (bug 1415780)
Backed out changeset f0cc29e7ccd7 (bug 1415780)
Backed out changeset c6567e4196f6 (bug 1415780)
Backed out changeset ae7be65f3c88 (bug 1415780)
Backed out changeset 621b9aaf4a8f (bug 1415780)
Backed out changeset e298f242ce7c (bug 1415780)
Backed out changeset 027a7ed3c948 (bug 1415780)
Backed out changeset 433a6f0d0ac3 (bug 1415780)
2018-01-27 12:47:29 +02:00
Hiroyuki Ikezoe 2046465f79 Bug 1415780 - Call UpdateTiming() prior to remove the animtion from the timeline in Animation::CancelNoUpdate. r=birtles
Now AnimationEventDispatcher ensures that the refresh driver's next tick
happens for cancel event, so we don't need to re-observe the timeline
(it happens in UpdateTiming) once after removing the animation from the
timeline.

MozReview-Commit-ID: 7ivclmYIkPa

--HG--
extra : rebase_source : d111c63baac0ad3005723c1c76bad08e975555ec
2018-01-27 16:55:46 +09:00
Hiroyuki Ikezoe 51d411f1b6 Bug 1415780 - Let AnimationEventDispatcher observe nsRefreshDriver. r=birtles
So that we can now ensure nsRefreshDriver ticks (i.e. nsRefreshDriver doesn't
stop its timer) for all queued events.
Before this patch, dispatching CSS animation/transition events relied on the
fact that DocumentTimeline observes nsRefreshDriver.  For this fact,
animationcancel or transitioncancel event did not dispatch properly in some
cases, i.e. the case where the animation was dropped from the DocumentTimeline.

MozReview-Commit-ID: 7JYro0MY2U2

--HG--
extra : rebase_source : e1963d9eef996cdf5d64c64f80eb1b93ac6fd18a
2018-01-27 16:55:45 +09:00
Hiroyuki Ikezoe 9e4cc95a63 Bug 1415780 - Make AnimationEventDispatcher::SortEvents() private. r=birtles
Now we sort pending events only when dispatching the events, i.e.
only inside DispatchEvent().

MozReview-Commit-ID: IRqH56BEnKb

--HG--
extra : rebase_source : dd2b8528fdc36d1371815feaf07ead0b258fe453
2018-01-27 16:55:45 +09:00
Hiroyuki Ikezoe 99f98b1bd6 Bug 1415780 - Let nsPresContext have AnimationEventDispatcher. r=birtles
Now we sort CSS animation/transition events by scheduled event time prior
to compositor order.

SortEvents() will be a private method in the next patch in this patch
series.

MozReview-Commit-ID: ICkOayquN0f

--HG--
extra : rebase_source : 52226c33a511451c31d4c3fef94ff02de8462256
2018-01-27 16:55:45 +09:00
Hiroyuki Ikezoe f61cc0132a Bug 1415780 - Make AnimationEventDispatcher refcountable. r=birtles
In a subsequent patch in this patch series, we want to make nsPresContext
have an AnimationEventDispatcher as RefPtr<>.

Instead, if we were trying to make nsPresContext have the
AnimationEventDispatcher as data object (not RefPtr<>) just like we did in
CommonAnimationManager, we will fall into header inclusion hell since Element.h
includes nsPresContext.h and AnimationEventDispatcher.h ends up including
Element.h.  Even if we could solve the inclusion hell, we will suffer from Rust
bindgen issues for some reasons.

MozReview-Commit-ID: B0nX2JzIRJD

--HG--
extra : rebase_source : cd010ca5fe5b1f9fa8f519fdab0dc47d6e519bef
2018-01-27 16:55:44 +09:00
Hiroyuki Ikezoe f2ce7c4704 Bug 1415780 - De-templatize AnimationEventDispatcher. r=birtles,masayuki
Now single AnimationEventDispatcher can handle both CSS animation/transition
events simultaneously.  To do this we had to change AnimationEventInfo and
TransitionEventInfo into a single struct, the struct is also named
AnimationEventInfo.

It results we can sort both CSS animation/transition events altogether.  Thus
we make sure CSS animation/transition events are sorted by scheduled event time
prior to their composite order (i.e. transitions is prior to animations).

At this moment, we don't sort both events altogether since nsAnimationManager
and nsTransitionManager has an AnimationEventDispatcher respectively.  In the
next patch we move AnimationEventDispatcher into nsPresContext, i.e. each
document has an AnimationEventDispatcher without the distinction between
CSS animations and transitions.

Note that, after this patch, we copy all members in InternalTransitionEvent and
InternalAnimationEvent in the copy-constructor of AnimationEventInfo, this
will be fixed once WidgetEvent has move-constructor and move-assignment
(bug 1433008).

MozReview-Commit-ID: 5JAh6N7C6ee

--HG--
extra : rebase_source : 06ef844f41cfe81b9a629340b5a328c1bed80e8e
2018-01-27 16:55:44 +09:00
Hiroyuki Ikezoe cd43017099 Bug 1415780 - Split AnimationEventDipatcher into an independent file. r=birtles
MozReview-Commit-ID: Fcqtu7G400Z

--HG--
extra : rebase_source : e90a03ef74a7c53a068227672f9e727d31d11707
2018-01-27 16:55:44 +09:00
Hiroyuki Ikezoe 3dc42221b8 Bug 1432104 - KeyframeUtils::GetAnimationPropertiesFromKeyframes needs specializations both for GeckoStyleContext* and const ServoStyleContext*. r=birtles
The implementation of the template function is defined in KeyframeUtils.cpp,
whereas the caller is inside KeyframeEffectReadOnly.cpp.  I guess it's been
compiled accidentally because of unified builds.

MozReview-Commit-ID: 9GeIT7nDpLG

--HG--
extra : rebase_source : ce58ac6a013ff45d402c51994eb4f0bc28a2c671
2018-01-22 19:19:41 +09:00
Hiroyuki Ikezoe 2529df076a Bug 1430654 - Use assert_times_equal for comparing timing values. r=birtles
MozReview-Commit-ID: CUn1f8M0jo5

--HG--
extra : rebase_source : 1ac203d28022707f1b34757a1613e6f201a1f706
2018-01-22 14:57:57 +09:00
Hiroyuki Ikezoe 0a91cefd01 Bug 1430654 - Double epsilon value for assert_times_equal. r=birtles
Since the function assumes that both of actual and expected values
have the same precision requirements.

MozReview-Commit-ID: 4C3TAH6mUVg

--HG--
extra : rebase_source : 1e40e489745b0d9047d34e851a5f043db616323e
2018-01-22 14:57:57 +09:00
Hiroyuki Ikezoe fae9243927 Bug 1430654 - Introduce assert_time_equals_literal and use it. r=birtles
This assertion is supposed to be used where the first argument has a tolerance
but the second argument doesn't have such tolerance.  Whereas
assert_times_equal() is supposed to be used for the case both arguments have
the same tolerance, actually it hasn't, it will be fixed in a subsequent patch
in this patch series.

MozReview-Commit-ID: FEDHilbX2rm

--HG--
extra : rebase_source : e773902b474bd9a411e7bb3f234702a93547ebba
2018-01-22 14:55:16 +09:00
Hiroyuki Ikezoe 5c74787c9b Bug 1431295 - Drop 'undef None' macro in dom/animation/. r=boris
MozReview-Commit-ID: BkV6vCc4rmt

--HG--
extra : rebase_source : 9a1ef446045adeb7bbab6814c147947e30626b29
2018-01-18 14:12:51 +09:00
Wei-Cheng Pan e8f46bbec4 Bug 1425213 - Unthrottle transform animations regardless in overflowable frames or not. r=hiro
Because we don't know whether the transformed position will be visible or not.
2018-01-17 22:44:00 +02:00
Hiroyuki Ikezoe fa8cb05830 Bug 1430975 - Don't pass a copy of StickyTimeDuration. r=boris
MozReview-Commit-ID: HlQlMB1FBRi

--HG--
extra : rebase_source : 19888f1aa8cb98ecb1ee0aeaa46c8e4015e12867
2018-01-17 18:05:03 +09:00
Hiroyuki Ikezoe ddaf0ef84e Bug 1419079 - Don't bail out from CalculateCumulativeChangeHint() in the case of opacity property even if there is a missing keyframe or composite operation is not 'replace'. r=birtles
For opacity property, we only generate nsChangeHint_UpdateUsesOpacity,
nsChangeHint_UpdateOpacityLayer and nsChangeHint_RepaintFrame.  All of them are
included in nsChangeHint_Hints_CanIgnoreIfNotVisible.  So we can throttle
opacity animations on out-of-view elements whatever underlying opacity value is.

MozReview-Commit-ID: FdQJbItAndG

--HG--
extra : rebase_source : d011270e4e3e1adc1782665a592fb3fac60f9174
2018-01-17 11:48:20 +09:00
Hiroyuki Ikezoe b72cfe5bff Bug 1419079 - Add a test case for additive animation with a missing keyframe. r=birtles
MozReview-Commit-ID: 5UWfDIx7RVi

--HG--
extra : rebase_source : 17c9e62f66c7fef101a6b2a4f93e4348e94721cf
2018-01-17 08:55:00 +09:00
Hiroyuki Ikezoe cb10669b24 Bug 1419079 - Revise a comment for a test case for missing keyframes. r=birtles
The animation in the test case is not actually additive animation, it's just a
missing keyframe animation and its composite operation is actually 'replace'.

MozReview-Commit-ID: 4A29V5Ke2hF

--HG--
extra : rebase_source : 63b6c7f52943786d06c52b9baa7e0f4f151781ac
2018-01-17 08:55:00 +09:00
Hiroyuki Ikezoe c5899c8bd2 Bug 1419079 - Drop checking the pref for offscreen throttling. r=birtles
The pref has been enabled by default since firefox 49, so it's not worth
checking the pref in test.

MozReview-Commit-ID: 5ADIFaV1ue

--HG--
extra : rebase_source : 8490cc7988cc1e7fe3a650c4f1334b4ed11c7105
2018-01-17 08:55:00 +09:00
Hiroyuki Ikezoe 65c0f821c8 Bug 1419079 - Drop checking the pref for animations-api core in file_restyles.html. r=birtles
It's already specified to true in test_restyles.html.

MozReview-Commit-ID: JMItunKYwIs

--HG--
extra : rebase_source : d54368a93857d8d2a86220be55091735caa074e9
2018-01-17 08:55:00 +09:00
Brian Birtles 5a753e5e80 Bug 1429671 - Make composite member of Keyframe dictionary objects accept null values; r=bz
This patch reflects the following change to the Web Animations spec:

  abf76745b5

MozReview-Commit-ID: A2GD1igUf5f

--HG--
extra : rebase_source : 8129f6386b144adebc3bf0320ca7d6bfbba7a2e9
2018-01-11 16:20:49 +09:00
Tom Ritter 3af00498bc Bug 1429668 Turn off the reduceTimerPrecision pref for one more test r=hiro
MozReview-Commit-ID: J7F502Oz3Uc

--HG--
extra : rebase_source : 6b9883e72fad25d985ba61a999a4bdd2468784b0
2018-01-10 23:06:04 -06:00
Tom Ritter 2eeb5f801e Bug 1424341 Turn the pref off for existing tests that perform fine-grained timing comparisons r=mrbkap
MozReview-Commit-ID: 4ZyE4ebaCaB

--HG--
extra : rebase_source : 80a138ba722c64885a5f6811d862bdc76389a000
2018-01-10 14:46:34 -06:00
Hiroyuki Ikezoe 606a9e9a90 Bug 1421507 - Throttle animations in position:fixed element that the element is out of view. r=boris,tnikkel
MozReview-Commit-ID: jLvrcVhTKW

--HG--
extra : rebase_source : e2ff1e0158aa5207f86c47088283c22febe84197
2018-01-05 10:30:46 +09:00
Hiroyuki Ikezoe 9b4b9f9e65 Bug 1421507 - Test cases for position:absolute element. r=boris
MozReview-Commit-ID: IRPsvJ5WAQF

--HG--
extra : rebase_source : 5c6988a9af8392cc5abf54e56060dcf9653edffb
2018-01-05 10:30:17 +09:00
Hiroyuki Ikezoe 68625f879b Bug 1427868 - Run skipped test cases for scrolled-out elements on Android. r=birtles
These tests can be passed now, I don't know what fixed them, presumably
bug 1421476 and bug 1379515 fixed it.

MozReview-Commit-ID: 2srFKTWWvK

--HG--
extra : rebase_source : 418d366ade78d5a9994cb9bbbab39c4c0b42a2a4
2018-01-04 15:22:34 +09:00
Hiroyuki Ikezoe b47d85dec0 Bug 1425009 - Take into account the possibility that the animation begins at the moment when the animation was detached from the document. r=birtles
MozReview-Commit-ID: wbM5JW7v76

--HG--
extra : rebase_source : c7ec443f86c6be573ac443f05fdf38a1ed97eefd
2018-01-04 10:19:08 +09:00
Csoregi Natalia 12c47a01be Merge inbound to mozilla-central r=merge a=merge 2017-12-21 12:01:59 +02:00
Brian Birtles 235c83fc0c Bug 1414000 - Assert that either the pres context is nullptr OR that there are no properties when filling in base styles; r=hiro
The call stack where this assertion would otherwise fail is as follows:

 KeyframeEffectReadOnly::UpdateProperties
   KeyframeEffectReadOnly::DoUpdateProperties
     KeyframeEffectReadOnly::BuildProperties
       KeyframeUtils::GetAnimationPropertiesFromKeyframes
         KeyframeUtils.cpp::GetComputedKeyframeValues
     KeyframeEffectReadOnly::EnsureBaseStyles

In bug 1407898 we made GetComputedKeyframes return an empty list when the pres
context is nullptr so if we get a null pres context in EnsureBaseStyles (which
uses the same method for getting the pres context:
nsContentUtils::GetContextForContent) we know that |aProperties| will be empty.
Also, if |aProperties| is empty we're not going to dereferences |presContext| so
we don't need to assert that it is non-null.

I have not included the crashtest in this patch for the same reason as described
in bug 1407898 comment 6.

MozReview-Commit-ID: 6OZ2yJfRLMV

--HG--
extra : rebase_source : b2a711a54623ea177560cf1b69b3c332654bc938
2017-12-20 17:34:57 +09:00
Hiroyuki Ikezoe faa768c4fa Bug 1309198 - Test case that document is discarded while Document.getAnimations(). r=smaug 2017-12-21 11:40:23 +09:00
Hiroyuki Ikezoe 76f404fa5c Bug 1425771 - Add a branch in only_one_restyling_after_finish_is_called for the conformant Promise handling. r=birtles
Animation.finish() in a micro task for Animation.ready leads to a restyle and
a redundant restyle due to bug 1415457.  The redundant restyle has been observed
in a single frame without the conformant Promise handling.  But once we have the
conformant Promise handling we can tell it in a later frame.
(see https://bugzilla.mozilla.org/show_bug.cgi?id=1415457#c1 to know what's
going on there)

MozReview-Commit-ID: FoojunfYZ6k

--HG--
extra : rebase_source : 2820dce4513329fb648ef387d58cac469f680a6d
2017-12-18 14:19:39 +09:00
Hiroyuki Ikezoe 263cb0e605 Bug 1425771 - Tweak expected restyle count for the case where the animation begins at the current time. r=birtles
The expected restyle count depends both on animation state and micro task
handling.

If we have the conformant Promise handling and if the animation begins at the
current time, we will observe 1 less restyles than observed frames since we
skip the first restyle in the initial frame.  This represents correctly what
we do and what we *should* do.

If we don't have the conformant Promise handling and if the animation doesn't
begin at the current time, we will observe 1 more restyles than obsered frames
since the Promise in observeStyling (precisely the Promise is inside the
callback for requestAnimationFrame) is fulfilled once after a restyling process
followed by the requestAnimationFrame.

MozReview-Commit-ID: FLhSRx4y1V7

--HG--
extra : rebase_source : 59e2bb2439f69bc1415a441c0b84a81463d8229f
2017-12-18 14:19:26 +09:00
Hiroyuki Ikezoe 605f3607fa Bug 1425771 - Add a another variant of restyling_transform_animations_in_scrolled_out_element for the conformant Promise handling. r=birtles
The test case checks document timeline's currentTime to make sure that we are
in the first frame which happened after 200ms since the animation started.  It
is unfortunate for us from the point of view of restyling that the first frame
includes the restyling process in the frame without the conformant Promise
handling, doesn't include the process with the Promise handling.  So we need
to tweak there depends on the Promise handling.

I did intentionally add the forked version of the function with the same name
since branching depending on the conformant flag inside the original function
will be hard to understand and also we can easily remove the original version
once we have the conformant Promise handling.

FWIW, here is the diff between them:

@@ -365,6 +365,9 @@ waitForAllPaints(() => {

       await SpecialPowers.pushPrefEnv({ set: [["ui.showHideScrollbars", 1]] });

+      // Make sure we start from the state right after requestAnimationFrame.
+      await waitForFrame();
+
       var parentElement = addDiv(null,
         { style: 'overflow-y: scroll; height: 20px;' });
       var div = addDiv(null,
@@ -379,13 +382,17 @@ waitForAllPaints(() => {
       var markers;
       var now;
       while (true) {
-        markers = await observeStyling(1);
-        // Check restyle markers until 200ms is elapsed.
         now = document.timeline.currentTime;
         if ((now - timeAtStart) >= 200) {
+          // If the current time has elapsed over 200ms since the animation was
+          // created, it means that the animation should have already
+          // unthrottled in this tick, let's see what observes in this tick's
+          // restyling process.
+          markers = await observeStyling(1);
           break;
         }

+        markers = await observeStyling(1);
         is(markers.length, 0,
            'Transform animation running on the element which is scrolled out ' +
            'should be throttled until 200ms is elapsed');

MozReview-Commit-ID: 3WfY6aVnsXk

--HG--
extra : rebase_source : ddf51217f03fc1bfe421c344a7a7811dc591a9af
2017-12-18 14:18:17 +09:00
Hiroyuki Ikezoe 90dcb12748 Bug 1425771 - Add a function to check detect whether have conformant Promise handling and set the flag to represent it. r=birtles
MozReview-Commit-ID: FbzaUBKQ47F

--HG--
extra : rebase_source : ae936432d4ccb3e069608703c586d7134d52d12e
2017-12-18 14:17:44 +09:00
Kartikaya Gupta 4f18e92ffb Bug 1334189 - Enable mochitest-plain for linux64-qr. r=jrmuizel
MozReview-Commit-ID: nbcWhDq5de

--HG--
extra : rebase_source : 25e2c2b8b996ae11cd25dee07d9092ba574a9e40
2017-12-13 18:38:39 -05:00
Cosmin Sabou 4d17a4cc2e Backed out 4 changesets (bug 1425771) for ESlint failure r=backout on a CLOSED TREE
Backed out changeset 984d714aa987 (bug 1425771)
Backed out changeset 848047469b27 (bug 1425771)
Backed out changeset a28293b06afe (bug 1425771)
Backed out changeset 14c5ca99af0c (bug 1425771)
2017-12-18 08:37:10 +02:00
Hiroyuki Ikezoe 83ec4ebbf0 Bug 1425771 - Add a branch in only_one_restyling_after_finish_is_called for the conformant Promise handling. r=birtles
Animation.finish() in a micro task for Animation.ready leads to a restyle and
a redundant restyle due to bug 1415457.  The redundant restyle has been observed
in a single frame without the conformant Promise handling.  But once we have the
conformant Promise handling we can tell it in a later frame.
(see https://bugzilla.mozilla.org/show_bug.cgi?id=1415457#c1 to know what's
going on there)

MozReview-Commit-ID: FoojunfYZ6k

--HG--
extra : rebase_source : 2820dce4513329fb648ef387d58cac469f680a6d
2017-12-18 14:19:39 +09:00
Hiroyuki Ikezoe 8d960ec192 Bug 1425771 - Tweak expected restyle count for the case where the animation begins at the current time. r=birtles
The expected restyle count depends both on animation state and micro task
handling.

If we have the conformant Promise handling and if the animation begins at the
current time, we will observe 1 less restyles than observed frames since we
skip the first restyle in the initial frame.  This represents correctly what
we do and what we *should* do.

If we don't have the conformant Promise handling and if the animation doesn't
begin at the current time, we will observe 1 more restyles than obsered frames
since the Promise in observeStyling (precisely the Promise is inside the
callback for requestAnimationFrame) is fulfilled once after a restyling process
followed by the requestAnimationFrame.

MozReview-Commit-ID: FLhSRx4y1V7

--HG--
extra : rebase_source : 59e2bb2439f69bc1415a441c0b84a81463d8229f
2017-12-18 14:19:26 +09:00
Hiroyuki Ikezoe 71ad758afd Bug 1425771 - Add a another variant of restyling_transform_animations_in_scrolled_out_element for the conformant Promise handling. r=birtles
The test case checks document timeline's currentTime to make sure that we are
in the first frame which happened after 200ms since the animation started.  It
is unfortunate for us from the point of view of restyling that the first frame
includes the restyling process in the frame without the conformant Promise
handling, doesn't include the process with the Promise handling.  So we need
to tweak there depends on the Promise handling.

I did intentionally add the forked version of the function with the same name
since branching depending on the conformant flag inside the original function
will be hard to understand and also we can easily remove the original version
once we have the conformant Promise handling.

FWIW, here is the diff between them:

@@ -365,6 +365,9 @@ waitForAllPaints(() => {

       await SpecialPowers.pushPrefEnv({ set: [["ui.showHideScrollbars", 1]] });

+      // Make sure we start from the state right after requestAnimationFrame.
+      await waitForFrame();
+
       var parentElement = addDiv(null,
         { style: 'overflow-y: scroll; height: 20px;' });
       var div = addDiv(null,
@@ -379,13 +382,17 @@ waitForAllPaints(() => {
       var markers;
       var now;
       while (true) {
-        markers = await observeStyling(1);
-        // Check restyle markers until 200ms is elapsed.
         now = document.timeline.currentTime;
         if ((now - timeAtStart) >= 200) {
+          // If the current time has elapsed over 200ms since the animation was
+          // created, it means that the animation should have already
+          // unthrottled in this tick, let's see what observes in this tick's
+          // restyling process.
+          markers = await observeStyling(1);
           break;
         }

+        markers = await observeStyling(1);
         is(markers.length, 0,
            'Transform animation running on the element which is scrolled out ' +
            'should be throttled until 200ms is elapsed');

MozReview-Commit-ID: 3WfY6aVnsXk

--HG--
extra : rebase_source : ddf51217f03fc1bfe421c344a7a7811dc591a9af
2017-12-18 14:18:17 +09:00
Hiroyuki Ikezoe 25e6b9fd45 Bug 1425771 - Add a function to check detect whether have conformant Promise handling and set the flag to represent it. r=birtles
MozReview-Commit-ID: FbzaUBKQ47F

--HG--
extra : rebase_source : ae936432d4ccb3e069608703c586d7134d52d12e
2017-12-18 14:17:44 +09:00
Brian Birtles 0fec9ac501 Bug 1425548 - Update references to Web Animations spec in dom/animation; r=hiro
MozReview-Commit-ID: 1f2Mz0VhnBm

--HG--
extra : rebase_source : 30c952ed20ee64810d225e5778650dd01791964d
2017-12-15 14:55:08 -06:00
Brian Birtles 22ca1231e8 Bug 1422248 - Don't reject promises of dispatch cancel events when canceling idle animations; r=hiro
MozReview-Commit-ID: EGg6Ntj0loq

--HG--
extra : rebase_source : 8edd6fdd73440fe55fd8be1d524767fdaf55b872
2017-12-14 17:15:28 -06:00
00626c42d9 Bug 1413104 - Drop telemetry probes for layer size; r=botond
MozReview-Commit-ID: FtpTJDC50A8

--HG--
extra : rebase_source : 2e1ba62ae1cb462546ce552efccdde2fe1380a00
2017-12-14 21:36:09 +00:00
Hiroyuki Ikezoe 958d16759c Bug 1424949 - Wait for one more frame before checking animation start time to avoid the situation that the animation just begins at the time when it's ready. r=birtles
MozReview-Commit-ID: 6bNfl10TiT6

--HG--
extra : rebase_source : 095fd007710f8a7af13e2e7331f7326554f32cb7
2017-12-15 01:36:04 +09:00
Hiroyuki Ikezoe c9071bce5c Bug 1424949 - Use assert_greater_than or assert_less_than in file_animations-dynamic-changes.html. r=birtles
MozReview-Commit-ID: I24yopOv51d

--HG--
extra : rebase_source : cd57a9649a3ff1335112f1240e1fcfe694a053d5
2017-12-15 01:24:57 +09:00
Hiroyuki Ikezoe 33d26976c8 Bug 1424948 - Check iteration progress value instead of animating computed style value. r=birtles
It is possible that animating computed style becomes the same value as the
value in the previous tick if Animation.mPendingReadyTime is pretty close
to the timeline current time.

MozReview-Commit-ID: COuur4Wlufx

--HG--
extra : rebase_source : 5dea9ef0bce7cb606dc290277e04b779fe608bbd
2017-12-15 01:10:11 +09:00
Hiroyuki Ikezoe 2a72c4f2f9 Bug 1424948 - Use waitForNextFrame instead of waitForFrame. r=birtles
MozReview-Commit-ID: AZJ7LyeIKq2

--HG--
extra : rebase_source : f42d2b0d4220d3d458093fdc5aed7ff11dcff63e
2017-12-15 00:06:26 +09:00
Hiroyuki Ikezoe 29d095f24f Bug 1416966 - Drop the check for the new micro task checkpoint for animations. r=birtles
MozReview-Commit-ID: HVxDrxV3Qmb

--HG--
extra : rebase_source : 9b29646a35e23c31896ae7458c49a8abd44bacbb
2017-12-12 18:44:05 +09:00
Hiroyuki Ikezoe 280df82ed9 Bug 1416966 - Perform a micro task checkpoint in DocumentTimeline::WillRefresh. r=bevis,birtles
MozReview-Commit-ID: Kd1Il7COZZY

--HG--
extra : rebase_source : 872267be92883ed5f94b2e4dbca7fd7f24941f34
2017-12-12 18:44:05 +09:00
Hiroyuki Ikezoe fedaef24c4 Bug 1416966 - Add an annotation for a test case that will fail once we perform a micro task checkpoint between Animation::Tick and requestAnimationFrame callbacks. r=birtles
The 'is' check there will be replaced 'todo_is' after the commit for the new
micro task checkpoint.

MozReview-Commit-ID: EGFZWy8BD3O

--HG--
extra : rebase_source : 034717a9e7aac0edb82613321ec056ed07cdb996
2017-12-12 18:44:04 +09:00
Hiroyuki Ikezoe 912d3bc83e Bug 1416966 - Count a remaining animation restyle request when animating element was detached from the document. r=birtles
If element which has script animations is detached between Animation::Tick and
styling process, the element persists in EffectCompositor::mElementsToRestyle
(bug 1417354).  When the element is attached to the document again, the element
in mElementsToRestyle is considered as a target element that needs to be
traversed in the first animation-only restyling.  Thus the remaining restyle
request can be observed with the new micro task checkpoint for animations.

MozReview-Commit-ID: F6gs2QXcZ8X

--HG--
extra : rebase_source : 09ccf76e4d28ee55facc5a62f3e8f08e0eeb3e03
2017-12-12 18:44:04 +09:00
Hiroyuki Ikezoe e49eb2dc18 Bug 1416966 - Add todo for checking one restyle after Animation.pause(). r=birtles
Similar to the previous commit, if Animation.pause() is called between
restyling process and the next refresh driver's tick and if we wait for
Animation.ready after the pause(), there should be one restyle that hasn't
yet processed.

MozReview-Commit-ID: JnpwhOuDvPz

--HG--
extra : rebase_source : b6f14e05837754d1bd51c8a50ce8d82a0c7d751a
2017-12-12 18:44:04 +09:00
Hiroyuki Ikezoe cdb5d751e5 Bug 1416966 - Add todo for checking the final restyle after Animation.finished. r=birtles
If Animation.finished promise was fulfilled in Animation::Tick, at the moment we
haven't yet restyled the final animation value.  So once we have new micro task
checkpoint there we can observe a restyle marker after Animation.finished was
fulfilled.

MozReview-Commit-ID: LiEl4Iu2Cbr

--HG--
extra : rebase_source : d88b037eba2fd07d75a3ab429c028e23e5137b52
2017-12-12 18:44:04 +09:00
Hiroyuki Ikezoe e792071575 Bug 1424644 - Check pending state to make sure the animation has been paused or not. r=birtles
'finish_from_pause' supposes that finish() is called after pause pending state
is finished.  Whereas 'finish_from_pause_pending' supposes that finish() is
called during pause pending state.  We should check the state respectively.

MozReview-Commit-ID: DUq2ghK6h9I

--HG--
extra : rebase_source : 2d4ded71387e75efcff9bb184b8e51475bc8bc56
2017-12-11 06:46:46 +09:00
Hiroyuki Ikezoe e8357d3715 Bug 1424115 - Rewrite test_animation_observers_async.html with promise_test. r=boris
With this patch we still use a global MutationObserver and a single target
element and re-use them in all test cases.  Eventually each test should create
a target element and a MutationObserver to avoid explicit cleanup jobs (e.g.
clearing styles and flushing styles for the global target element), but it's
not in the scope of this bug.

MozReview-Commit-ID: IqEjMbTrpAK

--HG--
extra : rebase_source : 7463c21ce946f5c15f2b7bc4a71c90dba784385d
2017-12-08 12:03:30 +09:00
Hiroyuki Ikezoe dc512a2632 Bug 1424115 - Drop EventUtils.js from test_animation_observers_async.html. r=boris
It's no longer used.

MozReview-Commit-ID: 5f4lEP5wAqx

--HG--
extra : rebase_source : 81feae35ee4ee735e2bb3904f0166897c93880ec
2017-12-08 11:50:03 +09:00
Hiroyuki Ikezoe 9e8a926279 Bug 1424115 - Fix indentation in test_animation_observers_sync.html. r=boris
MozReview-Commit-ID: HsYi9ISOVli

--HG--
extra : rebase_source : 05c05478237c1c827f03b070ace8828a43a0474d
2017-12-08 11:50:03 +09:00
Hiroyuki Ikezoe 61db04fabc Bug 1424115 - Drop requestLongerTimeout in test_animation_observers_async.html. r=boris
Most of test cases in the test file has been moved so that the test no longer
takes over default time out (5 minutes).

MozReview-Commit-ID: 9rrr7WrkcFH

--HG--
extra : rebase_source : 44ca3c0e42a389d82185e55b257c1dceb6d407d4
2017-12-08 11:50:03 +09:00
Hiroyuki Ikezoe 49e012c030 Bug 1416693 - Make animation test cases that don't require asynchronous. r=boris
Below list is animation test cases remain in test_animation_observers_async.html

* single_animation : waiting for animationend event
* single_animation_cancelled_fill : waiting for animaitonend event
* tree_ordering : waiting for animationend event
* coalesce_change_cancel : testing a non-cancelling change to an animation
  followed immediately by a cancelling change sends only one removal
  notification, I am concerned that adding explicit style flush
  (e.g. getComputedstyle) might change the test purpose.
* play : redundant play() seems to be affected by asynchronous.
  I haven't dug into detail.
* finish_from_pause : waiting for Animation.ready to make sure pause pending
  state to finish.

MozReview-Commit-ID: HAelOTwSqgv

--HG--
extra : rebase_source : 819e8975028f62580dccd07fedc53d250b71f97a
2017-12-07 10:06:02 +09:00
Hiroyuki Ikezoe 70ec3f1b1b Bug 1416693 - Make transition test cases that don't require asynchronous. r=boris
Below list is transition test cases remain in test_animation_observers_async.html

* single_transition : waiting for transitionend event

MozReview-Commit-ID: 5ecgpJm1W6p

--HG--
extra : rebase_source : d5c77cf77521f62a693897230d73287deab8b6c7
2017-12-07 16:27:32 +09:00
Hiroyuki Ikezoe 6a7d32d971 Bug 1418268 - Tweak expected restyle count for the case where animation start time was clamped. r=birtles
MozReview-Commit-ID: IPxRtRucze4

--HG--
extra : rebase_source : b5c346b38022fa69f0762a5d3149599f41f2414b
2017-12-07 12:57:54 +09:00
Hiroyuki Ikezoe 18bbe2d0b2 Bug 1418268 - Add a function to check whether there is a micro task checkpoint between animation tick and requestAnimationFrame callbacks. r=birtles
MozReview-Commit-ID: 6C9Fbg7SKWU

--HG--
extra : rebase_source : a1e979a2034da2be12348f7916d2a0983c6917c6
2017-12-07 08:43:59 +09:00
Hiroyuki Ikezoe d29d155692 Bug 1418268 - Make sure the animation on scrolled out element is throttled in the first place. r=birtles
In the first frame after the initial paint, we skip restyling if the initial
paint took over vsync refresh rate as an optimization and to avoid jumpy
animations. To avoid checking this skipped restyling that we'd actually expect
a restyle maker there, firstly we check there is no restyle marker after the
initial paint for scrolled out animation for five frames, and we then make the
element visible and check a restyle marker there.

MozReview-Commit-ID: 5XkJhdtUly5

--HG--
extra : rebase_source : 1a441296ad6f6cc42b50d300ebacd66e5dee77a1
2017-12-07 08:43:38 +09:00
Hiroyuki Ikezoe 3fb7e182cc Bug 1423078 - Use waitForNextFrame() instead of waitForFrame() to make sure the next frame. r=birtles
This change is the same as bug 1422995.  With the conformant Promise handling
and performing micro task checkpoint in Animation tick, waitForFrame() inside
the callback for Animation.ready does not make sure that the next frame happens.

MozReview-Commit-ID: KEz4xmHpGlk

--HG--
extra : rebase_source : 6285f2f3df3d5cb617579bb4f449832ff155e34d
2017-12-06 09:19:40 +09:00
Hiroyuki Ikezoe ed3191d521 Bug 1423078 - Use waitForNextFrame() instead of waitForFrame() to make sure the second restyle happen after the initial paint. r=birtles
We clamp animation start time on the second restyling when the initial paint
for the animation took over vsync refresh rate (16.6ms normally as of today).
The clamping leads the animation progress to the same value as the initial one.
Once this clamping happens, the animation value does not change even after
waiting for Animation.ready and a reqeustAnimationFrame.  To make the animation
value change happen we should wait for one more requestAnimationFrame.

MozReview-Commit-ID: 8OTC0xkKBrr

--HG--
extra : rebase_source : 4c0313f3a96ffc85306f5687630abc13d88aed61
2017-12-06 09:19:38 +09:00
Hiroyuki Ikezoe 54e5e36f24 Bug 1423078 - Use assert_greater_than instead of assert_true. r=birtles
MozReview-Commit-ID: C4LZQni43wp

--HG--
extra : rebase_source : 0f68abbd0a1f8cf9e005e2bdecd7e7f267c64cba
2017-12-06 09:19:35 +09:00
Boris Chiou 570057e075 Bug 1408303 - Part 3: Move several Servo parsers into ServoCSSParser helper class. r=heycam
We have ServoCSSParser class, and I think it's better to move those
Servo FFI into this class to avoid including ServoBindings.h everywhere.

MozReview-Commit-ID: 6orXtddp9ZU

--HG--
extra : rebase_source : 6da4158c4fec606aaee49fddee3192f94d6c85a3
2017-12-01 17:35:47 +08:00
Hiroyuki Ikezoe 7257be7a76 Bug 1422995 - Use waitForNextFrame() instead of waitForFrame() to make sure the next requestAnimationFrame callback happen. r=birtles
With the conformant Promise handling (bug 1193394) and performing micro task
checkpoint in Animation tick (bug 1416966), if we call waitForFrame() inside
the callback for Animation.ready.then it will still be done in the same refresh
driver's tick.

MozReview-Commit-ID: GQJiDHHUlyD

--HG--
extra : rebase_source : 55813e6c1fc24193e0b4b1c87934debe80d357b5
2017-12-05 09:13:42 +09:00
Emilio Cobos Álvarez 13a91fa9f6 Bug 1417200: Make -moz-border-colors chrome only. r=xidorn
On a CLOSED TREE, since the servo patch managed to get in.

This also makes the border longhand no longer reset them.

MozReview-Commit-ID: KNais1e5FnE
2017-12-01 23:25:01 +01:00
Hiroyuki Ikezoe 74b350fbd2 Bug 1421476 - Wait for the next frame after waitForWheelEvent(). r=birtles
sendWheelAndPaintNoFlush which calls in waitForWheelEvent()  waits for
MozAfterPaint and calls a given callback function when the MozAfterPaint is
received.  The MozAfterPaint is processed after we did a paint process.
However, observeStyling counts the number of requestAnimationFrame callbacks
and yet there will be no opportunity to process restyles between the
MozAfterPaint callback and the next call to requestAnimationFrame.  As a result,
if we are expecting restyles to happen on every frame, our count will be off by
one.  To avoid this, we wait until the next requestAnimationFrame callback
before calling observeStyling.

Note that we *could* try to adjust observeStyling to automatically do this for
us but sometimes we want observeStyling to observe restyles in the *current*
frame.  Since there's no obvious way to detect what we are trying to do it's
easier to just let each test decide from which point it wants to count restyles.


MozReview-Commit-ID: 1B8EZNozjFj

--HG--
extra : rebase_source : 748f874dbb42e06b72b12582762626a31d1e8d75
2017-11-29 13:05:21 +09:00
Hiroyuki Ikezoe 574cfd5228 Bug 1421476 - Change style before waiting for a single requestAnimationFrame. r=birtles
If we waited for a single requestAnimationFrame and changed the style inside
the callback, we have no chance to process the style change there.

* Before this change:
 - Tick:
   Start observing restyles
     Process restyling but there is no need to do.
 - Next tick:
   Run requestAnimationFrame callbacks
     set the style
     finish observing restyles

* After this change:
 - Tick:
   Set the style
   Start observing restyles
     Process restyling the style
 - Next tick:
   Run requestAnimationFrame callbacks
     finish observing restyles

MozReview-Commit-ID: JNQLjOXz3AZ

--HG--
extra : rebase_source : 68da01d65fcade7137c6a06551438e64cd157d0f
2017-11-29 13:05:21 +09:00
Hiroyuki Ikezoe ffc92e2d66 Bug 1421476 - Use waitForNextFrame() instead of waitForFrame() in file_restyles.html. r=birtles
MozReview-Commit-ID: K5tjO1tgoeN

--HG--
extra : rebase_source : 1b7334f7721f06cd8219a395b96089391f8aa3a2
2017-11-29 13:05:20 +09:00
Hiroyuki Ikezoe 2a187244e9 Bug 1421476 - Make waitForAnimationFrames wait for the correct number of consecutive animation frames for the given count. r=birtles
As mentioned in the previous commit, with the conformant Promise handling there
are cases where a requestAnimationFrame callback can happen in the same tick of
the refresh driver, that is, the same animation frame.  We should only count
callbacks that occur in frames subsequent to the current one.

MozReview-Commit-ID: IEC7uFwGysS

--HG--
extra : rebase_source : 9a0642507c73ce8195145290bb783a3de3f9ba1b
2017-11-29 13:05:07 +09:00
Hiroyuki Ikezoe 7735f38cde Bug 1421476 - Add waitForNextFrame() that ensures the state in the next frame. r=birtles
With the conformant Promise handling, there are cases that we are still in the
same tick even after we got a reqeustAnimationFrame.  For example, if we call
requestAnimationFrame() in the callback for an animationstart event, the
callback is processed just before the callback for requestAnimationFrame is
processed in a tick, so we are still in the same tick even after we got the
requestAnimationFrame.

MozReview-Commit-ID: Cgnu7Mk4Nl8

--HG--
extra : rebase_source : 6adfdef01e1ad1ab0cf5f93f89bc4946f49c0638
2017-11-29 13:04:17 +09:00
Hiroyuki Ikezoe ba70245385 Bug 1421151 - Drop redundant calling start(). r=birtles
We have already start() call at the top of this test file, the start() there
is called after setting 'layout.css.devPixelsPerPx' pref, that should be only
one call for start().

MozReview-Commit-ID: A43vfwfLer3

--HG--
extra : rebase_source : 7cf3157bb781c135c726d252048fe52393ead428
2017-11-28 16:42:27 +09:00
Sebastian Hengst 9dc9b78023 Backed out 3 changesets (bug 1419226) for frequently for frequently timing out in Web reftests in webvtt, e.g. enable_controls_reposition.html. r=backout
Backed out changeset 5a2460c34657 (bug 1419226)
Backed out changeset 8cda3fb3ce1a (bug 1419226)
Backed out changeset 21d9bedcf411 (bug 1419226)
2017-11-27 17:27:27 +02:00
Mantaroh Yoshinaga 10c019403e Bug 1419226 - Part 3.Wait for MozAfterPaint instead of waiting for frames on file_deferred_start.html . r=hiro
This patch will :
 * Create test div element after waiting for document load, then wait for
   painting after it.
 * Change to waiting for MozAfterPaint event without workaround of waiting for
   excessive frames.

MozReview-Commit-ID: 6Ytxln3tJi4

--HG--
extra : rebase_source : 53b5f038ec95dd47b76d4a0bcf8dfd964bff451d
2017-11-27 12:54:49 +09:00
Hiroyuki Ikezoe 23677e6410 Bug 1420774 - Drop unnecessary virtual from Animation methods. r=boris
MozReview-Commit-ID: wRrKFbjsTx

--HG--
extra : rebase_source : 0e29a425d94c9cac01a5ba1f149f48301bcf5cde
2017-11-27 07:44:53 +09:00
Hiroyuki Ikezoe 4937b30bdd Bug 1413370 - Skip the test case that checks transform animation on scrolled-out element is unthrottled periodically on Android. r=boris
It causes intermittent failure.

MozReview-Commit-ID: HDitQV4Yn3P

--HG--
extra : rebase_source : f3a874df1575f903bac3331c9e5cd3454f1f187b
2017-11-27 06:20:06 +09:00
Brian Birtles 06e53a1793 Bug 1412765 - Update more tests to reflect changes to Animation.playState's r=hiro
return value; r?hiro

MozReview-Commit-ID: KvZa7EyzAKj

--HG--
extra : rebase_source : b7721bc34f246c36a22eb4f9acc3fba854dcdec8
2017-11-24 10:53:58 +09:00
Brian Birtles 7ebdac8455 Bug 1412765 - Update tests in dom/animation/tests to use new pending member; r=hiro
MozReview-Commit-ID: 2PDm9NaXChg

--HG--
extra : rebase_source : 6a159137b7fd65a456f799b2323667de8f636542
2017-11-22 14:13:36 +09:00
Brian Birtles e83e1a5e71 Bug 1412765 - Add Animation.pending member; r=bz,hiro
This reflects the change made to the Web Animations specification in:

  9e2053f553
  1c3415f4cc
  (I got it wrong the first time. The second commit fixes the first.)

And discussed in:

  https://github.com/w3c/web-animations/issues/196

In summary, we are splitting the "pending" play state out into a separate
boolean member so that it is possible to distinguish between "play-pending" and
"pause-pending" and because most of the time when you check for
animation.playState === 'running' you also really want to include play-pending
animations.

MozReview-Commit-ID: IJSNoZTKW2I

--HG--
extra : rebase_source : 5d17239fd087cfe3cce1c9697eff97d062b6dd4b
2017-11-21 17:10:59 +09:00
Hiroyuki Ikezoe 33e7b8838f Bug 1418867 - Pass element or pseudo element to Servo_StyleSet_GetBaseComputedValuesForElement(). r=emilio
MozReview-Commit-ID: Ae3iZ6g3x3c

--HG--
extra : rebase_source : 8d07ac08d63cfdb96cb07a73ed86b268d6b5026e
2017-11-22 11:03:40 +09:00
Hiroyuki Ikezoe a2e3c0154c Bug 1418867 - Drop pseudo type argument from KeyframeEffectReadOnly::EnsureBaseStyle(). r=birtles
We have the pseudo type in mTarget.

MozReview-Commit-ID: GoXzoavnwpL

--HG--
extra : rebase_source : 2f46f581b662d7954211776f58b5104fc615486f
2017-11-22 09:56:56 +09:00
Brian Birtles c64d600a96 Bug 1418220 - Drop AnimationUtils::IsCoreAPIEnabled(ForCaller) and use nsContentUtils::AnimationsAPICoreEnabled / nsDocument::IsWebAnimationsEnabled instead; r=hiro
The difference between nsDocument::IsWebAnimationsEnabled and
nsContentUtils::AnimationsAPICoreEnabled is that the former checks the caller
type and treats the preference as set for system callers which is particularly
needed for enabling things like the getProperties() API for DevTools etc.

Generally in API-facing call sites we have a JS context / CallerType and so we
want to distinguish between system callers and non-system callers. However, for
a few internal uses--specifically filling-in missing keyframes--we don't care
about the caller type and always follow the pref setting.

That may or not be quite what we want, but this patch doesn't change that except
for one call site: KeyframeUtils::GetKeyframesFromObject. This patch changes
GetKeyframesFromObject from *not* checking the caller type to checking the
caller type. That seems to be the correct behavior here since this is called
from KeyframeEffectReadOnly::SetKeyframes(JSContext*, JS::Handle<JSObject*>,
ErrorResult&) (i.e. a JS API-facing call site) where we *should* enable the full
API when the caller is chrome code.

MozReview-Commit-ID: FQJBk3zytwd

--HG--
extra : rebase_source : 577bca1e551e39fecfab309f64c993eba110337f
2017-11-20 14:18:43 +09:00
Jonathan Watt ab7efc9dbb Bug 1417365 - Unified build issues in dom/animation. r=baku 2017-10-26 11:55:28 +01:00
Noemi Erli 550148ab69 Merge inbound to mozilla-central r=merge a=merge 2017-11-15 11:57:12 +02:00
Ya-Chieh Wu d2e5bc76eb Bug 1381153 - Part 1: Cache MayHaveOpacityAnimation and MayHaveTransformAnimation in nsIFrame. r=mstange, r=mats
There are two places where I have to cache the status of MayHaveOpacityAnimation
and MayHaveTransformAnimation. First place is in |nsIFrame:init()| where an
element is associated with a frame. Second place is in
|KeyframeEffectReadOnly::UpdateEffectSet()| where the script can add animations
on element.

btw I keep the original two flags of MayHaveOpacityAnimation and
MayHaveTransformAnimation in EffectSet because there is no guarantee that
an element has been associated with a frame when we call to |UpdateEffectSet()|.
But we still want to keep the benefits that we can quickly look up
MayHaveOpacityAnimation or MayHaveTransformAnimation. So I keep them in
EffectSet and transfer the status into nsIFrame when we bind an element
to a frame in nsIFrame:Init().

MozReview-Commit-ID: JDwyAQQTKA7
2017-11-13 18:15:00 -05:00
Hiroyuki Ikezoe 1db8e96c69 Bug 1415729 - Make 'necessary_update_should_be_invoked' test in file_restyles.html more strict. r=birtles
Before this change, the test calls getAnimations() after changing animation
duration.  Unfortunately it was wallpapering what's going on there actually
since getAnimations() flushes pending styles.  This patch drops the
getAnimations() call and makes it clear how many restyles happen there.

MozReview-Commit-ID: A0a5MlTyBnD

--HG--
extra : rebase_source : cc20d2c6945f81f72c753137441b8d84ff52ff63
2017-11-15 13:43:20 +09:00
Hiroyuki Ikezoe 4ed9f9ddff Bug 1415729 - Use arrow function in file_restyles.html. r=birtles
MozReview-Commit-ID: AcjDRK36d9d

--HG--
extra : rebase_source : 2d853c3c4702e775275a49f2eb3552ef00b7d295
2017-11-15 12:30:04 +09:00
Hiroyuki Ikezoe bb3c45d880 Bug 1415399 - Explicitly flush styles to make sure style changes happen in the case where we are in the state just before requestAnimationFrame is handled. r=birtles
MozReview-Commit-ID: FqIoLcJ69tl

--HG--
extra : rebase_source : ab1a1433dadc7c3269df3ca7a8a7e809922ebcdb
2017-11-14 08:38:03 +09:00
Hiroyuki Ikezoe 4b43b78621 Bug 1415399 - Use arrow function in test_animation_observers_{async,sync}.html. r=birtles
MozReview-Commit-ID: 4gSsvjQWBfS

--HG--
extra : rebase_source : 8b3e7791a65adc33d966c4370c4776e430522429
2017-11-14 08:37:09 +09:00
Csoregi Natalia 8f1a81caad Merge inbound to mozilla-central r=merge a=merge 2017-11-14 00:57:47 +02:00