| Index: third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp
|
| diff --git a/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp b/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp
|
| index 74bae4548d574c54e93fd836044f0d74cf80b4ab..1097f8323b77f03b164b59030468ae03e6f513e8 100644
|
| --- a/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp
|
| +++ b/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp
|
| @@ -26,6 +26,7 @@ PaintPropertyTreeBuilder::setupInitialContext() {
|
| context.current.clip = context.absolutePosition.clip =
|
| context.fixedPosition.clip = ClipPaintPropertyNode::root();
|
| context.currentEffect = EffectPaintPropertyNode::root();
|
| + context.inputClipOfCurrentEffect = ClipPaintPropertyNode::root();
|
| context.current.transform = context.absolutePosition.transform =
|
| context.fixedPosition.transform = TransformPaintPropertyNode::root();
|
| context.current.scroll = context.absolutePosition.scroll =
|
| @@ -378,7 +379,7 @@ void PaintPropertyTreeBuilder::updateEffect(
|
| filter = layer->createCompositorFilterOperationsForFilter(style);
|
| }
|
|
|
| - const ClipPaintPropertyNode* outputClip = ClipPaintPropertyNode::root();
|
| + const ClipPaintPropertyNode* outputClip = context.inputClipOfCurrentEffect;
|
| // The CSS filter spec didn't specify how filters interact with overflow
|
| // clips. The implementation here mimics the old Blink/WebKit behavior for
|
| // backward compatibility.
|
| @@ -419,11 +420,14 @@ void PaintPropertyTreeBuilder::updateEffect(
|
| const auto* properties = object.paintProperties();
|
| if (properties && properties->effect()) {
|
| context.currentEffect = properties->effect();
|
| - // TODO(pdr): Once the expansion clip node is created above, it should be
|
| - // used here to update all current clip nodes;
|
| - const ClipPaintPropertyNode* expansionHint = context.current.clip;
|
| - context.current.clip = context.absolutePosition.clip =
|
| - context.fixedPosition.clip = expansionHint;
|
| + if (!properties->effect()->filter().isEmpty()) {
|
| + // TODO(trchen): Change input clip to expansion hint once implemented.
|
| + const ClipPaintPropertyNode* inputClip =
|
| + properties->effect()->outputClip();
|
| + context.inputClipOfCurrentEffect = context.current.clip =
|
| + context.absolutePosition.clip = context.fixedPosition.clip =
|
| + inputClip;
|
| + }
|
| }
|
| }
|
|
|
|
|