gecko-dev/dom/animation
Hiroyuki Ikezoe 10960cad13 Bug 1430884 - Throttle nsChangeHint_UpdateContainingBlock on invisible element. r=birtles
When an animation targets a CSS property that could cause a containing block to
be generated for its descendants, this containing block must be generated even
if the particular property values used by the animation would not normally
trigger generation of a containing block (e.g. transform: none).  This is due
to the implicit application of will-change defined in CSS Animations[1] and Web
Animations[2].

Since this containing block is generated at the start of the animations, we can
throttle animations that produce the UpdateContainingBlock change hint for
animations that are not visible since they shouldn't have any further side
effects beyond the generation of containing blocks (which have already happened).

[1] https://drafts.csswg.org/css-animations/#animations
[2] https://drafts.csswg.org/web-animations-1/#side-effects-section


Unfortunately perspective animations starting with 'none' and transform
animations from 'none' to 'none' don't create a containing block (bug 1470349
and bug 1470370).  That doesn't block the optimization in this patch, however,
since those bugs occur regardless of element visibility.

MozReview-Commit-ID: 8rTl8dShHrD

--HG--
extra : rebase_source : 886b003d0f3c555a12baf0de81b4130ef2d71e82
2018-06-25 18:29:09 +09:00
..
test Bug 1430884 - Throttle nsChangeHint_UpdateContainingBlock on invisible element. r=birtles 2018-06-25 18:29:09 +09:00
Animation.cpp Bug 1466168: Remove mozilla::Forward in favor of std::forward. r=froydnj 2018-06-02 09:33:26 +02:00
Animation.h Bug 1466990 - s/StartOnNextTick/TriggerOnNextTick/ in comments. r=birtles DONTBUILD 2018-06-06 09:53:13 +09:00
AnimationComparator.h Bug 1417365 - Unified build issues in dom/animation. r=baku 2017-10-26 11:55:28 +01:00
AnimationEffect.cpp Bug 1418874 part 2 - Move ctor and dtor of AnimationEffect into cpp file. r=hiro 2018-06-14 20:00:20 -07:00
AnimationEffect.h Bug 1418874 part 2 - Move ctor and dtor of AnimationEffect into cpp file. r=hiro 2018-06-14 20:00:20 -07:00
AnimationEventDispatcher.cpp Bug 1465585: Switch from mozilla::Move to std::move. r=froydnj 2018-06-01 10:45:27 +02:00
AnimationEventDispatcher.h Bug 1433008 - Make AnimationEventInfo, InternalTransitionEvent and InternalAnimationEvent movable. r=masayuki 2018-01-30 09:26:48 +09:00
AnimationPerformanceWarning.cpp Bug 1386600 - Change nsIStringBundle methods to return |AString| instead of |wstring|. r=emk,sr=dbaron. 2017-08-04 14:40:52 +10:00
AnimationPerformanceWarning.h Bug 1391803 - Use nsStringFwd.h for forward declaring string classes. r=froydnj 2017-08-16 16:48:52 -07:00
AnimationPropertySegment.h
AnimationTarget.h
AnimationTimeline.cpp bug 1457867, store DOMEventTargetHelper objects in global object as a linked list, r=bkelly 2018-05-04 19:25:05 +03:00
AnimationTimeline.h
AnimationUtils.cpp Bug 1456394 - Merge KeyframeEffectReadOnly and KeyframeEffect; r=bz,hiro 2018-05-07 11:08:59 +09:00
AnimationUtils.h Bug 1440195 Address CSS Animations r=birtles 2018-03-05 15:58:46 -06:00
ComputedTiming.h Bug 1456394 - Rename AnimationEffectReadOnly to AnimationEffect; r=bz,hiro 2018-05-07 11:15:16 +09:00
ComputedTimingFunction.cpp
ComputedTimingFunction.h Bug 1453795 - Dom/Animation - Initialize member fields in classes/ structures. r=bbirtles 2018-06-13 23:24:56 +03:00
CSSPseudoElement.cpp Bug 1442817 - Don't flush throttled animations on getAnimations(). r=birtles 2018-03-09 09:38:40 +09:00
CSSPseudoElement.h Bug 1412125, part 2 - Fix dom/ mode lines. r=qdot 2017-10-26 15:08:41 -07:00
DocumentTimeline.cpp bug 1457867, store DOMEventTargetHelper objects in global object as a linked list, r=bkelly 2018-05-04 19:25:05 +03:00
DocumentTimeline.h
EffectCompositor.cpp Bug 1466168: Remove mozilla::Forward in favor of std::forward. r=froydnj 2018-06-02 09:33:26 +02:00
EffectCompositor.h Bug 1412716 - De-templatize EffectCompositor::UpdateEffectProperties and relevant stuff. r=emilio 2018-04-09 20:15:59 +09:00
EffectSet.cpp Bug 1456394 - Merge KeyframeEffectReadOnly and KeyframeEffect; r=bz,hiro 2018-05-07 11:08:59 +09:00
EffectSet.h Bug 1430884 - Rename unthrottling transform animations stuff. r=birtles 2018-06-25 09:12:21 +09:00
Keyframe.h Bug 1465585: Switch from mozilla::Move to std::move. r=froydnj 2018-06-01 10:45:27 +02:00
KeyframeEffect.cpp Bug 1430884 - Flatten CanThrottleIfNotVisible function with early returns. r=birtles 2018-06-25 11:51:05 +09:00
KeyframeEffect.h Bug 1430884 - Factor out checking the animation on the given frame can be throttled if the frame is not visible. r=birtles 2018-06-25 11:51:05 +09:00
KeyframeEffectParams.h Bug 1431295 - Drop 'undef None' macro in dom/animation/. r=boris 2018-01-18 14:12:51 +09:00
KeyframeUtils.cpp Bug 1465585: Switch from mozilla::Move to std::move. r=froydnj 2018-06-01 10:45:27 +02:00
KeyframeUtils.h Bug 1412716 - De-templatize EffectCompositor::UpdateEffectProperties and relevant stuff. r=emilio 2018-04-09 20:15:59 +09:00
moz.build Bug 1456394 - Drop AnimationEffectTiming(ReadOnly) interfaces; r=bz,hiro 2018-05-07 12:58:37 +09:00
PendingAnimationTracker.cpp Bug 1449631 part 12. Remove the Nullable smuggling from nsIDOMEventTarget. r=smaug 2018-04-05 13:42:42 -04:00
PendingAnimationTracker.h Bug 1282691 - Drop the assertion about an animation that we're making play-pending not already being pause-pending; r=boris 2017-10-13 14:37:51 +09:00
PseudoElementHashEntry.h
TimingParams.cpp Bug 1456394 - Make TimingParameters::operator== compare end delay values; r=hiro 2018-05-07 12:42:24 +09:00
TimingParams.h Bug 1465585: Switch from mozilla::Move to std::move. r=froydnj 2018-06-01 10:45:27 +02:00