Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / core / animation / css / CSSAnimationData.cpp
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 "config.h"
6 #include "core/animation/css/CSSAnimationData.h"
7
8 #include "core/animation/Timing.h"
9
10 namespace blink {
11
12 CSSAnimationData::CSSAnimationData()
13 {
14     m_nameList.append(initialName());
15     m_iterationCountList.append(initialIterationCount());
16     m_directionList.append(initialDirection());
17     m_fillModeList.append(initialFillMode());
18     m_playStateList.append(initialPlayState());
19 }
20
21 CSSAnimationData::CSSAnimationData(const CSSAnimationData& other)
22     : CSSTimingData(other)
23     , m_nameList(other.m_nameList)
24     , m_iterationCountList(other.m_iterationCountList)
25     , m_directionList(other.m_directionList)
26     , m_fillModeList(other.m_fillModeList)
27     , m_playStateList(other.m_playStateList)
28 {
29 }
30
31 const AtomicString& CSSAnimationData::initialName()
32 {
33     DEFINE_STATIC_LOCAL(const AtomicString, name, ("none", AtomicString::ConstructFromLiteral));
34     return name;
35 }
36
37 bool CSSAnimationData::animationsMatchForStyleRecalc(const CSSAnimationData& other) const
38 {
39     return m_nameList == other.m_nameList && m_playStateList == other.m_playStateList;
40 }
41
42 Timing CSSAnimationData::convertToTiming(size_t index) const
43 {
44     ASSERT(index < m_nameList.size());
45     Timing timing = CSSTimingData::convertToTiming(index);
46
47     timing.iterationCount = getRepeated(m_iterationCountList, index);
48     timing.direction = getRepeated(m_directionList, index);
49     timing.fillMode = getRepeated(m_fillModeList, index);
50     timing.assertValid();
51     return timing;
52 }
53
54 } // namespace blink