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

Issue 1278543002: Include the whole outline into visual overflow (Closed)

Created:
5 years, 4 months ago by Xianzhu
Modified:
5 years, 3 months ago
CC:
blink-reviews, blink-reviews-rendering, eae+blinkwatch, jchaffraix+rendering, leviw+renderwatch, pdr+renderingwatchlist_chromium.org, szager+layoutwatch_chromium.org, zoltan1
Target Ref:
refs/heads/master
Project:
blink
Visibility:
Public.

Description

Include the whole outline into visual overflow This is another preparation CL for combining outline and focus ring paths (https://codereview.chromium.org/1224933002/). Not including the whole outline into visual overflow caused incorrect layout and painting of outlines when the element having outline has clipping or is composited because the overflow doesn't cover the whole outline. Not including outlines of block continuations into visual overflow required us to - propagate outline style to block continuations on style change; - paint outlines for block continuations separately, causing unconnected or duplicated outline edges. Both of the above caused complex code. With this CL, we always include the whole outline into visual overflow of the object having outline style. - For LayoutBoxes, combine code paths about overflow for focus ring and outline; - For LayoutBlockFlows, we need to include the visual overflow of descendant LayoutInlines having continuation and outline. Let the containing LayoutBlockFlow record LayoutInlines with outline and continuation, and include the outline rects of continuations into visual overflow of the block. (FYI, cases that we already included outlines into visual overflow: - LayoutBlockFlow containing descendant LayoutInlines having outline but not continuation: we already included such outlines in visual overflow of InlineFlowBoxes and in turn into the LayoutBlockFlow; - LayoutInlines having outline: previously we include outlines by calling rectWithOutlineForPaintInvalidation(); with this CL we call addOutlineRects().) This CL will have real effect with https://codereview.chromium.org/1224933002/. BUG=506669 Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=201418

Patch Set 1 #

Patch Set 2 : #

Total comments: 2

Patch Set 3 : TestExpectations #

Patch Set 4 : #

Patch Set 5 : #

Total comments: 1

Patch Set 6 : Modify a fast/spatial-navigation test because of fix of original clippedOverflowRect bug #

Total comments: 1

Patch Set 7 : Rebase #

Patch Set 8 : Rebase #

Total comments: 4

Patch Set 9 : Separate out https://codereview.chromium.org/1280543005 #

Total comments: 6

Patch Set 10 : Avoid the global map #

Total comments: 6

Patch Set 11 : #

Total comments: 4

Patch Set 12 : Add comment for LayoutObject::addOutlineRects() #

Total comments: 2

Patch Set 13 : #

Patch Set 14 : #

Unified diffs Side-by-side diffs Delta from patch set Stats (+80 lines, -65 lines) Patch
M LayoutTests/TestExpectations View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +12 lines, -0 lines 0 comments Download
M LayoutTests/compositing/layer-creation/stacking-context-overlap-nested-expected.txt View 1 2 1 chunk +2 lines, -1 line 0 comments Download
M LayoutTests/fast/repaint/focus-ring-on-continuation-move-expected.txt View 1 2 1 chunk +0 lines, -3 lines 0 comments Download
M LayoutTests/fast/spatial-navigation/snav-clipped-overflowed-content.html View 1 2 3 4 5 1 chunk +1 line, -1 line 0 comments Download
M LayoutTests/platform/linux/fast/repaint/focus-continuations-expected.txt View 1 2 1 chunk +2 lines, -1 line 0 comments Download
M LayoutTests/platform/linux/fast/repaint/focus-enable-continuations-expected.txt View 1 2 1 chunk +2 lines, -1 line 0 comments Download
M LayoutTests/platform/linux/fast/repaint/outline-change-continuations-expected.txt View 1 2 1 chunk +3 lines, -1 line 0 comments Download
M LayoutTests/platform/linux/fast/repaint/outline-continuations-expected.txt View 1 2 3 1 chunk +4 lines, -4 lines 0 comments Download
M Source/core/layout/LayoutBlock.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +0 lines, -2 lines 0 comments Download
M Source/core/layout/LayoutBlock.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +0 lines, -8 lines 0 comments Download
M Source/core/layout/LayoutBlockFlow.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +3 lines, -0 lines 0 comments Download
M Source/core/layout/LayoutBlockFlowLine.cpp View 1 2 3 4 5 6 7 8 9 10 3 chunks +26 lines, -0 lines 0 comments Download
M Source/core/layout/LayoutBox.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +8 lines, -16 lines 0 comments Download
M Source/core/layout/LayoutInline.h View 1 2 3 4 5 6 7 8 1 chunk +0 lines, -1 line 0 comments Download
M Source/core/layout/LayoutInline.cpp View 1 2 3 4 5 6 7 8 9 10 1 chunk +7 lines, -17 lines 0 comments Download
M Source/core/layout/LayoutObject.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 6 chunks +10 lines, -2 lines 0 comments Download
M Source/core/layout/LayoutObject.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +0 lines, -7 lines 0 comments Download

Messages

Total messages: 35 (9 generated)
Xianzhu
Ptal. Added some inline notes for reviewers. https://codereview.chromium.org/1278543002/diff/20001/Source/core/layout/LayoutBlockFlowLine.cpp File Source/core/layout/LayoutBlockFlowLine.cpp (right): https://codereview.chromium.org/1278543002/diff/20001/Source/core/layout/LayoutBlockFlowLine.cpp#newcode56 Source/core/layout/LayoutBlockFlowLine.cpp:56: static InlinesWithOutlineAndContinuationMap* ...
5 years, 4 months ago (2015-08-06 18:12:46 UTC) #2
chrishtr
https://codereview.chromium.org/1278543002/diff/140001/Source/core/layout/LayoutBlockFlowLine.cpp File Source/core/layout/LayoutBlockFlowLine.cpp (right): https://codereview.chromium.org/1278543002/diff/140001/Source/core/layout/LayoutBlockFlowLine.cpp#newcode56 Source/core/layout/LayoutBlockFlowLine.cpp:56: static InlinesWithOutlineAndContinuationMap* gInlinesWithOutlineAndContinuationMap = nullptr; Why do you need ...
5 years, 4 months ago (2015-08-07 04:52:11 UTC) #3
Xianzhu
https://codereview.chromium.org/1278543002/diff/140001/Source/core/layout/LayoutBlockFlowLine.cpp File Source/core/layout/LayoutBlockFlowLine.cpp (right): https://codereview.chromium.org/1278543002/diff/140001/Source/core/layout/LayoutBlockFlowLine.cpp#newcode56 Source/core/layout/LayoutBlockFlowLine.cpp:56: static InlinesWithOutlineAndContinuationMap* gInlinesWithOutlineAndContinuationMap = nullptr; On 2015/08/07 04:52:10, chrishtr ...
5 years, 4 months ago (2015-08-07 16:25:37 UTC) #4
leviw_travelin_and_unemployed
https://codereview.chromium.org/1278543002/diff/160001/Source/core/layout/LayoutBlockFlowLine.cpp File Source/core/layout/LayoutBlockFlowLine.cpp (right): https://codereview.chromium.org/1278543002/diff/160001/Source/core/layout/LayoutBlockFlowLine.cpp#newcode1541 Source/core/layout/LayoutBlockFlowLine.cpp:1541: removeInlinesWithOutlineAndContinuation(); It's a bit unfortunate that we incur a ...
5 years, 4 months ago (2015-08-10 20:13:14 UTC) #5
chrishtr
https://codereview.chromium.org/1278543002/diff/160001/Source/core/layout/LayoutBlockFlowLine.cpp File Source/core/layout/LayoutBlockFlowLine.cpp (right): https://codereview.chromium.org/1278543002/diff/160001/Source/core/layout/LayoutBlockFlowLine.cpp#newcode1898 Source/core/layout/LayoutBlockFlowLine.cpp:1898: flow->addOutlineRectsForContinuations(outlineRects, LayoutPoint()); Is this cache really so important for ...
5 years, 4 months ago (2015-08-10 23:45:33 UTC) #6
Xianzhu
https://codereview.chromium.org/1278543002/diff/160001/Source/core/layout/LayoutBlockFlowLine.cpp File Source/core/layout/LayoutBlockFlowLine.cpp (right): https://codereview.chromium.org/1278543002/diff/160001/Source/core/layout/LayoutBlockFlowLine.cpp#newcode1541 Source/core/layout/LayoutBlockFlowLine.cpp:1541: removeInlinesWithOutlineAndContinuation(); On 2015/08/10 20:13:14, leviw wrote: > It's a ...
5 years, 4 months ago (2015-08-11 17:57:50 UTC) #7
chrishtr
https://codereview.chromium.org/1278543002/diff/160001/Source/core/layout/LayoutBlockFlowLine.cpp File Source/core/layout/LayoutBlockFlowLine.cpp (right): https://codereview.chromium.org/1278543002/diff/160001/Source/core/layout/LayoutBlockFlowLine.cpp#newcode1898 Source/core/layout/LayoutBlockFlowLine.cpp:1898: flow->addOutlineRectsForContinuations(outlineRects, LayoutPoint()); On 2015/08/11 at 17:57:50, Xianzhu wrote: > ...
5 years, 4 months ago (2015-08-13 20:04:14 UTC) #8
Xianzhu
https://codereview.chromium.org/1278543002/diff/160001/Source/core/layout/LayoutBlockFlowLine.cpp File Source/core/layout/LayoutBlockFlowLine.cpp (right): https://codereview.chromium.org/1278543002/diff/160001/Source/core/layout/LayoutBlockFlowLine.cpp#newcode1898 Source/core/layout/LayoutBlockFlowLine.cpp:1898: flow->addOutlineRectsForContinuations(outlineRects, LayoutPoint()); On 2015/08/13 20:04:13, chrishtr wrote: > On ...
5 years, 4 months ago (2015-08-13 20:26:00 UTC) #9
chrishtr
On 2015/08/13 at 20:26:00, wangxianzhu wrote: > https://codereview.chromium.org/1278543002/diff/160001/Source/core/layout/LayoutBlockFlowLine.cpp > File Source/core/layout/LayoutBlockFlowLine.cpp (right): > > https://codereview.chromium.org/1278543002/diff/160001/Source/core/layout/LayoutBlockFlowLine.cpp#newcode1898 ...
5 years, 3 months ago (2015-08-27 17:46:00 UTC) #10
Xianzhu
On 2015/08/27 17:46:00, chrishtr wrote: > On 2015/08/13 at 20:26:00, wangxianzhu wrote: > > > ...
5 years, 3 months ago (2015-08-27 17:53:49 UTC) #11
chrishtr
https://codereview.chromium.org/1278543002/diff/180001/Source/core/layout/LayoutBlockFlowLine.cpp File Source/core/layout/LayoutBlockFlowLine.cpp (right): https://codereview.chromium.org/1278543002/diff/180001/Source/core/layout/LayoutBlockFlowLine.cpp#newcode1531 Source/core/layout/LayoutBlockFlowLine.cpp:1531: setContainsInlineWithOutlineAndContinuation(false); If the DOM changes to remove all inline ...
5 years, 3 months ago (2015-08-27 18:20:59 UTC) #12
Xianzhu
https://codereview.chromium.org/1278543002/diff/180001/Source/core/layout/LayoutBlockFlowLine.cpp File Source/core/layout/LayoutBlockFlowLine.cpp (right): https://codereview.chromium.org/1278543002/diff/180001/Source/core/layout/LayoutBlockFlowLine.cpp#newcode1531 Source/core/layout/LayoutBlockFlowLine.cpp:1531: setContainsInlineWithOutlineAndContinuation(false); On 2015/08/27 18:20:59, chrishtr wrote: > If the ...
5 years, 3 months ago (2015-08-27 19:23:13 UTC) #13
chrishtr
https://codereview.chromium.org/1278543002/diff/200001/Source/core/layout/LayoutBlockFlowLine.cpp File Source/core/layout/LayoutBlockFlowLine.cpp (right): https://codereview.chromium.org/1278543002/diff/200001/Source/core/layout/LayoutBlockFlowLine.cpp#newcode1879 Source/core/layout/LayoutBlockFlowLine.cpp:1879: outlineBounds.inflate(o.styleRef().outlineOutsetExtent()); Why do you need to include the outset ...
5 years, 3 months ago (2015-08-27 23:14:52 UTC) #14
Xianzhu
https://codereview.chromium.org/1278543002/diff/200001/Source/core/layout/LayoutBlockFlowLine.cpp File Source/core/layout/LayoutBlockFlowLine.cpp (right): https://codereview.chromium.org/1278543002/diff/200001/Source/core/layout/LayoutBlockFlowLine.cpp#newcode1879 Source/core/layout/LayoutBlockFlowLine.cpp:1879: outlineBounds.inflate(o.styleRef().outlineOutsetExtent()); On 2015/08/27 23:14:52, chrishtr wrote: > Why do ...
5 years, 3 months ago (2015-08-27 23:40:15 UTC) #15
chrishtr
https://codereview.chromium.org/1278543002/diff/200001/Source/core/layout/LayoutBlockFlowLine.cpp File Source/core/layout/LayoutBlockFlowLine.cpp (right): https://codereview.chromium.org/1278543002/diff/200001/Source/core/layout/LayoutBlockFlowLine.cpp#newcode1879 Source/core/layout/LayoutBlockFlowLine.cpp:1879: outlineBounds.inflate(o.styleRef().outlineOutsetExtent()); On 2015/08/27 at 23:40:15, Xianzhu wrote: > On ...
5 years, 3 months ago (2015-08-28 00:10:05 UTC) #16
Xianzhu
https://codereview.chromium.org/1278543002/diff/200001/Source/core/layout/LayoutBlockFlowLine.cpp File Source/core/layout/LayoutBlockFlowLine.cpp (right): https://codereview.chromium.org/1278543002/diff/200001/Source/core/layout/LayoutBlockFlowLine.cpp#newcode1879 Source/core/layout/LayoutBlockFlowLine.cpp:1879: outlineBounds.inflate(o.styleRef().outlineOutsetExtent()); On 2015/08/28 00:10:05, chrishtr wrote: > On 2015/08/27 ...
5 years, 3 months ago (2015-08-28 00:24:10 UTC) #17
chrishtr
lgtm https://codereview.chromium.org/1278543002/diff/220001/Source/core/layout/LayoutObject.h File Source/core/layout/LayoutObject.h (right): https://codereview.chromium.org/1278543002/diff/220001/Source/core/layout/LayoutObject.h#newcode991 Source/core/layout/LayoutObject.h:991: // Collects rectangles that the outline of this ...
5 years, 3 months ago (2015-08-28 00:37:27 UTC) #18
Xianzhu
5 years, 3 months ago (2015-08-28 03:47:38 UTC) #19
Xianzhu
https://codereview.chromium.org/1278543002/diff/220001/Source/core/layout/LayoutObject.h File Source/core/layout/LayoutObject.h (right): https://codereview.chromium.org/1278543002/diff/220001/Source/core/layout/LayoutObject.h#newcode991 Source/core/layout/LayoutObject.h:991: // Collects rectangles that the outline of this object ...
5 years, 3 months ago (2015-08-28 03:48:05 UTC) #20
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1278543002/220001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1278543002/220001
5 years, 3 months ago (2015-08-28 03:48:17 UTC) #22
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1278543002/240001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1278543002/240001
5 years, 3 months ago (2015-08-28 03:51:51 UTC) #25
commit-bot: I haz the power
Try jobs failed on following builders: win_chromium_rel_ng on tryserver.chromium.win (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.win/builders/win_chromium_rel_ng/builds/99913)
5 years, 3 months ago (2015-08-28 04:59:32 UTC) #27
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1278543002/260001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1278543002/260001
5 years, 3 months ago (2015-08-28 16:19:25 UTC) #30
commit-bot: I haz the power
Try jobs failed on following builders: linux_chromium_chromeos_rel_ng on tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/linux_chromium_chromeos_rel_ng/builds/96548)
5 years, 3 months ago (2015-08-28 17:38:27 UTC) #32
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1278543002/260001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1278543002/260001
5 years, 3 months ago (2015-08-28 17:39:34 UTC) #34
commit-bot: I haz the power
5 years, 3 months ago (2015-08-28 18:25:48 UTC) #35
Message was sent while issue was closed.
Committed patchset #14 (id:260001) as
https://src.chromium.org/viewvc/blink?view=rev&revision=201418

Powered by Google App Engine
This is Rietveld 408576698