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

Issue 869583002: [New Multicolumn] Support dynamic insertion and removal of multicol content. (Closed)

Created:
5 years, 11 months ago by mstensho (USE GERRIT)
Modified:
5 years, 11 months ago
CC:
blink-reviews, blink-reviews-rendering, chromiumbugtracker_adobe.com, Dominik Röttsches, eae+blinkwatch, jchaffraix+rendering, leviw+renderwatch, mstensho (USE GERRIT), pdr+renderingwatchlist_chromium.org, zoltan1
Base URL:
https://chromium.googlesource.com/chromium/blink.git@master
Target Ref:
refs/heads/master
Project:
blink
Visibility:
Public.

Description

[New Multicolumn] Support dynamic insertion and removal of multicol content. Special attention is required when a dynamic change requires a column spanner placeholder to be inserted. When a spanner is inserted, we need to create a placeholder. If the spanner was inserted in the middle of regular column content, it means that there's a column set there that we need to split, so that we get one column row before the spanner and one column row after. We may also have to create an additional column set when inserting column set, e.g. when it's inserted between adjacent spanners. Removal of spanners was already being handled properly (in terms of merging any surrounding column sets). But removing superfluous column sets when column content is removed wasn't taken care of until this CL. Also had to fix how spanner placeholders are torn down, as we cannot notify the flow thread both in RenderBox and RenderObject, when a spanner is removed. If we first did it in RenderBox, the spanner placeholder would be destroyed at that time. This would mean that when we finally got to RenderObject::removeFromRenderFlowThreadRecursive(), the ex-spanner would notify the thread again for the same renderer (which is bad in any regard), and this time the flow thread would think that we're removing actual column content (since there's no longer a placeholder associated with it). The unit test MultiColumnTreeModifyingTest.InsertSpannerAndRemove would assert without this change, as we wouldn't be able to find a column set to remove (since there is none in that case, since the multicol container only contains a sole spanner). Added a bunch of layout and unit tests. The unit tests need to modify the render tree on their own, so we need to tell the document that this needs to be allowed. BUG=347325 R=jchaffraix@chromium.org Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=188883

Patch Set 1 #

Total comments: 8

Patch Set 2 : code review #

Unified diffs Side-by-side diffs Delta from patch set Stats (+1493 lines, -41 lines) Patch
M LayoutTests/TestExpectations View 1 chunk +17 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/block-becomes-spanner.html View 1 chunk +13 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/block-becomes-spanner-expected.html View 1 chunk +6 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/change-spanner-display.html View 1 chunk +21 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/change-spanner-display-expected.html View 1 chunk +16 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/change-spanner-parent-display.html View 1 chunk +15 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/change-spanner-parent-display-expected.html View 1 chunk +5 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/insert-block-before-spanner.html View 1 chunk +17 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/insert-block-before-spanner-before-content.html View 1 1 chunk +18 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/insert-block-before-spanner-before-content-expected.html View 1 1 chunk +9 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/insert-block-before-spanner-expected.html View 1 chunk +8 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/insert-block-between-spanners.html View 1 chunk +18 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/insert-block-between-spanners-expected.html View 1 chunk +9 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/insert-block-into-content.html View 1 chunk +15 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/insert-block-into-content-expected.html View 1 chunk +8 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/insert-block-into-spanner.html View 1 chunk +13 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/insert-block-into-spanner-expected.html View 1 chunk +4 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/insert-float-after-content-in-spanner.html View 1 chunk +13 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/insert-float-after-content-in-spanner-expected.html View 1 chunk +4 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/insert-float-before-content-in-spanner.html View 1 chunk +13 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/insert-float-before-content-in-spanner-expected.html View 1 chunk +4 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/insert-spanner-after-content.html View 1 chunk +16 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/insert-spanner-after-content-expected.html View 1 chunk +12 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/insert-spanner-after-spanner-before-content.html View 1 chunk +20 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/insert-spanner-after-spanner-before-content-expected.html View 1 chunk +18 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/insert-spanner-before-content.html View 1 chunk +16 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/insert-spanner-before-content-expected.html View 1 chunk +12 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/insert-spanner-into-content.html View 1 chunk +15 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/insert-spanner-into-content-expected.html View 1 chunk +9 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/insert-spanner-pseudo-after.html View 1 chunk +16 lines, -0 lines 0 comments Download
A + LayoutTests/fast/multicol/dynamic/insert-spanner-pseudo-after-expected.html View 1 chunk +2 lines, -1 line 0 comments Download
A LayoutTests/fast/multicol/dynamic/insert-spanner-pseudo-after-then-content.html View 1 chunk +19 lines, -0 lines 0 comments Download
A + LayoutTests/fast/multicol/dynamic/insert-spanner-pseudo-after-then-content-expected.html View 1 chunk +7 lines, -2 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/insert-spanner-pseudo-before.html View 1 chunk +16 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/insert-spanner-pseudo-before-after.html View 1 chunk +17 lines, -0 lines 0 comments Download
A + LayoutTests/fast/multicol/dynamic/insert-spanner-pseudo-before-after-expected.html View 1 chunk +2 lines, -1 line 0 comments Download
A LayoutTests/fast/multicol/dynamic/insert-spanner-pseudo-before-after-in-content.html View 1 chunk +21 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/insert-spanner-pseudo-before-after-in-content-expected.html View 1 chunk +14 lines, -0 lines 0 comments Download
A + LayoutTests/fast/multicol/dynamic/insert-spanner-pseudo-before-expected.html View 1 chunk +2 lines, -1 line 0 comments Download
A LayoutTests/fast/multicol/dynamic/insert-spanner-pseudo-before-following-content.html View 1 chunk +18 lines, -0 lines 0 comments Download
A + LayoutTests/fast/multicol/dynamic/insert-spanner-pseudo-before-following-content-expected.html View 1 chunk +3 lines, -2 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/remove-and-insert-block-after-spanner.html View 1 chunk +18 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/remove-and-insert-block-after-spanner-expected.html View 1 chunk +10 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/remove-and-insert-block-before-spanner.html View 1 chunk +18 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/remove-and-insert-block-before-spanner-expected.html View 1 chunk +10 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/remove-and-insert-block-between-spanners.html View 1 chunk +17 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/remove-and-insert-block-between-spanners-expected.html View 1 chunk +11 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/remove-block-after-spanner.html View 1 chunk +17 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/remove-block-after-spanner-expected.html View 1 chunk +6 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/remove-block-before-spanner.html View 1 chunk +14 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/remove-block-before-spanner-expected.html View 1 chunk +6 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/remove-block-between-spanners.html View 1 chunk +16 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/remove-block-between-spanners-expected.html View 1 chunk +7 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/remove-block-from-content-after-spanner.html View 1 chunk +19 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/remove-block-from-content-after-spanner-expected.html View 1 chunk +9 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/remove-block-from-content-before-spanner.html View 1 chunk +19 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/remove-block-from-content-before-spanner-expected.html View 1 chunk +9 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/remove-block-from-content-between-spanners.html View 1 chunk +20 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/remove-block-from-content-between-spanners-expected.html View 1 chunk +10 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/remove-spanner-after-content.html View 1 chunk +17 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/remove-spanner-after-content-expected.html View 1 chunk +4 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/remove-spanner-before-content.html View 1 chunk +17 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/remove-spanner-before-content-expected.html View 1 chunk +4 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/remove-spanner-in-content.html View 1 chunk +16 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/remove-spanner-in-content-expected.html View 1 chunk +13 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/spanner-after-content-becomes-regular-block.html View 1 chunk +14 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/spanner-after-content-becomes-regular-block-expected.html View 1 chunk +7 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/spanner-becomes-regular-block.html View 1 chunk +23 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/spanner-becomes-regular-block-expected.html View 1 chunk +9 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/spanner-before-content-becomes-regular-block.html View 1 chunk +14 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/spanner-before-content-becomes-regular-block-expected.html View 1 chunk +7 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/spanner-in-content-becomes-regular-block.html View 1 chunk +15 lines, -0 lines 0 comments Download
A LayoutTests/fast/multicol/dynamic/spanner-in-content-becomes-regular-block-expected.html View 1 chunk +7 lines, -0 lines 0 comments Download
M Source/core/rendering/RenderBox.h View 1 chunk +0 lines, -1 line 0 comments Download
M Source/core/rendering/RenderBox.cpp View 1 chunk +0 lines, -9 lines 0 comments Download
M Source/core/rendering/RenderMultiColumnFlowThread.h View 1 2 chunks +17 lines, -2 lines 0 comments Download
M Source/core/rendering/RenderMultiColumnFlowThread.cpp View 1 4 chunks +105 lines, -10 lines 0 comments Download
M Source/core/rendering/RenderMultiColumnFlowThreadTest.cpp View 1 chunk +460 lines, -0 lines 0 comments Download
M Source/core/rendering/RenderMultiColumnSpannerPlaceholder.h View 1 chunk +0 lines, -2 lines 0 comments Download
M Source/core/rendering/RenderMultiColumnSpannerPlaceholder.cpp View 1 chunk +0 lines, -9 lines 0 comments Download
M Source/core/rendering/RenderObject.cpp View 2 chunks +7 lines, -1 line 0 comments Download

Messages

Total messages: 6 (1 generated)
mstensho (USE GERRIT)
5 years, 11 months ago (2015-01-22 14:59:24 UTC) #1
Julien - ping for review
lgtm https://codereview.chromium.org/869583002/diff/1/LayoutTests/fast/multicol/dynamic/insert-block-before-spanner-before-content.html File LayoutTests/fast/multicol/dynamic/insert-block-before-spanner-before-content.html (right): https://codereview.chromium.org/869583002/diff/1/LayoutTests/fast/multicol/dynamic/insert-block-before-spanner-before-content.html#newcode13 LayoutTests/fast/multicol/dynamic/insert-block-before-spanner-before-content.html:13: <p>There should be two lines below with the ...
5 years, 11 months ago (2015-01-23 09:13:56 UTC) #2
mstensho (USE GERRIT)
https://codereview.chromium.org/869583002/diff/1/LayoutTests/fast/multicol/dynamic/insert-block-before-spanner-before-content.html File LayoutTests/fast/multicol/dynamic/insert-block-before-spanner-before-content.html (right): https://codereview.chromium.org/869583002/diff/1/LayoutTests/fast/multicol/dynamic/insert-block-before-spanner-before-content.html#newcode13 LayoutTests/fast/multicol/dynamic/insert-block-before-spanner-before-content.html:13: <p>There should be two lines below with the word ...
5 years, 11 months ago (2015-01-23 12:15:50 UTC) #3
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/869583002/20001
5 years, 11 months ago (2015-01-23 12:16:42 UTC) #5
commit-bot: I haz the power
5 years, 11 months ago (2015-01-23 13:32:34 UTC) #6
Message was sent while issue was closed.
Committed patchset #2 (id:20001) as
https://src.chromium.org/viewvc/blink?view=rev&revision=188883

Powered by Google App Engine
This is Rietveld 408576698