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

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

Issue 2811253003: Make InterpolationEnvironment virutal (Closed)
Patch Set: protected 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/CSSInterpolationType.h" 5 #include "core/animation/CSSInterpolationType.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include "core/StylePropertyShorthand.h" 8 #include "core/StylePropertyShorthand.h"
9 #include "core/animation/CSSInterpolationEnvironment.h"
9 #include "core/animation/StringKeyframe.h" 10 #include "core/animation/StringKeyframe.h"
10 #include "core/css/CSSCustomPropertyDeclaration.h" 11 #include "core/css/CSSCustomPropertyDeclaration.h"
11 #include "core/css/CSSValue.h" 12 #include "core/css/CSSValue.h"
12 #include "core/css/CSSVariableReferenceValue.h" 13 #include "core/css/CSSVariableReferenceValue.h"
13 #include "core/css/ComputedStyleCSSValueMapping.h" 14 #include "core/css/ComputedStyleCSSValueMapping.h"
14 #include "core/css/PropertyRegistration.h" 15 #include "core/css/PropertyRegistration.h"
15 #include "core/css/parser/CSSTokenizer.h" 16 #include "core/css/parser/CSSTokenizer.h"
16 #include "core/css/resolver/CSSVariableResolver.h" 17 #include "core/css/resolver/CSSVariableResolver.h"
17 #include "core/css/resolver/StyleBuilder.h" 18 #include "core/css/resolver/StyleBuilder.h"
18 #include "core/css/resolver/StyleResolverState.h" 19 #include "core/css/resolver/StyleResolverState.h"
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 } 122 }
122 return result; 123 return result;
123 } 124 }
124 125
125 InterpolationValue CSSInterpolationType::MaybeConvertSingleInternal( 126 InterpolationValue CSSInterpolationType::MaybeConvertSingleInternal(
126 const PropertySpecificKeyframe& keyframe, 127 const PropertySpecificKeyframe& keyframe,
127 const InterpolationEnvironment& environment, 128 const InterpolationEnvironment& environment,
128 const InterpolationValue& underlying, 129 const InterpolationValue& underlying,
129 ConversionCheckers& conversion_checkers) const { 130 ConversionCheckers& conversion_checkers) const {
130 const CSSValue* value = ToCSSPropertySpecificKeyframe(keyframe).Value(); 131 const CSSValue* value = ToCSSPropertySpecificKeyframe(keyframe).Value();
131 const StyleResolverState& state = environment.GetState(); 132 const StyleResolverState& state =
133 ToCSSInterpolationEnvironment(environment).GetState();
132 134
133 if (!value) 135 if (!value)
134 return MaybeConvertNeutral(underlying, conversion_checkers); 136 return MaybeConvertNeutral(underlying, conversion_checkers);
135 137
136 if (GetProperty().IsCSSCustomProperty()) { 138 if (GetProperty().IsCSSCustomProperty()) {
137 return MaybeConvertCustomPropertyDeclaration( 139 return MaybeConvertCustomPropertyDeclaration(
138 ToCSSCustomPropertyDeclaration(*value), state, conversion_checkers); 140 ToCSSCustomPropertyDeclaration(*value), state, conversion_checkers);
139 } 141 }
140 142
141 if (value->IsVariableReferenceValue() || 143 if (value->IsVariableReferenceValue() ||
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 if (parsed_value) { 238 if (parsed_value) {
237 return MaybeConvertValue(*parsed_value, &state, conversion_checkers); 239 return MaybeConvertValue(*parsed_value, &state, conversion_checkers);
238 } 240 }
239 } 241 }
240 242
241 return nullptr; 243 return nullptr;
242 } 244 }
243 245
244 InterpolationValue CSSInterpolationType::MaybeConvertUnderlyingValue( 246 InterpolationValue CSSInterpolationType::MaybeConvertUnderlyingValue(
245 const InterpolationEnvironment& environment) const { 247 const InterpolationEnvironment& environment) const {
246 const ComputedStyle& style = environment.Style(); 248 const ComputedStyle& style =
249 ToCSSInterpolationEnvironment(environment).Style();
247 if (!GetProperty().IsCSSCustomProperty()) { 250 if (!GetProperty().IsCSSCustomProperty()) {
248 return MaybeConvertStandardPropertyUnderlyingValue(style); 251 return MaybeConvertStandardPropertyUnderlyingValue(style);
249 } 252 }
250 253
251 const PropertyHandle property = GetProperty(); 254 const PropertyHandle property = GetProperty();
252 const AtomicString& name = property.CustomPropertyName(); 255 const AtomicString& name = property.CustomPropertyName();
253 if (!registration_) { 256 if (!registration_) {
254 return nullptr; 257 return nullptr;
255 } 258 }
256 const CSSValue* underlying_value = 259 const CSSValue* underlying_value =
257 style.GetRegisteredVariable(name, registration_->Inherits()); 260 style.GetRegisteredVariable(name, registration_->Inherits());
258 if (!underlying_value) { 261 if (!underlying_value) {
259 underlying_value = registration_->Initial(); 262 underlying_value = registration_->Initial();
260 } 263 }
261 if (!underlying_value) { 264 if (!underlying_value) {
262 return nullptr; 265 return nullptr;
263 } 266 }
264 // TODO(alancutter): Remove the need for passing in conversion checkers. 267 // TODO(alancutter): Remove the need for passing in conversion checkers.
265 ConversionCheckers dummy_conversion_checkers; 268 ConversionCheckers dummy_conversion_checkers;
266 return MaybeConvertValue(*underlying_value, nullptr, 269 return MaybeConvertValue(*underlying_value, nullptr,
267 dummy_conversion_checkers); 270 dummy_conversion_checkers);
268 } 271 }
269 272
270 void CSSInterpolationType::Apply( 273 void CSSInterpolationType::Apply(
271 const InterpolableValue& interpolable_value, 274 const InterpolableValue& interpolable_value,
272 const NonInterpolableValue* non_interpolable_value, 275 const NonInterpolableValue* non_interpolable_value,
273 InterpolationEnvironment& environment) const { 276 InterpolationEnvironment& environment) const {
274 StyleResolverState& state = environment.GetState(); 277 StyleResolverState& state =
278 ToCSSInterpolationEnvironment(environment).GetState();
275 279
276 if (GetProperty().IsCSSCustomProperty()) { 280 if (GetProperty().IsCSSCustomProperty()) {
277 ApplyCustomPropertyValue(interpolable_value, non_interpolable_value, state); 281 ApplyCustomPropertyValue(interpolable_value, non_interpolable_value, state);
278 return; 282 return;
279 } 283 }
280 ApplyStandardPropertyValue(interpolable_value, non_interpolable_value, state); 284 ApplyStandardPropertyValue(interpolable_value, non_interpolable_value, state);
281 } 285 }
282 286
283 void CSSInterpolationType::ApplyCustomPropertyValue( 287 void CSSInterpolationType::ApplyCustomPropertyValue(
284 const InterpolableValue& interpolable_value, 288 const InterpolableValue& interpolable_value,
(...skipping 22 matching lines...) Expand all
307 if (registration_->Inherits()) { 311 if (registration_->Inherits()) {
308 style.SetResolvedInheritedVariable(property_name, std::move(variable_data), 312 style.SetResolvedInheritedVariable(property_name, std::move(variable_data),
309 css_value); 313 css_value);
310 } else { 314 } else {
311 style.SetResolvedNonInheritedVariable(property_name, 315 style.SetResolvedNonInheritedVariable(property_name,
312 std::move(variable_data), css_value); 316 std::move(variable_data), css_value);
313 } 317 }
314 } 318 }
315 319
316 } // namespace blink 320 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698