| Index: Source/core/animation/CompositorAnimations.cpp
|
| diff --git a/Source/core/animation/CompositorAnimations.cpp b/Source/core/animation/CompositorAnimations.cpp
|
| index 0c4154e14425832dd124b969c5bfa6742194d828..b675ed830aaf1e9e8313a1cc628e212054acfe3b 100644
|
| --- a/Source/core/animation/CompositorAnimations.cpp
|
| +++ b/Source/core/animation/CompositorAnimations.cpp
|
| @@ -116,6 +116,7 @@ bool hasIncompatibleAnimations(const Element& targetElement, const Animation& an
|
| const bool affectsOpacity = effectToAdd.affects(PropertyHandle(CSSPropertyOpacity));
|
| const bool affectsTransform = effectToAdd.isTransformRelatedEffect();
|
| const bool affectsFilter = effectToAdd.affects(PropertyHandle(CSSPropertyWebkitFilter));
|
| + const bool affectsBackdropFilter = effectToAdd.affects(PropertyHandle(CSSPropertyBackdropFilter));
|
|
|
| if (!targetElement.hasAnimations())
|
| return false;
|
| @@ -130,7 +131,8 @@ bool hasIncompatibleAnimations(const Element& targetElement, const Animation& an
|
|
|
| if ((affectsOpacity && attachedAnimation->affects(targetElement, CSSPropertyOpacity))
|
| || (affectsTransform && isTransformRelatedAnimation(targetElement, attachedAnimation))
|
| - || (affectsFilter && attachedAnimation->affects(targetElement, CSSPropertyWebkitFilter)))
|
| + || (affectsFilter && attachedAnimation->affects(targetElement, CSSPropertyWebkitFilter))
|
| + || (affectsBackdropFilter && attachedAnimation->affects(targetElement, CSSPropertyBackdropFilter)))
|
| return true;
|
| }
|
|
|
| @@ -161,13 +163,14 @@ bool CompositorAnimations::isCompositableProperty(CSSPropertyID property)
|
| return false;
|
| }
|
|
|
| -const CSSPropertyID CompositorAnimations::compositableProperties[6] = {
|
| +const CSSPropertyID CompositorAnimations::compositableProperties[7] = {
|
| CSSPropertyOpacity,
|
| CSSPropertyRotate,
|
| CSSPropertyScale,
|
| CSSPropertyTransform,
|
| CSSPropertyTranslate,
|
| - CSSPropertyWebkitFilter
|
| + CSSPropertyWebkitFilter,
|
| + CSSPropertyBackdropFilter
|
| };
|
|
|
| bool CompositorAnimations::getAnimatedBoundingBox(FloatBox& box, const EffectModel& effect, double minValue, double maxValue) const
|
| @@ -271,7 +274,8 @@ bool CompositorAnimations::isCandidateForAnimationOnCompositor(const Timing& tim
|
| if (toAnimatableTransform(keyframe->getAnimatableValue().get())->transformOperations().dependsOnBoxSize())
|
| return false;
|
| break;
|
| - case CSSPropertyWebkitFilter: {
|
| + case CSSPropertyWebkitFilter:
|
| + case CSSPropertyBackdropFilter: {
|
| const FilterOperations& operations = toAnimatableFilterOperations(keyframe->getAnimatableValue().get())->operations();
|
| if (operations.hasFilterThatMovesPixels())
|
| return false;
|
| @@ -301,8 +305,9 @@ bool CompositorAnimations::isCandidateForAnimationOnCompositor(const Timing& tim
|
| void CompositorAnimations::cancelIncompatibleAnimationsOnCompositor(const Element& targetElement, const Animation& animationToAdd, const EffectModel& effectToAdd)
|
| {
|
| const bool affectsOpacity = effectToAdd.affects(PropertyHandle(CSSPropertyOpacity));
|
| - const bool affectsTransform = effectToAdd.isTransformRelatedEffect();
|
| + const bool affectsTransform = effectToAdd.isTransformRelatedEffect();
|
| const bool affectsFilter = effectToAdd.affects(PropertyHandle(CSSPropertyWebkitFilter));
|
| + const bool affectsBackdropFilter = effectToAdd.affects(PropertyHandle(CSSPropertyBackdropFilter));
|
|
|
| if (!targetElement.hasAnimations())
|
| return;
|
| @@ -317,7 +322,8 @@ void CompositorAnimations::cancelIncompatibleAnimationsOnCompositor(const Elemen
|
|
|
| if ((affectsOpacity && attachedAnimation->affects(targetElement, CSSPropertyOpacity))
|
| || (affectsTransform && isTransformRelatedAnimation(targetElement, attachedAnimation))
|
| - || (affectsFilter && attachedAnimation->affects(targetElement, CSSPropertyWebkitFilter)))
|
| + || (affectsFilter && attachedAnimation->affects(targetElement, CSSPropertyWebkitFilter))
|
| + || (affectsBackdropFilter && attachedAnimation->affects(targetElement, CSSPropertyBackdropFilter)))
|
| attachedAnimation->cancelAnimationOnCompositor();
|
| }
|
| }
|
| @@ -680,7 +686,8 @@ void CompositorAnimationsImpl::getAnimationOnCompositor(const Timing& timing, in
|
| curve = adoptPtr(floatCurve);
|
| break;
|
| }
|
| - case CSSPropertyWebkitFilter: {
|
| + case CSSPropertyWebkitFilter:
|
| + case CSSPropertyBackdropFilter: {
|
| targetProperty = WebCompositorAnimation::TargetPropertyFilter;
|
| WebFilterAnimationCurve* filterCurve = Platform::current()->compositorSupport()->createFilterAnimationCurve();
|
| addKeyframesToCurve(*filterCurve, values, timing);
|
|
|