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

Issue 2575423003: Fix geometry mapping issues for float under inline (Closed)

Created:
4 years ago by Xianzhu
Modified:
3 years, 11 months ago
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/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

Fix geometry mapping issues for float under inline Floating object belongs to its containing block, no matter if it's under an inline and no matter if the inline is layered, stacked, or paint invalidation container. This requires us to specially handle floating objects for LayoutObject::paintingLayer(), LayoutObject:: container(), paint invalidator, etc. BUG=666553 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Review-Url: https://codereview.chromium.org/2575423003 Cr-Commit-Position: refs/heads/master@{#442046} Committed: https://chromium.googlesource.com/chromium/src/+/78b26d84270257a830facd6477ef6e3ff59aca66

Patch Set 1 #

Patch Set 2 : Also fix SPInvalidation #

Patch Set 3 : - #

Total comments: 13

Patch Set 4 : - #

Patch Set 5 : Rebase #

Patch Set 6 : Rebase #

Patch Set 7 : Fix LayoutGeometryMapper::pushMappingsToAncestor(PaintLayer*, PaintLayer*) #

Patch Set 8 : SVG floating #

Total comments: 6
Unified diffs Side-by-side diffs Delta from patch set Stats (+316 lines, -53 lines) Patch
A third_party/WebKit/LayoutTests/paint/invalidation/compositing/float-under-composited-inline.html View 1 chunk +12 lines, -0 lines 0 comments Download
A third_party/WebKit/LayoutTests/paint/invalidation/compositing/float-under-composited-inline-expected.html View 1 chunk +3 lines, -0 lines 0 comments Download
A third_party/WebKit/LayoutTests/paint/invalidation/compositing/float-under-composited-inline-expected.txt View 1 chunk +29 lines, -0 lines 0 comments Download
M third_party/WebKit/Source/core/layout/LayoutGeometryMap.cpp View 1 2 3 4 5 6 1 chunk +4 lines, -0 lines 2 comments Download
M third_party/WebKit/Source/core/layout/LayoutObject.h View 1 2 3 4 3 chunks +11 lines, -6 lines 2 comments Download
M third_party/WebKit/Source/core/layout/LayoutObject.cpp View 1 2 3 4 6 chunks +59 lines, -38 lines 0 comments Download
M third_party/WebKit/Source/core/layout/LayoutObjectTest.cpp View 1 2 3 4 1 chunk +53 lines, -0 lines 0 comments Download
M third_party/WebKit/Source/core/layout/PaintInvalidationState.h View 1 chunk +2 lines, -0 lines 0 comments Download
M third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp View 3 chunks +17 lines, -5 lines 0 comments Download
M third_party/WebKit/Source/core/layout/VisualRectMappingTest.cpp View 1 2 3 4 1 chunk +26 lines, -0 lines 0 comments Download
M third_party/WebKit/Source/core/layout/svg/LayoutSVGBlock.h View 1 2 3 4 5 6 7 1 chunk +1 line, -0 lines 0 comments Download
M third_party/WebKit/Source/core/layout/svg/LayoutSVGBlock.cpp View 1 2 3 4 5 6 7 1 chunk +5 lines, -0 lines 2 comments Download
M third_party/WebKit/Source/core/paint/PaintInvalidator.cpp View 1 2 3 4 2 chunks +9 lines, -1 line 0 comments Download
M third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.h View 1 2 3 4 1 chunk +5 lines, -0 lines 0 comments Download
M third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp View 1 2 3 4 5 2 chunks +7 lines, -0 lines 0 comments Download
M third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp View 1 2 3 4 5 1 chunk +23 lines, -0 lines 0 comments Download
M third_party/WebKit/Source/web/tests/LayoutGeometryMapTest.cpp View 1 2 3 4 5 6 2 chunks +42 lines, -3 lines 0 comments Download
A third_party/WebKit/Source/web/tests/data/rgm_float_under_inline.html View 1 2 3 4 5 6 1 chunk +8 lines, -0 lines 0 comments Download

Messages

Total messages: 80 (48 generated)
Xianzhu
4 years ago (2016-12-16 17:25:30 UTC) #15
chrishtr
https://codereview.chromium.org/2575423003/diff/40001/third_party/WebKit/Source/core/layout/LayoutObject.cpp File third_party/WebKit/Source/core/layout/LayoutObject.cpp (right): https://codereview.chromium.org/2575423003/diff/40001/third_party/WebKit/Source/core/layout/LayoutObject.cpp#newcode2544 third_party/WebKit/Source/core/layout/LayoutObject.cpp:2544: if (isFloating()) I'm concerned about side-effects of modifying container() ...
4 years ago (2016-12-16 18:50:20 UTC) #16
Xianzhu
https://codereview.chromium.org/2575423003/diff/40001/third_party/WebKit/Source/core/layout/LayoutObject.cpp File third_party/WebKit/Source/core/layout/LayoutObject.cpp (right): https://codereview.chromium.org/2575423003/diff/40001/third_party/WebKit/Source/core/layout/LayoutObject.cpp#newcode2544 third_party/WebKit/Source/core/layout/LayoutObject.cpp:2544: if (isFloating()) On 2016/12/16 18:50:20, chrishtr wrote: > I'm ...
4 years ago (2016-12-16 19:08:49 UTC) #17
wkorman
https://codereview.chromium.org/2575423003/diff/40001/third_party/WebKit/Source/core/layout/LayoutObject.cpp File third_party/WebKit/Source/core/layout/LayoutObject.cpp (right): https://codereview.chromium.org/2575423003/diff/40001/third_party/WebKit/Source/core/layout/LayoutObject.cpp#newcode2544 third_party/WebKit/Source/core/layout/LayoutObject.cpp:2544: if (isFloating()) On 2016/12/16 at 19:08:49, Xianzhu wrote: > ...
4 years ago (2016-12-16 19:40:31 UTC) #18
Xianzhu
https://codereview.chromium.org/2575423003/diff/40001/third_party/WebKit/Source/core/layout/LayoutObject.cpp File third_party/WebKit/Source/core/layout/LayoutObject.cpp (right): https://codereview.chromium.org/2575423003/diff/40001/third_party/WebKit/Source/core/layout/LayoutObject.cpp#newcode2544 third_party/WebKit/Source/core/layout/LayoutObject.cpp:2544: if (isFloating()) On 2016/12/16 19:40:31, wkorman wrote: > On ...
4 years ago (2016-12-16 20:06:42 UTC) #19
wkorman
lgtm https://codereview.chromium.org/2575423003/diff/40001/third_party/WebKit/Source/core/layout/LayoutObject.cpp File third_party/WebKit/Source/core/layout/LayoutObject.cpp (right): https://codereview.chromium.org/2575423003/diff/40001/third_party/WebKit/Source/core/layout/LayoutObject.cpp#newcode2544 third_party/WebKit/Source/core/layout/LayoutObject.cpp:2544: if (isFloating()) On 2016/12/16 at 20:06:42, Xianzhu wrote: ...
4 years ago (2016-12-16 21:50:40 UTC) #20
chrishtr
https://codereview.chromium.org/2575423003/diff/40001/third_party/WebKit/Source/core/layout/LayoutObjectTest.cpp File third_party/WebKit/Source/core/layout/LayoutObjectTest.cpp (right): https://codereview.chromium.org/2575423003/diff/40001/third_party/WebKit/Source/core/layout/LayoutObjectTest.cpp#newcode127 third_party/WebKit/Source/core/layout/LayoutObjectTest.cpp:127: TEST_F(LayoutObjectTest, FloatUnderInline) { Please add more float examples to ...
4 years ago (2016-12-16 22:10:30 UTC) #21
Xianzhu
https://codereview.chromium.org/2575423003/diff/40001/third_party/WebKit/Source/core/layout/LayoutObjectTest.cpp File third_party/WebKit/Source/core/layout/LayoutObjectTest.cpp (right): https://codereview.chromium.org/2575423003/diff/40001/third_party/WebKit/Source/core/layout/LayoutObjectTest.cpp#newcode127 third_party/WebKit/Source/core/layout/LayoutObjectTest.cpp:127: TEST_F(LayoutObjectTest, FloatUnderInline) { On 2016/12/16 22:10:30, chrishtr wrote: > ...
4 years ago (2016-12-17 05:43:18 UTC) #24
Xianzhu
Chris, do you have more comments?
3 years, 11 months ago (2017-01-03 21:33:54 UTC) #27
chrishtr
lgtm
3 years, 11 months ago (2017-01-03 21:39:14 UTC) #28
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/2575423003/60001
3 years, 11 months ago (2017-01-03 21:42:11 UTC) #31
commit-bot: I haz the power
Try jobs failed on following builders: ios-device on master.tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/ios-device/builds/129554) ios-device-xcode-clang on master.tryserver.chromium.mac (JOB_FAILED, ...
3 years, 11 months ago (2017-01-03 21:44:18 UTC) #33
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/2575423003/80001
3 years, 11 months ago (2017-01-03 22:20:53 UTC) #36
commit-bot: I haz the power
Try jobs failed on following builders: android_n5x_swarming_rel on master.tryserver.chromium.android (JOB_FAILED, https://build.chromium.org/p/tryserver.chromium.android/builders/android_n5x_swarming_rel/builds/93315)
3 years, 11 months ago (2017-01-04 00:53:41 UTC) #38
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/2575423003/80001
3 years, 11 months ago (2017-01-04 01:07:38 UTC) #40
commit-bot: I haz the power
Try jobs failed on following builders: android_n5x_swarming_rel on master.tryserver.chromium.android (JOB_FAILED, https://build.chromium.org/p/tryserver.chromium.android/builders/android_n5x_swarming_rel/builds/93397)
3 years, 11 months ago (2017-01-04 01:15:21 UTC) #42
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/2575423003/100001
3 years, 11 months ago (2017-01-04 01:36:04 UTC) #45
commit-bot: I haz the power
Try jobs failed on following builders: android_n5x_swarming_rel on master.tryserver.chromium.android (JOB_FAILED, https://build.chromium.org/p/tryserver.chromium.android/builders/android_n5x_swarming_rel/builds/93411)
3 years, 11 months ago (2017-01-04 03:32:57 UTC) #47
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/2575423003/120001
3 years, 11 months ago (2017-01-04 19:33:27 UTC) #50
commit-bot: I haz the power
Try jobs failed on following builders: linux_chromium_rel_ng on master.tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/linux_chromium_rel_ng/builds/364582) win_chromium_rel_ng on master.tryserver.chromium.win (JOB_FAILED, ...
3 years, 11 months ago (2017-01-04 20:57:10 UTC) #53
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/2575423003/140001
3 years, 11 months ago (2017-01-04 21:39:38 UTC) #56
Xianzhu
There are two small changes since the last lgtm: - Fix LayoutGeometryMapper::pushMappingsToAncestor(PaintLayer* layer, PaintLayer* ancestorLayer) ...
3 years, 11 months ago (2017-01-04 22:16:32 UTC) #62
wkorman
https://codereview.chromium.org/2575423003/diff/160001/third_party/WebKit/Source/core/layout/LayoutGeometryMap.cpp File third_party/WebKit/Source/core/layout/LayoutGeometryMap.cpp (right): https://codereview.chromium.org/2575423003/diff/160001/third_party/WebKit/Source/core/layout/LayoutGeometryMap.cpp#newcode208 third_party/WebKit/Source/core/layout/LayoutGeometryMap.cpp:208: if (current->isFloating() && current->parent() && Some concern re: unexpected ...
3 years, 11 months ago (2017-01-04 22:27:09 UTC) #63
Xianzhu
+szager for feedback about the change in LayoutGeometryMap (https://codereview.chromium.org/2575423003/diff/160001/third_party/WebKit/Source/core/layout/LayoutGeometryMap.cpp) and its test (https://codereview.chromium.org/2575423003/diff2/100001:160001/third_party/WebKit/Source/web/tests/LayoutGeometryMapTest.cpp). https://codereview.chromium.org/2575423003/diff/160001/third_party/WebKit/Source/core/layout/LayoutGeometryMap.cpp File ...
3 years, 11 months ago (2017-01-04 22:49:59 UTC) #65
wkorman
lgtm
3 years, 11 months ago (2017-01-04 22:59:49 UTC) #66
mstensho (USE GERRIT)
https://codereview.chromium.org/2575423003/diff/160001/third_party/WebKit/Source/core/layout/LayoutObject.h File third_party/WebKit/Source/core/layout/LayoutObject.h (right): https://codereview.chromium.org/2575423003/diff/160001/third_party/WebKit/Source/core/layout/LayoutObject.h#newcode1120 third_party/WebKit/Source/core/layout/LayoutObject.h:1120: LayoutBlock* containingBlock(const LayoutBoxModelObject* ancestor = nullptr, How about a ...
3 years, 11 months ago (2017-01-05 10:31:30 UTC) #70
Xianzhu
https://codereview.chromium.org/2575423003/diff/160001/third_party/WebKit/Source/core/layout/LayoutObject.h File third_party/WebKit/Source/core/layout/LayoutObject.h (right): https://codereview.chromium.org/2575423003/diff/160001/third_party/WebKit/Source/core/layout/LayoutObject.h#newcode1120 third_party/WebKit/Source/core/layout/LayoutObject.h:1120: LayoutBlock* containingBlock(const LayoutBoxModelObject* ancestor = nullptr, On 2017/01/05 10:31:30, ...
3 years, 11 months ago (2017-01-06 00:42:36 UTC) #71
mstensho (USE GERRIT)
On 2017/01/06 00:42:36, Xianzhu wrote: > https://codereview.chromium.org/2575423003/diff/160001/third_party/WebKit/Source/core/layout/LayoutObject.h > File third_party/WebKit/Source/core/layout/LayoutObject.h (right): > > https://codereview.chromium.org/2575423003/diff/160001/third_party/WebKit/Source/core/layout/LayoutObject.h#newcode1120 > ...
3 years, 11 months ago (2017-01-06 09:34:48 UTC) #72
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/2575423003/160001
3 years, 11 months ago (2017-01-06 17:00:02 UTC) #75
Xianzhu
On 2017/01/06 09:34:48, mstensho wrote: > On 2017/01/06 00:42:36, Xianzhu wrote: > > > https://codereview.chromium.org/2575423003/diff/160001/third_party/WebKit/Source/core/layout/LayoutObject.h ...
3 years, 11 months ago (2017-01-06 17:00:04 UTC) #76
commit-bot: I haz the power
Committed patchset #8 (id:160001) as https://chromium.googlesource.com/chromium/src/+/78b26d84270257a830facd6477ef6e3ff59aca66
3 years, 11 months ago (2017-01-06 21:03:49 UTC) #79
mstensho (USE GERRIT)
3 years, 11 months ago (2017-01-15 08:03:51 UTC) #80
Message was sent while issue was closed.
On 2017/01/06 17:00:04, Xianzhu wrote:
> On 2017/01/06 09:34:48, mstensho wrote:
> > On 2017/01/06 00:42:36, Xianzhu wrote:
> > >
> >
>
https://codereview.chromium.org/2575423003/diff/160001/third_party/WebKit/Sou...
> > > File third_party/WebKit/Source/core/layout/LayoutObject.h (right):
> > > 
> > >
> >
>
https://codereview.chromium.org/2575423003/diff/160001/third_party/WebKit/Sou...
> > > third_party/WebKit/Source/core/layout/LayoutObject.h:1120: LayoutBlock*
> > > containingBlock(const LayoutBoxModelObject* ancestor = nullptr,
> > > On 2017/01/05 10:31:30, mstensho wrote:
> > > > How about a struct that holds these three variables instead?
> > > > 
> > > > struct AncestorSkipInfo { // There could be a better name
> > > >     const LayoutBoxModelObject* const ancestor { nullptr };
> > > >     bool ancestorSkipped { false };
> > > >     bool filterSkipped { false };
> > > > };
> > > > 
> > > > LayoutBlock* containingBlock(AncestorSkipInfo* = nullptr)
> > > > 
> > > > And then we should have the same in
containingBlockForAbsolutePosition(),
> > and
> > > > even container().
> > > 
> > > Sounds good. Would like to address this in a follow-up.
> > 
> > Sure! Might as well do it myself, if you have better things to do. :)
> 
> Please go ahead for it. Thanks!

Here: https://codereview.chromium.org/2634493007/

Powered by Google App Engine
This is Rietveld 408576698