| 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( | 
|  |