| Index: third_party/WebKit/Source/core/animation/CSSVisibilityInterpolationType.cpp
|
| diff --git a/third_party/WebKit/Source/core/animation/CSSVisibilityInterpolationType.cpp b/third_party/WebKit/Source/core/animation/CSSVisibilityInterpolationType.cpp
|
| index fa1abf6b151d276bbd55e1852d7b310f3a6a0c8d..008414c7d7df9f7c8e130937e963056f6e48b30d 100644
|
| --- a/third_party/WebKit/Source/core/animation/CSSVisibilityInterpolationType.cpp
|
| +++ b/third_party/WebKit/Source/core/animation/CSSVisibilityInterpolationType.cpp
|
| @@ -30,9 +30,8 @@ class CSSVisibilityNonInterpolableValue : public NonInterpolableValue {
|
| return m_start;
|
| if (fraction >= 1)
|
| return m_end;
|
| - if (m_start == EVisibility::kVisible || m_end == EVisibility::kVisible)
|
| - return EVisibility::kVisible;
|
| - return fraction < 0.5 ? m_start : m_end;
|
| + DCHECK(m_start == EVisibility::kVisible || m_end == EVisibility::kVisible);
|
| + return EVisibility::kVisible;
|
| }
|
|
|
| DECLARE_NON_INTERPOLABLE_VALUE_TYPE();
|
| @@ -161,13 +160,23 @@ CSSVisibilityInterpolationType::maybeConvertStandardPropertyUnderlyingValue(
|
| PairwiseInterpolationValue CSSVisibilityInterpolationType::maybeMergeSingles(
|
| InterpolationValue&& start,
|
| InterpolationValue&& end) const {
|
| - return PairwiseInterpolationValue(
|
| - InterpolableNumber::create(0), InterpolableNumber::create(1),
|
| - CSSVisibilityNonInterpolableValue::create(
|
| - toCSSVisibilityNonInterpolableValue(*start.nonInterpolableValue)
|
| - .visibility(),
|
| - toCSSVisibilityNonInterpolableValue(*end.nonInterpolableValue)
|
| - .visibility()));
|
| + EVisibility startVisibility =
|
| + toCSSVisibilityNonInterpolableValue(*start.nonInterpolableValue)
|
| + .visibility();
|
| + EVisibility endVisibility =
|
| + toCSSVisibilityNonInterpolableValue(*end.nonInterpolableValue)
|
| + .visibility();
|
| + // One side must be "visible".
|
| + // Spec: https://drafts.csswg.org/css-transitions/#animtype-visibility
|
| + if (startVisibility != endVisibility &&
|
| + startVisibility != EVisibility::kVisible &&
|
| + endVisibility != EVisibility::kVisible) {
|
| + return nullptr;
|
| + }
|
| + return PairwiseInterpolationValue(InterpolableNumber::create(0),
|
| + InterpolableNumber::create(1),
|
| + CSSVisibilityNonInterpolableValue::create(
|
| + startVisibility, endVisibility));
|
| }
|
|
|
| void CSSVisibilityInterpolationType::composite(
|
|
|