1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "third_party/blink/renderer/core/animation/css/css_animation_data.h"
6 
7 #include "third_party/blink/renderer/core/animation/timing.h"
8 
9 namespace blink {
10 
CSSAnimationData()11 CSSAnimationData::CSSAnimationData() {
12   name_list_.push_back(InitialName());
13   timeline_list_.push_back(InitialTimeline());
14   iteration_count_list_.push_back(InitialIterationCount());
15   direction_list_.push_back(InitialDirection());
16   fill_mode_list_.push_back(InitialFillMode());
17   play_state_list_.push_back(InitialPlayState());
18 }
19 
20 CSSAnimationData::CSSAnimationData(const CSSAnimationData& other) = default;
21 
InitialName()22 const AtomicString& CSSAnimationData::InitialName() {
23   DEFINE_STATIC_LOCAL(const AtomicString, name, ("none"));
24   return name;
25 }
26 
InitialTimeline()27 const StyleNameOrKeyword& CSSAnimationData::InitialTimeline() {
28   DEFINE_STATIC_LOCAL(const StyleNameOrKeyword, name, (CSSValueID::kAuto));
29   return name;
30 }
31 
AnimationsMatchForStyleRecalc(const CSSAnimationData & other) const32 bool CSSAnimationData::AnimationsMatchForStyleRecalc(
33     const CSSAnimationData& other) const {
34   return name_list_ == other.name_list_ &&
35          timeline_list_ == other.timeline_list_ &&
36          play_state_list_ == other.play_state_list_ &&
37          iteration_count_list_ == other.iteration_count_list_ &&
38          direction_list_ == other.direction_list_ &&
39          fill_mode_list_ == other.fill_mode_list_ &&
40          TimingMatchForStyleRecalc(other);
41 }
42 
ConvertToTiming(size_t index) const43 Timing CSSAnimationData::ConvertToTiming(size_t index) const {
44   DCHECK_LT(index, name_list_.size());
45   Timing timing = CSSTimingData::ConvertToTiming(index);
46 
47   timing.iteration_count = GetRepeated(iteration_count_list_, index);
48   timing.direction = GetRepeated(direction_list_, index);
49   timing.fill_mode = GetRepeated(fill_mode_list_, index);
50   timing.AssertValid();
51   return timing;
52 }
53 
GetTimeline(size_t index) const54 const StyleNameOrKeyword& CSSAnimationData::GetTimeline(size_t index) const {
55   DCHECK_LT(index, name_list_.size());
56   return GetRepeated(timeline_list_, index);
57 }
58 
59 }  // namespace blink
60