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

Issue 2923683002: Fix nested border radius with composited child. (Closed)

Created:
3 years, 6 months ago by Stephen Chennney
Modified:
3 years, 6 months ago
Reviewers:
chrishtr
CC:
blink-reviews, blink-reviews-layout_chromium.org, blink-reviews-paint_chromium.org, chromium-reviews, dshwang, eae+blinkwatch, jchaffraix+rendering, leviw+renderwatch, pdr+renderingwatchlist_chromium.org, szager+layoutwatch_chromium.org, zoltan1
Target Ref:
refs/heads/master
Project:
chromium
Visibility:
Public.

Description

Fix nested border radius with composited child. Walk up the layer tree from a layer that needs an AncestorChildClippingMaskLayer to find all border radius clips to apply. Several auxiliary changes were required. The code in CLM for determining if a mask layer is needed has also been reworked to test against all clips. Make LayerClipRecorder::CollectRoundedRectClips a public static member so that CLM can use it to determine if the mask layer is required. Also expand the conditions in which LayerClipRecorder uses the method to catch all cases where masks need rounded clips. Make several PaintLayer methods const, because they can be and we need them so. New tests for various cases of border radius where not just the parent layer needs checking, or where we need to skip over the parent layer and still check. R=chrishtr@chromium.org BUG=672561 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Review-Url: https://codereview.chromium.org/2923683002 Cr-Commit-Position: refs/heads/master@{#478814} Committed: https://chromium.googlesource.com/chromium/src/+/e4208d105f75a14f9719ae35c19d7104f08a5f0b

Patch Set 1 #

Patch Set 2 : Add tests and fix tests #

Total comments: 6

Patch Set 3 : Fix the issue with missing masks #

Total comments: 11

Patch Set 4 : Fix outstanding issues, add unit test, new test baselines #

Total comments: 8

Patch Set 5 : SPv2 Expectations #

Patch Set 6 : Split tests, check layer sizes, document #

Unified diffs Side-by-side diffs Delta from patch set Stats (+434 lines, -61 lines) Patch
M third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2 View 1 2 3 4 1 chunk +3 lines, -0 lines 0 comments Download
A third_party/WebKit/LayoutTests/compositing/overflow/border-radius-on-grandparent-composited-grandchild.html View 1 1 chunk +39 lines, -0 lines 0 comments Download
A third_party/WebKit/LayoutTests/compositing/overflow/border-radius-on-grandparent-composited-grandchild-expected.png View 1 2 3 Binary file 0 comments Download
A third_party/WebKit/LayoutTests/compositing/overflow/border-radius-on-grandparent-composited-grandchild-expected.txt View 1 2 3 1 chunk +11 lines, -0 lines 0 comments Download
A third_party/WebKit/LayoutTests/compositing/overflow/border-radius-on-parent-composited-grandchild.html View 1 1 chunk +39 lines, -0 lines 0 comments Download
A third_party/WebKit/LayoutTests/compositing/overflow/border-radius-on-parent-composited-grandchild-expected.png View 1 2 3 Binary file 0 comments Download
A third_party/WebKit/LayoutTests/compositing/overflow/border-radius-on-parent-composited-grandchild-expected.txt View 1 2 3 1 chunk +11 lines, -0 lines 0 comments Download
A third_party/WebKit/LayoutTests/compositing/overflow/border-radius-on-two-ancestors-composited-grandchild.html View 1 1 chunk +40 lines, -0 lines 0 comments Download
A third_party/WebKit/LayoutTests/compositing/overflow/border-radius-on-two-ancestors-composited-grandchild-expected.png View 1 2 3 Binary file 0 comments Download
A third_party/WebKit/LayoutTests/compositing/overflow/border-radius-on-two-ancestors-composited-grandchild-expected.txt View 1 2 3 1 chunk +11 lines, -0 lines 0 comments Download
M third_party/WebKit/LayoutTests/fast/borders/overflow-hidden-border-radius-force-backing-store-expected.txt View 1 2 3 1 chunk +8 lines, -1 line 0 comments Download
M third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.h View 1 2 3 4 5 1 chunk +6 lines, -5 lines 0 comments Download
M third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp View 1 2 3 3 chunks +30 lines, -22 lines 0 comments Download
M third_party/WebKit/Source/core/layout/compositing/CompositedLayerMappingTest.cpp View 1 2 3 4 5 1 chunk +193 lines, -0 lines 0 comments Download
M third_party/WebKit/Source/core/paint/LayerClipRecorder.h View 1 2 3 1 chunk +18 lines, -8 lines 0 comments Download
M third_party/WebKit/Source/core/paint/LayerClipRecorder.cpp View 1 2 3 3 chunks +10 lines, -10 lines 0 comments Download
M third_party/WebKit/Source/core/paint/PaintLayer.h View 1 2 3 2 chunks +2 lines, -2 lines 0 comments Download
M third_party/WebKit/Source/core/paint/PaintLayer.cpp View 1 2 3 2 chunks +2 lines, -2 lines 0 comments Download
M third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp View 1 2 3 2 chunks +10 lines, -10 lines 0 comments Download
M third_party/WebKit/Source/core/paint/PaintLayerPaintingInfo.h View 1 chunk +1 line, -1 line 0 comments Download

Messages

Total messages: 24 (10 generated)
chrishtr
https://codereview.chromium.org/2923683002/diff/20001/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp File third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp (right): https://codereview.chromium.org/2923683002/diff/20001/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp#newcode594 third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp:594: owning_layer_.Clipper(PaintLayer::kDoNotUseGeometryMapper) 1. clip_rect will be in the space of ...
3 years, 6 months ago (2017-06-09 17:29:30 UTC) #2
Stephen Chennney
I think this is good to go. I'll need one more iteration to get the ...
3 years, 6 months ago (2017-06-09 20:52:37 UTC) #4
chrishtr
https://codereview.chromium.org/2923683002/diff/40001/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp File third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp (right): https://codereview.chromium.org/2923683002/diff/40001/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp#newcode554 third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp:554: bool CompositedLayerMapping::AncestorRoundedCornersWontClip( Please unittest this directly. https://codereview.chromium.org/2923683002/diff/40001/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp#newcode555 third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp:555: const ...
3 years, 6 months ago (2017-06-09 22:45:28 UTC) #6
Stephen Chennney
Thanks for the input. https://codereview.chromium.org/2923683002/diff/40001/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp File third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp (right): https://codereview.chromium.org/2923683002/diff/40001/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp#newcode554 third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp:554: bool CompositedLayerMapping::AncestorRoundedCornersWontClip( On 2017/06/09 22:45:28, ...
3 years, 6 months ago (2017-06-12 14:43:30 UTC) #7
Stephen Chennney
Working on the unit tests. Then done. https://codereview.chromium.org/2923683002/diff/40001/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp File third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp (right): https://codereview.chromium.org/2923683002/diff/40001/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp#newcode555 third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp:555: const LayoutBoxModelObject* ...
3 years, 6 months ago (2017-06-12 15:04:56 UTC) #8
chrishtr
I don't see a new patchset yet...
3 years, 6 months ago (2017-06-12 15:16:23 UTC) #9
Stephen Chennney
On 2017/06/12 15:16:23, chrishtr wrote: > I don't see a new patchset yet... Sorry I ...
3 years, 6 months ago (2017-06-12 18:20:25 UTC) #10
chrishtr
Looking great! https://codereview.chromium.org/2923683002/diff/60001/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.h File third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.h (right): https://codereview.chromium.org/2923683002/diff/60001/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.h#newcode498 third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.h:498: bool AncestorRoundedCornersWontClip(const PaintLayer*); Name this arg compositing_ancestor ...
3 years, 6 months ago (2017-06-12 19:58:47 UTC) #15
Stephen Chennney
The current patch addresses all the review comments, I think. There's more space for optimizations ...
3 years, 6 months ago (2017-06-12 20:00:52 UTC) #16
Stephen Chennney
On 2017/06/12 20:00:52, Stephen Chennney wrote: > The current patch addresses all the review comments, ...
3 years, 6 months ago (2017-06-12 20:02:09 UTC) #17
Stephen Chennney
I think I got it all. I also changed some EXPECT_BLAH to ASSERT_BLAH when we ...
3 years, 6 months ago (2017-06-12 20:41:54 UTC) #18
chrishtr
lgtm
3 years, 6 months ago (2017-06-12 20:43:33 UTC) #19
commit-bot: I haz the power
CQ is trying da patch. Follow status at: https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2923683002/100001
3 years, 6 months ago (2017-06-12 20:49:02 UTC) #21
commit-bot: I haz the power
3 years, 6 months ago (2017-06-12 23:18:34 UTC) #24
Message was sent while issue was closed.
Committed patchset #6 (id:100001) as
https://chromium.googlesource.com/chromium/src/+/e4208d105f75a14f9719ae35c19d...

Powered by Google App Engine
This is Rietveld 408576698