| // Copyright 2019 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "third_party/blink/renderer/core/animation/css/css_transition.h" |
| |
| #include "third_party/blink/renderer/core/animation/css/css_animations.h" |
| #include "third_party/blink/renderer/core/animation/keyframe_effect.h" |
| #include "third_party/blink/renderer/core/dom/document.h" |
| |
| namespace blink { |
| |
| CSSTransition::CSSTransition(ExecutionContext* execution_context, |
| AnimationTimeline* timeline, |
| AnimationEffect* content, |
| uint64_t transition_generation, |
| const PropertyHandle& transition_property) |
| : Animation(execution_context, timeline, content), |
| transition_property_(transition_property) { |
| // The owning_element does not always equal to the target element of an |
| // animation. |
| owning_element_ = To<KeyframeEffect>(effect())->EffectTarget(); |
| transition_generation_ = transition_generation; |
| } |
| |
| AtomicString CSSTransition::transitionProperty() const { |
| return transition_property_.GetCSSPropertyName().ToAtomicString(); |
| } |
| |
| String CSSTransition::playState() const { |
| // TODO(1043778): Flush is likely not required once the CSSTransition is |
| // disassociated from its owning element. |
| if (GetDocument()) |
| GetDocument()->UpdateStyleAndLayoutTree(); |
| return Animation::playState(); |
| } |
| |
| AnimationEffect::EventDelegate* CSSTransition::CreateEventDelegate( |
| Element* target, |
| const AnimationEffect::EventDelegate* old_event_delegate) { |
| return CSSAnimations::CreateEventDelegate(target, transition_property_, |
| old_event_delegate); |
| } |
| |
| } // namespace blink |