Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(211)

Unified Diff: third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp

Issue 2495973002: [SPv2] Add filter support in PaintArtifactCompositor (Closed)
Patch Set: rebase Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
+ }
}
}

Powered by Google App Engine
This is Rietveld 408576698