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_timing_data.h" 6 7 #include "third_party/blink/renderer/core/animation/timing.h" 8 9 namespace blink { 10 CSSTimingData()11CSSTimingData::CSSTimingData() { 12 delay_list_.push_back(InitialDelay()); 13 duration_list_.push_back(InitialDuration()); 14 timing_function_list_.push_back(InitialTimingFunction()); 15 } 16 17 CSSTimingData::CSSTimingData(const CSSTimingData& other) = default; 18 ConvertToTiming(size_t index) const19Timing CSSTimingData::ConvertToTiming(size_t index) const { 20 Timing timing; 21 timing.start_delay = GetRepeated(delay_list_, index); 22 double duration = GetRepeated(duration_list_, index); 23 timing.iteration_duration = 24 std::isnan(duration) 25 ? base::nullopt 26 : base::make_optional(AnimationTimeDelta::FromSecondsD(duration)); 27 timing.timing_function = GetRepeated(timing_function_list_, index); 28 timing.AssertValid(); 29 return timing; 30 } 31 TimingMatchForStyleRecalc(const CSSTimingData & other) const32bool CSSTimingData::TimingMatchForStyleRecalc( 33 const CSSTimingData& other) const { 34 if (delay_list_ != other.delay_list_) 35 return false; 36 if (duration_list_ != other.duration_list_) 37 return false; 38 if (timing_function_list_.size() != other.timing_function_list_.size()) 39 return false; 40 41 for (wtf_size_t i = 0; i < timing_function_list_.size(); i++) { 42 if (!DataEquivalent(timing_function_list_.at(i), 43 other.timing_function_list_.at(i))) { 44 return false; 45 } 46 } 47 return true; 48 } 49 50 } // namespace blink 51