Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(246)

Side by Side Diff: third_party/WebKit/Source/core/animation/CSSLengthListInterpolationType.cpp

Issue 2812213002: Add CSSInterpolationType specific ConversionChecker (Closed)
Patch Set: rebased Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/animation/CSSLengthListInterpolationType.h" 5 #include "core/animation/CSSLengthListInterpolationType.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include "core/animation/LengthInterpolationFunctions.h" 8 #include "core/animation/LengthInterpolationFunctions.h"
9 #include "core/animation/LengthListPropertyFunctions.h" 9 #include "core/animation/LengthListPropertyFunctions.h"
10 #include "core/animation/ListInterpolationFunctions.h" 10 #include "core/animation/ListInterpolationFunctions.h"
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 InterpolationValue CSSLengthListInterpolationType::MaybeConvertInitial( 54 InterpolationValue CSSLengthListInterpolationType::MaybeConvertInitial(
55 const StyleResolverState&, 55 const StyleResolverState&,
56 ConversionCheckers& conversion_checkers) const { 56 ConversionCheckers& conversion_checkers) const {
57 Vector<Length> initial_length_list; 57 Vector<Length> initial_length_list;
58 if (!LengthListPropertyFunctions::GetInitialLengthList(CssProperty(), 58 if (!LengthListPropertyFunctions::GetInitialLengthList(CssProperty(),
59 initial_length_list)) 59 initial_length_list))
60 return nullptr; 60 return nullptr;
61 return MaybeConvertLengthList(initial_length_list, 1); 61 return MaybeConvertLengthList(initial_length_list, 1);
62 } 62 }
63 63
64 class InheritedLengthListChecker : public InterpolationType::ConversionChecker { 64 class InheritedLengthListChecker
65 : public CSSInterpolationType::CSSConversionChecker {
65 public: 66 public:
66 ~InheritedLengthListChecker() final {} 67 ~InheritedLengthListChecker() final {}
67 68
68 static std::unique_ptr<InheritedLengthListChecker> Create( 69 static std::unique_ptr<InheritedLengthListChecker> Create(
69 CSSPropertyID property, 70 CSSPropertyID property,
70 const Vector<Length>& inherited_length_list) { 71 const Vector<Length>& inherited_length_list) {
71 return WTF::WrapUnique( 72 return WTF::WrapUnique(
72 new InheritedLengthListChecker(property, inherited_length_list)); 73 new InheritedLengthListChecker(property, inherited_length_list));
73 } 74 }
74 75
75 private: 76 private:
76 InheritedLengthListChecker(CSSPropertyID property, 77 InheritedLengthListChecker(CSSPropertyID property,
77 const Vector<Length>& inherited_length_list) 78 const Vector<Length>& inherited_length_list)
78 : property_(property), inherited_length_list_(inherited_length_list) {} 79 : property_(property), inherited_length_list_(inherited_length_list) {}
79 80
80 bool IsValid(const InterpolationEnvironment& environment, 81 bool IsValid(const StyleResolverState& state,
81 const InterpolationValue& underlying) const final { 82 const InterpolationValue& underlying) const final {
82 Vector<Length> inherited_length_list; 83 Vector<Length> inherited_length_list;
83 LengthListPropertyFunctions::GetLengthList( 84 LengthListPropertyFunctions::GetLengthList(property_, *state.ParentStyle(),
84 property_, *environment.GetState().ParentStyle(), 85 inherited_length_list);
85 inherited_length_list);
86 return inherited_length_list_ == inherited_length_list; 86 return inherited_length_list_ == inherited_length_list;
87 } 87 }
88 88
89 CSSPropertyID property_; 89 CSSPropertyID property_;
90 Vector<Length> inherited_length_list_; 90 Vector<Length> inherited_length_list_;
91 }; 91 };
92 92
93 InterpolationValue CSSLengthListInterpolationType::MaybeConvertInherit( 93 InterpolationValue CSSLengthListInterpolationType::MaybeConvertInherit(
94 const StyleResolverState& state, 94 const StyleResolverState& state,
95 ConversionCheckers& conversion_checkers) const { 95 ConversionCheckers& conversion_checkers) const {
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 for (size_t i = 0; i < length; i++) { 165 for (size_t i = 0; i < length; i++) {
166 result[i] = LengthInterpolationFunctions::CreateLength( 166 result[i] = LengthInterpolationFunctions::CreateLength(
167 *interpolable_list.Get(i), non_interpolable_list.Get(i), 167 *interpolable_list.Get(i), non_interpolable_list.Get(i),
168 state.CssToLengthConversionData(), value_range_); 168 state.CssToLengthConversionData(), value_range_);
169 } 169 }
170 LengthListPropertyFunctions::SetLengthList(CssProperty(), *state.Style(), 170 LengthListPropertyFunctions::SetLengthList(CssProperty(), *state.Style(),
171 std::move(result)); 171 std::move(result));
172 } 172 }
173 173
174 } // namespace blink 174 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698