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

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

Issue 1033943002: Rename LayoutStyle to papayawhip (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: ensureComputedStyle Created 5 years, 8 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 | Annotate | Revision Log
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 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 case CSSPropertyWebkitPerspectiveOrigin: 74 case CSSPropertyWebkitPerspectiveOrigin:
75 return CSSPropertyPerspectiveOrigin; 75 return CSSPropertyPerspectiveOrigin;
76 case CSSPropertyWebkitTransformOrigin: 76 case CSSPropertyWebkitTransformOrigin:
77 return CSSPropertyTransformOrigin; 77 return CSSPropertyTransformOrigin;
78 default: 78 default:
79 break; 79 break;
80 } 80 }
81 return property; 81 return property;
82 } 82 }
83 83
84 static PassRefPtrWillBeRawPtr<StringKeyframeEffectModel> createKeyframeEffect(St yleResolver* resolver, const Element* animatingElement, Element& element, const LayoutStyle* style, const LayoutStyle* parentStyle, const AtomicString& name, Ti mingFunction* defaultTimingFunction) 84 static PassRefPtrWillBeRawPtr<StringKeyframeEffectModel> createKeyframeEffect(St yleResolver* resolver, const Element* animatingElement, Element& element, const ComputedStyle* style, const ComputedStyle* parentStyle, const AtomicString& name , TimingFunction* defaultTimingFunction)
85 { 85 {
86 // When the animating element is null, use its parent for scoping purposes. 86 // When the animating element is null, use its parent for scoping purposes.
87 const Element* elementForScoping = animatingElement ? animatingElement : &el ement; 87 const Element* elementForScoping = animatingElement ? animatingElement : &el ement;
88 const StyleRuleKeyframes* keyframesRule = resolver->findKeyframesRule(elemen tForScoping, name); 88 const StyleRuleKeyframes* keyframesRule = resolver->findKeyframesRule(elemen tForScoping, name);
89 ASSERT(keyframesRule); 89 ASSERT(keyframesRule);
90 90
91 StringKeyframeVector keyframes; 91 StringKeyframeVector keyframes;
92 const WillBeHeapVector<RefPtrWillBeMember<StyleRuleKeyframe>>& styleKeyframe s = keyframesRule->keyframes(); 92 const WillBeHeapVector<RefPtrWillBeMember<StyleRuleKeyframe>>& styleKeyframe s = keyframesRule->keyframes();
93 93
94 // Construct and populate the style for each keyframe 94 // Construct and populate the style for each keyframe
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 209
210 bool CSSAnimations::isTransitionAnimationForInspector(const AnimationPlayer& pla yer) const 210 bool CSSAnimations::isTransitionAnimationForInspector(const AnimationPlayer& pla yer) const
211 { 211 {
212 for (const auto& it : m_transitions) { 212 for (const auto& it : m_transitions) {
213 if (it.value.player->sequenceNumber() == player.sequenceNumber()) 213 if (it.value.player->sequenceNumber() == player.sequenceNumber())
214 return true; 214 return true;
215 } 215 }
216 return false; 216 return false;
217 } 217 }
218 218
219 PassOwnPtrWillBeRawPtr<CSSAnimationUpdate> CSSAnimations::calculateUpdate(const Element* animatingElement, Element& element, const LayoutStyle& style, LayoutSty le* parentStyle, StyleResolver* resolver) 219 PassOwnPtrWillBeRawPtr<CSSAnimationUpdate> CSSAnimations::calculateUpdate(const Element* animatingElement, Element& element, const ComputedStyle& style, Compute dStyle* parentStyle, StyleResolver* resolver)
220 { 220 {
221 OwnPtrWillBeRawPtr<CSSAnimationUpdate> update = adoptPtrWillBeNoop(new CSSAn imationUpdate()); 221 OwnPtrWillBeRawPtr<CSSAnimationUpdate> update = adoptPtrWillBeNoop(new CSSAn imationUpdate());
222 calculateAnimationUpdate(update.get(), animatingElement, element, style, par entStyle, resolver); 222 calculateAnimationUpdate(update.get(), animatingElement, element, style, par entStyle, resolver);
223 calculateAnimationActiveInterpolations(update.get(), animatingElement, eleme nt.document().timeline().currentTimeInternal()); 223 calculateAnimationActiveInterpolations(update.get(), animatingElement, eleme nt.document().timeline().currentTimeInternal());
224 calculateTransitionUpdate(update.get(), animatingElement, style); 224 calculateTransitionUpdate(update.get(), animatingElement, style);
225 calculateTransitionActiveInterpolations(update.get(), animatingElement, elem ent.document().timeline().currentTimeInternal()); 225 calculateTransitionActiveInterpolations(update.get(), animatingElement, elem ent.document().timeline().currentTimeInternal());
226 return update->isEmpty() ? nullptr : update.release(); 226 return update->isEmpty() ? nullptr : update.release();
227 } 227 }
228 228
229 void CSSAnimations::calculateAnimationUpdate(CSSAnimationUpdate* update, const E lement* animatingElement, Element& element, const LayoutStyle& style, LayoutStyl e* parentStyle, StyleResolver* resolver) 229 void CSSAnimations::calculateAnimationUpdate(CSSAnimationUpdate* update, const E lement* animatingElement, Element& element, const ComputedStyle& style, Computed Style* parentStyle, StyleResolver* resolver)
230 { 230 {
231 const ElementAnimations* elementAnimations = animatingElement ? animatingEle ment->elementAnimations() : nullptr; 231 const ElementAnimations* elementAnimations = animatingElement ? animatingEle ment->elementAnimations() : nullptr;
232 232
233 bool isAnimationStyleChange = elementAnimations && elementAnimations->isAnim ationStyleChange(); 233 bool isAnimationStyleChange = elementAnimations && elementAnimations->isAnim ationStyleChange();
234 234
235 #if !ENABLE(ASSERT) 235 #if !ENABLE(ASSERT)
236 // If we're in an animation style change, no animations can have started, be en cancelled or changed play state. 236 // If we're in an animation style change, no animations can have started, be en cancelled or changed play state.
237 // When ASSERT is enabled, we verify this optimization. 237 // When ASSERT is enabled, we verify this optimization.
238 if (isAnimationStyleChange) 238 if (isAnimationStyleChange)
239 return; 239 return;
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 transition->setName(inertAnimation->name()); 459 transition->setName(inertAnimation->name());
460 RefPtrWillBeRawPtr<AnimationPlayer> player = element->document().timelin e().play(transition.get()); 460 RefPtrWillBeRawPtr<AnimationPlayer> player = element->document().timelin e().play(transition.get());
461 player->update(TimingUpdateOnDemand); 461 player->update(TimingUpdateOnDemand);
462 runningTransition.player = player; 462 runningTransition.player = player;
463 m_transitions.set(id, runningTransition); 463 m_transitions.set(id, runningTransition);
464 ASSERT(id != CSSPropertyInvalid); 464 ASSERT(id != CSSPropertyInvalid);
465 blink::Platform::current()->histogramSparse("WebCore.Animation.CSSProper ties", UseCounter::mapCSSPropertyIdToCSSSampleIdForHistogram(id)); 465 blink::Platform::current()->histogramSparse("WebCore.Animation.CSSProper ties", UseCounter::mapCSSPropertyIdToCSSSampleIdForHistogram(id));
466 } 466 }
467 } 467 }
468 468
469 void CSSAnimations::calculateTransitionUpdateForProperty(CSSPropertyID id, CSSPr opertyID eventId, const CSSTransitionData& transitionData, size_t transitionInde x, const LayoutStyle& oldStyle, const LayoutStyle& style, const TransitionMap* a ctiveTransitions, CSSAnimationUpdate* update, const Element* element) 469 void CSSAnimations::calculateTransitionUpdateForProperty(CSSPropertyID id, CSSPr opertyID eventId, const CSSTransitionData& transitionData, size_t transitionInde x, const ComputedStyle& oldStyle, const ComputedStyle& style, const TransitionMa p* activeTransitions, CSSAnimationUpdate* update, const Element* element)
470 { 470 {
471 RefPtrWillBeRawPtr<AnimatableValue> to = nullptr; 471 RefPtrWillBeRawPtr<AnimatableValue> to = nullptr;
472 if (activeTransitions) { 472 if (activeTransitions) {
473 TransitionMap::const_iterator activeTransitionIter = activeTransitions-> find(id); 473 TransitionMap::const_iterator activeTransitionIter = activeTransitions-> find(id);
474 if (activeTransitionIter != activeTransitions->end()) { 474 if (activeTransitionIter != activeTransitions->end()) {
475 to = CSSAnimatableValueFactory::create(id, style); 475 to = CSSAnimatableValueFactory::create(id, style);
476 const AnimatableValue* activeTo = activeTransitionIter->value.to; 476 const AnimatableValue* activeTo = activeTransitionIter->value.to;
477 if (to->equals(activeTo)) 477 if (to->equals(activeTo))
478 return; 478 return;
479 update->cancelTransition(id); 479 update->cancelTransition(id);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
520 RefPtrWillBeRawPtr<AnimatableValueKeyframe> endKeyframe = AnimatableValueKey frame::create(); 520 RefPtrWillBeRawPtr<AnimatableValueKeyframe> endKeyframe = AnimatableValueKey frame::create();
521 endKeyframe->setPropertyValue(id, to.get()); 521 endKeyframe->setPropertyValue(id, to.get());
522 endKeyframe->setOffset(1); 522 endKeyframe->setOffset(1);
523 keyframes.append(endKeyframe); 523 keyframes.append(endKeyframe);
524 524
525 RefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> effect = AnimatableVa lueKeyframeEffectModel::create(keyframes); 525 RefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> effect = AnimatableVa lueKeyframeEffectModel::create(keyframes);
526 update->startTransition(id, eventId, from.get(), to.get(), InertAnimation::c reate(effect, timing, false, 0)); 526 update->startTransition(id, eventId, from.get(), to.get(), InertAnimation::c reate(effect, timing, false, 0));
527 ASSERT(!element->elementAnimations() || !element->elementAnimations()->isAni mationStyleChange()); 527 ASSERT(!element->elementAnimations() || !element->elementAnimations()->isAni mationStyleChange());
528 } 528 }
529 529
530 void CSSAnimations::calculateTransitionUpdate(CSSAnimationUpdate* update, const Element* animatingElement, const LayoutStyle& style) 530 void CSSAnimations::calculateTransitionUpdate(CSSAnimationUpdate* update, const Element* animatingElement, const ComputedStyle& style)
531 { 531 {
532 if (!animatingElement) 532 if (!animatingElement)
533 return; 533 return;
534 534
535 ElementAnimations* elementAnimations = animatingElement->elementAnimations() ; 535 ElementAnimations* elementAnimations = animatingElement->elementAnimations() ;
536 const TransitionMap* activeTransitions = elementAnimations ? &elementAnimati ons->cssAnimations().m_transitions : nullptr; 536 const TransitionMap* activeTransitions = elementAnimations ? &elementAnimati ons->cssAnimations().m_transitions : nullptr;
537 const CSSTransitionData* transitionData = style.transitions(); 537 const CSSTransitionData* transitionData = style.transitions();
538 538
539 #if ENABLE(ASSERT) 539 #if ENABLE(ASSERT)
540 // In debug builds we verify that it would have been safe to avoid populatin g and testing listedProperties if the style recalc is due to animation. 540 // In debug builds we verify that it would have been safe to avoid populatin g and testing listedProperties if the style recalc is due to animation.
541 const bool animationStyleRecalc = false; 541 const bool animationStyleRecalc = false;
542 #else 542 #else
543 // In release builds we avoid the cost of checking for new and interrupted t ransitions if the style recalc is due to animation. 543 // In release builds we avoid the cost of checking for new and interrupted t ransitions if the style recalc is due to animation.
544 const bool animationStyleRecalc = elementAnimations && elementAnimations->is AnimationStyleChange(); 544 const bool animationStyleRecalc = elementAnimations && elementAnimations->is AnimationStyleChange();
545 #endif 545 #endif
546 546
547 BitArray<numCSSProperties> listedProperties; 547 BitArray<numCSSProperties> listedProperties;
548 bool anyTransitionHadTransitionAll = false; 548 bool anyTransitionHadTransitionAll = false;
549 const LayoutObject* renderer = animatingElement->layoutObject(); 549 const LayoutObject* renderer = animatingElement->layoutObject();
550 if (!animationStyleRecalc && style.display() != NONE && renderer && renderer ->style() && transitionData) { 550 if (!animationStyleRecalc && style.display() != NONE && renderer && renderer ->style() && transitionData) {
551 const LayoutStyle& oldStyle = *renderer->style(); 551 const ComputedStyle& oldStyle = *renderer->style();
552 552
553 for (size_t i = 0; i < transitionData->propertyList().size(); ++i) { 553 for (size_t i = 0; i < transitionData->propertyList().size(); ++i) {
554 const CSSTransitionData::TransitionProperty& transitionProperty = tr ansitionData->propertyList()[i]; 554 const CSSTransitionData::TransitionProperty& transitionProperty = tr ansitionData->propertyList()[i];
555 CSSTransitionData::TransitionPropertyType mode = transitionProperty. propertyType; 555 CSSTransitionData::TransitionPropertyType mode = transitionProperty. propertyType;
556 CSSPropertyID property = transitionProperty.propertyId; 556 CSSPropertyID property = transitionProperty.propertyId;
557 if (mode == CSSTransitionData::TransitionNone || mode == CSSTransiti onData::TransitionUnknown) 557 if (mode == CSSTransitionData::TransitionNone || mode == CSSTransiti onData::TransitionUnknown)
558 continue; 558 continue;
559 559
560 bool animateAll = mode == CSSTransitionData::TransitionAll; 560 bool animateAll = mode == CSSTransitionData::TransitionAll;
561 ASSERT(animateAll || mode == CSSTransitionData::TransitionSingleProp erty); 561 ASSERT(animateAll || mode == CSSTransitionData::TransitionSingleProp erty);
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
833 visitor->trace(m_activeInterpolationsForAnimations); 833 visitor->trace(m_activeInterpolationsForAnimations);
834 visitor->trace(m_activeInterpolationsForTransitions); 834 visitor->trace(m_activeInterpolationsForTransitions);
835 visitor->trace(m_newAnimations); 835 visitor->trace(m_newAnimations);
836 visitor->trace(m_suppressedAnimationPlayers); 836 visitor->trace(m_suppressedAnimationPlayers);
837 visitor->trace(m_animationsWithUpdates); 837 visitor->trace(m_animationsWithUpdates);
838 visitor->trace(m_animationsWithStyleUpdates); 838 visitor->trace(m_animationsWithStyleUpdates);
839 #endif 839 #endif
840 } 840 }
841 841
842 } // namespace blink 842 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/animation/css/CSSAnimations.h ('k') | Source/core/animation/css/CSSPropertyEquality.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698