Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(138)

Side by Side Diff: third_party/WebKit/Source/core/animation/css/CSSAnimations.cpp

Issue 2384263003: Reflow comments in core/animation and subdirs (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/WebKit/Source/core/animation/css/CSSAnimationUpdate.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 261
262 void CSSAnimations::calculateCompositorAnimationUpdate( 262 void CSSAnimations::calculateCompositorAnimationUpdate(
263 CSSAnimationUpdate& update, 263 CSSAnimationUpdate& update,
264 const Element* animatingElement, 264 const Element* animatingElement,
265 Element& element, 265 Element& element,
266 const ComputedStyle& style, 266 const ComputedStyle& style,
267 const ComputedStyle* parentStyle) { 267 const ComputedStyle* parentStyle) {
268 ElementAnimations* elementAnimations = 268 ElementAnimations* elementAnimations =
269 animatingElement ? animatingElement->elementAnimations() : nullptr; 269 animatingElement ? animatingElement->elementAnimations() : nullptr;
270 270
271 // We only update compositor animations in response to changes in the base sty le. 271 // We only update compositor animations in response to changes in the base
272 // style.
272 if (!elementAnimations || elementAnimations->isAnimationStyleChange()) 273 if (!elementAnimations || elementAnimations->isAnimationStyleChange())
273 return; 274 return;
274 275
275 if (!animatingElement->layoutObject() || 276 if (!animatingElement->layoutObject() ||
276 !animatingElement->layoutObject()->style()) 277 !animatingElement->layoutObject()->style())
277 return; 278 return;
278 279
279 const ComputedStyle& oldStyle = *animatingElement->layoutObject()->style(); 280 const ComputedStyle& oldStyle = *animatingElement->layoutObject()->style();
280 if (!oldStyle.shouldCompositeForCurrentAnimations()) 281 if (!oldStyle.shouldCompositeForCurrentAnimations())
281 return; 282 return;
(...skipping 30 matching lines...) Expand all
312 const ComputedStyle& style, 313 const ComputedStyle& style,
313 ComputedStyle* parentStyle, 314 ComputedStyle* parentStyle,
314 StyleResolver* resolver) { 315 StyleResolver* resolver) {
315 const ElementAnimations* elementAnimations = 316 const ElementAnimations* elementAnimations =
316 animatingElement ? animatingElement->elementAnimations() : nullptr; 317 animatingElement ? animatingElement->elementAnimations() : nullptr;
317 318
318 bool isAnimationStyleChange = 319 bool isAnimationStyleChange =
319 elementAnimations && elementAnimations->isAnimationStyleChange(); 320 elementAnimations && elementAnimations->isAnimationStyleChange();
320 321
321 #if !DCHECK_IS_ON() 322 #if !DCHECK_IS_ON()
322 // If we're in an animation style change, no animations can have started, been cancelled or changed play state. 323 // If we're in an animation style change, no animations can have started, been
323 // When DCHECK is enabled, we verify this optimization. 324 // cancelled or changed play state. When DCHECK is enabled, we verify this
325 // optimization.
324 if (isAnimationStyleChange) 326 if (isAnimationStyleChange)
325 return; 327 return;
326 #endif 328 #endif
327 329
328 const CSSAnimationData* animationData = style.animations(); 330 const CSSAnimationData* animationData = style.animations();
329 const CSSAnimations* cssAnimations = 331 const CSSAnimations* cssAnimations =
330 elementAnimations ? &elementAnimations->cssAnimations() : nullptr; 332 elementAnimations ? &elementAnimations->cssAnimations() : nullptr;
331 const Element* elementForScoping = 333 const Element* elementForScoping =
332 animatingElement ? animatingElement : &element; 334 animatingElement ? animatingElement : &element;
333 335
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
457 } 459 }
458 460
459 void CSSAnimations::maybeApplyPendingUpdate(Element* element) { 461 void CSSAnimations::maybeApplyPendingUpdate(Element* element) {
460 m_previousActiveInterpolationsForAnimations.clear(); 462 m_previousActiveInterpolationsForAnimations.clear();
461 if (m_pendingUpdate.isEmpty()) 463 if (m_pendingUpdate.isEmpty())
462 return; 464 return;
463 465
464 m_previousActiveInterpolationsForAnimations.swap( 466 m_previousActiveInterpolationsForAnimations.swap(
465 m_pendingUpdate.activeInterpolationsForAnimations()); 467 m_pendingUpdate.activeInterpolationsForAnimations());
466 468
467 // FIXME: cancelling, pausing, unpausing animations all query compositingState , which is not necessarily up to date here 469 // FIXME: cancelling, pausing, unpausing animations all query
470 // compositingState, which is not necessarily up to date here
468 // since we call this from recalc style. 471 // since we call this from recalc style.
469 // https://code.google.com/p/chromium/issues/detail?id=339847 472 // https://code.google.com/p/chromium/issues/detail?id=339847
470 DisableCompositingQueryAsserts disabler; 473 DisableCompositingQueryAsserts disabler;
471 474
472 for (size_t pausedIndex : 475 for (size_t pausedIndex :
473 m_pendingUpdate.animationIndicesWithPauseToggled()) { 476 m_pendingUpdate.animationIndicesWithPauseToggled()) {
474 Animation& animation = *m_runningAnimations[pausedIndex]->animation; 477 Animation& animation = *m_runningAnimations[pausedIndex]->animation;
475 if (animation.paused()) 478 if (animation.paused())
476 animation.unpause(); 479 animation.unpause();
477 else 480 else
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
676 Timing timing = transitionData.convertToTiming(transitionIndex); 679 Timing timing = transitionData.convertToTiming(transitionIndex);
677 if (timing.startDelay + timing.iterationDuration <= 0) 680 if (timing.startDelay + timing.iterationDuration <= 0)
678 return; 681 return;
679 682
680 AnimatableValue* reversingAdjustedStartValue = from.get(); 683 AnimatableValue* reversingAdjustedStartValue = from.get();
681 double reversingShorteningFactor = 1; 684 double reversingShorteningFactor = 1;
682 if (interruptedTransition) { 685 if (interruptedTransition) {
683 const double interruptedProgress = 686 const double interruptedProgress =
684 interruptedTransition->animation->effect()->progress(); 687 interruptedTransition->animation->effect()->progress();
685 if (!std::isnan(interruptedProgress)) { 688 if (!std::isnan(interruptedProgress)) {
686 // const_cast because we need to take a ref later when passing to startTra nsition. 689 // const_cast because we need to take a ref later when passing to
690 // startTransition.
687 reversingAdjustedStartValue = 691 reversingAdjustedStartValue =
688 const_cast<AnimatableValue*>(interruptedTransition->to); 692 const_cast<AnimatableValue*>(interruptedTransition->to);
689 reversingShorteningFactor = 693 reversingShorteningFactor =
690 clampTo((interruptedProgress * 694 clampTo((interruptedProgress *
691 interruptedTransition->reversingShorteningFactor) + 695 interruptedTransition->reversingShorteningFactor) +
692 (1 - interruptedTransition->reversingShorteningFactor), 696 (1 - interruptedTransition->reversingShorteningFactor),
693 0.0, 1.0); 697 0.0, 1.0);
694 timing.iterationDuration *= reversingShorteningFactor; 698 timing.iterationDuration *= reversingShorteningFactor;
695 if (timing.startDelay < 0) { 699 if (timing.startDelay < 0) {
696 timing.startDelay *= reversingShorteningFactor; 700 timing.startDelay *= reversingShorteningFactor;
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
746 animatingElement->document().wasPrinting()) 750 animatingElement->document().wasPrinting())
747 return; 751 return;
748 752
749 ElementAnimations* elementAnimations = animatingElement->elementAnimations(); 753 ElementAnimations* elementAnimations = animatingElement->elementAnimations();
750 const TransitionMap* activeTransitions = 754 const TransitionMap* activeTransitions =
751 elementAnimations ? &elementAnimations->cssAnimations().m_transitions 755 elementAnimations ? &elementAnimations->cssAnimations().m_transitions
752 : nullptr; 756 : nullptr;
753 const CSSTransitionData* transitionData = style.transitions(); 757 const CSSTransitionData* transitionData = style.transitions();
754 758
755 #if DCHECK_IS_ON() 759 #if DCHECK_IS_ON()
756 // In debug builds we verify that it would have been safe to avoid populating and testing listedProperties if the style recalc is due to animation. 760 // In debug builds we verify that it would have been safe to avoid populating
761 // and testing listedProperties if the style recalc is due to animation.
757 const bool animationStyleRecalc = false; 762 const bool animationStyleRecalc = false;
758 #else 763 #else
759 // In release builds we avoid the cost of checking for new and interrupted tra nsitions if the style recalc is due to animation. 764 // In release builds we avoid the cost of checking for new and interrupted
765 // transitions if the style recalc is due to animation.
760 const bool animationStyleRecalc = 766 const bool animationStyleRecalc =
761 elementAnimations && elementAnimations->isAnimationStyleChange(); 767 elementAnimations && elementAnimations->isAnimationStyleChange();
762 #endif 768 #endif
763 769
764 std::bitset<numCSSProperties> listedProperties; 770 std::bitset<numCSSProperties> listedProperties;
765 bool anyTransitionHadTransitionAll = false; 771 bool anyTransitionHadTransitionAll = false;
766 const LayoutObject* layoutObject = animatingElement->layoutObject(); 772 const LayoutObject* layoutObject = animatingElement->layoutObject();
767 if (!animationStyleRecalc && style.display() != EDisplay::None && 773 if (!animationStyleRecalc && style.display() != EDisplay::None &&
768 layoutObject && layoutObject->style() && transitionData) { 774 layoutObject && layoutObject->style() && transitionData) {
769 const ComputedStyle& oldStyle = *layoutObject->style(); 775 const ComputedStyle& oldStyle = *layoutObject->style();
770 776
771 for (size_t i = 0; i < transitionData->propertyList().size(); ++i) { 777 for (size_t i = 0; i < transitionData->propertyList().size(); ++i) {
772 const CSSTransitionData::TransitionProperty& transitionProperty = 778 const CSSTransitionData::TransitionProperty& transitionProperty =
773 transitionData->propertyList()[i]; 779 transitionData->propertyList()[i];
774 if (transitionProperty.propertyType != 780 if (transitionProperty.propertyType !=
775 CSSTransitionData::TransitionKnownProperty) 781 CSSTransitionData::TransitionKnownProperty)
776 continue; 782 continue;
777 783
778 CSSPropertyID property = 784 CSSPropertyID property =
779 resolveCSSPropertyID(transitionProperty.unresolvedProperty); 785 resolveCSSPropertyID(transitionProperty.unresolvedProperty);
780 bool animateAll = property == CSSPropertyAll; 786 bool animateAll = property == CSSPropertyAll;
781 if (animateAll) 787 if (animateAll)
782 anyTransitionHadTransitionAll = true; 788 anyTransitionHadTransitionAll = true;
783 const StylePropertyShorthand& propertyList = 789 const StylePropertyShorthand& propertyList =
784 animateAll ? CSSAnimations::propertiesForTransitionAll() 790 animateAll ? CSSAnimations::propertiesForTransitionAll()
785 : shorthandForProperty(property); 791 : shorthandForProperty(property);
786 // If not a shorthand we only execute one iteration of this loop, and refe r to the property directly. 792 // If not a shorthand we only execute one iteration of this loop, and
793 // refer to the property directly.
787 for (unsigned j = 0; !j || j < propertyList.length(); ++j) { 794 for (unsigned j = 0; !j || j < propertyList.length(); ++j) {
788 CSSPropertyID id = 795 CSSPropertyID id =
789 propertyList.length() ? propertyList.properties()[j] : property; 796 propertyList.length() ? propertyList.properties()[j] : property;
790 DCHECK_GE(id, firstCSSProperty); 797 DCHECK_GE(id, firstCSSProperty);
791 798
792 if (!animateAll) { 799 if (!animateAll) {
793 if (CSSPropertyMetadata::isInterpolableProperty(id)) 800 if (CSSPropertyMetadata::isInterpolableProperty(id))
794 listedProperties.set(id - firstCSSProperty); 801 listedProperties.set(id - firstCSSProperty);
795 else 802 else
796 continue; 803 continue;
797 } 804 }
798 805
799 // FIXME: We should transition if an !important property changes even wh en an animation is running, 806 // FIXME: We should transition if an !important property changes even
800 // but this is a bit hard to do with the current applyMatchedProperties system. 807 // when an animation is running, but this is a bit hard to do with the
808 // current applyMatchedProperties system.
801 PropertyHandle property = PropertyHandle(id); 809 PropertyHandle property = PropertyHandle(id);
802 if (!update.activeInterpolationsForAnimations().contains(property) && 810 if (!update.activeInterpolationsForAnimations().contains(property) &&
803 (!elementAnimations || 811 (!elementAnimations ||
804 !elementAnimations->cssAnimations() 812 !elementAnimations->cssAnimations()
805 .m_previousActiveInterpolationsForAnimations.contains( 813 .m_previousActiveInterpolationsForAnimations.contains(
806 property))) { 814 property))) {
807 calculateTransitionUpdateForProperty(id, *transitionData, i, oldStyle, 815 calculateTransitionUpdateForProperty(id, *transitionData, i, oldStyle,
808 style, activeTransitions, update, 816 style, activeTransitions, update,
809 animatingElement); 817 animatingElement);
810 } 818 }
811 } 819 }
812 } 820 }
813 } 821 }
814 822
815 if (activeTransitions) { 823 if (activeTransitions) {
816 for (const auto& entry : *activeTransitions) { 824 for (const auto& entry : *activeTransitions) {
817 CSSPropertyID id = entry.key; 825 CSSPropertyID id = entry.key;
818 if (!anyTransitionHadTransitionAll && !animationStyleRecalc && 826 if (!anyTransitionHadTransitionAll && !animationStyleRecalc &&
819 !listedProperties.test(id - firstCSSProperty)) { 827 !listedProperties.test(id - firstCSSProperty)) {
820 // TODO: Figure out why this fails on Chrome OS login page. crbug.com/36 5507 828 // TODO(crbug.com/365507): Figure out why this fails on Chrome OS login
821 // DCHECK(animation.playStateInternal() == Animation::Finished || !(elem entAnimations && elementAnimations->isAnimationStyleChange())); 829 // page.
830 // DCHECK(animation.playStateInternal() == Animation::Finished ||
831 // !(elementAnimations &&
832 // elementAnimations->isAnimationStyleChange()));
822 update.cancelTransition(id); 833 update.cancelTransition(id);
823 } else if (entry.value.animation->finishedInternal()) { 834 } else if (entry.value.animation->finishedInternal()) {
824 update.finishTransition(id); 835 update.finishTransition(id);
825 } 836 }
826 } 837 }
827 } 838 }
828 } 839 }
829 840
830 void CSSAnimations::cancel() { 841 void CSSAnimations::cancel() {
831 for (const auto& runningAnimation : m_runningAnimations) { 842 for (const auto& runningAnimation : m_runningAnimations) {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
863 KeyframeEffect::DefaultPriority, 874 KeyframeEffect::DefaultPriority,
864 isStylePropertyHandle)); 875 isStylePropertyHandle));
865 update.adoptActiveInterpolationsForAnimations( 876 update.adoptActiveInterpolationsForAnimations(
866 activeInterpolationsForAnimations); 877 activeInterpolationsForAnimations);
867 return; 878 return;
868 } 879 }
869 880
870 HeapVector<Member<const InertEffect>> newEffects; 881 HeapVector<Member<const InertEffect>> newEffects;
871 for (const auto& newAnimation : update.newAnimations()) 882 for (const auto& newAnimation : update.newAnimations())
872 newEffects.append(newAnimation.effect); 883 newEffects.append(newAnimation.effect);
884
885 // Animations with updates use a temporary InertEffect for the current frame.
873 for (const auto& updatedAnimation : update.animationsWithUpdates()) 886 for (const auto& updatedAnimation : update.animationsWithUpdates())
874 newEffects.append( 887 newEffects.append(updatedAnimation.effect);
875 updatedAnimation
876 .effect); // Animations with updates use a temporary InertEffect fo r the current frame.
877 888
878 ActiveInterpolationsMap activeInterpolationsForAnimations( 889 ActiveInterpolationsMap activeInterpolationsForAnimations(
879 AnimationStack::activeInterpolations( 890 AnimationStack::activeInterpolations(
880 animationStack, &newEffects, &update.suppressedAnimations(), 891 animationStack, &newEffects, &update.suppressedAnimations(),
881 KeyframeEffect::DefaultPriority, isStylePropertyHandle)); 892 KeyframeEffect::DefaultPriority, isStylePropertyHandle));
882 update.adoptActiveInterpolationsForAnimations( 893 update.adoptActiveInterpolationsForAnimations(
883 activeInterpolationsForAnimations); 894 activeInterpolationsForAnimations);
884 } 895 }
885 896
886 void CSSAnimations::calculateTransitionActiveInterpolations( 897 void CSSAnimations::calculateTransitionActiveInterpolations(
(...skipping 24 matching lines...) Expand all
911 DCHECK(transitionMap.contains(id)); 922 DCHECK(transitionMap.contains(id));
912 cancelledAnimations.add(transitionMap.get(id).animation.get()); 923 cancelledAnimations.add(transitionMap.get(id).animation.get());
913 } 924 }
914 } 925 }
915 926
916 activeInterpolationsForTransitions = AnimationStack::activeInterpolations( 927 activeInterpolationsForTransitions = AnimationStack::activeInterpolations(
917 animationStack, &newTransitions, &cancelledAnimations, 928 animationStack, &newTransitions, &cancelledAnimations,
918 KeyframeEffect::TransitionPriority, isStylePropertyHandle); 929 KeyframeEffect::TransitionPriority, isStylePropertyHandle);
919 } 930 }
920 931
921 // Properties being animated by animations don't get values from transitions a pplied. 932 // Properties being animated by animations don't get values from transitions
933 // applied.
922 if (!update.activeInterpolationsForAnimations().isEmpty() && 934 if (!update.activeInterpolationsForAnimations().isEmpty() &&
923 !activeInterpolationsForTransitions.isEmpty()) { 935 !activeInterpolationsForTransitions.isEmpty()) {
924 for (const auto& entry : update.activeInterpolationsForAnimations()) 936 for (const auto& entry : update.activeInterpolationsForAnimations())
925 activeInterpolationsForTransitions.remove(entry.key); 937 activeInterpolationsForTransitions.remove(entry.key);
926 } 938 }
927 update.adoptActiveInterpolationsForTransitions( 939 update.adoptActiveInterpolationsForTransitions(
928 activeInterpolationsForTransitions); 940 activeInterpolationsForTransitions);
929 } 941 }
930 942
931 EventTarget* CSSAnimations::AnimationEventDelegate::eventTarget() const { 943 EventTarget* CSSAnimations::AnimationEventDelegate::eventTarget() const {
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
1023 visitor->trace(m_transitionTarget); 1035 visitor->trace(m_transitionTarget);
1024 AnimationEffectReadOnly::EventDelegate::trace(visitor); 1036 AnimationEffectReadOnly::EventDelegate::trace(visitor);
1025 } 1037 }
1026 1038
1027 const StylePropertyShorthand& CSSAnimations::propertiesForTransitionAll() { 1039 const StylePropertyShorthand& CSSAnimations::propertiesForTransitionAll() {
1028 DEFINE_STATIC_LOCAL(Vector<CSSPropertyID>, properties, ()); 1040 DEFINE_STATIC_LOCAL(Vector<CSSPropertyID>, properties, ());
1029 DEFINE_STATIC_LOCAL(StylePropertyShorthand, propertyShorthand, ()); 1041 DEFINE_STATIC_LOCAL(StylePropertyShorthand, propertyShorthand, ());
1030 if (properties.isEmpty()) { 1042 if (properties.isEmpty()) {
1031 for (int i = firstCSSProperty; i < lastCSSProperty; ++i) { 1043 for (int i = firstCSSProperty; i < lastCSSProperty; ++i) {
1032 CSSPropertyID id = convertToCSSPropertyID(i); 1044 CSSPropertyID id = convertToCSSPropertyID(i);
1033 // Avoid creating overlapping transitions with perspective-origin and tran sition-origin. 1045 // Avoid creating overlapping transitions with perspective-origin and
1046 // transition-origin.
1034 if (id == CSSPropertyWebkitPerspectiveOriginX || 1047 if (id == CSSPropertyWebkitPerspectiveOriginX ||
1035 id == CSSPropertyWebkitPerspectiveOriginY || 1048 id == CSSPropertyWebkitPerspectiveOriginY ||
1036 id == CSSPropertyWebkitTransformOriginX || 1049 id == CSSPropertyWebkitTransformOriginX ||
1037 id == CSSPropertyWebkitTransformOriginY || 1050 id == CSSPropertyWebkitTransformOriginY ||
1038 id == CSSPropertyWebkitTransformOriginZ) 1051 id == CSSPropertyWebkitTransformOriginZ)
1039 continue; 1052 continue;
1040 if (CSSPropertyMetadata::isInterpolableProperty(id)) 1053 if (CSSPropertyMetadata::isInterpolableProperty(id))
1041 properties.append(id); 1054 properties.append(id);
1042 } 1055 }
1043 propertyShorthand = StylePropertyShorthand( 1056 propertyShorthand = StylePropertyShorthand(
1044 CSSPropertyInvalid, properties.begin(), properties.size()); 1057 CSSPropertyInvalid, properties.begin(), properties.size());
1045 } 1058 }
1046 return propertyShorthand; 1059 return propertyShorthand;
1047 } 1060 }
1048 1061
1049 // Properties that affect animations are not allowed to be affected by animation s. 1062 // Properties that affect animations are not allowed to be affected by
1050 // http://w3c.github.io/web-animations/#not-animatable-section 1063 // animations. http://w3c.github.io/web-animations/#not-animatable-section
1051 bool CSSAnimations::isAnimatableProperty(CSSPropertyID property) { 1064 bool CSSAnimations::isAnimatableProperty(CSSPropertyID property) {
1052 switch (property) { 1065 switch (property) {
1053 case CSSPropertyAnimation: 1066 case CSSPropertyAnimation:
1054 case CSSPropertyAnimationDelay: 1067 case CSSPropertyAnimationDelay:
1055 case CSSPropertyAnimationDirection: 1068 case CSSPropertyAnimationDirection:
1056 case CSSPropertyAnimationDuration: 1069 case CSSPropertyAnimationDuration:
1057 case CSSPropertyAnimationFillMode: 1070 case CSSPropertyAnimationFillMode:
1058 case CSSPropertyAnimationIterationCount: 1071 case CSSPropertyAnimationIterationCount:
1059 case CSSPropertyAnimationName: 1072 case CSSPropertyAnimationName:
1060 case CSSPropertyAnimationPlayState: 1073 case CSSPropertyAnimationPlayState:
(...skipping 23 matching lines...) Expand all
1084 return toShadowRoot(treeScope.rootNode()).host() == element; 1097 return toShadowRoot(treeScope.rootNode()).host() == element;
1085 } 1098 }
1086 1099
1087 DEFINE_TRACE(CSSAnimations) { 1100 DEFINE_TRACE(CSSAnimations) {
1088 visitor->trace(m_transitions); 1101 visitor->trace(m_transitions);
1089 visitor->trace(m_pendingUpdate); 1102 visitor->trace(m_pendingUpdate);
1090 visitor->trace(m_runningAnimations); 1103 visitor->trace(m_runningAnimations);
1091 } 1104 }
1092 1105
1093 } // namespace blink 1106 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/animation/css/CSSAnimationUpdate.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698