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)); |
chrishtr
2015/09/26 00:50:33
Should we support compositor animations of backgro
|
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); |