1d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)// found in the LICENSE file.
45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "config.h"
609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#include "core/animation/css/CSSAnimationData.h"
75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
8d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)#include "core/animation/Timing.h"
9d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)
10c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)CSSAnimationData::CSSAnimationData()
135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
14d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    m_nameList.append(initialName());
15d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    m_iterationCountList.append(initialIterationCount());
16d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    m_directionList.append(initialDirection());
17d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    m_fillModeList.append(initialFillMode());
18d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    m_playStateList.append(initialPlayState());
195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
21d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)CSSAnimationData::CSSAnimationData(const CSSAnimationData& other)
22d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    : CSSTimingData(other)
23d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    , m_nameList(other.m_nameList)
24d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    , m_iterationCountList(other.m_iterationCountList)
25d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    , m_directionList(other.m_directionList)
26d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    , m_fillModeList(other.m_fillModeList)
27d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    , m_playStateList(other.m_playStateList)
285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
31d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)const AtomicString& CSSAnimationData::initialName()
325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
33d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    DEFINE_STATIC_LOCAL(const AtomicString, name, ("none", AtomicString::ConstructFromLiteral));
34d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    return name;
355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
37d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)bool CSSAnimationData::animationsMatchForStyleRecalc(const CSSAnimationData& other) const
385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
39d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    return m_nameList == other.m_nameList && m_playStateList == other.m_playStateList;
405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
42d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)Timing CSSAnimationData::convertToTiming(size_t index) const
435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
44d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    ASSERT(index < m_nameList.size());
45d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    Timing timing = CSSTimingData::convertToTiming(index);
46d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)
47d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    timing.iterationCount = getRepeated(m_iterationCountList, index);
48d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    timing.direction = getRepeated(m_directionList, index);
49d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    timing.fillMode = getRepeated(m_fillModeList, index);
50d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    timing.assertValid();
51d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    return timing;
525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
54c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink
55