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