summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/animation/size_interpolation_functions.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/core/animation/size_interpolation_functions.cc')
-rw-r--r--chromium/third_party/blink/renderer/core/animation/size_interpolation_functions.cc24
1 files changed, 17 insertions, 7 deletions
diff --git a/chromium/third_party/blink/renderer/core/animation/size_interpolation_functions.cc b/chromium/third_party/blink/renderer/core/animation/size_interpolation_functions.cc
index a2fca4909be..156dc07a69f 100644
--- a/chromium/third_party/blink/renderer/core/animation/size_interpolation_functions.cc
+++ b/chromium/third_party/blink/renderer/core/animation/size_interpolation_functions.cc
@@ -54,7 +54,15 @@ class CSSSizeNonInterpolableValue : public NonInterpolableValue {
};
DEFINE_NON_INTERPOLABLE_VALUE_TYPE(CSSSizeNonInterpolableValue);
-DEFINE_NON_INTERPOLABLE_VALUE_TYPE_CASTS(CSSSizeNonInterpolableValue);
+template <>
+struct DowncastTraits<CSSSizeNonInterpolableValue> {
+ static bool AllowFrom(const NonInterpolableValue* value) {
+ return value && AllowFrom(*value);
+ }
+ static bool AllowFrom(const NonInterpolableValue& value) {
+ return value.GetType() == CSSSizeNonInterpolableValue::static_type_;
+ }
+};
static InterpolationValue ConvertKeyword(CSSValueID keyword) {
return InterpolationValue(std::make_unique<InterpolableList>(0),
@@ -134,7 +142,7 @@ PairwiseInterpolationValue SizeInterpolationFunctions::MaybeMergeSingles(
InterpolationValue SizeInterpolationFunctions::CreateNeutralValue(
const NonInterpolableValue* non_interpolable_value) {
- auto& size = ToCSSSizeNonInterpolableValue(*non_interpolable_value);
+ auto& size = To<CSSSizeNonInterpolableValue>(*non_interpolable_value);
if (size.IsKeyword())
return ConvertKeyword(size.Keyword());
return WrapConvertedLength(
@@ -144,8 +152,8 @@ InterpolationValue SizeInterpolationFunctions::CreateNeutralValue(
bool SizeInterpolationFunctions::NonInterpolableValuesAreCompatible(
const NonInterpolableValue* a,
const NonInterpolableValue* b) {
- const auto& size_a = ToCSSSizeNonInterpolableValue(*a);
- const auto& size_b = ToCSSSizeNonInterpolableValue(*b);
+ const auto& size_a = To<CSSSizeNonInterpolableValue>(*a);
+ const auto& size_b = To<CSSSizeNonInterpolableValue>(*b);
if (size_a.IsKeyword() != size_b.IsKeyword())
return false;
if (size_a.IsKeyword())
@@ -159,7 +167,7 @@ void SizeInterpolationFunctions::Composite(
const InterpolableValue& interpolable_value,
const NonInterpolableValue* non_interpolable_value) {
const auto& size_non_interpolable_value =
- ToCSSSizeNonInterpolableValue(*non_interpolable_value);
+ To<CSSSizeNonInterpolableValue>(*non_interpolable_value);
if (size_non_interpolable_value.IsKeyword())
return;
underlying_value.MutableInterpolableValue().ScaleAndAdd(underlying_fraction,
@@ -184,8 +192,10 @@ FillSize SizeInterpolationFunctions::CreateFillSize(
const InterpolableValue& interpolable_value_b,
const NonInterpolableValue* non_interpolable_value_b,
const CSSToLengthConversionData& conversion_data) {
- const auto& side_a = ToCSSSizeNonInterpolableValue(*non_interpolable_value_a);
- const auto& side_b = ToCSSSizeNonInterpolableValue(*non_interpolable_value_b);
+ const auto& side_a =
+ To<CSSSizeNonInterpolableValue>(*non_interpolable_value_a);
+ const auto& side_b =
+ To<CSSSizeNonInterpolableValue>(*non_interpolable_value_b);
if (side_a.IsKeyword()) {
switch (side_a.Keyword()) {
case CSSValueID::kCover: