<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[167335] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/167335">167335</a></dd>
<dt>Author</dt> <dd>hyatt@apple.com</dd>
<dt>Date</dt> <dd>2014-04-15 16:25:58 -0700 (Tue, 15 Apr 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>[New Multicolumn] Add support for column-span:all
https://bugs.webkit.org/show_bug.cgi?id=129330

Patch by Morten Stenshorne &lt;mstensho@opera.com&gt; on 2014-04-14
Reviewed by Dave Hyatt.


Source/WebCore: 
Column spanners are implemented as siblings of RenderMultiColumnSet
objects (i.e. the regions for the column rows). This means that they
are pulled out from the flow thread tree where they would otherwise
live. This causes some complexity, most of which is contained within
the multicol code.

A placeholder is put in the flow thread tree where the spanner's
renderer would otherwise live. This is needed in order make sure that
we interrupt line layout before after the spanner. We also need this
to be able to switch from one multicol set to the next.

Some extra logic is required when dynamically inserting and removing
flow thread descendants now, because we need to figure out if the
renderer added should trigger creation of new multi column sets. If
a spanner is inserted in the middle of a multi column set, we need to
detect this, split the set and put the spanner in the middle.

Wrote a bunch of tests. A few of the tests were copied from existing
(old-impl) tests and put in a separate directory. That directory can
be wiped when we turn on the new multicol implementation by default.

Tests: fast/multicol/newmulticol/adjacent-spanners.html
       fast/multicol/newmulticol/block-becomes-spanner.html
       fast/multicol/newmulticol/change-spanner-display.html
       fast/multicol/newmulticol/change-spanner-parent-display.html
       fast/multicol/newmulticol/compare-with-old-impl/anonymous-block-split-crash.html
       fast/multicol/newmulticol/compare-with-old-impl/before-child-anonymous-column-block.html
       fast/multicol/newmulticol/compare-with-old-impl/clone-before-after-content-crash.html
       fast/multicol/newmulticol/compare-with-old-impl/clone-block-children-inline-mismatch-crash.html
       fast/multicol/newmulticol/compare-with-old-impl/clone-flexbox.html
       fast/multicol/newmulticol/compare-with-old-impl/clone-summary.html
       fast/multicol/newmulticol/compare-with-old-impl/column-span-inside-multicol-webkit-box.html
       fast/multicol/newmulticol/compare-with-old-impl/continuation-crash.html
       fast/multicol/newmulticol/compare-with-old-impl/double-merge-anonymous-block-crash.html
       fast/multicol/newmulticol/compare-with-old-impl/empty-anonymous-block-split-crash.html
       fast/multicol/newmulticol/compare-with-old-impl/float-not-removed-crash.html
       fast/multicol/newmulticol/compare-with-old-impl/list-multi-column-crash.html
       fast/multicol/newmulticol/compare-with-old-impl/positioned-child-not-removed-crash.html
       fast/multicol/newmulticol/compare-with-old-impl/positioned-objects-not-removed-crash.html
       fast/multicol/newmulticol/compare-with-old-impl/recursive-split-flow-crash.html
       fast/multicol/newmulticol/compare-with-old-impl/removal-of-multicol-span-crash.html
       fast/multicol/newmulticol/compare-with-old-impl/remove-child-split-flow-crash.html
       fast/multicol/newmulticol/compare-with-old-impl/runin-continuation-crash.html
       fast/multicol/newmulticol/compare-with-old-impl/span-as-immediate-child-complex-splitting.html
       fast/multicol/newmulticol/compare-with-old-impl/span-as-nested-inline-block-child.html
       fast/multicol/newmulticol/compare-with-old-impl/split-flow-anonymous-wrapper-crash.html
       fast/multicol/newmulticol/compare-with-old-impl/split-inline-wrong-post-block-crash.html
       fast/multicol/newmulticol/compare-with-old-impl/table-multi-column-crash.html
       fast/multicol/newmulticol/compare-with-old-impl/textbox-not-removed-crash.html
       fast/multicol/newmulticol/compare-with-old-impl/update-after-content-before-child-crash.html
       fast/multicol/newmulticol/insert-row-content1.html
       fast/multicol/newmulticol/insert-row-content2.html
       fast/multicol/newmulticol/insert-row-content3.html
       fast/multicol/newmulticol/insert-row-content4.html
       fast/multicol/newmulticol/insert-row-content5.html
       fast/multicol/newmulticol/insert-row-content6.html
       fast/multicol/newmulticol/insert-row-content7.html
       fast/multicol/newmulticol/insert-row-content8.html
       fast/multicol/newmulticol/insert-row-content9.html
       fast/multicol/newmulticol/insert-spanner-child1.html
       fast/multicol/newmulticol/insert-spanner-child2.html
       fast/multicol/newmulticol/insert-spanner-child3.html
       fast/multicol/newmulticol/insert-spanner1.html
       fast/multicol/newmulticol/insert-spanner2.html
       fast/multicol/newmulticol/insert-spanner3.html
       fast/multicol/newmulticol/insert-spanner4.html
       fast/multicol/newmulticol/insert-spanner5.html
       fast/multicol/newmulticol/insert-spanner6.html
       fast/multicol/newmulticol/insert-spanner7.html
       fast/multicol/newmulticol/insert-spanner8.html
       fast/multicol/newmulticol/multicol-with-spanner-becomes-regular-block.html
       fast/multicol/newmulticol/remove-row-content1.html
       fast/multicol/newmulticol/remove-row-content2.html
       fast/multicol/newmulticol/remove-row-content3.html
       fast/multicol/newmulticol/remove-row-content4.html
       fast/multicol/newmulticol/remove-row-content5.html
       fast/multicol/newmulticol/remove-row-content6.html
       fast/multicol/newmulticol/remove-row-content7.html
       fast/multicol/newmulticol/remove-row-content8.html
       fast/multicol/newmulticol/remove-row-content9.html
       fast/multicol/newmulticol/remove-spanner1.html
       fast/multicol/newmulticol/remove-spanner2.html
       fast/multicol/newmulticol/remove-spanner3.html
       fast/multicol/newmulticol/remove-spanner4.html
       fast/multicol/newmulticol/remove-spanner5.html
       fast/multicol/newmulticol/remove-spanner6.html
       fast/multicol/newmulticol/sole-spanner.html
       fast/multicol/newmulticol/span-between-text.html
       fast/multicol/newmulticol/spanner-becomes-regular-block.html
       fast/multicol/newmulticol/spanner-first.html
       fast/multicol/newmulticol/spanner-img.html
       fast/multicol/newmulticol/spanner-inline-block.html
       fast/multicol/newmulticol/spanner-last.html
       fast/multicol/newmulticol/spanner-nested-dynamic.html
       fast/multicol/newmulticol/spanner-nested.html
       fast/multicol/newmulticol/spanner-pseudo-after1.html
       fast/multicol/newmulticol/spanner-pseudo-after2.html
       fast/multicol/newmulticol/spanner-pseudo-after3.html
       fast/multicol/newmulticol/spanner-pseudo-after4.html
       fast/multicol/newmulticol/spanner-pseudo-before-after1.html
       fast/multicol/newmulticol/spanner-pseudo-before-after2.html
       fast/multicol/newmulticol/spanner-pseudo-before-after3.html
       fast/multicol/newmulticol/spanner-pseudo-before-after4.html
       fast/multicol/newmulticol/spanner-pseudo-before1.html
       fast/multicol/newmulticol/spanner-pseudo-before2.html
       fast/multicol/newmulticol/spanner-pseudo-before3.html
       fast/multicol/newmulticol/spanner-pseudo-before4.html
       fast/multicol/newmulticol/spanner-table.html
       fast/multicol/newmulticol/spanner-with-margin.html
       fast/multicol/newmulticol/spanner1.html
       fast/multicol/newmulticol/spanner2.html
       fast/multicol/newmulticol/spanner3.html
       fast/multicol/newmulticol/spanner4.html
       fast/multicol/newmulticol/spanner5.html
       fast/multicol/newmulticol/spanner6.html
       fast/multicol/newmulticol/spanner7.html
       fast/multicol/newmulticol/spanner8.html
       fast/multicol/newmulticol/spanner9.html
       fast/multicol/newmulticol/trailing-margin-with-spanner.html
       fast/multicol/newmulticol/trailing-margin-with-spanner2.html

* CMakeLists.txt:
* WebCore.vcxproj/WebCore.vcxproj:
* WebCore.vcxproj/WebCore.vcxproj.filters:
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::addChildIgnoringAnonymousColumnBlocks):
Disable the old anonymous multicol container and spanner anonymous
block generation machinery when the new multicol implementation is
enabled.
* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::createMultiColumnFlowThread):
(WebCore::RenderBlockFlow::destroyMultiColumnFlowThread):
(WebCore::RenderBlockFlow::layoutBlockChild): Need to notify the
flow thread when a descendant's final position is known. Spanner
placeholders need to know where to terminate the column set that
it follows.
(WebCore::RenderBlockFlow::styleDidChange): Remove old code that
isn't needed anymore. The renderers in question (flow thread and
column sets) set display:block on themselves already. This code
caused problems for spanners, which got all their style wiped.
(WebCore::RenderBlockFlow::setMultiColumnFlowThread): If setting
the flow thread to nullptr, there's no need to create the &quot;rare
data&quot; structure.
(WebCore::RenderBlockFlow::relayoutForPagination):
(WebCore::RenderBlockFlow::layoutSpecialExcludedChild):
(WebCore::RenderBlockFlow::addChild): beforeChild is retrieved via
the DOM. If it is a spanner, we need to locate the placeholder
here, because that's the correct location to insert siblings,
DOM-wise.
(WebCore::RenderBlockFlow::removeChild): The multicol flow thread
needs to know when children disappear.
(WebCore::RenderBlockFlow::checkForPaginationLogicalHeightChange):
Don't modify the height back and forth when calculating the
multicol container's final height, as that messes up balancing.
(WebCore::RenderBlockFlow::insertedIntoTree): Deleted.
(WebCore::RenderBlockFlow::willBeDestroyed): Deleted.
(WebCore::RenderBlockFlow::styleWillChange): Deleted.
(WebCore::RenderBlockFlow::lineAtIndex): Deleted.
* rendering/RenderBlockFlow.h:
* rendering/RenderElement.cpp:
(WebCore::RenderElement::insertedIntoTree): Set up an element's
layer before notifying the flow thread. The multicol flow thread
may decide to move the element (if it's a spanner), which may
involve re-insertion of layers.  Calling
RenderObject::insertedIntoTree() last instead of first also better
matches the order we used to have prior to the introduction of
RenderElement, FWIW.
* rendering/RenderFlowThread.cpp:
(WebCore::RenderFlowThread::layout):
(WebCore::RenderFlowThread::removeRegionFromThread): Deleted.
(WebCore::RenderFlowThread::invalidateRegions): Deleted.
* rendering/RenderFlowThread.h:
* rendering/RenderMultiColumnFlowThread.cpp:
(WebCore::RenderMultiColumnFlowThread::RenderMultiColumnFlowThread):
(WebCore::RenderMultiColumnFlowThread::removeFlowChildInfo): When
a flow thread descendant is inserted, the multicol flow thread
needs to be notified.
(WebCore::RenderMultiColumnFlowThread::firstMultiColumnSet):
(WebCore::RenderMultiColumnFlowThread::lastMultiColumnSet):
(WebCore::RenderMultiColumnFlowThread::firstColumnSetOrSpanner):
(WebCore::RenderMultiColumnFlowThread::nextColumnSetOrSpannerSiblingOf):
(WebCore::RenderMultiColumnFlowThread::previousColumnSetOrSpannerSiblingOf):
(WebCore::RenderMultiColumnFlowThread::layout):
(WebCore::RenderMultiColumnFlowThread::findSetRendering):
(WebCore::RenderMultiColumnFlowThread::populate):
(WebCore::RenderMultiColumnFlowThread::evacuateAndDestroy):
(WebCore::RenderMultiColumnFlowThread::addRegionToThread):
(WebCore::RenderMultiColumnFlowThread::willBeRemovedFromTree):
Need to detach column sets here, since they have pointers to their
flow thread.
(WebCore::RenderMultiColumnFlowThread::resolveMovedChild):
(WebCore::isValidColumnSpanner):
(WebCore::RenderMultiColumnFlowThread::flowThreadDescendantInserted):
(WebCore::RenderMultiColumnFlowThread::flowThreadRelativeWillBeRemoved):
(WebCore::RenderMultiColumnFlowThread::flowThreadDescendantBoxLaidOut):
(WebCore::RenderMultiColumnFlowThread::autoGenerateRegionsToBlockOffset):
Nothing to be done here for the time being. Column sets are now
created during box creation. We are going to need to add some code
here again once multicol properly supports nested fragmentation
contexts (and you get adjacent column rows because of that).
(WebCore::RenderMultiColumnFlowThread::regionAtBlockOffset):
During layout, don't trust the region interval tree, as that one
depends on the resulting layout.
(WebCore::RenderMultiColumnFlowThread::setRegionRangeForBox): With
a convenience method to get the last column set, and column sets
now being created during normal box creation, this young method
needs an overhaul.
(WebCore::RenderMultiColumnFlowThread::setRegionRangeForBox):
(WebCore::RenderMultiColumnFlowThread::isPageLogicalHeightKnown):
* rendering/RenderMultiColumnFlowThread.h:
* rendering/RenderMultiColumnSet.cpp:
(WebCore::RenderMultiColumnSet::nextSiblingMultiColumnSet):
(WebCore::RenderMultiColumnSet::previousSiblingMultiColumnSet):
(WebCore::RenderMultiColumnSet::firstRendererInFlowThread):
(WebCore::RenderMultiColumnSet::lastRendererInFlowThread):
(WebCore::precedesRenderer):
(WebCore::RenderMultiColumnSet::containsRendererInFlowThread):
(WebCore::RenderMultiColumnSet::setLogicalTopInFlowThread):
(WebCore::RenderMultiColumnSet::setLogicalBottomInFlowThread):
(WebCore::RenderMultiColumnSet::pageLogicalTopForOffset):
(WebCore::RenderMultiColumnSet::distributeImplicitBreaks):
(WebCore::RenderMultiColumnSet::calculateBalancedHeight):
(WebCore::RenderMultiColumnSet::addForcedBreak):
(WebCore::RenderMultiColumnSet::recalculateColumnHeight):
Previously only needed if columns were to be balanced, now it's
also needed when not balancing.
(WebCore::RenderMultiColumnSet::recordSpaceShortage): Some layout
elements actually have 0 height. Skip them, since they're not
taking us anywhere.
(WebCore::RenderMultiColumnSet::updateLogicalWidth):
(WebCore::RenderMultiColumnSet::requiresBalancing): Column sets
now have individual balancing needs. If they precede a spanner,
they must always be balanced. For the last column set, see if
height is unspecified or column-fill is 'balance' (like before).
(WebCore::RenderMultiColumnSet::prepareForLayout):
(WebCore::RenderMultiColumnSet::beginFlow):
(WebCore::RenderMultiColumnSet::endFlow):
(WebCore::RenderMultiColumnSet::layout):
(WebCore::RenderMultiColumnSet::calculateMaxColumnHeight):
(WebCore::RenderMultiColumnSet::columnRectAt):
(WebCore::RenderMultiColumnSet::flowThreadPortionOverflowRect):
(WebCore::RenderMultiColumnSet::paintColumnRules):
(WebCore::RenderMultiColumnSet::initialBlockOffsetForPainting):
(WebCore::RenderMultiColumnSet::collectLayerFragments):
(WebCore::RenderMultiColumnSet::columnTranslationForOffset):
(WebCore::RenderMultiColumnSet::setAndConstrainColumnHeight): Deleted.
(WebCore::RenderMultiColumnSet::findRunWithTallestColumns): Deleted.
(WebCore::RenderMultiColumnSet::clearForcedBreaks): Deleted.
(WebCore::RenderMultiColumnSet::repaintFlowThreadContent): Deleted.
* rendering/RenderMultiColumnSet.h:
* rendering/RenderMultiColumnSpannerPlaceholder.cpp: Added.
(WebCore::RenderMultiColumnSpannerPlaceholder::createAnonymous):
(WebCore::RenderMultiColumnSpannerPlaceholder::RenderMultiColumnSpannerPlaceholder):
(WebCore::RenderMultiColumnSpannerPlaceholder::renderName):
* rendering/RenderMultiColumnSpannerPlaceholder.h: Added.
* rendering/RenderObject.cpp:
(WebCore::RenderObject::insertedIntoTree): Need to notify the
multicol flow thread when descendants are inserted. That may
trigger insertion of column sets, or, in the case of spanners,
they need to be moved out from the flow thread.
* rendering/RenderObject.h:
(WebCore::RenderObject::isRenderMultiColumnSpannerPlaceholder):
(WebCore::RenderObject::isAnonymousBlock): Exclude column sets
here, so that they don't get involved in anonymous block merging
and other kinds of fun.
* rendering/RenderRegion.h:
* rendering/RenderRegionSet.h:

LayoutTests: 
Wrote a bunch of tests. A few of the tests were copied from existing
(old-impl) tests and put in a separate directory. That directory can
be wiped when we turn on the new multicol implementation by default.

* fast/multicol/newmulticol/adjacent-spanners-expected.html: Added.
* fast/multicol/newmulticol/adjacent-spanners.html: Added.
* fast/multicol/newmulticol/block-becomes-spanner-expected.html: Added.
* fast/multicol/newmulticol/block-becomes-spanner.html: Added.
* fast/multicol/newmulticol/change-spanner-display-expected.html: Added.
* fast/multicol/newmulticol/change-spanner-display.html: Added.
* fast/multicol/newmulticol/change-spanner-parent-display-expected.html: Added.
* fast/multicol/newmulticol/change-spanner-parent-display.html: Added.
* fast/multicol/newmulticol/compare-with-old-impl/anonymous-block-split-crash-expected.txt: Added.
* fast/multicol/newmulticol/compare-with-old-impl/anonymous-block-split-crash.html: Added.
* fast/multicol/newmulticol/compare-with-old-impl/before-child-anonymous-column-block-expected.html: Added.
* fast/multicol/newmulticol/compare-with-old-impl/before-child-anonymous-column-block.html: Added.
* fast/multicol/newmulticol/compare-with-old-impl/clone-before-after-content-crash-expected.txt: Added.
* fast/multicol/newmulticol/compare-with-old-impl/clone-before-after-content-crash.html: Added.
* fast/multicol/newmulticol/compare-with-old-impl/clone-block-children-inline-mismatch-crash-expected.txt: Added.
* fast/multicol/newmulticol/compare-with-old-impl/clone-block-children-inline-mismatch-crash.html: Added.
* fast/multicol/newmulticol/compare-with-old-impl/clone-flexbox-expected.txt: Added.
* fast/multicol/newmulticol/compare-with-old-impl/clone-flexbox.html: Added.
* fast/multicol/newmulticol/compare-with-old-impl/clone-summary-expected.html: Added.
* fast/multicol/newmulticol/compare-with-old-impl/clone-summary.html: Added.
* fast/multicol/newmulticol/compare-with-old-impl/column-span-inside-multicol-webkit-box-expected.txt: Added.
* fast/multicol/newmulticol/compare-with-old-impl/column-span-inside-multicol-webkit-box.html: Added.
* fast/multicol/newmulticol/compare-with-old-impl/continuation-crash-expected.txt: Added.
* fast/multicol/newmulticol/compare-with-old-impl/continuation-crash.html: Added.
* fast/multicol/newmulticol/compare-with-old-impl/double-merge-anonymous-block-crash-expected.txt: Added.
* fast/multicol/newmulticol/compare-with-old-impl/double-merge-anonymous-block-crash.html: Added.
* fast/multicol/newmulticol/compare-with-old-impl/empty-anonymous-block-split-crash-expected.txt: Added.
* fast/multicol/newmulticol/compare-with-old-impl/empty-anonymous-block-split-crash.html: Added.
* fast/multicol/newmulticol/compare-with-old-impl/float-not-removed-crash-expected.txt: Added.
* fast/multicol/newmulticol/compare-with-old-impl/float-not-removed-crash.html: Added.
* fast/multicol/newmulticol/compare-with-old-impl/list-multi-column-crash-expected.txt: Added.
* fast/multicol/newmulticol/compare-with-old-impl/list-multi-column-crash.html: Added.
* fast/multicol/newmulticol/compare-with-old-impl/positioned-child-not-removed-crash-expected.txt: Added.
* fast/multicol/newmulticol/compare-with-old-impl/positioned-child-not-removed-crash.html: Added.
* fast/multicol/newmulticol/compare-with-old-impl/positioned-objects-not-removed-crash-expected.txt: Added.
* fast/multicol/newmulticol/compare-with-old-impl/positioned-objects-not-removed-crash.html: Added.
* fast/multicol/newmulticol/compare-with-old-impl/recursive-split-flow-crash-expected.txt: Added.
* fast/multicol/newmulticol/compare-with-old-impl/recursive-split-flow-crash.html: Added.
* fast/multicol/newmulticol/compare-with-old-impl/removal-of-multicol-span-crash-expected.txt: Added.
* fast/multicol/newmulticol/compare-with-old-impl/removal-of-multicol-span-crash.html: Added.
* fast/multicol/newmulticol/compare-with-old-impl/remove-child-split-flow-crash-expected.txt: Added.
* fast/multicol/newmulticol/compare-with-old-impl/remove-child-split-flow-crash.html: Added.
* fast/multicol/newmulticol/compare-with-old-impl/runin-continuation-crash-expected.txt: Added.
* fast/multicol/newmulticol/compare-with-old-impl/runin-continuation-crash.html: Added.
* fast/multicol/newmulticol/compare-with-old-impl/span-as-immediate-child-complex-splitting-expected.html: Added.
* fast/multicol/newmulticol/compare-with-old-impl/span-as-immediate-child-complex-splitting.html: Added.
* fast/multicol/newmulticol/compare-with-old-impl/span-as-nested-inline-block-child-expected.html: Added.
* fast/multicol/newmulticol/compare-with-old-impl/span-as-nested-inline-block-child.html: Added.
* fast/multicol/newmulticol/compare-with-old-impl/split-flow-anonymous-wrapper-crash-expected.txt: Added.
* fast/multicol/newmulticol/compare-with-old-impl/split-flow-anonymous-wrapper-crash.html: Added.
* fast/multicol/newmulticol/compare-with-old-impl/split-inline-wrong-post-block-crash-expected.txt: Added.
* fast/multicol/newmulticol/compare-with-old-impl/split-inline-wrong-post-block-crash.html: Added.
* fast/multicol/newmulticol/compare-with-old-impl/table-multi-column-crash-expected.txt: Added.
* fast/multicol/newmulticol/compare-with-old-impl/table-multi-column-crash.html: Added.
* fast/multicol/newmulticol/compare-with-old-impl/textbox-not-removed-crash-expected.txt: Added.
* fast/multicol/newmulticol/compare-with-old-impl/textbox-not-removed-crash.html: Added.
* fast/multicol/newmulticol/compare-with-old-impl/update-after-content-before-child-crash-expected.txt: Added.
* fast/multicol/newmulticol/compare-with-old-impl/update-after-content-before-child-crash.html: Added.
* fast/multicol/newmulticol/insert-row-content1-expected.html: Added.
* fast/multicol/newmulticol/insert-row-content1.html: Added.
* fast/multicol/newmulticol/insert-row-content2-expected.html: Added.
* fast/multicol/newmulticol/insert-row-content2.html: Added.
* fast/multicol/newmulticol/insert-row-content3-expected.html: Added.
* fast/multicol/newmulticol/insert-row-content3.html: Added.
* fast/multicol/newmulticol/insert-row-content4-expected.html: Added.
* fast/multicol/newmulticol/insert-row-content4.html: Added.
* fast/multicol/newmulticol/insert-row-content5-expected.html: Added.
* fast/multicol/newmulticol/insert-row-content5.html: Added.
* fast/multicol/newmulticol/insert-row-content6-expected.html: Added.
* fast/multicol/newmulticol/insert-row-content6.html: Added.
* fast/multicol/newmulticol/insert-row-content7-expected.html: Added.
* fast/multicol/newmulticol/insert-row-content7.html: Added.
* fast/multicol/newmulticol/insert-row-content8-expected.html: Added.
* fast/multicol/newmulticol/insert-row-content8.html: Added.
* fast/multicol/newmulticol/insert-row-content9-expected.html: Added.
* fast/multicol/newmulticol/insert-row-content9.html: Added.
* fast/multicol/newmulticol/insert-spanner-child1-expected.html: Added.
* fast/multicol/newmulticol/insert-spanner-child1.html: Added.
* fast/multicol/newmulticol/insert-spanner-child2-expected.html: Added.
* fast/multicol/newmulticol/insert-spanner-child2.html: Added.
* fast/multicol/newmulticol/insert-spanner-child3-expected.html: Added.
* fast/multicol/newmulticol/insert-spanner-child3.html: Added.
* fast/multicol/newmulticol/insert-spanner1-expected.html: Added.
* fast/multicol/newmulticol/insert-spanner1.html: Added.
* fast/multicol/newmulticol/insert-spanner2-expected.html: Added.
* fast/multicol/newmulticol/insert-spanner2.html: Added.
* fast/multicol/newmulticol/insert-spanner3-expected.html: Added.
* fast/multicol/newmulticol/insert-spanner3.html: Added.
* fast/multicol/newmulticol/insert-spanner4-expected.html: Added.
* fast/multicol/newmulticol/insert-spanner4.html: Added.
* fast/multicol/newmulticol/insert-spanner5-expected.html: Added.
* fast/multicol/newmulticol/insert-spanner5.html: Added.
* fast/multicol/newmulticol/insert-spanner6-expected.html: Added.
* fast/multicol/newmulticol/insert-spanner6.html: Added.
* fast/multicol/newmulticol/insert-spanner7-expected.html: Added.
* fast/multicol/newmulticol/insert-spanner7.html: Added.
* fast/multicol/newmulticol/insert-spanner8-expected.html: Added.
* fast/multicol/newmulticol/insert-spanner8.html: Added.
* fast/multicol/newmulticol/multicol-with-spanner-becomes-regular-block-expected.html: Added.
* fast/multicol/newmulticol/multicol-with-spanner-becomes-regular-block.html: Added.
* fast/multicol/newmulticol/remove-row-content1-expected.html: Added.
* fast/multicol/newmulticol/remove-row-content1.html: Added.
* fast/multicol/newmulticol/remove-row-content2-expected.html: Added.
* fast/multicol/newmulticol/remove-row-content2.html: Added.
* fast/multicol/newmulticol/remove-row-content3-expected.html: Added.
* fast/multicol/newmulticol/remove-row-content3.html: Added.
* fast/multicol/newmulticol/remove-row-content4-expected.html: Added.
* fast/multicol/newmulticol/remove-row-content4.html: Added.
* fast/multicol/newmulticol/remove-row-content5-expected.html: Added.
* fast/multicol/newmulticol/remove-row-content5.html: Added.
* fast/multicol/newmulticol/remove-row-content6-expected.html: Added.
* fast/multicol/newmulticol/remove-row-content6.html: Added.
* fast/multicol/newmulticol/remove-row-content7-expected.html: Added.
* fast/multicol/newmulticol/remove-row-content7.html: Added.
* fast/multicol/newmulticol/remove-row-content8-expected.html: Added.
* fast/multicol/newmulticol/remove-row-content8.html: Added.
* fast/multicol/newmulticol/remove-row-content9-expected.html: Added.
* fast/multicol/newmulticol/remove-row-content9.html: Added.
* fast/multicol/newmulticol/remove-spanner1-expected.html: Added.
* fast/multicol/newmulticol/remove-spanner1.html: Added.
* fast/multicol/newmulticol/remove-spanner2-expected.html: Added.
* fast/multicol/newmulticol/remove-spanner2.html: Added.
* fast/multicol/newmulticol/remove-spanner3-expected.html: Added.
* fast/multicol/newmulticol/remove-spanner3.html: Added.
* fast/multicol/newmulticol/remove-spanner4-expected.html: Added.
* fast/multicol/newmulticol/remove-spanner4.html: Added.
* fast/multicol/newmulticol/remove-spanner5-expected.html: Added.
* fast/multicol/newmulticol/remove-spanner5.html: Added.
* fast/multicol/newmulticol/remove-spanner6-expected.html: Added.
* fast/multicol/newmulticol/remove-spanner6.html: Added.
* fast/multicol/newmulticol/sole-spanner-expected.html: Added.
* fast/multicol/newmulticol/sole-spanner.html: Added.
* fast/multicol/newmulticol/span-between-text-expected.html: Added.
* fast/multicol/newmulticol/span-between-text.html: Added.
* fast/multicol/newmulticol/spanner-becomes-regular-block-expected.html: Added.
* fast/multicol/newmulticol/spanner-becomes-regular-block.html: Added.
* fast/multicol/newmulticol/spanner-first-expected.html: Added.
* fast/multicol/newmulticol/spanner-first.html: Added.
* fast/multicol/newmulticol/spanner-img-expected.html: Added.
* fast/multicol/newmulticol/spanner-img.html: Added.
* fast/multicol/newmulticol/spanner-inline-block-expected.html: Added.
* fast/multicol/newmulticol/spanner-inline-block.html: Added.
* fast/multicol/newmulticol/spanner-last-expected.html: Added.
* fast/multicol/newmulticol/spanner-last.html: Added.
* fast/multicol/newmulticol/spanner-nested-dynamic-expected.html: Added.
* fast/multicol/newmulticol/spanner-nested-dynamic.html: Added.
* fast/multicol/newmulticol/spanner-nested-expected.html: Added.
* fast/multicol/newmulticol/spanner-nested.html: Added.
* fast/multicol/newmulticol/spanner-pseudo-after1-expected.html: Added.
* fast/multicol/newmulticol/spanner-pseudo-after1.html: Added.
* fast/multicol/newmulticol/spanner-pseudo-after2-expected.html: Added.
* fast/multicol/newmulticol/spanner-pseudo-after2.html: Added.
* fast/multicol/newmulticol/spanner-pseudo-after3-expected.html: Added.
* fast/multicol/newmulticol/spanner-pseudo-after3.html: Added.
* fast/multicol/newmulticol/spanner-pseudo-after4-expected.html: Added.
* fast/multicol/newmulticol/spanner-pseudo-after4.html: Added.
* fast/multicol/newmulticol/spanner-pseudo-before-after1-expected.html: Added.
* fast/multicol/newmulticol/spanner-pseudo-before-after1.html: Added.
* fast/multicol/newmulticol/spanner-pseudo-before-after2-expected.html: Added.
* fast/multicol/newmulticol/spanner-pseudo-before-after2.html: Added.
* fast/multicol/newmulticol/spanner-pseudo-before-after3-expected.html: Added.
* fast/multicol/newmulticol/spanner-pseudo-before-after3.html: Added.
* fast/multicol/newmulticol/spanner-pseudo-before-after4-expected.html: Added.
* fast/multicol/newmulticol/spanner-pseudo-before-after4.html: Added.
* fast/multicol/newmulticol/spanner-pseudo-before1-expected.html: Added.
* fast/multicol/newmulticol/spanner-pseudo-before1.html: Added.
* fast/multicol/newmulticol/spanner-pseudo-before2-expected.html: Added.
* fast/multicol/newmulticol/spanner-pseudo-before2.html: Added.
* fast/multicol/newmulticol/spanner-pseudo-before3-expected.html: Added.
* fast/multicol/newmulticol/spanner-pseudo-before3.html: Added.
* fast/multicol/newmulticol/spanner-pseudo-before4-expected.html: Added.
* fast/multicol/newmulticol/spanner-pseudo-before4.html: Added.
* fast/multicol/newmulticol/spanner-table-expected.html: Added.
* fast/multicol/newmulticol/spanner-table.html: Added.
* fast/multicol/newmulticol/spanner-with-margin-expected.html: Added.
* fast/multicol/newmulticol/spanner-with-margin.html: Added.
* fast/multicol/newmulticol/spanner1-expected.html: Added.
* fast/multicol/newmulticol/spanner1.html: Added.
* fast/multicol/newmulticol/spanner2-expected.html: Added.
* fast/multicol/newmulticol/spanner2.html: Added.
* fast/multicol/newmulticol/spanner3-expected.html: Added.
* fast/multicol/newmulticol/spanner3.html: Added.
* fast/multicol/newmulticol/spanner4-expected.html: Added.
* fast/multicol/newmulticol/spanner4.html: Added.
* fast/multicol/newmulticol/spanner5-expected.html: Added.
* fast/multicol/newmulticol/spanner5.html: Added.
* fast/multicol/newmulticol/spanner6-expected.html: Added.
* fast/multicol/newmulticol/spanner6.html: Added.
* fast/multicol/newmulticol/spanner7-expected.html: Added.
* fast/multicol/newmulticol/spanner7.html: Added.
* fast/multicol/newmulticol/spanner8-expected.html: Added.
* fast/multicol/newmulticol/spanner8.html: Added.
* fast/multicol/newmulticol/spanner9-expected.html: Added.
* fast/multicol/newmulticol/spanner9.html: Added.
* fast/multicol/newmulticol/trailing-margin-with-spanner-expected.html: Added.
* fast/multicol/newmulticol/trailing-margin-with-spanner.html: Added.
* fast/multicol/newmulticol/trailing-margin-with-spanner2-expected.html: Added.
* fast/multicol/newmulticol/trailing-margin-with-spanner2.html: Added.
* platform/gtk/fast/multicol/newmulticol/client-rects-expected.txt: Added.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastmulticolnewmulticolclientrectsexpectedtxt">trunk/LayoutTests/platform/mac/fast/multicol/newmulticol/client-rects-expected.txt</a></li>
<li><a href="#trunkSourceWebCoreCMakeListstxt">trunk/Source/WebCore/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreWebCorevcxprojWebCorevcxproj">trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj</a></li>
<li><a href="#trunkSourceWebCoreWebCorevcxprojWebCorevcxprojfilters">trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBlockcpp">trunk/Source/WebCore/rendering/RenderBlock.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBlockFlowcpp">trunk/Source/WebCore/rendering/RenderBlockFlow.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBlockFlowh">trunk/Source/WebCore/rendering/RenderBlockFlow.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderElementcpp">trunk/Source/WebCore/rendering/RenderElement.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderFlowThreadcpp">trunk/Source/WebCore/rendering/RenderFlowThread.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderFlowThreadh">trunk/Source/WebCore/rendering/RenderFlowThread.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderMultiColumnFlowThreadcpp">trunk/Source/WebCore/rendering/RenderMultiColumnFlowThread.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderMultiColumnFlowThreadh">trunk/Source/WebCore/rendering/RenderMultiColumnFlowThread.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderMultiColumnSetcpp">trunk/Source/WebCore/rendering/RenderMultiColumnSet.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderMultiColumnSeth">trunk/Source/WebCore/rendering/RenderMultiColumnSet.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderObjectcpp">trunk/Source/WebCore/rendering/RenderObject.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderObjecth">trunk/Source/WebCore/rendering/RenderObject.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderRegionh">trunk/Source/WebCore/rendering/RenderRegion.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderRegionSeth">trunk/Source/WebCore/rendering/RenderRegionSet.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderingAllInOnecpp">trunk/Source/WebCore/rendering/RenderingAllInOne.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticoladjacentspannersexpectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/adjacent-spanners-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticoladjacentspannershtml">trunk/LayoutTests/fast/multicol/newmulticol/adjacent-spanners.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolblockbecomesspannerexpectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/block-becomes-spanner-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolblockbecomesspannerhtml">trunk/LayoutTests/fast/multicol/newmulticol/block-becomes-spanner.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolchangespannerdisplayexpectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/change-spanner-display-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolchangespannerdisplayhtml">trunk/LayoutTests/fast/multicol/newmulticol/change-spanner-display.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolchangespannerparentdisplayexpectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/change-spanner-parent-display-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolchangespannerparentdisplayhtml">trunk/LayoutTests/fast/multicol/newmulticol/change-spanner-parent-display.html</a></li>
<li>trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/</li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplanonymousblocksplitcrashexpectedtxt">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/anonymous-block-split-crash-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplanonymousblocksplitcrashhtml">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/anonymous-block-split-crash.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplbeforechildanonymouscolumnblockexpectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/before-child-anonymous-column-block-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplbeforechildanonymouscolumnblockhtml">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/before-child-anonymous-column-block.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplclonebeforeaftercontentcrashexpectedtxt">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/clone-before-after-content-crash-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplclonebeforeaftercontentcrashhtml">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/clone-before-after-content-crash.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplcloneblockchildreninlinemismatchcrashexpectedtxt">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/clone-block-children-inline-mismatch-crash-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplcloneblockchildreninlinemismatchcrashhtml">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/clone-block-children-inline-mismatch-crash.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplcloneflexboxexpectedtxt">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/clone-flexbox-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplcloneflexboxhtml">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/clone-flexbox.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplclonesummaryexpectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/clone-summary-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplclonesummaryhtml">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/clone-summary.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplcolumnspaninsidemulticolwebkitboxexpectedtxt">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/column-span-inside-multicol-webkit-box-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplcolumnspaninsidemulticolwebkitboxhtml">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/column-span-inside-multicol-webkit-box.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplcontinuationcrashexpectedtxt">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/continuation-crash-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplcontinuationcrashhtml">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/continuation-crash.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimpldoublemergeanonymousblockcrashexpectedtxt">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/double-merge-anonymous-block-crash-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimpldoublemergeanonymousblockcrashhtml">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/double-merge-anonymous-block-crash.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplemptyanonymousblocksplitcrashexpectedtxt">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/empty-anonymous-block-split-crash-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplemptyanonymousblocksplitcrashhtml">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/empty-anonymous-block-split-crash.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplfloatnotremovedcrashexpectedtxt">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/float-not-removed-crash-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplfloatnotremovedcrashhtml">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/float-not-removed-crash.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimpllistmulticolumncrashexpectedtxt">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/list-multi-column-crash-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimpllistmulticolumncrashhtml">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/list-multi-column-crash.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplpositionedchildnotremovedcrashexpectedtxt">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/positioned-child-not-removed-crash-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplpositionedchildnotremovedcrashhtml">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/positioned-child-not-removed-crash.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplpositionedobjectsnotremovedcrashexpectedtxt">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/positioned-objects-not-removed-crash-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplpositionedobjectsnotremovedcrashhtml">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/positioned-objects-not-removed-crash.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplrecursivesplitflowcrashexpectedtxt">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/recursive-split-flow-crash-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplrecursivesplitflowcrashhtml">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/recursive-split-flow-crash.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplremovalofmulticolspancrashexpectedtxt">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/removal-of-multicol-span-crash-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplremovalofmulticolspancrashhtml">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/removal-of-multicol-span-crash.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplremovechildsplitflowcrashexpectedtxt">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/remove-child-split-flow-crash-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplremovechildsplitflowcrashhtml">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/remove-child-split-flow-crash.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplrunincontinuationcrashexpectedtxt">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/runin-continuation-crash-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplrunincontinuationcrashhtml">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/runin-continuation-crash.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplspanasnestedinlineblockchildexpectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/span-as-nested-inline-block-child-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplspanasnestedinlineblockchildhtml">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/span-as-nested-inline-block-child.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplsplitflowanonymouswrappercrashexpectedtxt">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/split-flow-anonymous-wrapper-crash-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplsplitflowanonymouswrappercrashhtml">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/split-flow-anonymous-wrapper-crash.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplsplitinlinewrongpostblockcrashexpectedtxt">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/split-inline-wrong-post-block-crash-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplsplitinlinewrongpostblockcrashhtml">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/split-inline-wrong-post-block-crash.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimpltablemulticolumncrashexpectedtxt">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/table-multi-column-crash-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimpltablemulticolumncrashhtml">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/table-multi-column-crash.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimpltextboxnotremovedcrashexpectedtxt">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/textbox-not-removed-crash-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimpltextboxnotremovedcrashhtml">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/textbox-not-removed-crash.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplupdateaftercontentbeforechildcrashexpectedtxt">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/update-after-content-before-child-crash-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplupdateaftercontentbeforechildcrashhtml">trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/update-after-content-before-child-crash.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent1expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content1-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent1html">trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content1.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent2expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content2-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent2html">trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content2.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent3expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content3-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent3html">trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content3.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent4expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content4-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent4html">trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content4.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent5expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content5-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent5html">trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content5.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent6expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content6-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent6html">trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content6.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent7expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content7-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent7html">trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content7.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent8expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content8-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent8html">trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content8.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent9expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content9-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent9html">trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content9.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertspannerchild1expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner-child1-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertspannerchild1html">trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner-child1.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertspannerchild2expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner-child2-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertspannerchild2html">trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner-child2.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertspannerchild3expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner-child3-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertspannerchild3html">trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner-child3.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertspanner1expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner1-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertspanner1html">trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner1.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertspanner2expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner2-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertspanner2html">trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner2.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertspanner3expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner3-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertspanner3html">trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner3.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertspanner4expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner4-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertspanner4html">trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner4.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertspanner5expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner5-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertspanner5html">trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner5.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertspanner6expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner6-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertspanner6html">trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner6.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertspanner7expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner7-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertspanner7html">trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner7.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertspanner8expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner8-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolinsertspanner8html">trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner8.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolmulticolwithspannerbecomesregularblockexpectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/multicol-with-spanner-becomes-regular-block-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolmulticolwithspannerbecomesregularblockhtml">trunk/LayoutTests/fast/multicol/newmulticol/multicol-with-spanner-becomes-regular-block.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolremoverowcontent1expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content1-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolremoverowcontent1html">trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content1.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolremoverowcontent2expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content2-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolremoverowcontent2html">trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content2.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolremoverowcontent3expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content3-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolremoverowcontent3html">trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content3.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolremoverowcontent4expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content4-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolremoverowcontent4html">trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content4.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolremoverowcontent5expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content5-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolremoverowcontent5html">trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content5.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolremoverowcontent6expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content6-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolremoverowcontent6html">trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content6.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolremoverowcontent7expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content7-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolremoverowcontent7html">trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content7.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolremoverowcontent8expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content8-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolremoverowcontent8html">trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content8.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolremoverowcontent9expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content9-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolremoverowcontent9html">trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content9.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolremovespanner1expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner1-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolremovespanner1html">trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner1.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolremovespanner2expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner2-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolremovespanner2html">trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner2.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolremovespanner3expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner3-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolremovespanner3html">trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner3.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolremovespanner4expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner4-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolremovespanner4html">trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner4.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolremovespanner5expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner5-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolremovespanner5html">trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner5.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolremovespanner6expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner6-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolremovespanner6html">trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner6.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolsolespannerexpectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/sole-spanner-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolsolespannerhtml">trunk/LayoutTests/fast/multicol/newmulticol/sole-spanner.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspanbetweentextexpectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/span-between-text-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspanbetweentexthtml">trunk/LayoutTests/fast/multicol/newmulticol/span-between-text.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerbecomesregularblockexpectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner-becomes-regular-block-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerbecomesregularblockhtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner-becomes-regular-block.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerfirstexpectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner-first-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerfirsthtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner-first.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerimgexpectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner-img-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerimghtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner-img.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerinlineblockexpectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner-inline-block-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerinlineblockhtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner-inline-block.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerlastexpectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner-last-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerlasthtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner-last.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannernesteddynamicexpectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner-nested-dynamic-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannernesteddynamichtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner-nested-dynamic.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannernestedexpectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner-nested-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannernestedhtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner-nested.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerpseudoafter1expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-after1-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerpseudoafter1html">trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-after1.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerpseudoafter2expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-after2-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerpseudoafter2html">trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-after2.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerpseudoafter3expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-after3-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerpseudoafter3html">trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-after3.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerpseudoafter4expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-after4-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerpseudoafter4html">trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-after4.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerpseudobeforeafter1expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before-after1-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerpseudobeforeafter1html">trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before-after1.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerpseudobeforeafter2expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before-after2-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerpseudobeforeafter2html">trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before-after2.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerpseudobeforeafter3expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before-after3-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerpseudobeforeafter3html">trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before-after3.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerpseudobeforeafter4expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before-after4-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerpseudobeforeafter4html">trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before-after4.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerpseudobefore1expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before1-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerpseudobefore1html">trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before1.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerpseudobefore2expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before2-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerpseudobefore2html">trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before2.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerpseudobefore3expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before3-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerpseudobefore3html">trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before3.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerpseudobefore4expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before4-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerpseudobefore4html">trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before4.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannertableexpectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner-table-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannertablehtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner-table.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerwithmarginexpectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner-with-margin-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspannerwithmarginhtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner-with-margin.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspanner1expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner1-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspanner1html">trunk/LayoutTests/fast/multicol/newmulticol/spanner1.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspanner2expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner2-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspanner2html">trunk/LayoutTests/fast/multicol/newmulticol/spanner2.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspanner3expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner3-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspanner3html">trunk/LayoutTests/fast/multicol/newmulticol/spanner3.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspanner4expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner4-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspanner4html">trunk/LayoutTests/fast/multicol/newmulticol/spanner4.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspanner5expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner5-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspanner5html">trunk/LayoutTests/fast/multicol/newmulticol/spanner5.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspanner6expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner6-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspanner6html">trunk/LayoutTests/fast/multicol/newmulticol/spanner6.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspanner7expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner7-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspanner7html">trunk/LayoutTests/fast/multicol/newmulticol/spanner7.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspanner8expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner8-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspanner8html">trunk/LayoutTests/fast/multicol/newmulticol/spanner8.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspanner9expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/spanner9-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolspanner9html">trunk/LayoutTests/fast/multicol/newmulticol/spanner9.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticoltrailingmarginwithspannerexpectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/trailing-margin-with-spanner-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticoltrailingmarginwithspannerhtml">trunk/LayoutTests/fast/multicol/newmulticol/trailing-margin-with-spanner.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticoltrailingmarginwithspanner2expectedhtml">trunk/LayoutTests/fast/multicol/newmulticol/trailing-margin-with-spanner2-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticoltrailingmarginwithspanner2html">trunk/LayoutTests/fast/multicol/newmulticol/trailing-margin-with-spanner2.html</a></li>
<li>trunk/LayoutTests/platform/gtk/fast/multicol/newmulticol/</li>
<li><a href="#trunkLayoutTestsplatformgtkfastmulticolnewmulticolclientrectsexpectedtxt">trunk/LayoutTests/platform/gtk/fast/multicol/newmulticol/client-rects-expected.txt</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderMultiColumnSpannerPlaceholdercpp">trunk/Source/WebCore/rendering/RenderMultiColumnSpannerPlaceholder.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderMultiColumnSpannerPlaceholderh">trunk/Source/WebCore/rendering/RenderMultiColumnSpannerPlaceholder.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (167334 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2014-04-15 23:25:38 UTC (rev 167334)
+++ trunk/LayoutTests/ChangeLog        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -1,3 +1,214 @@
</span><ins>+2014-04-14  Morten Stenshorne  &lt;mstensho@opera.com&gt;
+
+        [New Multicolumn] Add support for column-span:all
+        https://bugs.webkit.org/show_bug.cgi?id=129330
+
+        Reviewed by Dave Hyatt.
+
+        Wrote a bunch of tests. A few of the tests were copied from existing
+        (old-impl) tests and put in a separate directory. That directory can
+        be wiped when we turn on the new multicol implementation by default.
+
+        * fast/multicol/newmulticol/adjacent-spanners-expected.html: Added.
+        * fast/multicol/newmulticol/adjacent-spanners.html: Added.
+        * fast/multicol/newmulticol/block-becomes-spanner-expected.html: Added.
+        * fast/multicol/newmulticol/block-becomes-spanner.html: Added.
+        * fast/multicol/newmulticol/change-spanner-display-expected.html: Added.
+        * fast/multicol/newmulticol/change-spanner-display.html: Added.
+        * fast/multicol/newmulticol/change-spanner-parent-display-expected.html: Added.
+        * fast/multicol/newmulticol/change-spanner-parent-display.html: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/anonymous-block-split-crash-expected.txt: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/anonymous-block-split-crash.html: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/before-child-anonymous-column-block-expected.html: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/before-child-anonymous-column-block.html: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/clone-before-after-content-crash-expected.txt: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/clone-before-after-content-crash.html: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/clone-block-children-inline-mismatch-crash-expected.txt: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/clone-block-children-inline-mismatch-crash.html: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/clone-flexbox-expected.txt: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/clone-flexbox.html: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/clone-summary-expected.html: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/clone-summary.html: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/column-span-inside-multicol-webkit-box-expected.txt: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/column-span-inside-multicol-webkit-box.html: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/continuation-crash-expected.txt: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/continuation-crash.html: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/double-merge-anonymous-block-crash-expected.txt: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/double-merge-anonymous-block-crash.html: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/empty-anonymous-block-split-crash-expected.txt: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/empty-anonymous-block-split-crash.html: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/float-not-removed-crash-expected.txt: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/float-not-removed-crash.html: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/list-multi-column-crash-expected.txt: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/list-multi-column-crash.html: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/positioned-child-not-removed-crash-expected.txt: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/positioned-child-not-removed-crash.html: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/positioned-objects-not-removed-crash-expected.txt: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/positioned-objects-not-removed-crash.html: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/recursive-split-flow-crash-expected.txt: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/recursive-split-flow-crash.html: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/removal-of-multicol-span-crash-expected.txt: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/removal-of-multicol-span-crash.html: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/remove-child-split-flow-crash-expected.txt: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/remove-child-split-flow-crash.html: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/runin-continuation-crash-expected.txt: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/runin-continuation-crash.html: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/span-as-immediate-child-complex-splitting-expected.html: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/span-as-immediate-child-complex-splitting.html: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/span-as-nested-inline-block-child-expected.html: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/span-as-nested-inline-block-child.html: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/split-flow-anonymous-wrapper-crash-expected.txt: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/split-flow-anonymous-wrapper-crash.html: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/split-inline-wrong-post-block-crash-expected.txt: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/split-inline-wrong-post-block-crash.html: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/table-multi-column-crash-expected.txt: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/table-multi-column-crash.html: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/textbox-not-removed-crash-expected.txt: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/textbox-not-removed-crash.html: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/update-after-content-before-child-crash-expected.txt: Added.
+        * fast/multicol/newmulticol/compare-with-old-impl/update-after-content-before-child-crash.html: Added.
+        * fast/multicol/newmulticol/insert-row-content1-expected.html: Added.
+        * fast/multicol/newmulticol/insert-row-content1.html: Added.
+        * fast/multicol/newmulticol/insert-row-content2-expected.html: Added.
+        * fast/multicol/newmulticol/insert-row-content2.html: Added.
+        * fast/multicol/newmulticol/insert-row-content3-expected.html: Added.
+        * fast/multicol/newmulticol/insert-row-content3.html: Added.
+        * fast/multicol/newmulticol/insert-row-content4-expected.html: Added.
+        * fast/multicol/newmulticol/insert-row-content4.html: Added.
+        * fast/multicol/newmulticol/insert-row-content5-expected.html: Added.
+        * fast/multicol/newmulticol/insert-row-content5.html: Added.
+        * fast/multicol/newmulticol/insert-row-content6-expected.html: Added.
+        * fast/multicol/newmulticol/insert-row-content6.html: Added.
+        * fast/multicol/newmulticol/insert-row-content7-expected.html: Added.
+        * fast/multicol/newmulticol/insert-row-content7.html: Added.
+        * fast/multicol/newmulticol/insert-row-content8-expected.html: Added.
+        * fast/multicol/newmulticol/insert-row-content8.html: Added.
+        * fast/multicol/newmulticol/insert-row-content9-expected.html: Added.
+        * fast/multicol/newmulticol/insert-row-content9.html: Added.
+        * fast/multicol/newmulticol/insert-spanner-child1-expected.html: Added.
+        * fast/multicol/newmulticol/insert-spanner-child1.html: Added.
+        * fast/multicol/newmulticol/insert-spanner-child2-expected.html: Added.
+        * fast/multicol/newmulticol/insert-spanner-child2.html: Added.
+        * fast/multicol/newmulticol/insert-spanner-child3-expected.html: Added.
+        * fast/multicol/newmulticol/insert-spanner-child3.html: Added.
+        * fast/multicol/newmulticol/insert-spanner1-expected.html: Added.
+        * fast/multicol/newmulticol/insert-spanner1.html: Added.
+        * fast/multicol/newmulticol/insert-spanner2-expected.html: Added.
+        * fast/multicol/newmulticol/insert-spanner2.html: Added.
+        * fast/multicol/newmulticol/insert-spanner3-expected.html: Added.
+        * fast/multicol/newmulticol/insert-spanner3.html: Added.
+        * fast/multicol/newmulticol/insert-spanner4-expected.html: Added.
+        * fast/multicol/newmulticol/insert-spanner4.html: Added.
+        * fast/multicol/newmulticol/insert-spanner5-expected.html: Added.
+        * fast/multicol/newmulticol/insert-spanner5.html: Added.
+        * fast/multicol/newmulticol/insert-spanner6-expected.html: Added.
+        * fast/multicol/newmulticol/insert-spanner6.html: Added.
+        * fast/multicol/newmulticol/insert-spanner7-expected.html: Added.
+        * fast/multicol/newmulticol/insert-spanner7.html: Added.
+        * fast/multicol/newmulticol/insert-spanner8-expected.html: Added.
+        * fast/multicol/newmulticol/insert-spanner8.html: Added.
+        * fast/multicol/newmulticol/multicol-with-spanner-becomes-regular-block-expected.html: Added.
+        * fast/multicol/newmulticol/multicol-with-spanner-becomes-regular-block.html: Added.
+        * fast/multicol/newmulticol/remove-row-content1-expected.html: Added.
+        * fast/multicol/newmulticol/remove-row-content1.html: Added.
+        * fast/multicol/newmulticol/remove-row-content2-expected.html: Added.
+        * fast/multicol/newmulticol/remove-row-content2.html: Added.
+        * fast/multicol/newmulticol/remove-row-content3-expected.html: Added.
+        * fast/multicol/newmulticol/remove-row-content3.html: Added.
+        * fast/multicol/newmulticol/remove-row-content4-expected.html: Added.
+        * fast/multicol/newmulticol/remove-row-content4.html: Added.
+        * fast/multicol/newmulticol/remove-row-content5-expected.html: Added.
+        * fast/multicol/newmulticol/remove-row-content5.html: Added.
+        * fast/multicol/newmulticol/remove-row-content6-expected.html: Added.
+        * fast/multicol/newmulticol/remove-row-content6.html: Added.
+        * fast/multicol/newmulticol/remove-row-content7-expected.html: Added.
+        * fast/multicol/newmulticol/remove-row-content7.html: Added.
+        * fast/multicol/newmulticol/remove-row-content8-expected.html: Added.
+        * fast/multicol/newmulticol/remove-row-content8.html: Added.
+        * fast/multicol/newmulticol/remove-row-content9-expected.html: Added.
+        * fast/multicol/newmulticol/remove-row-content9.html: Added.
+        * fast/multicol/newmulticol/remove-spanner1-expected.html: Added.
+        * fast/multicol/newmulticol/remove-spanner1.html: Added.
+        * fast/multicol/newmulticol/remove-spanner2-expected.html: Added.
+        * fast/multicol/newmulticol/remove-spanner2.html: Added.
+        * fast/multicol/newmulticol/remove-spanner3-expected.html: Added.
+        * fast/multicol/newmulticol/remove-spanner3.html: Added.
+        * fast/multicol/newmulticol/remove-spanner4-expected.html: Added.
+        * fast/multicol/newmulticol/remove-spanner4.html: Added.
+        * fast/multicol/newmulticol/remove-spanner5-expected.html: Added.
+        * fast/multicol/newmulticol/remove-spanner5.html: Added.
+        * fast/multicol/newmulticol/remove-spanner6-expected.html: Added.
+        * fast/multicol/newmulticol/remove-spanner6.html: Added.
+        * fast/multicol/newmulticol/sole-spanner-expected.html: Added.
+        * fast/multicol/newmulticol/sole-spanner.html: Added.
+        * fast/multicol/newmulticol/span-between-text-expected.html: Added.
+        * fast/multicol/newmulticol/span-between-text.html: Added.
+        * fast/multicol/newmulticol/spanner-becomes-regular-block-expected.html: Added.
+        * fast/multicol/newmulticol/spanner-becomes-regular-block.html: Added.
+        * fast/multicol/newmulticol/spanner-first-expected.html: Added.
+        * fast/multicol/newmulticol/spanner-first.html: Added.
+        * fast/multicol/newmulticol/spanner-img-expected.html: Added.
+        * fast/multicol/newmulticol/spanner-img.html: Added.
+        * fast/multicol/newmulticol/spanner-inline-block-expected.html: Added.
+        * fast/multicol/newmulticol/spanner-inline-block.html: Added.
+        * fast/multicol/newmulticol/spanner-last-expected.html: Added.
+        * fast/multicol/newmulticol/spanner-last.html: Added.
+        * fast/multicol/newmulticol/spanner-nested-dynamic-expected.html: Added.
+        * fast/multicol/newmulticol/spanner-nested-dynamic.html: Added.
+        * fast/multicol/newmulticol/spanner-nested-expected.html: Added.
+        * fast/multicol/newmulticol/spanner-nested.html: Added.
+        * fast/multicol/newmulticol/spanner-pseudo-after1-expected.html: Added.
+        * fast/multicol/newmulticol/spanner-pseudo-after1.html: Added.
+        * fast/multicol/newmulticol/spanner-pseudo-after2-expected.html: Added.
+        * fast/multicol/newmulticol/spanner-pseudo-after2.html: Added.
+        * fast/multicol/newmulticol/spanner-pseudo-after3-expected.html: Added.
+        * fast/multicol/newmulticol/spanner-pseudo-after3.html: Added.
+        * fast/multicol/newmulticol/spanner-pseudo-after4-expected.html: Added.
+        * fast/multicol/newmulticol/spanner-pseudo-after4.html: Added.
+        * fast/multicol/newmulticol/spanner-pseudo-before-after1-expected.html: Added.
+        * fast/multicol/newmulticol/spanner-pseudo-before-after1.html: Added.
+        * fast/multicol/newmulticol/spanner-pseudo-before-after2-expected.html: Added.
+        * fast/multicol/newmulticol/spanner-pseudo-before-after2.html: Added.
+        * fast/multicol/newmulticol/spanner-pseudo-before-after3-expected.html: Added.
+        * fast/multicol/newmulticol/spanner-pseudo-before-after3.html: Added.
+        * fast/multicol/newmulticol/spanner-pseudo-before-after4-expected.html: Added.
+        * fast/multicol/newmulticol/spanner-pseudo-before-after4.html: Added.
+        * fast/multicol/newmulticol/spanner-pseudo-before1-expected.html: Added.
+        * fast/multicol/newmulticol/spanner-pseudo-before1.html: Added.
+        * fast/multicol/newmulticol/spanner-pseudo-before2-expected.html: Added.
+        * fast/multicol/newmulticol/spanner-pseudo-before2.html: Added.
+        * fast/multicol/newmulticol/spanner-pseudo-before3-expected.html: Added.
+        * fast/multicol/newmulticol/spanner-pseudo-before3.html: Added.
+        * fast/multicol/newmulticol/spanner-pseudo-before4-expected.html: Added.
+        * fast/multicol/newmulticol/spanner-pseudo-before4.html: Added.
+        * fast/multicol/newmulticol/spanner-table-expected.html: Added.
+        * fast/multicol/newmulticol/spanner-table.html: Added.
+        * fast/multicol/newmulticol/spanner-with-margin-expected.html: Added.
+        * fast/multicol/newmulticol/spanner-with-margin.html: Added.
+        * fast/multicol/newmulticol/spanner1-expected.html: Added.
+        * fast/multicol/newmulticol/spanner1.html: Added.
+        * fast/multicol/newmulticol/spanner2-expected.html: Added.
+        * fast/multicol/newmulticol/spanner2.html: Added.
+        * fast/multicol/newmulticol/spanner3-expected.html: Added.
+        * fast/multicol/newmulticol/spanner3.html: Added.
+        * fast/multicol/newmulticol/spanner4-expected.html: Added.
+        * fast/multicol/newmulticol/spanner4.html: Added.
+        * fast/multicol/newmulticol/spanner5-expected.html: Added.
+        * fast/multicol/newmulticol/spanner5.html: Added.
+        * fast/multicol/newmulticol/spanner6-expected.html: Added.
+        * fast/multicol/newmulticol/spanner6.html: Added.
+        * fast/multicol/newmulticol/spanner7-expected.html: Added.
+        * fast/multicol/newmulticol/spanner7.html: Added.
+        * fast/multicol/newmulticol/spanner8-expected.html: Added.
+        * fast/multicol/newmulticol/spanner8.html: Added.
+        * fast/multicol/newmulticol/spanner9-expected.html: Added.
+        * fast/multicol/newmulticol/spanner9.html: Added.
+        * fast/multicol/newmulticol/trailing-margin-with-spanner-expected.html: Added.
+        * fast/multicol/newmulticol/trailing-margin-with-spanner.html: Added.
+        * fast/multicol/newmulticol/trailing-margin-with-spanner2-expected.html: Added.
+        * fast/multicol/newmulticol/trailing-margin-with-spanner2.html: Added.
+        * platform/gtk/fast/multicol/newmulticol/client-rects-expected.txt: Added.
+
</ins><span class="cx"> 2014-04-15  Alexey Proskuryakov  &lt;ap@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         http/tests/websocket/tests/hybi/workers/close.html is flaky
</span></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticoladjacentspannersexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/adjacent-spanners-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/adjacent-spanners-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/adjacent-spanners-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,13 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Adjacent column spanners&lt;/title&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;You should see the word 'PASS' twice below, and no red:&lt;/p&gt;
+        &lt;br&gt;
+        &lt;div&gt;PASS&lt;br&gt;&amp;nbsp;&lt;/div&gt;
+        &lt;div&gt;PASS&lt;br&gt;&amp;nbsp;&lt;/div&gt;
+        &lt;br&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticoladjacentspannershtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/adjacent-spanners.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/adjacent-spanners.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/adjacent-spanners.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Adjacent column spanners&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;You should see the word 'PASS' twice below, and no red:&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:4; columns:4; -webkit-column-gap:0; column-gap:0; width:4em;&quot;&gt;
+            &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FAIL&lt;br&gt;&amp;nbsp;
+            &lt;div style=&quot;background:red;&quot;&gt;
+                &lt;div style=&quot;-webkit-column-span:all; column-span:all;&quot;&gt;PASS&lt;br&gt;&amp;nbsp;&lt;/div&gt;
+                &lt;div style=&quot;-webkit-column-span:all; column-span:all;&quot;&gt;PASS&lt;br&gt;&amp;nbsp;&lt;/div&gt;
+            &lt;/div&gt;
+            &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FAIL&lt;br&gt;&amp;nbsp;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolblockbecomesspannerexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/block-becomes-spanner-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/block-becomes-spanner-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/block-becomes-spanner-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Block that becomes spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;Below there should be a blue box, then a yellow box, then a blue box again.&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:2; columns:2; -webkit-column-gap:0; column-gap:0; orphans:1; widows:1; line-height:2em; background:blue;&quot;&gt;
+            &lt;div style=&quot;-webkit-column-span:all; column-span:all; margin:4em 0; background:yellow;&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolblockbecomesspannerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/block-becomes-spanner.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/block-becomes-spanner.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/block-becomes-spanner.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Block that becomes spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                document.body.offsetTop; // trigger layout
+                elm.style.webkitColumnSpan = 'all';
+                elm.style.columnSpan = 'all';
+            }
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;Below there should be a blue box, then a yellow box, then a blue box again.&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:2; columns:2; -webkit-column-gap:0; column-gap:0; orphans:1; widows:1; line-height:2em; background:blue;&quot;&gt;
+            &lt;div id=&quot;elm&quot; style=&quot;margin:4em 0; background:yellow;&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolchangespannerdisplayexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/change-spanner-display-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/change-spanner-display-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/change-spanner-display-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,24 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Change display property of spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body style=&quot;margin:5em;&quot;&gt;
+        &lt;p&gt;You should see three lines with the word &quot;PASS&quot; below, all with a bullet in front. Letter
+        spacing is expected to vary.&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; -webkit-column-gap:0; column-gap:0;&quot;&gt;
+                &lt;div style=&quot;display:list-item;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+                    &lt;div id=&quot;elm&quot; style=&quot;display:list-item; -webkit-column-span:all; column-span:all;&quot;&gt;
+                        PASS
+                    &lt;/div&gt;
+                &lt;/div&gt;
+                &lt;div style=&quot;display:list-item;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolchangespannerdisplayhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/change-spanner-display.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/change-spanner-display.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/change-spanner-display.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Change display property of spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                document.body.offsetTop; // trigger layout
+                elm.style.display = 'list-item';
+            }
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body style=&quot;margin:5em;&quot; onload=&quot;test()&quot;&gt;
+        &lt;p&gt;You should see three lines with the word &quot;PASS&quot; below, all with a bullet in front. Letter
+        spacing is expected to vary.&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; -webkit-column-gap:0; column-gap:0;&quot;&gt;
+                &lt;div style=&quot;display:list-item;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+                    &lt;div id=&quot;elm&quot; style=&quot;-webkit-column-span:all; column-span:all;&quot;&gt;
+                        PASS
+                    &lt;/div&gt;
+                &lt;/div&gt;
+                &lt;div style=&quot;display:list-item;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolchangespannerparentdisplayexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/change-spanner-parent-display-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/change-spanner-parent-display-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/change-spanner-parent-display-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Change display property of spanner parent&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;You should see two lines with the word &quot;PASS&quot; below.&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:3; columns:3; column-fill:auto; -webkit-column-fill:auto; height:5em;&quot;&gt;
+            &lt;div style=&quot;display:inline;&quot;&gt;
+                &lt;div style=&quot;-webkit-column-span:all; column-span:all;&quot;&gt;PASS&lt;/div&gt;
+                PA&lt;/div&gt;SS
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolchangespannerparentdisplayhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/change-spanner-parent-display.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/change-spanner-parent-display.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/change-spanner-parent-display.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Change display property of spanner parent&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                document.body.offsetTop; // trigger layout
+                elm.style.display = 'inline';
+            }
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;You should see two lines with the word &quot;PASS&quot; below.&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:3; columns:3; column-fill:auto; -webkit-column-fill:auto; height:5em;&quot;&gt;
+            &lt;div id=&quot;elm&quot;&gt;
+                &lt;div style=&quot;-webkit-column-span:all; column-span:all;&quot;&gt;PASS&lt;/div&gt;
+                PA&lt;/div&gt;SS
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplanonymousblocksplitcrashexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/anonymous-block-split-crash-expected.txt (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/anonymous-block-split-crash-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/anonymous-block-split-crash-expected.txt        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+PASS
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplanonymousblocksplitcrashhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/anonymous-block-split-crash.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/anonymous-block-split-crash.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/anonymous-block-split-crash.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,45 @@
</span><ins>+&lt;html&gt;
+&lt;head&gt;
+&lt;style&gt;
+#test0 { -webkit-column-count: 2; }
+#test1::after { display: block; content: ''; }
+#test2:nth-last-child(2n) { content: ''; }
+#test2 { -webkit-column-span: all; }
+#test4 { float: right; }
+&lt;/style&gt;
+&lt;script&gt;
+if (window.testRunner)
+    testRunner.dumpAsText();
+if (window.internals)
+    internals.settings.setRegionBasedColumnsEnabled(true);
+
+onload = function() {
+    test0 = document.createElement('div');
+    test0.setAttribute('id', 'test0');
+    document.body.appendChild(test0);
+    test1 = document.createElement('div');
+    test1.setAttribute('id', 'test1');
+    test0.appendChild(test1);
+    test2 = document.createElement('div');
+    test2.setAttribute('id', 'test2');
+    test1.appendChild(test2);
+    test3 = document.createElement('span');
+    test1.appendChild(test3);
+    test3.appendChild(document.createTextNode('A'));
+    test4 = document.createElement('table');
+    test4.setAttribute('id', 'test4');
+    test1.appendChild(test4);
+    test0.style.display = 'run-in';
+    test4.style.display = 'table-column';
+    document.body.offsetTop;
+    document.designMode = 'on';
+    document.execCommand('selectall');
+    document.execCommand('inserttext', '');
+    document.body.offsetTop;
+    document.body.innerHTML = &quot;PASS&quot;;
+}
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplbeforechildanonymouscolumnblockexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/before-child-anonymous-column-block-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/before-child-anonymous-column-block-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/before-child-anonymous-column-block-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,30 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html style=&quot;font-family: ahem; font-size: 10px; -webkit-font-smoothing: none;&quot;&gt;
+&lt;body&gt;
+&lt;style&gt;
+#test1 { -webkit-column-count: 2; }
+#test2 { -webkit-column-span: all; }
+#test3 { content: counter(c); }
+&lt;/style&gt;
+&lt;script&gt;
+onload = function() {
+test1 = document.createElement('div');
+test1.setAttribute('id', 'test1');
+document.body.appendChild(test1);
+test2 = document.createElement('div');
+test2.setAttribute('id', 'test2');
+test1.appendChild(test2);
+test3 = document.createElement('div');
+test3.setAttribute('id', 'test3');
+test1.appendChild(test3);
+test4 = document.createElement('div');
+test1.appendChild(test4);
+test4.style.display = 'table-row-group';
+test3.appendChild(document.createTextNode('3'));
+test4.appendChild(document.createTextNode('4'));
+document.body.offsetTop;
+document.body.style.zoom = 2;
+}
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplbeforechildanonymouscolumnblockhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/before-child-anonymous-column-block.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/before-child-anonymous-column-block.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/before-child-anonymous-column-block.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,34 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html style=&quot;font-family: ahem; font-size: 10px; -webkit-font-smoothing: none;&quot;&gt;
+&lt;script&gt;
+    if (window.internals)
+        internals.settings.setRegionBasedColumnsEnabled(true);
+&lt;/script&gt;
+&lt;body&gt;
+&lt;style&gt;
+#test1 { -webkit-column-count: 2; }
+#test2 { -webkit-column-span: all; }
+#test3 { content: counter(c); }
+&lt;/style&gt;
+&lt;script&gt;
+onload = function() {
+test1 = document.createElement('div');
+test1.setAttribute('id', 'test1');
+document.body.appendChild(test1);
+test2 = document.createElement('div');
+test2.setAttribute('id', 'test2');
+test1.appendChild(test2);
+test3 = document.createElement('div');
+test3.setAttribute('id', 'test3');
+test1.appendChild(test3);
+test4 = document.createElement('div');
+test1.appendChild(test4);
+test4.style.display = 'table-row-group';
+test3.appendChild(document.createTextNode('3'));
+test4.appendChild(document.createTextNode('4'));
+document.body.offsetTop;
+document.body.style.zoom = 2;
+}
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplclonebeforeaftercontentcrashexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/clone-before-after-content-crash-expected.txt (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/clone-before-after-content-crash-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/clone-before-after-content-crash-expected.txt        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,2 @@
</span><ins>+Test passes if it does not crash.
+
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplclonebeforeaftercontentcrashhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/clone-before-after-content-crash.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/clone-before-after-content-crash.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/clone-before-after-content-crash.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,36 @@
</span><ins>+&lt;html&gt;
+  &lt;head&gt;
+    &lt;style&gt;
+      #test1 { -webkit-column-count: 1; }
+      #test2 { display: block; }
+      #test3::after { display: block; content: &quot;A&quot;; }
+      #test4 { -webkit-column-span: all; }
+    &lt;/style&gt;
+    &lt;script&gt;
+          if (window.internals)
+              internals.settings.setRegionBasedColumnsEnabled(true);
+          if (window.testRunner)
+              testRunner.dumpAsText();
+      function runTest(){
+        test1 = document.createElement('div');
+        test1.setAttribute('id', 'test1');
+        document.body.appendChild(test1);
+        test2 = document.createElement('div');
+        test2.setAttribute('id', 'test2');
+        test1.appendChild(test2);
+        test3 = document.createElement('div');
+        test3.setAttribute('id', 'test3');
+        test2.appendChild(test3);
+        test4 = document.createElement('span');
+        test4.setAttribute('id', 'test4');
+        test3.appendChild(test4);
+        document.body.offsetTop;
+        test4.style.display='block';
+      }
+      window.onload = runTest
+    &lt;/script&gt;
+  &lt;/head&gt;
+  &lt;body&gt;
+  Test passes if it does not crash.
+  &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplcloneblockchildreninlinemismatchcrashexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/clone-block-children-inline-mismatch-crash-expected.txt (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/clone-block-children-inline-mismatch-crash-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/clone-block-children-inline-mismatch-crash-expected.txt        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,2 @@
</span><ins>+Test passes if it does not crash.
+
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplcloneblockchildreninlinemismatchcrashhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/clone-block-children-inline-mismatch-crash.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/clone-block-children-inline-mismatch-crash.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/clone-block-children-inline-mismatch-crash.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+Test passes if it does not crash.
+&lt;style&gt;
+#div1 { -webkit-column-count: 2; }
+#q1 { display: block; }
+#q1::before { display: table-row; }
+#div2 { -webkit-column-span: all; }
+&lt;/style&gt;
+&lt;script&gt;
+if (window.testRunner)
+    testRunner.dumpAsText();
+if (window.internals)
+    internals.settings.setRegionBasedColumnsEnabled(true);
+
+function runTest()
+{
+    div1 = document.createElement('div');
+    div1.setAttribute('id', 'div1');
+    document.body.appendChild(div1);
+    q1 = document.createElement('q');
+    q1.setAttribute('id', 'q1');
+    div1.appendChild(q1);
+    div2 = document.createElement('div');
+    div2.setAttribute('id', 'div2');
+    q1.appendChild(div2);
+}
+
+window.onload = runTest;
+&lt;/script&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplcloneflexboxexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/clone-flexbox-expected.txt (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/clone-flexbox-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/clone-flexbox-expected.txt        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+Test passes if no crash.
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplcloneflexboxhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/clone-flexbox.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/clone-flexbox.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/clone-flexbox.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,30 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;body style=&quot;font-family: ahem; -webkit-font-smoothing: none;&quot;&gt;
+&lt;style&gt;
+#container { -webkit-column-width: 100px; }
+#div1 { -webkit-column-span: all; }
+#flexbox1 { color: white; }
+&lt;/style&gt;
+&lt;script&gt;
+if (window.internals)
+    internals.settings.setRegionBasedColumnsEnabled(true);
+if (window.testRunner)
+    testRunner.dumpAsText();
+document.body.offsetTop;
+var container = document.createElement('div');
+container.setAttribute('id', 'container');
+document.body.appendChild(container);
+flexbox1 = document.createElement('div');
+flexbox1.setAttribute('id', 'flexbox1');
+container.appendChild(flexbox1);
+var div1 = document.createElement('div');
+div1.setAttribute('id', 'div1');
+flexbox1.style.display = '-webkit-flex';
+flexbox1.appendChild(document.createTextNode('a'));
+flexbox1.appendChild(div1);
+flexbox1.appendChild(document.createTextNode('b'));
+onload = function () { document.write(&quot;Test passes if no crash.&quot;); }
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplclonesummaryexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/clone-summary-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/clone-summary-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/clone-summary-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;body style=&quot;font-family: ahem; -webkit-font-smoothing: none;&quot;&gt;
+&lt;style&gt;
+#container { -webkit-column-width: 100px; }
+#div1 { -webkit-column-span: all; }
+#summary1 { color: white; }
+&lt;/style&gt;
+&lt;script&gt;
+document.body.offsetTop;
+var container = document.createElement('div');
+container.setAttribute('id', 'container');
+document.body.appendChild(container);
+summary1 = document.createElement('summary');
+summary1.setAttribute('id', 'summary1');
+container.appendChild(summary1);
+var div1 = document.createElement('div');
+div1.setAttribute('id', 'div1');
+summary1.style.display = 'table-row';
+summary1.appendChild(document.createTextNode('a'));
+summary1.appendChild(div1);
+summary1.appendChild(document.createTextNode('b'));
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplclonesummaryhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/clone-summary.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/clone-summary.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/clone-summary.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;body style=&quot;font-family: ahem; -webkit-font-smoothing: none;&quot;&gt;
+&lt;style&gt;
+#container { -webkit-column-width: 100px; }
+#div1 { -webkit-column-span: all; }
+#summary1 { color: white; }
+&lt;/style&gt;
+&lt;script&gt;
+if (window.internals)
+    internals.settings.setRegionBasedColumnsEnabled(true);
+document.body.offsetTop;
+var container = document.createElement('div');
+container.setAttribute('id', 'container');
+document.body.appendChild(container);
+summary1 = document.createElement('summary');
+summary1.setAttribute('id', 'summary1');
+container.appendChild(summary1);
+var div1 = document.createElement('div');
+div1.setAttribute('id', 'div1');
+summary1.style.display = 'table-row';
+summary1.appendChild(document.createTextNode('a'));
+summary1.appendChild(div1);
+summary1.appendChild(document.createTextNode('b'));
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplcolumnspaninsidemulticolwebkitboxexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/column-span-inside-multicol-webkit-box-expected.txt (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/column-span-inside-multicol-webkit-box-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/column-span-inside-multicol-webkit-box-expected.txt        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+Test passes if no crash.
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplcolumnspaninsidemulticolwebkitboxhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/column-span-inside-multicol-webkit-box.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/column-span-inside-multicol-webkit-box.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/column-span-inside-multicol-webkit-box.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;html&gt;
+&lt;head&gt;
+&lt;style&gt;
+p { -webkit-column-span: all; }
+body { display: -webkit-box; -webkit-column-count: 3;}
+&lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;script&gt;
+if (window.internals)
+    internals.settings.setRegionBasedColumnsEnabled(true);
+if (window.testRunner)
+    testRunner.dumpAsText();
+document.body.offsetTop;
+document.body.appendChild(document.createElement('p'));
+document.write(&quot;Test passes if no crash.&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplcontinuationcrashexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/continuation-crash-expected.txt (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/continuation-crash-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/continuation-crash-expected.txt        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,2 @@
</span><ins>+Test passes if it does not crash.
+
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplcontinuationcrashhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/continuation-crash.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/continuation-crash.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/continuation-crash.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+Test passes if it does not crash.
+&lt;style&gt;
+.column-layout { -webkit-column-count: 1; }
+.column-span-all { -webkit-column-span: all; }
+.after-content:after { display: block; content: &quot;&quot; }
+&lt;/style&gt;
+&lt;div class=&quot;column-layout&quot;&gt;
+    &lt;span class=&quot;after-content&quot;&gt;
+        &lt;div&gt;&lt;/div&gt;
+    &lt;/span&gt;
+    &lt;div class=&quot;column-span-all&quot;&gt;&lt;/div&gt;
+&lt;/div&gt;
+&lt;script&gt;
+    if (window.testRunner)
+        testRunner.dumpAsText();
+    if (window.internals)
+        internals.settings.setRegionBasedColumnsEnabled(true);
+&lt;/script&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimpldoublemergeanonymousblockcrashexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/double-merge-anonymous-block-crash-expected.txt (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/double-merge-anonymous-block-crash-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/double-merge-anonymous-block-crash-expected.txt        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+PASS, does not crash
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimpldoublemergeanonymousblockcrashhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/double-merge-anonymous-block-crash.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/double-merge-anonymous-block-crash.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/double-merge-anonymous-block-crash.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;html&gt;
+    &lt;head&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            if (window.testRunner)
+                testRunner.dumpAsText();
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;style&gt;
+    div {
+        border: 5px solid maroon;
+        -webkit-column-count: 2;
+        margin: 1em 0;
+    }
+    summary {
+        -webkit-column-span: all;
+        background-color: #eeeeee;
+        color: black;
+    }
+    &lt;/style&gt;
+    &lt;body onload=&quot;document.open(); document.write('PASS, does not crash'); document.close();&quot;&gt;
+        &lt;div&gt;
+            &lt;label&gt;AAA
+            &lt;summary&gt;BBB
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplemptyanonymousblocksplitcrashexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/empty-anonymous-block-split-crash-expected.txt (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/empty-anonymous-block-split-crash-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/empty-anonymous-block-split-crash-expected.txt        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,2 @@
</span><ins>+WebKit Bug - Crash in multi-column layout.
+PASS. WebKit didn't crash.
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplemptyanonymousblocksplitcrashhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/empty-anonymous-block-split-crash.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/empty-anonymous-block-split-crash.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/empty-anonymous-block-split-crash.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,37 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;style&gt;
+#test0 { -webkit-column-width: 1px; }
+#test2::after { display: compact; content: ''; }
+#test3 { content: counter(c); -webkit-column-span: all; }
+&lt;/style&gt;
+&lt;script&gt;
+if (window.internals)
+    internals.settings.setRegionBasedColumnsEnabled(true);
+if (window.testRunner)
+    testRunner.dumpAsText();
+
+onload = function() {
+    test0 = document.createElement('div');
+    test0.setAttribute('id', 'test0');
+    document.body.appendChild(test0);
+    test1 = document.createElement('div');
+    test0.appendChild(test1);
+    test2 = document.createElement('div');
+    test2.setAttribute('id', 'test2');
+    test1.appendChild(test2);
+    test3 = document.createElement('div');
+    test3.setAttribute('id', 'test3');
+    test2.appendChild(test3);
+    test2.appendChild(document.createTextNode('A'));
+    document.designMode = 'on';
+    document.execCommand('selectall');
+    document.body.offsetTop;
+    document.body.innerHTML = &quot;WebKit Bug - Crash in multi-column layout.&lt;br /&gt;PASS. WebKit didn't crash.&quot;;
+}
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplfloatnotremovedcrashexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/float-not-removed-crash-expected.txt (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/float-not-removed-crash-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/float-not-removed-crash-expected.txt        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+Test passes if it does not crash.
+PASS. WebKit didn't crash.
+
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplfloatnotremovedcrashhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/float-not-removed-crash.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/float-not-removed-crash.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/float-not-removed-crash.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,44 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+Test passes if it does not crash.
+&lt;style&gt;
+.class1:nth-child(-n+6) { float: left; padding-bottom: 100px; }
+.class2:nth-child(even) { -webkit-backface-visibility: hidden; -webkit-column-span: all; }
+.class3 { -webkit-column-count: 65536; }
+&lt;/style&gt;
+&lt;script&gt;
+if (window.testRunner) {
+    testRunner.dumpAsText();
+    testRunner.waitUntilDone();
+}
+
+if (window.internals)
+    internals.settings.setRegionBasedColumnsEnabled(true);
+
+function crash() {
+    test1 = document.createElement('div');
+    test2 = document.createElement('div');
+    test3 = document.createElement('div');
+    test3.setAttribute('class', 'class3');
+    document.documentElement.appendChild(test3);
+    test4 = document.createElement('div');
+    test4.setAttribute('class', 'class2');
+    test5 = document.createElement('div');
+    test5.setAttribute('class', 'class1');
+    test6 = document.createElement('div');
+    test7 = document.createElement('i');
+    test8 = document.createTextNode(&quot;PASS. WebKit didn't crash.&quot;);
+    test6.appendChild(test8);
+    test6.appendChild(test7);
+    test1.appendChild(test6);
+    test3.appendChild(test1);
+    test7.appendChild(test5);
+    document.documentElement.offsetTop;
+    setTimeout('test3.appendChild(test4);', 0);
+    setTimeout('test2.appendChild(test7);', 2);
+    setTimeout('if (window.testRunner) testRunner.notifyDone();', 4);
+}
+
+window.onload = crash;
+&lt;/script&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimpllistmulticolumncrashexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/list-multi-column-crash-expected.txt (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/list-multi-column-crash-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/list-multi-column-crash-expected.txt        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+Test passes if it does not crash.
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimpllistmulticolumncrashhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/list-multi-column-crash.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/list-multi-column-crash.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/list-multi-column-crash.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,41 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;body&gt;
+Test passes if it does not crash.
+&lt;style&gt;
+.columns
+{
+        -webkit-column-count: 2;
+        -webkit-column-span: all;
+}
+.list
+{
+        display: list-item;
+}
+&lt;/style&gt;
+&lt;script&gt;
+if (window.internals)
+    internals.settings.setRegionBasedColumnsEnabled(true);
+if (window.testRunner)
+    testRunner.dumpAsText();
+
+list = document.createElement('p');
+list.setAttribute('class', 'list');
+listChild = document.createElement('hr');
+list.appendChild(listChild);
+list.appendChild(document.createTextNode('Text.'));
+outerColumns = document.createElement('div');
+outerColumns.appendChild(list);
+document.body.appendChild(outerColumns);
+outerColumns.setAttribute('class', 'columns');
+document.body.offsetTop;
+
+innerColumns = document.createElement('div');
+innerColumns.setAttribute('class', 'columns');
+listChild.appendChild(innerColumns);
+document.body.offsetTop;
+
+document.body.removeChild(outerColumns);
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplpositionedchildnotremovedcrashexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/positioned-child-not-removed-crash-expected.txt (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/positioned-child-not-removed-crash-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/positioned-child-not-removed-crash-expected.txt        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+Test passes if it does not crash.
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplpositionedchildnotremovedcrashhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/positioned-child-not-removed-crash.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/positioned-child-not-removed-crash.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/positioned-child-not-removed-crash.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,43 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;body&gt;
+Test passes if it does not crash.
+&lt;style&gt;
+.caption1 { -webkit-column-width: 1px; }
+.div1 { position: absolute; }
+.keygen1:nth-last-child(even) { display: block; -webkit-column-span: all; }
+.flexbox1 { display: -webkit-flexbox; padding-right: 10px; -webkit-transform: rotate3d(0, 1, 0, 90deg); }
+&lt;/style&gt;
+&lt;script&gt;
+if (window.internals)
+    internals.settings.setRegionBasedColumnsEnabled(true);
+if (window.testRunner)
+    testRunner.dumpAsText();
+
+function runTest() {
+    caption1 = document.createElement('caption');
+    caption1.setAttribute('class', 'caption1');
+    div1 = document.createElement('div');
+    div1.setAttribute('class', 'div1');
+    flexbox1 = document.createElement('div');
+    flexbox1.setAttribute('class', 'flexbox1');
+    keygen1 = document.createElement('keygen');
+    keygen1.setAttribute('class', 'keygen1');
+
+    div2 = document.createElement('div');
+    div3 = document.createElement('div');
+
+    flexbox1.appendChild(keygen1);
+    flexbox1.appendChild(div1);
+    flexbox1.appendChild(div3);
+    caption1.appendChild(flexbox1);
+    document.body.appendChild(caption1);
+    document.body.offsetTop;
+    flexbox1.appendChild(div2);
+    document.body.offsetTop;
+    flexbox1.removeChild(div1);
+}
+window.onload = runTest;
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplpositionedobjectsnotremovedcrashexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/positioned-objects-not-removed-crash-expected.txt (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/positioned-objects-not-removed-crash-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/positioned-objects-not-removed-crash-expected.txt        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,2 @@
</span><ins>+WebKit Bug - Crash in multi-column layout.
+PASS. WebKit didn't crash.
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplpositionedobjectsnotremovedcrashhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/positioned-objects-not-removed-crash.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/positioned-objects-not-removed-crash.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/positioned-objects-not-removed-crash.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,43 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;body&gt;
+&lt;style&gt;
+#test0 { -webkit-columns: 1px; }
+#test1 { -webkit-perspective: 1; display: compact; }
+#test1:before { content: &quot;&quot;; }
+#test1:after { display: table; content: &quot;&quot;; }
+#test2 { -webkit-column-span: all; }
+#test4:last-child { position:fixed; }
+.c0 { display: table-header-group; }
+.c1:first-letter { content: &quot;&quot;; }
+&lt;/style&gt;
+&lt;script&gt;
+if (window.internals)
+    internals.settings.setRegionBasedColumnsEnabled(true);
+if (window.testRunner)
+    testRunner.dumpAsText();
+
+onload = function() {
+    test0 = document.createElement('div');
+    test0.setAttribute('id', 'test0');
+    document.body.appendChild(test0);
+    test1 = document.createElement('div');
+    test1.setAttribute('id','test1');
+    test0.appendChild(test1);
+    test2 = document.createElement('div');
+    test2.setAttribute('id','test2');
+    test1.appendChild(test2);
+    test3 = document.createElement('span');
+    test1.appendChild(test3);
+    test4 = document.createElement('div');
+    test4.setAttribute('id', 'test4');
+    test3.appendChild(test4);
+    document.body.offsetTop;
+    test2.setAttribute('class', 'c0');
+    test4.setAttribute('class', 'c1');
+    document.body.offsetTop;
+    document.body.innerHTML = &quot;WebKit Bug - Crash in multi-column layout.&lt;br /&gt;PASS. WebKit didn't crash.&quot;;
+}
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplrecursivesplitflowcrashexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/recursive-split-flow-crash-expected.txt (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/recursive-split-flow-crash-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/recursive-split-flow-crash-expected.txt        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+Bug 101984: Heap-buffer-overflow in WebCore::RenderBlock::clone.
+Test passes if it does not crash.
+
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplrecursivesplitflowcrashhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/recursive-split-flow-crash.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/recursive-split-flow-crash.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/recursive-split-flow-crash.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,36 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+Bug 101984: Heap-buffer-overflow in WebCore::RenderBlock::clone.&lt;br /&gt;
+Test passes if it does not crash.
+&lt;body&gt;
+&lt;table&gt;
+&lt;div class=&quot;container&quot;&gt;
+&lt;div class=&quot;testClass&quot; id=&quot;test1&quot;&gt;
+&lt;/div&gt;
+&lt;div class=&quot;testClass&quot;&gt;
+&lt;div&gt;
+&lt;i id=&quot;test2&quot;&gt;&lt;/i&gt;
+&lt;/div&gt;
+&lt;/div&gt;
+&lt;/div&gt;
+&lt;/table&gt;
+&lt;script&gt;
+if (window.testRunner)
+    testRunner.dumpAsText();
+if (window.internals)
+    internals.settings.setRegionBasedColumnsEnabled(true);
+
+document.head.appendChild(document.createElement(&quot;style&quot;));
+var styleSheet0 = document.styleSheets[0];
+var test1 = document.getElementById(&quot;test1&quot;);
+var test2 = document.getElementById(&quot;test2&quot;);
+
+
+document.execCommand(&quot;SelectAll&quot;, true);
+styleSheet0.insertRule('.testClass { -webkit-column-span: all ; }', 0);
+test1.appendChild(test2);
+styleSheet0.insertRule('.testClass::first-letter { border-style: none; }', 0);
+styleSheet0.insertRule('.container { -webkit-column-axis: vertical; }', 0);
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplremovalofmulticolspancrashexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/removal-of-multicol-span-crash-expected.txt (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/removal-of-multicol-span-crash-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/removal-of-multicol-span-crash-expected.txt        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+PASS, if no exception or crash
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplremovalofmulticolspancrashhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/removal-of-multicol-span-crash.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/removal-of-multicol-span-crash.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/removal-of-multicol-span-crash.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+&lt;style&gt;
+body { -webkit-column-width: 0; }
+#container { position: relative; }
+.hardware:last-of-type { -webkit-column-span: all; }
+&lt;/style&gt;
+
+&lt;body&gt;
+&lt;script&gt;
+    if (window.internals)
+        internals.settings.setRegionBasedColumnsEnabled(true);
+    function clear() {
+        document.documentElement.removeChild(document.body);
+        document.documentElement.innerHTML='PASS, if no exception or crash';
+        if (window.testRunner) {
+            testRunner.notifyDone();
+        }
+    }
+    setTimeout(&quot;clear();&quot;, 0);
+    if (window.testRunner) {
+        testRunner.waitUntilDone();
+        testRunner.dumpAsText();
+    }
+&lt;/script&gt;
+&lt;div id=&quot;container&quot;&gt;
+    &lt;div class=&quot;hardware box&quot;&gt;
+&lt;/body&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplremovechildsplitflowcrashexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/remove-child-split-flow-crash-expected.txt (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/remove-child-split-flow-crash-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/remove-child-split-flow-crash-expected.txt        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,2 @@
</span><ins>+Test passes if it does not crash.
+
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplremovechildsplitflowcrashhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/remove-child-split-flow-crash.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/remove-child-split-flow-crash.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/remove-child-split-flow-crash.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,40 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+Test passes if it does not crash.
+&lt;style&gt;
+.class1 { -webkit-column-span: all; }
+.class2 { -webkit-column-width: 1px; }
+.class3 { display: inline-block; }
+.class4 { section; -webkit-column-span: all; }
+&lt;/style&gt;
+&lt;script&gt;
+if (window.testRunner)
+    testRunner.dumpAsText();
+if (window.internals)
+    internals.settings.setRegionBasedColumnsEnabled(true);
+
+function crash() {
+    i1 = document.createElement('i');
+    document.documentElement.appendChild(i1);
+    i2 = document.createElement('i');
+    i1.appendChild(i2);
+    div1 = document.createElement('div');
+    div2 = document.createElement('div');
+    div2.setAttribute('class', 'class3');
+    i3 = document.createElement('i');
+    div3 = document.createElement('div');
+    div3.setAttribute('class', 'class1');
+    div4 = document.createElement('div');
+    div4.setAttribute('class', 'class4');
+    i2.appendChild(div2);
+    div2.appendChild(div1);
+    div1.appendChild(div4);
+    document.documentElement.offsetTop;
+    div1.setAttribute('class', 'class2');
+    div4.appendChild(div3);
+    document.documentElement.offsetTop;
+    i3.appendChild(div3);
+}
+window.onload = crash;
+&lt;/script&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplrunincontinuationcrashexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/runin-continuation-crash-expected.txt (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/runin-continuation-crash-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/runin-continuation-crash-expected.txt        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,2 @@
</span><ins>+PASS
+
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplrunincontinuationcrashhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/runin-continuation-crash.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/runin-continuation-crash.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/runin-continuation-crash.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;body&gt;
+&lt;style&gt;
+.div1 { -webkit-column-span: all; }
+.divContainer::after { content: ''; }
+.divContainer { -webkit-column-width: 1px; }
+.runin { display: run-in; }
+&lt;/style&gt;
+&lt;script&gt;
+if (window.internals)
+    internals.settings.setRegionBasedColumnsEnabled(true);
+if (window.testRunner)
+    testRunner.dumpAsText();
+
+document.body.offsetTop;
+div1 = document.createElement('div');
+div1.setAttribute('class', 'div1');
+div2 = document.createElement('div');
+div3 = document.createElement('div');
+
+divContainer = document.createElement('div');
+divContainer.setAttribute('class', 'divContainer');
+document.documentElement.appendChild(divContainer);
+
+div2.appendChild(div1);
+divContainer.appendChild(div2);
+divContainer.appendChild(div3);
+document.body.offsetTop;
+div2.setAttribute('class', 'runin');
+document.body.offsetTop;
+document.body.innerHTML = &quot;PASS&quot;;
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplspanasnestedinlineblockchildexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/span-as-nested-inline-block-child-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/span-as-nested-inline-block-child-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/span-as-nested-inline-block-child-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Nested spanning elements inside of an inline-block&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div style=&quot;-webkit-column-count: 2&quot;&gt;
+&lt;div style=&quot;display: inline-block&quot;&gt;
+&lt;p style=&quot;-webkit-column-span: all&quot;&gt;
+This text should not be spanned across two columns.
+&lt;/p&gt;
+
+&lt;p&gt;
+This text should be below the previous text, but still on the left.
+&lt;/div&gt;
+
+&lt;span&gt;
+The beginning of this text should start next to or below the previous text, and still in the left column. However, when made sufficiently longer than the previous block of text, it should spill into the right column instead of staying below the block before it.
+&lt;/span&gt;
+&lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplspanasnestedinlineblockchildhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/span-as-nested-inline-block-child.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/span-as-nested-inline-block-child.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/span-as-nested-inline-block-child.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+    &lt;script&gt;
+        if (window.internals)
+            internals.settings.setRegionBasedColumnsEnabled(true);
+    &lt;/script&gt;
+&lt;head&gt;
+&lt;title&gt;Nested spanning elements inside of an inline-block&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div style=&quot;-webkit-column-count: 2&quot;&gt;
+&lt;div style=&quot;display: inline-block&quot;&gt;
+&lt;p style=&quot;-webkit-column-span: all&quot;&gt;
+This text should not be spanned across two columns.
+&lt;/p&gt;
+
+&lt;p&gt;
+This text should be below the previous text, but still on the left.
+&lt;/div&gt;
+
+&lt;span&gt;
+The beginning of this text should start next to or below the previous text, and still in the left column. However, when made sufficiently longer than the previous block of text, it should spill into the right column instead of staying below the block before it.
+&lt;/span&gt;
+&lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplsplitflowanonymouswrappercrashexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/split-flow-anonymous-wrapper-crash-expected.txt (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/split-flow-anonymous-wrapper-crash-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/split-flow-anonymous-wrapper-crash-expected.txt        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+PASS
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplsplitflowanonymouswrappercrashhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/split-flow-anonymous-wrapper-crash.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/split-flow-anonymous-wrapper-crash.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/split-flow-anonymous-wrapper-crash.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+Test passes if it does crash.
+&lt;style&gt;
+.b1 { display: block; -webkit-column-width: 100px; }
+.d1 { -webkit-column-span: all; }
+&lt;/style&gt;
+&lt;script&gt;
+if (window.internals)
+    internals.settings.setRegionBasedColumnsEnabled(true);
+if (window.testRunner)
+    testRunner.dumpAsText();
+
+function runTest() {
+div1 = document.createElement('div');
+div1.setAttribute('class', 'd1');
+button1 = document.createElement('button');
+button1.setAttribute('class', 'b1');
+document.documentElement.appendChild(button1);
+document.documentElement.offsetTop;
+button1.appendChild(div1);
+document.documentElement.offsetTop;
+document.documentElement.innerHTML = &quot;PASS&quot;;
+}
+window.onload = runTest;
+&lt;/script&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplsplitinlinewrongpostblockcrashexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/split-inline-wrong-post-block-crash-expected.txt (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/split-inline-wrong-post-block-crash-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/split-inline-wrong-post-block-crash-expected.txt        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,2 @@
</span><ins>+Test passes if it does not crash.
+
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplsplitinlinewrongpostblockcrashhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/split-inline-wrong-post-block-crash.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/split-inline-wrong-post-block-crash.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/split-inline-wrong-post-block-crash.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;html&gt;
+&lt;head&gt;
+&lt;script&gt;
+if (window.internals)
+    internals.settings.setRegionBasedColumnsEnabled(true);
+if (window.testRunner)
+    testRunner.dumpAsText();
+
+function runTest() {
+    var container = document.createElement('div');
+    container.style['-webkit-column-count'] = 1;
+    document.body.appendChild(container);
+    var test1 = document.createElement('div');
+    test1.style['-webkit-column-span'] = 'all';
+    container.appendChild(test1);
+    var test2 = document.createElement('span');
+    container.appendChild(test2);
+    test2.appendChild(document.createElement('div'));
+    var test3 = document.createElement('div');
+    test3.style.display = 'table-column';
+    container.appendChild(test3);
+    container.appendChild(document.createElement('div'));
+}
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body onload=&quot;runTest()&quot;&gt;
+Test passes if it does not crash.
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimpltablemulticolumncrashexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/table-multi-column-crash-expected.txt (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/table-multi-column-crash-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/table-multi-column-crash-expected.txt        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,2 @@
</span><ins>+Test passes if it does not crash.
+
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimpltablemulticolumncrashhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/table-multi-column-crash.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/table-multi-column-crash.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/table-multi-column-crash.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;script&gt;
+if (window.internals)
+    internals.settings.setRegionBasedColumnsEnabled(true);
+&lt;/script&gt;
+&lt;body&gt;
+Test passes if it does not crash.
+&lt;style&gt;
+.table_span { -webkit-column-span: all;}
+.table_container { -webkit-column-count: 2; }
+&lt;/style&gt;
+&lt;script&gt;
+if (window.testRunner)
+    testRunner.dumpAsText();
+
+document.body.offsetTop;
+table_span = document.createElement('table');
+table_span.setAttribute('class', 'table_span');
+table_container = document.createElement('table');
+table_container.setAttribute('class', 'table_container');
+table_caption = document.createElement('caption');
+table_caption.appendChild(table_span);
+table_container.appendChild(table_caption);
+document.body.appendChild(table_container);
+document.body.offsetTop;
+
+table_caption.parentNode.removeChild(table_caption);
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimpltextboxnotremovedcrashexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/textbox-not-removed-crash-expected.txt (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/textbox-not-removed-crash-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/textbox-not-removed-crash-expected.txt        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,2 @@
</span><ins>+Test passes if it does not crash.
+A
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimpltextboxnotremovedcrashhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/textbox-not-removed-crash.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/textbox-not-removed-crash.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/textbox-not-removed-crash.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,44 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+    &lt;script&gt;
+        if (window.internals)
+            internals.settings.setRegionBasedColumnsEnabled(true);
+    &lt;/script&gt;
+&lt;style&gt;
+#test1 {
+    text-indent: -1em;
+    content: counter(c);
+    -webkit-column-count: 1;
+}
+#test3 {
+    -webkit-column-span: all;
+}
+&lt;/style&gt;
+&lt;script&gt;
+if (window.testRunner)
+    testRunner.dumpAsText();
+
+function crash() {
+    test1 = document.createElement('div');
+    test1.setAttribute('id', 'test1');
+    document.body.appendChild(test1);
+    test2 = document.createElement('div');
+    test1.appendChild(test2);
+    test3 = document.createElement('div');
+    test3.setAttribute('id', 'test3');
+    test2.appendChild(test3);
+    test2.appendChild(document.createTextNode('A'));
+    test2.style.display = '-webkit-box';
+    document.body.offsetTop;
+    test3.style.display = 'list-item';
+    document.body.offsetTop;
+    document.body.style.zoom = 2;
+}
+window.onload = crash;
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+Test passes if it does not crash.
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplupdateaftercontentbeforechildcrashexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/update-after-content-before-child-crash-expected.txt (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/update-after-content-before-child-crash-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/update-after-content-before-child-crash-expected.txt        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+PASS. WebKit didn't crash.
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolcomparewitholdimplupdateaftercontentbeforechildcrashhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/update-after-content-before-child-crash.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/update-after-content-before-child-crash.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/update-after-content-before-child-crash.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;script&gt;
+    if (window.internals)
+         internals.settings.setRegionBasedColumnsEnabled(true);
+&lt;/script&gt;
+&lt;body&gt;
+&lt;style&gt;
+#columnContainer { -webkit-column-count: 600; }
+#divBlock::after { display: block; content: ''; }
+#columnSpanBlock:nth-last-child(even) { -webkit-column-span: all; }
+#table { float: right; }
+&lt;/style&gt;
+&lt;script&gt;
+if (window.testRunner)
+    testRunner.dumpAsText();
+
+onload = function() {
+    columnContainer = document.createElement('div');
+    columnContainer.setAttribute('id', 'columnContainer');
+    document.body.appendChild(columnContainer);
+    divBlock = document.createElement('div');
+    divBlock.setAttribute('id', 'divBlock');
+    columnContainer.appendChild(divBlock);
+    columnSpanBlock = document.createElement('div');
+    columnSpanBlock.setAttribute('id', 'columnSpanBlock');
+    divBlock.appendChild(columnSpanBlock);
+    span = document.createElement('span');
+    divBlock.appendChild(span);
+    span.appendChild(document.createTextNode('A'));
+    table = document.createElement('table');
+    table.setAttribute('id', 'table');
+    divBlock.appendChild(table);
+    document.designMode = 'on';
+    document.execCommand('selectall');
+    document.execCommand('inserttext', '');
+    document.body.offsetTop;
+    document.body.innerHTML = &quot;PASS. WebKit didn't crash.&quot;;
+}
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent1expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content1-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content1-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content1-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert content between two spanners&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+        &lt;style&gt;
+            .spanner { -webkit-column-span:all; column-span:all; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be three lines below with the word &quot;PASS&quot;. Letter spacing is expected to vary&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1;&quot;&gt;
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+                &lt;div&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent1html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content1.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content1.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content1.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert content between two spanners&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                document.body.offsetTop; // trigger layout
+                elm.style.display = 'block';
+            }
+        &lt;/script&gt;
+        &lt;style&gt;
+            .spanner { -webkit-column-span:all; column-span:all; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;There should be three lines below with the word &quot;PASS&quot;. Letter spacing is expected to vary&lt;/p&gt;
+        &lt;div style=&quot;float:left; overflow:hidden;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1;&quot;&gt;
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;&lt;div id=&quot;elm&quot; style=&quot;display:none;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;&lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent2expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content2-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content2-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content2-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert content into collapsable whitespace between two spanners&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+        &lt;style&gt;
+            .spanner { -webkit-column-span:all; column-span:all; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be three lines below with the word &quot;PASS&quot;. Letter spacing is expected to vary&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1;&quot;&gt;
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+                &lt;div&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent2html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content2.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content2.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content2.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert content into collapsable whitespace between two spanners&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                document.body.offsetTop; // trigger layout
+                elm.style.display = 'block';
+            }
+        &lt;/script&gt;
+        &lt;style&gt;
+            .spanner { -webkit-column-span:all; column-span:all; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;There should be three lines below with the word &quot;PASS&quot;. Letter spacing is expected to vary&lt;/p&gt;
+        &lt;div style=&quot;float:left; overflow:hidden;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1;&quot;&gt;
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+                &lt;div id=&quot;elm&quot; style=&quot;display:none;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent3expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content3-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content3-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content3-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,32 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert content before spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                elm.offsetTop; // trigger layout
+                elm.style.display = 'block';
+            }
+        &lt;/script&gt;
+        &lt;style&gt;
+            .spanner { -webkit-column-span:all; column-span:all; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;There should be two lines below with the word &quot;PASS&quot;. Letter spacing is expected to vary&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1;&quot;&gt;
+                &lt;div id=&quot;elm&quot; style=&quot;display:none;&quot;&gt;
+                    P&lt;br&gt;
+                    A&lt;br&gt;
+                    S&lt;br&gt;
+                    S&lt;br&gt;
+                &lt;/div&gt;
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent3html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content3.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content3.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content3.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,24 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert content before spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                document.body.offsetTop; // trigger layout
+                elm.style.display = 'block';
+            }
+        &lt;/script&gt;
+        &lt;style&gt;
+            .spanner { -webkit-column-span:all; column-span:all; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;There should be two lines below with the word &quot;PASS&quot;. Letter spacing is expected to vary&lt;/p&gt;
+        &lt;div style=&quot;float:left; overflow:hidden;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1;&quot;&gt;&lt;div id=&quot;elm&quot; style=&quot;display:none;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;&lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;&lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent4expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content4-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content4-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content4-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert content into collapsable whitespace before spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+        &lt;style&gt;
+            .spanner { -webkit-column-span:all; column-span:all; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be two lines below with the word &quot;PASS&quot;. Letter spacing is expected to vary&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1;&quot;&gt;
+                &lt;div&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent4html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content4.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content4.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content4.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert content into collapsable whitespace before spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                document.body.offsetTop; // trigger layout
+                elm.style.display = 'block';
+            }
+        &lt;/script&gt;
+        &lt;style&gt;
+            .spanner { -webkit-column-span:all; column-span:all; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;There should be two lines below with the word &quot;PASS&quot;. Letter spacing is expected to vary&lt;/p&gt;
+        &lt;div style=&quot;float:left; overflow:hidden;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1;&quot;&gt;
+                &lt;div id=&quot;elm&quot; style=&quot;display:none;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent5expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content5-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content5-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content5-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert content before spanner before more content&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+        &lt;style&gt;
+            .spanner { -webkit-column-span:all; column-span:all; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be two lines below with the word &quot;PASS&quot;. Letter spacing is expected to vary&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1;&quot;&gt;
+                &lt;div&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+                P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent5html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content5.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content5.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content5.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert content before spanner before more content&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                document.body.offsetTop; // trigger layout
+                elm.style.display = 'block';
+            }
+        &lt;/script&gt;
+        &lt;style&gt;
+            .spanner { -webkit-column-span:all; column-span:all; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;There should be two lines below with the word &quot;PASS&quot;. Letter spacing is expected to vary&lt;/p&gt;
+        &lt;div style=&quot;float:left; overflow:hidden;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1;&quot;&gt;&lt;div id=&quot;elm&quot; style=&quot;display:none;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;&lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+                P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent6expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content6-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content6-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content6-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert content into collapsable whitespace before spanner before more content&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+        &lt;style&gt;
+            .spanner { -webkit-column-span:all; column-span:all; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be two lines below with the word &quot;PASS&quot;. Letter spacing is expected to vary&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1;&quot;&gt;
+                &lt;div&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+                P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent6html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content6.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content6.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content6.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert content into collapsable whitespace before spanner before more content&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                document.body.offsetTop; // trigger layout
+                elm.style.display = 'block';
+            }
+        &lt;/script&gt;
+        &lt;style&gt;
+            .spanner { -webkit-column-span:all; column-span:all; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;There should be two lines below with the word &quot;PASS&quot;. Letter spacing is expected to vary&lt;/p&gt;
+        &lt;div style=&quot;float:left; overflow:hidden;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1;&quot;&gt;
+                &lt;div id=&quot;elm&quot; style=&quot;display:none;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+                P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent7expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content7-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content7-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content7-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert content into already existing row before spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+        &lt;style&gt;
+            .spanner { -webkit-column-span:all; column-span:all; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be two lines below with the word &quot;PASS&quot;. Letter spacing is expected to vary&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1;&quot;&gt;
+                P&lt;br&gt;
+                A&lt;br&gt;
+                S&lt;br&gt;
+                S
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent7html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content7.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content7.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content7.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert content into already existing row before spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                document.body.offsetTop; // trigger layout
+                elm.style.display = 'block';
+            }
+        &lt;/script&gt;
+        &lt;style&gt;
+            .spanner { -webkit-column-span:all; column-span:all; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;There should be two lines below with the word &quot;PASS&quot;. Letter spacing is expected to vary&lt;/p&gt;
+        &lt;div style=&quot;float:left; overflow:hidden;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1;&quot;&gt;
+                P
+                &lt;div id=&quot;elm&quot; style=&quot;display:none;&quot;&gt;A&lt;/div&gt;
+                S&lt;br&gt;S
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent8expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content8-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content8-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content8-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert content&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be two lines below with the word &quot;PASS&quot;.&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1;&quot;&gt;
+                P&lt;br&gt;P&lt;br&gt;A&lt;br&gt;A&lt;br&gt;
+                S&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent8html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content8.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content8.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content8.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert content&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                document.body.offsetTop; // trigger layout
+                elm.style.display = 'block';
+            }
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;There should be two lines below with the word &quot;PASS&quot;.&lt;/p&gt;
+        &lt;div style=&quot;float:left; overflow:hidden;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1;&quot;&gt;
+                P&lt;br&gt;P&lt;br&gt;A&lt;br&gt;
+                &lt;div id=&quot;elm&quot; style=&quot;display:none;&quot;&gt;A&lt;/div&gt;
+                S&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent9expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content9-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content9-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content9-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert content into already existing row after spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+        &lt;style&gt;
+            .spanner { -webkit-column-span:all; column-span:all; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be three lines below with the word &quot;PASS&quot;. Letter spacing is expected to vary&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1;&quot;&gt;
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+                P&lt;br&gt;P&lt;br&gt;A&lt;br&gt;
+                A&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertrowcontent9html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content9.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content9.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-row-content9.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert content into already existing row after spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                document.body.offsetTop; // trigger layout
+                elm.style.display = 'block';
+            }
+        &lt;/script&gt;
+        &lt;style&gt;
+            .spanner { -webkit-column-span:all; column-span:all; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;There should be three lines below with the word &quot;PASS&quot;. Letter spacing is expected to vary&lt;/p&gt;
+        &lt;div style=&quot;float:left; overflow:hidden;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1;&quot;&gt;
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+                P&lt;br&gt;P
+                &lt;div id=&quot;elm&quot; style=&quot;display:none;&quot;&gt;A&lt;/div&gt;
+                A&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertspannerchild1expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner-child1-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner-child1-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner-child1-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert child into empty spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;You should see the word &quot;PASS&quot; below.&lt;/p&gt;
+        PASS
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertspannerchild1html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner-child1.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner-child1.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner-child1.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert child into empty spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                document.body.offsetTop; // trigger layout
+                elm.style.display = 'block';
+            }
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;You should see the word &quot;PASS&quot; below.&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:5; columns:5; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1;&quot;&gt;
+            &lt;div style=&quot;-webkit-column-span:all; column-span:all;&quot;&gt;&lt;div id=&quot;elm&quot; style=&quot;display:none;&quot;&gt;PASS&lt;/div&gt;&lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertspannerchild2expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner-child2-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner-child2-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner-child2-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert first child into spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;You should see the word &quot;PASS&quot; below.&lt;/p&gt;
+        PASS
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertspannerchild2html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner-child2.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner-child2.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner-child2.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert first child into spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                document.body.offsetTop; // trigger layout
+                elm.style.display = 'block';
+            }
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;You should see the word &quot;PASS&quot; below.&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:3; columns:3;&quot;&gt;
+            &lt;div style=&quot;-webkit-column-span:all; column-span:all;&quot;&gt;&lt;div id=&quot;elm&quot; style=&quot;display:none; float:left;&quot;&gt;PA&lt;/div&gt;SS&lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertspannerchild3expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner-child3-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner-child3-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner-child3-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert last child into spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;You should see the word &quot;PASS&quot; below.&lt;/p&gt;
+        PASS
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertspannerchild3html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner-child3.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner-child3.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner-child3.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert last child into spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                document.body.offsetTop; // trigger layout
+                elm.style.display = 'block';
+            }
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;You should see the word &quot;PASS&quot; below.&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:3; columns:3;&quot;&gt;
+            &lt;div style=&quot;-webkit-column-span:all; column-span:all;&quot;&gt;SS&lt;div id=&quot;elm&quot; style=&quot;display:none; float:left;&quot;&gt;PA&lt;/div&gt;&lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertspanner1expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner1-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner1-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner1-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert spanner between column rows&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be three lines below with the word &quot;PASS&quot;. Letter spacing is expected to vary&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:5; columns:5; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1;&quot;&gt;
+                P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+                &lt;div id=&quot;elm&quot; style=&quot;-webkit-column-span:all; column-span:all;&quot;&gt;PASS&lt;/div&gt;
+                P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertspanner1html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner1.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner1.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner1.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert spanner between column rows&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                document.body.offsetTop; // trigger layout
+                elm.style.display = 'block';
+            }
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;There should be three lines below with the word &quot;PASS&quot;. Letter spacing is expected to vary&lt;/p&gt;
+        &lt;div style=&quot;float:left; overflow:hidden;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:5; columns:5; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1;&quot;&gt;
+                P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+                &lt;div id=&quot;elm&quot; style=&quot;display:none; -webkit-column-span:all; column-span:all;&quot;&gt;PASS&lt;/div&gt;
+                P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertspanner2expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner2-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner2-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner2-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert spanner before column row&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be two lines below with the word &quot;PASS&quot;. Letter spacing is expected to
+        vary. The first word should be in &lt;span style=&quot;color:blue;&quot;&gt;blue&lt;/span&gt;. The second one
+        in &lt;span style=&quot;color:olive;&quot;&gt;olive&lt;/span&gt;.&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:5; columns:5; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1; color:olive;&quot;&gt;
+                &lt;div id=&quot;elm&quot; style=&quot;-webkit-column-span:all; column-span:all; color:blue;&quot;&gt;PASS&lt;/div&gt;
+                P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertspanner2html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner2.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner2.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner2.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert spanner before column row&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                document.body.offsetTop; // trigger layout
+                elm.style.display = 'block';
+            }
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;There should be two lines below with the word &quot;PASS&quot;. Letter spacing is expected to
+        vary. The first word should be in &lt;span style=&quot;color:blue;&quot;&gt;blue&lt;/span&gt;. The second one
+        in &lt;span style=&quot;color:olive;&quot;&gt;olive&lt;/span&gt;.&lt;/p&gt;
+        &lt;div style=&quot;float:left; overflow:hidden;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:5; columns:5; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1; color:olive;&quot;&gt;
+                &lt;div id=&quot;elm&quot; style=&quot;display:none; -webkit-column-span:all; column-span:all; color:blue;&quot;&gt;PASS&lt;/div&gt;
+                P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertspanner3expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner3-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner3-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner3-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert spanner before column row&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be two lines below with the word &quot;PASS&quot;. Letter spacing is expected to
+        vary. The first word should be in &lt;span style=&quot;color:blue;&quot;&gt;blue&lt;/span&gt;. The second one
+        in &lt;span style=&quot;color:olive;&quot;&gt;olive&lt;/span&gt;.&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:5; columns:5; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1; color:blue;&quot;&gt;
+                P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+                &lt;div id=&quot;elm&quot; style=&quot;-webkit-column-span:all; column-span:all; color:olive;&quot;&gt;PASS&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertspanner3html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner3.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner3.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner3.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert spanner before column row&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                document.body.offsetTop; // trigger layout
+                elm.style.display = 'block';
+            }
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;There should be two lines below with the word &quot;PASS&quot;. Letter spacing is expected to
+        vary. The first word should be in &lt;span style=&quot;color:blue;&quot;&gt;blue&lt;/span&gt;. The second one
+        in &lt;span style=&quot;color:olive;&quot;&gt;olive&lt;/span&gt;.&lt;/p&gt;
+        &lt;div style=&quot;float:left; overflow:hidden;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:5; columns:5; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1; color:blue;&quot;&gt;
+                P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+                &lt;div id=&quot;elm&quot; style=&quot;display:none; -webkit-column-span:all; column-span:all; color:olive;&quot;&gt;PASS&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertspanner4expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner4-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner4-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner4-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,24 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert spanner before spanner between column rows&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be four lines below with the word &quot;PASS&quot;. Letter spacing is expected to
+        vary. The first line should be in &lt;span style=&quot;color:green;&quot;&gt;green&lt;/span&gt;. The second one
+        in &lt;span style=&quot;color:blue;&quot;&gt;blue&lt;/span&gt;, the third one
+        in &lt;span style=&quot;color:olive;&quot;&gt;olive&lt;/span&gt;, and the fourth one
+        in &lt;span style=&quot;color:orange;&quot;&gt;orange&lt;/span&gt;.&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:5; columns:5; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1; color:green;&quot;&gt;
+                P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+                &lt;div style=&quot;-webkit-column-span:all; column-span:all; color:blue;&quot;&gt;PASS&lt;/div&gt;&lt;div style=&quot;-webkit-column-span:all; column-span:all; color:olive;&quot;&gt;PASS&lt;/div&gt;
+                &lt;span style=&quot;color:orange;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/span&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertspanner4html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner4.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner4.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner4.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert spanner before spanner between column rows&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                document.body.offsetTop; // trigger layout
+                elm.style.display = 'block';
+            }
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;There should be four lines below with the word &quot;PASS&quot;. Letter spacing is expected to
+        vary. The first line should be in &lt;span style=&quot;color:green;&quot;&gt;green&lt;/span&gt;. The second one
+        in &lt;span style=&quot;color:blue;&quot;&gt;blue&lt;/span&gt;, the third one
+        in &lt;span style=&quot;color:olive;&quot;&gt;olive&lt;/span&gt;, and the fourth one
+        in &lt;span style=&quot;color:orange;&quot;&gt;orange&lt;/span&gt;.&lt;/p&gt;
+        &lt;div style=&quot;float:left; overflow:hidden;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:5; columns:5; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1; color:green;&quot;&gt;
+                P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+                &lt;div id=&quot;elm&quot; style=&quot;display:none; -webkit-column-span:all; column-span:all; color:blue;&quot;&gt;PASS&lt;/div&gt;&lt;div style=&quot;-webkit-column-span:all; column-span:all; color:olive;&quot;&gt;PASS&lt;/div&gt;
+                &lt;span style=&quot;color:orange;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/span&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertspanner5expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner5-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner5-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner5-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert spanner before collapsable whitespace before spanner between column rows&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be four lines below with the word &quot;PASS&quot;. Letter spacing is expected to
+        vary. The first line should be in &lt;span style=&quot;color:green;&quot;&gt;green&lt;/span&gt;. The second one
+        in &lt;span style=&quot;color:blue;&quot;&gt;blue&lt;/span&gt;, the third one
+        in &lt;span style=&quot;color:olive;&quot;&gt;olive&lt;/span&gt;, and the fourth one
+        in &lt;span style=&quot;color:orange;&quot;&gt;orange&lt;/span&gt;.&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:5; columns:5; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1; color:green;&quot;&gt;
+                P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+                &lt;div style=&quot;-webkit-column-span:all; column-span:all; color:blue;&quot;&gt;PASS&lt;/div&gt;
+                &lt;div style=&quot;-webkit-column-span:all; column-span:all; color:olive;&quot;&gt;PASS&lt;/div&gt;
+                &lt;span style=&quot;color:orange;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/span&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertspanner5html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner5.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner5.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner5.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,30 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert spanner before collapsable whitespace before spanner between column rows&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                document.body.offsetTop; // trigger layout
+                elm.style.display = 'block';
+            }
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;There should be four lines below with the word &quot;PASS&quot;. Letter spacing is expected to
+        vary. The first line should be in &lt;span style=&quot;color:green;&quot;&gt;green&lt;/span&gt;. The second one
+        in &lt;span style=&quot;color:blue;&quot;&gt;blue&lt;/span&gt;, the third one
+        in &lt;span style=&quot;color:olive;&quot;&gt;olive&lt;/span&gt;, and the fourth one
+        in &lt;span style=&quot;color:orange;&quot;&gt;orange&lt;/span&gt;.&lt;/p&gt;
+        &lt;div style=&quot;float:left; overflow:hidden;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:5; columns:5; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1; color:green;&quot;&gt;
+                P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+                &lt;div id=&quot;elm&quot; style=&quot;display:none; -webkit-column-span:all; column-span:all; color:blue;&quot;&gt;PASS&lt;/div&gt;
+                &lt;div style=&quot;-webkit-column-span:all; column-span:all; color:olive;&quot;&gt;PASS&lt;/div&gt;
+                &lt;span style=&quot;color:orange;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/span&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertspanner6expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner6-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner6-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner6-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,24 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert spanner after spanner between column rows&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be four lines below with the word &quot;PASS&quot;. Letter spacing is expected to
+        vary. The first line should be in &lt;span style=&quot;color:green;&quot;&gt;green&lt;/span&gt;. The second one
+        in &lt;span style=&quot;color:blue;&quot;&gt;blue&lt;/span&gt;, the third one
+        in &lt;span style=&quot;color:olive;&quot;&gt;olive&lt;/span&gt;, and the fourth one
+        in &lt;span style=&quot;color:orange;&quot;&gt;orange&lt;/span&gt;.&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:5; columns:5; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1; color:green;&quot;&gt;
+                P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+                &lt;div style=&quot;-webkit-column-span:all; column-span:all; color:blue;&quot;&gt;PASS&lt;/div&gt;&lt;div style=&quot;-webkit-column-span:all; column-span:all; color:olive;&quot;&gt;PASS&lt;/div&gt;
+                &lt;span style=&quot;color:orange;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/span&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertspanner6html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner6.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner6.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner6.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert spanner after spanner between column rows&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                document.body.offsetTop; // trigger layout
+                elm.style.display = 'block';
+            }
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;There should be four lines below with the word &quot;PASS&quot;. Letter spacing is expected to
+        vary. The first line should be in &lt;span style=&quot;color:green;&quot;&gt;green&lt;/span&gt;. The second one
+        in &lt;span style=&quot;color:blue;&quot;&gt;blue&lt;/span&gt;, the third one
+        in &lt;span style=&quot;color:olive;&quot;&gt;olive&lt;/span&gt;, and the fourth one
+        in &lt;span style=&quot;color:orange;&quot;&gt;orange&lt;/span&gt;.&lt;/p&gt;
+        &lt;div style=&quot;float:left; overflow:hidden;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:5; columns:5; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1; color:green;&quot;&gt;
+                P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+                &lt;div style=&quot;-webkit-column-span:all; column-span:all; color:blue;&quot;&gt;PASS&lt;/div&gt;&lt;div id=&quot;elm&quot; style=&quot;display:none; -webkit-column-span:all; column-span:all; color:olive;&quot;&gt;PASS&lt;/div&gt;
+                &lt;span style=&quot;color:orange;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/span&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertspanner7expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner7-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner7-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner7-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert spanner after collapsable whitespace after spanner between column rows&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be four lines below with the word &quot;PASS&quot;. Letter spacing is expected to
+        vary. The first line should be in &lt;span style=&quot;color:green;&quot;&gt;green&lt;/span&gt;. The second one
+        in &lt;span style=&quot;color:blue;&quot;&gt;blue&lt;/span&gt;, the third one
+        in &lt;span style=&quot;color:olive;&quot;&gt;olive&lt;/span&gt;, and the fourth one
+        in &lt;span style=&quot;color:orange;&quot;&gt;orange&lt;/span&gt;.&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:5; columns:5; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1; color:green;&quot;&gt;
+                P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+                &lt;div style=&quot;-webkit-column-span:all; column-span:all; color:blue;&quot;&gt;PASS&lt;/div&gt;
+                &lt;div style=&quot;-webkit-column-span:all; column-span:all; color:olive;&quot;&gt;PASS&lt;/div&gt;
+                &lt;span style=&quot;color:orange;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/span&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertspanner7html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner7.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner7.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner7.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,30 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert spanner after collapsable whitespace after spanner between column rows&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                document.body.offsetTop; // trigger layout
+                elm.style.display = 'block';
+            }
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;There should be four lines below with the word &quot;PASS&quot;. Letter spacing is expected to
+        vary. The first line should be in &lt;span style=&quot;color:green;&quot;&gt;green&lt;/span&gt;. The second one
+        in &lt;span style=&quot;color:blue;&quot;&gt;blue&lt;/span&gt;, the third one
+        in &lt;span style=&quot;color:olive;&quot;&gt;olive&lt;/span&gt;, and the fourth one
+        in &lt;span style=&quot;color:orange;&quot;&gt;orange&lt;/span&gt;.&lt;/p&gt;
+        &lt;div style=&quot;float:left; overflow:hidden;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:5; columns:5; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1; color:green;&quot;&gt;
+                P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+                &lt;div style=&quot;-webkit-column-span:all; column-span:all; color:blue;&quot;&gt;PASS&lt;/div&gt;
+                &lt;div id=&quot;elm&quot; style=&quot;display:none; -webkit-column-span:all; column-span:all; color:olive;&quot;&gt;PASS&lt;/div&gt;
+                &lt;span style=&quot;color:orange;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/span&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertspanner8expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner8-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner8-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner8-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert spanner in empty multicol container&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;You should see the word 'PASS' below.&lt;/p&gt;
+        &lt;div style=&quot;float:left; overflow:hidden;&quot;&gt;
+            PASS
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolinsertspanner8html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner8.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner8.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/insert-spanner8.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Insert spanner in empty multicol container&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                document.body.offsetTop; // trigger layout
+                elm.style.display = 'block';
+            }
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;You should see the word 'PASS' below.&lt;/p&gt;
+        &lt;div style=&quot;float:left; overflow:hidden;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:3; columns:3;&quot;&gt;&lt;div id=&quot;elm&quot; style=&quot;display:none; -webkit-column-span:all; column-span:all;&quot;&gt;PASS&lt;/div&gt;&lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolmulticolwithspannerbecomesregularblockexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/multicol-with-spanner-becomes-regular-block-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/multicol-with-spanner-becomes-regular-block-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/multicol-with-spanner-becomes-regular-block-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Change multicol with spanner to regular block&lt;/title&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be a blue &lt;em&gt;square&lt;/em&gt; below.&lt;/p&gt;
+        &lt;div id=&quot;elm&quot; style=&quot;width:17em; line-height:4em;&quot;&gt;
+            &lt;div style=&quot;margin-top:100px; margin-left:1em;&quot;&gt;
+                &lt;div style=&quot;background:blue;&quot;&gt;&amp;nbsp;&lt;/div&gt;
+            &lt;/div&gt;
+            &lt;div style=&quot;margin-left:1em; background:blue;&quot;&gt;
+                &lt;br&gt;
+                &lt;br&gt;
+                &lt;br&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolmulticolwithspannerbecomesregularblockhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/multicol-with-spanner-becomes-regular-block.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/multicol-with-spanner-becomes-regular-block.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/multicol-with-spanner-becomes-regular-block.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Change multicol with spanner to regular block&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                elm.offsetTop; // trigger layout
+                elm.style.WebkitColumns = 'auto';
+                elm.style.columns = 'auto';
+            }
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;There should be a blue &lt;em&gt;square&lt;/em&gt; below.&lt;/p&gt;
+        &lt;div id=&quot;elm&quot; style=&quot;-webkit-columns:4; columns:4; orphans:1; widows:1; width:17em; line-height:4em;&quot;&gt;
+            &lt;div style=&quot;margin-top:100px; margin-left:1em;&quot;&gt;
+                &lt;div style=&quot;-webkit-column-span:all; column-span:all; background:blue;&quot;&gt;&amp;nbsp;&lt;/div&gt;
+            &lt;/div&gt;
+            &lt;div style=&quot;margin-left:1em; background:blue;&quot;&gt;
+                &lt;br&gt;
+                &lt;br&gt;
+                &lt;br&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolremoverowcontent1expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content1-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content1-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content1-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Remove some content from row after spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+        &lt;style&gt;
+            .spanner { -webkit-column-span:all; column-span:all; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be three lines below with the word &quot;PASS&quot;. Letter spacing is expected to vary&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1;&quot;&gt;
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+                P&lt;br&gt;P&lt;br&gt;A&lt;br&gt;
+                A&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolremoverowcontent1html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content1.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content1.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content1.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Remove some content from row after spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                elm.offsetTop; // trigger layout
+                elm.style.display = 'none';
+            }
+        &lt;/script&gt;
+        &lt;style&gt;
+            .spanner { -webkit-column-span:all; column-span:all; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;There should be three lines below with the word &quot;PASS&quot;. Letter spacing is expected to vary&lt;/p&gt;
+        &lt;div style=&quot;float:left; overflow:hidden;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1;&quot;&gt;
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+                P&lt;br&gt;P&lt;br&gt;A&lt;br&gt;
+                &lt;div id=&quot;elm&quot;&gt;FAIL&lt;/div&gt;
+                A&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolremoverowcontent2expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content2-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content2-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content2-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Remove all content from row after spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+        &lt;style&gt;
+            .spanner { -webkit-column-span:all; column-span:all; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;You should see the word &quot;PASS&quot; on a lime background below.&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1; background:lime;&quot;&gt;
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolremoverowcontent2html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content2.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content2.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content2.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Remove all content from row after spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                elm.offsetTop; // trigger layout
+                elm.style.display = 'none';
+            }
+        &lt;/script&gt;
+        &lt;style&gt;
+            .spanner { -webkit-column-span:all; column-span:all; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;You should see the word &quot;PASS&quot; on a lime background below.&lt;/p&gt;
+        &lt;div style=&quot;float:left; overflow:hidden;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1; background:lime;&quot;&gt;
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;&lt;div id=&quot;elm&quot;&gt;F&lt;br&gt;A&lt;br&gt;I&lt;br&gt;L&lt;/div&gt;&lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolremoverowcontent3expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content3-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content3-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content3-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Remove some content from row before spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+        &lt;style&gt;
+            .spanner { -webkit-column-span:all; column-span:all; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be three lines below with the word &quot;PASS&quot;. Letter spacing is expected to vary&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1;&quot;&gt;
+                P&lt;br&gt;P&lt;br&gt;A&lt;br&gt;
+                A&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolremoverowcontent3html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content3.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content3.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content3.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Remove some content from row before spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                elm.offsetTop; // trigger layout
+                elm.style.display = 'none';
+            }
+        &lt;/script&gt;
+        &lt;style&gt;
+            .spanner { -webkit-column-span:all; column-span:all; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;There should be three lines below with the word &quot;PASS&quot;. Letter spacing is expected to vary&lt;/p&gt;
+        &lt;div style=&quot;float:left; overflow:hidden;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1;&quot;&gt;
+                P&lt;br&gt;P&lt;br&gt;A&lt;br&gt;
+                &lt;div id=&quot;elm&quot;&gt;FAIL&lt;/div&gt;
+                A&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolremoverowcontent4expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content4-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content4-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content4-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Remove all content from row before spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+        &lt;style&gt;
+            .spanner { -webkit-column-span:all; column-span:all; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;You should see the word &quot;PASS&quot; on a lime background below.&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1; background:lime;&quot;&gt;
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolremoverowcontent4html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content4.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content4.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content4.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Remove all content from row before spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                elm.offsetTop; // trigger layout
+                elm.style.display = 'none';
+            }
+        &lt;/script&gt;
+        &lt;style&gt;
+            .spanner { -webkit-column-span:all; column-span:all; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;You should see the word &quot;PASS&quot; on a lime background below.&lt;/p&gt;
+        &lt;div style=&quot;float:left; overflow:hidden;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1; background:lime;&quot;&gt;&lt;div id=&quot;elm&quot;&gt;F&lt;br&gt;A&lt;br&gt;I&lt;br&gt;L&lt;/div&gt;&lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolremoverowcontent5expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content5-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content5-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content5-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,24 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Remove some content from row between spanners&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+        &lt;style&gt;
+            .spanner { -webkit-column-span:all; column-span:all; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be four lines below with the word &quot;PASS&quot;. Letter spacing is expected to vary&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1;&quot;&gt;
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+                P&lt;br&gt;P&lt;br&gt;A&lt;br&gt;
+                A&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolremoverowcontent5html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content5.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content5.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content5.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,30 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Remove some content from row between spanners&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                elm.offsetTop; // trigger layout
+                elm.style.display = 'none';
+            }
+        &lt;/script&gt;
+        &lt;style&gt;
+            .spanner { -webkit-column-span:all; column-span:all; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;There should be four lines below with the word &quot;PASS&quot;. Letter spacing is expected to vary&lt;/p&gt;
+        &lt;div style=&quot;float:left; overflow:hidden;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1;&quot;&gt;
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+                P&lt;br&gt;P&lt;br&gt;A&lt;br&gt;
+                &lt;div id=&quot;elm&quot;&gt;FAIL&lt;/div&gt;
+                A&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolremoverowcontent6expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content6-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content6-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content6-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Remove all content from row before spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+        &lt;style&gt;
+            .spanner { -webkit-column-span:all; column-span:all; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;You should see two lines with the word &quot;PASS&quot; on a lime background below.&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1; background:lime;&quot;&gt;
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;&lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolremoverowcontent6html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content6.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content6.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content6.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Remove all content from row before spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                elm.offsetTop; // trigger layout
+                elm.style.display = 'none';
+            }
+        &lt;/script&gt;
+        &lt;style&gt;
+            .spanner { -webkit-column-span:all; column-span:all; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;You should see two lines with the word &quot;PASS&quot; on a lime background below.&lt;/p&gt;
+        &lt;div style=&quot;float:left; overflow:hidden;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1; background:lime;&quot;&gt;
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;&lt;div id=&quot;elm&quot;&gt;F&lt;br&gt;A&lt;br&gt;I&lt;br&gt;L&lt;/div&gt;&lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolremoverowcontent7expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content7-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content7-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content7-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Remove all content from row after spanner, then insert some content there&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+        &lt;style&gt;
+            .spanner { -webkit-column-span:all; column-span:all; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;You should see two lines with the word &quot;PASS&quot; on a lime background below.&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1; background:lime;&quot;&gt;
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+                &lt;div&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolremoverowcontent7html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content7.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content7.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content7.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Remove all content from row after spanner, then insert some content there&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                document.body.offsetTop; // trigger layout
+                var elm = document.getElementById('elm');
+                elm.style.display = 'none';
+                document.body.offsetTop; // trigger layout
+                var elm2 = document.getElementById('elm2');
+                elm2.style.display = 'block';
+            }
+        &lt;/script&gt;
+        &lt;style&gt;
+            .spanner { -webkit-column-span:all; column-span:all; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;You should see two lines with the word &quot;PASS&quot; on a lime background below.&lt;/p&gt;
+        &lt;div style=&quot;float:left; overflow:hidden;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1; background:lime;&quot;&gt;
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;&lt;div id=&quot;elm&quot; style=&quot;background:red;&quot;&gt;F&lt;br&gt;A&lt;br&gt;I&lt;br&gt;L&lt;/div&gt;&lt;div id=&quot;elm2&quot; style=&quot;display:none;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;&lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolremoverowcontent8expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content8-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content8-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content8-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Remove all content from row before spanner, then insert some content there&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+        &lt;style&gt;
+            .spanner { -webkit-column-span:all; column-span:all; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;You should see two lines with the word &quot;PASS&quot; on a lime background below.&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1; background:lime;&quot;&gt;
+                &lt;div&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolremoverowcontent8html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content8.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content8.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content8.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Remove all content from row before spanner, then insert some content there&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                document.body.offsetTop; // trigger layout
+                var elm = document.getElementById('elm');
+                elm.style.display = 'none';
+                document.body.offsetTop; // trigger layout
+                var elm2 = document.getElementById('elm2');
+                elm2.style.display = 'block';
+            }
+        &lt;/script&gt;
+        &lt;style&gt;
+            .spanner { -webkit-column-span:all; column-span:all; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;You should see two lines with the word &quot;PASS&quot; on a lime background below.&lt;/p&gt;
+        &lt;div style=&quot;float:left; overflow:hidden;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1; background:lime;&quot;&gt;&lt;div id=&quot;elm&quot; style=&quot;background:red;&quot;&gt;F&lt;br&gt;A&lt;br&gt;I&lt;br&gt;L&lt;/div&gt;&lt;div id=&quot;elm2&quot; style=&quot;display:none;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;&lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolremoverowcontent9expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content9-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content9-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content9-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Remove all content from row between spanners, then insert some content there&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+        &lt;style&gt;
+            .spanner { -webkit-column-span:all; column-span:all; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;You should see three lines with the word &quot;PASS&quot; on a lime background below.&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1; background:lime;&quot;&gt;
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+                &lt;div&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;
+                &lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolremoverowcontent9html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content9.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content9.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/remove-row-content9.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Remove all content from row between spanners, then insert some content there&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                document.body.offsetTop; // trigger layout
+                var elm = document.getElementById('elm');
+                elm.style.display = 'none';
+                document.body.offsetTop; // trigger layout
+                var elm2 = document.getElementById('elm2');
+                elm2.style.display = 'block';
+            }
+        &lt;/script&gt;
+        &lt;style&gt;
+            .spanner { -webkit-column-span:all; column-span:all; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;You should see three lines with the word &quot;PASS&quot; on a lime background below.&lt;/p&gt;
+        &lt;div style=&quot;float:left; overflow:hidden;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1; background:lime;&quot;&gt;&lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;&lt;div id=&quot;elm&quot; style=&quot;background:red;&quot;&gt;F&lt;br&gt;A&lt;br&gt;I&lt;br&gt;L&lt;/div&gt;&lt;div id=&quot;elm2&quot; style=&quot;display:none;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;&lt;div class=&quot;spanner&quot;&gt;PASS&lt;/div&gt;&lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolremovespanner1expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner1-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner1-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner1-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Remove spanner between column rows&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be three columns with a total line count of 8. The three first lines should
+        read &quot;before&quot;. The fourth should read &quot;before after&quot;. The last four should read &quot;after&quot;:&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:3; columns:3; orphans:1; widows:1;&quot;&gt;
+            before&lt;br&gt;before&lt;br&gt;before&lt;br&gt;before
+            after&lt;br&gt;after&lt;br&gt;after&lt;br&gt;after&lt;br&gt;after&lt;br&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolremovespanner1html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner1.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner1.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner1.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,24 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Remove spanner between column rows&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                elm.offsetTop; // trigger layout
+                elm.style.display = 'none';
+            }
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;There should be three columns with a total line count of 8. The three first lines should
+        read &quot;before&quot;. The fourth should read &quot;before after&quot;. The last four should read &quot;after&quot;:&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:3; columns:3; orphans:1; widows:1;&quot;&gt;
+            before&lt;br&gt;before&lt;br&gt;before&lt;br&gt;before
+            &lt;div id=&quot;elm&quot; style=&quot;-webkit-column-span:all; column-span:all;&quot;&gt;&lt;/div&gt;
+            after&lt;br&gt;after&lt;br&gt;after&lt;br&gt;after&lt;br&gt;after&lt;br&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolremovespanner2expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner2-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner2-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner2-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Remove spanner before column row&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be a black square below, and nothing else.&lt;/p&gt;
+        &lt;div style=&quot;width:10em; height:10em; color:black; background:black;&quot;&gt;&lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolremovespanner2html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner2.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner2.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner2.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Remove spanner before column row&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                elm.offsetTop; // trigger layout
+                elm.style.display = 'none';
+            }
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;There should be a black square below, and nothing else.&lt;/p&gt;
+        &lt;div style=&quot;width:32em;&quot;&gt;
+            &lt;div style=&quot;width:10em; height:5em; color:black; background:black;&quot;&gt;&lt;/div&gt;
+            &lt;div style=&quot;-webkit-columns:3; columns:3; -webkit-column-gap:1em; column-gap:1em; line-height:5em; orphans:1; widows:1;&quot;&gt;
+                &lt;div id=&quot;elm&quot; style=&quot;-webkit-column-span:all; column-span:all;&quot;&gt;x&lt;/div&gt;
+                &lt;div style=&quot;color:black; background:black;&quot;&gt;x&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolremovespanner3expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner3-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner3-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner3-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Remove spanner after column row&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be a black square below, and nothing else.&lt;/p&gt;
+        &lt;div style=&quot;width:10em; height:10em; color:black; background:black;&quot;&gt;&lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolremovespanner3html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner3.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner3.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner3.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Remove spanner after column row&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                elm.offsetTop; // trigger layout
+                elm.style.display = 'none';
+            }
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;There should be a black square below, and nothing else.&lt;/p&gt;
+        &lt;div style=&quot;width:32em;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:3; columns:3; -webkit-column-gap:1em; column-gap:1em; line-height:5em; orphans:1; widows:1;&quot;&gt;
+                &lt;div style=&quot;color:black; background:black;&quot;&gt;x&lt;/div&gt;
+                &lt;div id=&quot;elm&quot; style=&quot;-webkit-column-span:all; column-span:all;&quot;&gt;x&lt;/div&gt;
+            &lt;/div&gt;
+            &lt;div style=&quot;width:10em; height:5em; color:black; background:black;&quot;&gt;&lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolremovespanner4expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner4-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner4-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner4-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Turn spanner between column rows into regular block&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;You should see the word 'PASS' below:&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1;&quot;&gt;
+                P
+                &lt;div&gt;A&lt;/div&gt;
+                S&lt;br&gt;S
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolremovespanner4html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner4.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner4.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner4.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Turn spanner between column rows into regular block&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                elm.offsetTop; // trigger layout
+                elm.style.webkitColumnSpan = '1';
+                elm.style.columnSpan = '1';
+            }
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;You should see the word 'PASS' below:&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1;&quot;&gt;
+                P
+                &lt;div id=&quot;elm&quot; style=&quot;-webkit-column-span:all; column-span:all;&quot;&gt;A&lt;/div&gt;
+                S&lt;br&gt;S
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolremovespanner5expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner5-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner5-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner5-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Turn spanner before column row into regular block&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;You should see the word 'PASS' below:&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1;&quot;&gt;
+                &lt;div&gt;P&lt;/div&gt;
+                A&lt;br&gt;S&lt;br&gt;S
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolremovespanner5html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner5.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner5.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner5.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Turn spanner before column row into regular block&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                elm.offsetTop; // trigger layout
+                elm.style.webkitColumnSpan = '1';
+                elm.style.columnSpan = '1';
+            }
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;You should see the word 'PASS' below:&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1;&quot;&gt;
+                &lt;div id=&quot;elm&quot; style=&quot;-webkit-column-span:all; column-span:all;&quot;&gt;P&lt;/div&gt;
+                A&lt;br&gt;S&lt;br&gt;S
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolremovespanner6expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner6-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner6-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner6-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Turn spanner after column row into regular block&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;You should see the word 'PASS' below:&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1;&quot;&gt;
+                P&lt;br&gt;A
+                &lt;div&gt;S&lt;br&gt;S&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolremovespanner6html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner6.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner6.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/remove-spanner6.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Turn spanner after column row into regular block&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                elm.offsetTop; // trigger layout
+                elm.style.webkitColumnSpan = '1';
+                elm.style.columnSpan = '1';
+            }
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;You should see the word 'PASS' below:&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; column-gap:0; -webkit-column-gap:0; orphans:1; widows:1;&quot;&gt;
+                P&lt;br&gt;A
+                &lt;div id=&quot;elm&quot; style=&quot;-webkit-column-span:all; column-span:all;&quot;&gt;S&lt;br&gt;S&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolsolespannerexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/sole-spanner-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/sole-spanner-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/sole-spanner-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Column-span:all and nothing else&lt;/title&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;You should see the word 'PASS' on a green background below&lt;/p&gt;
+        &lt;div style=&quot;width:5em; background:green;&quot;&gt;
+            &lt;div style=&quot;-webkit-column-span:all; column-span:all;&quot;&gt;PASS&lt;br&gt;&amp;nbsp;&lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolsolespannerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/sole-spanner.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/sole-spanner.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/sole-spanner.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Column-span:all and nothing else&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;You should see the word 'PASS' on a green background below&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:10; columns:10; -webkit-column-gap:0; column-gap:0; -webkit-column-rule:1px solid pink; column-rule:1px solid pink; width:5em; background:green;&quot;&gt;
+            &lt;div style=&quot;background:red;&quot;&gt;
+                &lt;div style=&quot;-webkit-column-span:all; column-span:all;&quot;&gt;PASS&lt;br&gt;&amp;nbsp;&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspanbetweentextexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/span-between-text-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/span-between-text-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/span-between-text-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Column-span:all between text nodes&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be two lines of text below (not horizontally aligned):&lt;/p&gt;
+        &lt;div style=&quot;float:left; width:5em; height:1px;&quot;&gt;&lt;/div&gt;line1&lt;br&gt;
+        line2
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspanbetweentexthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/span-between-text.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/span-between-text.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/span-between-text.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Column-span:all between text nodes&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be two lines of text below (not horizontally aligned):&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:3; columns:3; -webkit-column-gap:0; column-gap:0; width:15em; orphans:1; widows:1;&quot;&gt;
+            &lt;br&gt;line1
+            &lt;div style=&quot;-webkit-column-span:all; column-span:all;&quot;&gt;&lt;/div&gt;
+            line2
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerbecomesregularblockexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-becomes-regular-block-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-becomes-regular-block-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-becomes-regular-block-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,24 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner that ceases to be one&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;You should see the word &quot;PASS&quot; below.&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:2; columns:2; -webkit-column-gap:0; column-gap:0; orphans:1; widows:1; background:blue;&quot;&gt;
+                &lt;div style=&quot;margin-top:0.5em;&quot;&gt;
+                    &lt;div id=&quot;elm&quot; style=&quot;margin-top:0.2em; background:yellow;&quot;&gt;
+                        PA&lt;br&gt;
+                        &lt;div style=&quot;height:0.5em; background:blue;&quot;&gt;&lt;/div&gt;
+                        SS
+                    &lt;/div&gt;
+                &lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerbecomesregularblockhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-becomes-regular-block.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-becomes-regular-block.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-becomes-regular-block.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,30 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner that ceases to be one&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                document.body.offsetTop; // trigger layout
+                elm.style.webkitColumnSpan = '1';
+                elm.style.columnSpan = '1';
+            }
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;You should see the word &quot;PASS&quot; below.&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:2; columns:2; -webkit-column-gap:0; column-gap:0; orphans:1; widows:1; background:blue;&quot;&gt;
+                &lt;div style=&quot;margin-top:0.5em;&quot;&gt;
+                    &lt;div id=&quot;elm&quot; style=&quot;-webkit-column-span:all; column-span:all; margin-top:0.2em; background:yellow;&quot;&gt;
+                        PA&lt;br&gt;
+                        &lt;div style=&quot;height:0.5em; background:blue;&quot;&gt;&lt;/div&gt;
+                        SS
+                    &lt;/div&gt;
+                &lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerfirstexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-first-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-first-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-first-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Column-span:all, then columns&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;You should see the word 'PASS' twice below (letter spacing will differ), and no red:&lt;/p&gt;
+        &lt;div style=&quot;-webkit-column-span:all; column-span:all;&quot;&gt;PASS&lt;br&gt;&amp;nbsp;&lt;/div&gt;
+        &lt;div style=&quot;-webkit-columns:4; columns:4; -webkit-column-gap:0; column-gap:0; width:4em;&quot;&gt;
+            P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerfirsthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-first.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-first.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-first.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Column-span:all, then columns&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;You should see the word 'PASS' twice below (letter spacing will differ), and no red:&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:4; columns:4; -webkit-column-gap:0; column-gap:0; width:4em;&quot;&gt;
+            &lt;div style=&quot;background:red;&quot;&gt;
+                &lt;div style=&quot;-webkit-column-span:all; column-span:all;&quot;&gt;PASS&lt;br&gt;&amp;nbsp;&lt;/div&gt;
+            &lt;/div&gt;
+            P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerimgexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-img-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-img-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-img-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Image as spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;Below you should see the word 'PASS', then an image of a blimp, then the word 'PASS' again:&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:9; columns:9; -webkit-column-gap:0; column-gap:0; width:10em;&quot;&gt;
+            P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+        &lt;/div&gt;
+        &lt;div style=&quot;width:10em;&quot;&gt;
+            &lt;img src=&quot;../resources/blimp.png&quot; style=&quot;display:block; width:70%; margin:1em auto;&quot; alt=&quot;ref-error&quot;&gt;
+        &lt;/div&gt;
+        &lt;div style=&quot;-webkit-columns:9; columns:9; -webkit-column-gap:0; column-gap:0; width:10em;&quot;&gt;
+            P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerimghtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-img.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-img.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-img.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Image as spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;Below you should see the word 'PASS', then an image of a blimp, then the word 'PASS' again:&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:9; columns:9; -webkit-column-gap:0; column-gap:0; width:10em;&quot;&gt;
+            P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+            &lt;div style=&quot;background:red;&quot;&gt;
+                &lt;img src=&quot;../resources/blimp.png&quot; style=&quot;display:block; width:70%; margin:1em auto; -webkit-column-span:all; column-span:all;&quot; alt=&quot;error&quot;&gt;
+            &lt;/div&gt;
+            P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerinlineblockexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-inline-block-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-inline-block-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-inline-block-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,13 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Inline-block as spanner (not allowed)&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be nothing below.&lt;/p&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerinlineblockhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-inline-block.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-inline-block.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-inline-block.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Inline-block as spanner (not allowed)&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be nothing below.&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:6; columns:6; -webkit-column-gap:0; column-gap:0; width:4em; overflow:hidden;&quot;&gt;
+            &lt;div style=&quot;display:inline-block; -webkit-column-span:all; column-span:all; margin-left:1em;&quot;&gt;
+                FAIL
+            &lt;/div&gt;
+            &lt;br&gt;&lt;br&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerlastexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-last-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-last-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-last-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Columns, then column-span:all&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;You should see the word 'PASS' twice below (letter spacing will differ), and no red:&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:4; columns:4; -webkit-column-gap:0; column-gap:0; width:4em;&quot;&gt;
+            P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+        &lt;/div&gt;
+        &lt;div style=&quot;-webkit-column-span:all; column-span:all;&quot;&gt;PASS&lt;br&gt;&amp;nbsp;&lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerlasthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-last.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-last.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-last.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Columns, then column-span:all&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;You should see the word 'PASS' twice below (letter spacing will differ), and no red:&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:4; columns:4; -webkit-column-gap:0; column-gap:0; width:4em;&quot;&gt;
+            P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+            &lt;div style=&quot;background:red;&quot;&gt;
+                &lt;div style=&quot;-webkit-column-span:all; column-span:all;&quot;&gt;PASS&lt;br&gt;&amp;nbsp;&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannernesteddynamicexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-nested-dynamic-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-nested-dynamic-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-nested-dynamic-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,13 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Nested spanner (not allowed)&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be nothing below.&lt;/p&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannernesteddynamichtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-nested-dynamic.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-nested-dynamic.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-nested-dynamic.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Nested spanner (not allowed)&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                var elm = document.getElementById('elm');
+                elm.offsetTop; // trigger layout
+                elm.style.WebkitColumns = '6';
+                elm.style.columns = '6';
+            }
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;There should be nothing below.&lt;/p&gt;
+        &lt;div id=&quot;elm&quot; style=&quot;-webkit-column-gap:0; column-gap:0; width:4em; overflow:hidden;&quot;&gt;
+            &lt;div style=&quot;-webkit-column-span:all; column-span:all; padding-left:4em;&quot;&gt;
+                &lt;div style=&quot;-webkit-column-span:all; column-span:all;&quot;&gt;
+                    FAIL
+                &lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannernestedexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-nested-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-nested-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-nested-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,13 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Nested spanner (not allowed)&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be nothing below.&lt;/p&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannernestedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-nested.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-nested.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-nested.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Nested spanner (not allowed)&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be nothing below.&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:6; columns:6; -webkit-column-gap:0; column-gap:0; width:4em; overflow:hidden;&quot;&gt;
+            &lt;div style=&quot;-webkit-column-span:all; column-span:all; padding-left:4em;&quot;&gt;
+                &lt;div style=&quot;-webkit-column-span:all; column-span:all;&quot;&gt;
+                    FAIL
+                &lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerpseudoafter1expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-after1-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-after1-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-after1-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner as ::after pseudo element&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be two rectangles with identical sizes below. The first one should be blue
+        with nothing inside. The second one should be yellow with some dots inside.&lt;/p&gt;
+        &lt;div style=&quot;line-height:100px; background:blue;&quot;&gt;
+            &amp;nbsp;
+            &lt;div style=&quot;background:yellow;&quot;&gt;..........&lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerpseudoafter1html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-after1.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-after1.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-after1.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner as ::after pseudo element&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+        &lt;style&gt;
+            #elm::after { display:block; -webkit-column-span:all; column-span:all; background:yellow; content:&quot;..........&quot;; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be two rectangles with identical sizes below. The first one should be blue
+        with nothing inside. The second one should be yellow with some dots inside.&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:4; columns:4; orphans:1; widows:1; line-height:100px; background:blue;&quot;&gt;
+            &lt;span id=&quot;elm&quot;&gt;&amp;nbsp;&lt;/span&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerpseudoafter2expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-after2-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-after2-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-after2-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner as ::after pseudo element&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be three rectangles with identical sizes below. The first and third one
+        should be blue with nothing inside. The second one should be yellow with some dots
+        inside.&lt;/p&gt;
+        &lt;div style=&quot;line-height:100px; background:blue;&quot;&gt;
+            &amp;nbsp;
+            &lt;div style=&quot;background:yellow;&quot;&gt;..........&lt;/div&gt;
+            &amp;nbsp;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerpseudoafter2html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-after2.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-after2.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-after2.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner as ::after pseudo element&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+        &lt;style&gt;
+            #elm::after { display:block; -webkit-column-span:all; column-span:all; background:yellow; content:&quot;..........&quot;; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be three rectangles with identical sizes below. The first and third one
+        should be blue with nothing inside. The second one should be yellow with some dots
+        inside.&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:4; columns:4; orphans:1; widows:1; line-height:100px; background:blue;&quot;&gt;
+            &lt;span id=&quot;elm&quot;&gt;&amp;nbsp;&lt;/span&gt;
+            &amp;nbsp;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerpseudoafter3expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-after3-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-after3-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-after3-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner as ::after pseudo element&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+        &lt;style&gt;
+            .x::after { display:block; -webkit-column-span:all; column-span:all; background:yellow; content:&quot;..........&quot;; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be two rectangles with identical sizes below. The first one should be blue
+        with nothing inside. The second one should be yellow with some dots inside.&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:4; columns:4; orphans:1; widows:1; line-height:100px; background:blue;&quot;&gt;
+            &lt;span class=&quot;x&quot;&gt;&amp;nbsp;&lt;/span&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerpseudoafter3html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-after3.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-after3.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-after3.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,24 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner as ::after pseudo element&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                document.body.offsetTop; // trigger layout
+                document.getElementById('elm').className = &quot;x&quot;;
+            }
+        &lt;/script&gt;
+        &lt;style&gt;
+            .x::after { display:block; -webkit-column-span:all; column-span:all; background:yellow; content:&quot;..........&quot;; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;There should be two rectangles with identical sizes below. The first one should be blue
+        with nothing inside. The second one should be yellow with some dots inside.&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:4; columns:4; orphans:1; widows:1; line-height:100px; background:blue;&quot;&gt;
+            &lt;span id=&quot;elm&quot;&gt;&amp;nbsp;&lt;/span&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerpseudoafter4expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-after4-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-after4-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-after4-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner as ::after pseudo element&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+        &lt;style&gt;
+            .x::after { display:block; -webkit-column-span:all; column-span:all; background:yellow; content:&quot;..........&quot;; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be three rectangles with identical sizes below. The first and third one
+        should be blue with nothing inside. The second one should be yellow with some dots
+        inside.&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:4; columns:4; orphans:1; widows:1; line-height:100px; background:blue;&quot;&gt;
+            &lt;span class=&quot;x&quot;&gt;&amp;nbsp;&lt;/span&gt;
+            &amp;nbsp;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerpseudoafter4html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-after4.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-after4.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-after4.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner as ::after pseudo element&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                document.body.offsetTop; // trigger layout
+                document.getElementById('elm').className = &quot;x&quot;;
+            }
+        &lt;/script&gt;
+        &lt;style&gt;
+            .x::after { display:block; -webkit-column-span:all; column-span:all; background:yellow; content:&quot;..........&quot;; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;There should be three rectangles with identical sizes below. The first and third one
+        should be blue with nothing inside. The second one should be yellow with some dots
+        inside.&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:4; columns:4; orphans:1; widows:1; line-height:100px; background:blue;&quot;&gt;
+            &lt;span id=&quot;elm&quot;&gt;&amp;nbsp;&lt;/span&gt;
+            &amp;nbsp;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerpseudobeforeafter1expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before-after1-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before-after1-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before-after1-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner as ::before and ::after pseudo elements&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be three rectangles with identical sizes below. The first and third one
+        should be yellow with some dots inside. The second one should be blue with nothing
+        inside.&lt;/p&gt;
+        &lt;div style=&quot;line-height:100px; background:blue;&quot;&gt;
+            &lt;div style=&quot;background:yellow;&quot;&gt;..........&lt;/div&gt;
+            &amp;nbsp;
+            &lt;div style=&quot;background:yellow;&quot;&gt;..........&lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerpseudobeforeafter1html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before-after1.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before-after1.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before-after1.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner as ::before and ::after pseudo elements&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+        &lt;style&gt;
+            #elm::before, #elm::after { display:block; -webkit-column-span:all; column-span:all; background:yellow; content:&quot;..........&quot;; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be three rectangles with identical sizes below. The first and third one
+        should be yellow with some dots inside. The second one should be blue with nothing
+        inside.&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:4; columns:4; orphans:1; widows:1; line-height:100px; background:blue;&quot;&gt;
+            &lt;span id=&quot;elm&quot;&gt;&amp;nbsp;&lt;/span&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerpseudobeforeafter2expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before-after2-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before-after2-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before-after2-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner as ::before and ::after pseudo elements&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be five rectangles with identical sizes below. The first, third and fifth
+        one should be blue with nothing inside. The second and fourth one should be yellow with some
+        dots inside.&lt;/p&gt;
+        &lt;div style=&quot;line-height:100px; background:blue;&quot;&gt;
+            &amp;nbsp;
+            &lt;div style=&quot;background:yellow;&quot;&gt;..........&lt;/div&gt;
+            &amp;nbsp;
+            &lt;div style=&quot;background:yellow;&quot;&gt;..........&lt;/div&gt;
+            &amp;nbsp;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerpseudobeforeafter2html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before-after2.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before-after2.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before-after2.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner as ::before and ::after pseudo elements&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+        &lt;style&gt;
+            #elm::before, #elm::after { display:block; -webkit-column-span:all; column-span:all; background:yellow; content:&quot;..........&quot;; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be five rectangles with identical sizes below. The first, third and fifth
+        one should be blue with nothing inside. The second and fourth one should be yellow with some
+        dots inside.&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:4; columns:4; orphans:1; widows:1; line-height:100px; background:blue;&quot;&gt;
+            &amp;nbsp;
+            &lt;span id=&quot;elm&quot;&gt;&amp;nbsp;&lt;/span&gt;
+            &amp;nbsp;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerpseudobeforeafter3expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before-after3-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before-after3-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before-after3-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner as ::after pseudo element&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+        &lt;style&gt;
+            .x::before, .x::after { display:block; -webkit-column-span:all; column-span:all; background:yellow; content:&quot;..........&quot;; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be three rectangles with identical sizes below. The first and third one
+        should be yellow with some dots inside. The second one should be blue with nothing
+        inside.&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:4; columns:4; orphans:1; widows:1; line-height:100px; background:blue;&quot;&gt;
+            &lt;span class=&quot;x&quot;&gt;&amp;nbsp;&lt;/span&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerpseudobeforeafter3html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before-after3.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before-after3.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before-after3.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner as ::after pseudo element&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                document.body.offsetTop; // trigger layout
+                document.getElementById('elm').className = &quot;x&quot;;
+            }
+        &lt;/script&gt;
+        &lt;style&gt;
+            .x::before, .x::after { display:block; -webkit-column-span:all; column-span:all; background:yellow; content:&quot;..........&quot;; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;There should be three rectangles with identical sizes below. The first and third one
+        should be yellow with some dots inside. The second one should be blue with nothing
+        inside.&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:4; columns:4; orphans:1; widows:1; line-height:100px; background:blue;&quot;&gt;
+            &lt;span id=&quot;elm&quot;&gt;&amp;nbsp;&lt;/span&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerpseudobeforeafter4expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before-after4-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before-after4-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before-after4-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner as ::before and ::after pseudo elements&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+        &lt;style&gt;
+            .x::before, .x::after { display:block; -webkit-column-span:all; column-span:all; background:yellow; content:&quot;..........&quot;; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be five rectangles with identical sizes below. The first, third and fifth
+        one should be blue with nothing inside. The second and fourth one should be yellow with some
+        dots inside.&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:4; columns:4; orphans:1; widows:1; line-height:100px; background:blue;&quot;&gt;
+            &amp;nbsp;
+            &lt;span class=&quot;x&quot;&gt;&amp;nbsp;&lt;/span&gt;
+            &amp;nbsp;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerpseudobeforeafter4html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before-after4.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before-after4.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before-after4.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner as ::before and ::after pseudo elements&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                document.body.offsetTop; // trigger layout
+                document.getElementById('elm').className = &quot;x&quot;;
+            }
+        &lt;/script&gt;
+        &lt;style&gt;
+            .x::before, .x::after { display:block; -webkit-column-span:all; column-span:all; background:yellow; content:&quot;..........&quot;; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;There should be five rectangles with identical sizes below. The first, third and fifth
+        one should be blue with nothing inside. The second and fourth one should be yellow with some
+        dots inside.&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:4; columns:4; orphans:1; widows:1; line-height:100px; background:blue;&quot;&gt;
+            &amp;nbsp;
+            &lt;span id=&quot;elm&quot;&gt;&amp;nbsp;&lt;/span&gt;
+            &amp;nbsp;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerpseudobefore1expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before1-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before1-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before1-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner as ::before pseudo element&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be two rectangles with identical sizes below. The first one should be yellow
+        with some dots inside. The second one should be blue with nothing inside.&lt;/p&gt;
+        &lt;div style=&quot;line-height:100px; background:blue;&quot;&gt;
+            &lt;div style=&quot;background:yellow;&quot;&gt;..........&lt;/div&gt;
+            &amp;nbsp;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerpseudobefore1html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before1.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before1.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before1.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner as ::before pseudo element&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+        &lt;style&gt;
+            #elm::before { display:block; -webkit-column-span:all; column-span:all; background:yellow; content:&quot;..........&quot;; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be two rectangles with identical sizes below. The first one should be yellow
+        with some dots inside. The second one should be blue with nothing inside.&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:4; columns:4; orphans:1; widows:1; line-height:100px; background:blue;&quot;&gt;
+            &lt;span id=&quot;elm&quot;&gt;&amp;nbsp;&lt;/span&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerpseudobefore2expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before2-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before2-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before2-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner as ::before pseudo element&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be three rectangles with identical sizes below. The first and third one
+        should be blue with nothing inside. The second one should be yellow with some dots
+        inside.&lt;/p&gt;
+        &lt;div style=&quot;line-height:100px; background:blue;&quot;&gt;
+            &amp;nbsp;
+            &lt;div style=&quot;background:yellow;&quot;&gt;..........&lt;/div&gt;
+            &amp;nbsp;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerpseudobefore2html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before2.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before2.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before2.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner as ::before pseudo element&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+        &lt;style&gt;
+            #elm::before { display:block; -webkit-column-span:all; column-span:all; background:yellow; content:&quot;..........&quot;; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be three rectangles with identical sizes below. The first and third one
+        should be blue with nothing inside. The second one should be yellow with some dots
+        inside.&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:4; columns:4; orphans:1; widows:1; line-height:100px; background:blue;&quot;&gt;
+            &lt;span&gt;&amp;nbsp;&lt;/span&gt;
+            &lt;span id=&quot;elm&quot;&gt;&amp;nbsp;&lt;/span&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerpseudobefore3expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before3-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before3-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before3-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner as ::before pseudo element&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+        &lt;style&gt;
+            .x::before { display:block; -webkit-column-span:all; column-span:all; background:yellow; content:&quot;..........&quot;; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be two rectangles with identical sizes below. The first one should be yellow
+        with some dots inside. The second one should be blue with nothing inside.&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:4; columns:4; orphans:1; widows:1; line-height:100px; background:blue;&quot;&gt;
+            &lt;span class=&quot;x&quot;&gt;&amp;nbsp;&lt;/span&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerpseudobefore3html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before3.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before3.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before3.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,24 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner as ::before pseudo element&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                document.body.offsetTop; // trigger layout
+                document.getElementById('elm').className = &quot;x&quot;;
+            }
+        &lt;/script&gt;
+        &lt;style&gt;
+            .x::before { display:block; -webkit-column-span:all; column-span:all; background:yellow; content:&quot;..........&quot;; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;There should be two rectangles with identical sizes below. The first one should be yellow
+        with some dots inside. The second one should be blue with nothing inside.&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:4; columns:4; orphans:1; widows:1; line-height:100px; background:blue;&quot;&gt;
+            &lt;span id=&quot;elm&quot;&gt;&amp;nbsp;&lt;/span&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerpseudobefore4expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before4-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before4-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before4-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner as ::before pseudo element&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+        &lt;style&gt;
+            .x::before { display:block; -webkit-column-span:all; column-span:all; background:yellow; content:&quot;..........&quot;; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be three rectangles with identical sizes below. The first and third one
+        should be blue with nothing inside. The second one should be yellow with some dots
+        inside.&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:4; columns:4; orphans:1; widows:1; line-height:100px; background:blue;&quot;&gt;
+            &lt;span&gt;&amp;nbsp;&lt;/span&gt;
+            &lt;span class=&quot;x&quot;&gt;&amp;nbsp;&lt;/span&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerpseudobefore4html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before4.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before4.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-pseudo-before4.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner as ::before pseudo element&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+            function test() {
+                document.body.offsetTop; // trigger layout
+                document.getElementById('elm').className = &quot;x&quot;;
+            }
+        &lt;/script&gt;
+        &lt;style&gt;
+            .x::before { display:block; -webkit-column-span:all; column-span:all; background:yellow; content:&quot;..........&quot;; }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;test()&quot;&gt;
+        &lt;p&gt;There should be three rectangles with identical sizes below. The first and third one
+        should be blue with nothing inside. The second one should be yellow with some dots
+        inside.&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:4; columns:4; orphans:1; widows:1; line-height:100px; background:blue;&quot;&gt;
+            &lt;span&gt;&amp;nbsp;&lt;/span&gt;
+            &lt;span id=&quot;elm&quot;&gt;&amp;nbsp;&lt;/span&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannertableexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-table-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-table-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-table-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Table as spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;Below you should see the word 'PASS':&lt;/p&gt;
+        PASS
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannertablehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-table.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-table.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-table.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,24 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Table as spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;Below you should see the word 'PASS':&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:6; columns:6; -webkit-column-gap:0; column-gap:0; width:4em; overflow:hidden;&quot;&gt;
+            &lt;div style=&quot;background:red;&quot;&gt;
+                &lt;table style=&quot;-webkit-column-span:all; column-span:all;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
+                    &lt;tr&gt;
+                        &lt;td&gt;PA&lt;/td&gt;
+                        &lt;td&gt;SS&lt;/td&gt;
+                    &lt;/tr&gt;
+                &lt;/table&gt;
+            &lt;/div&gt;
+            &lt;br&gt;&lt;br&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerwithmarginexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-with-margin-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-with-margin-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-with-margin-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner with margins&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;You should see the word 'PASS' five times below (letter spacing will differ), and no red:&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:4; columns:4; -webkit-column-gap:0; column-gap:0; width:4em;&quot;&gt;
+            P&lt;br&gt;P&lt;br&gt;A&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S
+        &lt;/div&gt;
+        &lt;div style=&quot;margin:2em;&quot;&gt;PASS&lt;br&gt;&amp;nbsp;&lt;/div&gt;
+        &lt;div style=&quot;-webkit-columns:4; columns:4; -webkit-column-gap:0; column-gap:0; width:4em;&quot;&gt;
+            P&lt;br&gt;P&lt;br&gt;A&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspannerwithmarginhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner-with-margin.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner-with-margin.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner-with-margin.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner with margins&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;You should see the word 'PASS' five times below (letter spacing will differ), and no red:&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:4; columns:4; -webkit-column-gap:0; column-gap:0; width:4em;&quot;&gt;
+            P&lt;br&gt;P&lt;br&gt;A&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S
+            &lt;div style=&quot;background:red;&quot;&gt;
+                &lt;div style=&quot;-webkit-column-span:all; column-span:all; margin:2em;&quot;&gt;PASS&lt;br&gt;&amp;nbsp;&lt;/div&gt;
+            &lt;/div&gt;
+            P&lt;br&gt;P&lt;br&gt;A&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspanner1expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner1-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner1-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner1-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner between rows, unconstrained height&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;Inside the dashed box below you should see the word &quot;PASS&quot;, then a small blue box, then
+        the word &quot;PASS&quot; again. Large letter spacing is fine.&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;margin:20px; border:2px dashed salmon; padding:10%; orphans:1; widows:1;&quot;&gt;
+                &lt;div style=&quot;-webkit-columns:4; columns:4; -webkit-column-fill:auto; column-fill:auto;&quot;&gt;
+                    P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+                &lt;/div&gt;
+                &lt;div style=&quot;width:0.5em; height:1em; margin:10px auto; background:blue;&quot;&gt;&lt;/div&gt;
+                &lt;div style=&quot;-webkit-columns:4; columns:4; -webkit-column-fill:auto; column-fill:auto;&quot;&gt;
+                    P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+                &lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspanner1html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner1.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner1.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner1.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner between rows, unconstrained height&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;Inside the dashed box below you should see the word &quot;PASS&quot;, then a small blue box, then
+        the word &quot;PASS&quot; again. Large letter spacing is fine.&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;margin:20px; border:2px dashed salmon; padding:10%; -webkit-columns:4; columns:4; -webkit-column-fill:auto; column-fill:auto; orphans:1; widows:1;&quot;&gt;
+                P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+                &lt;div style=&quot;-webkit-column-span:all; column-span:all; width:0.5em; height:1em; margin:10px auto; background:blue;&quot;&gt;&lt;/div&gt;
+                P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspanner2expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner2-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner2-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner2-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner between rows, large height&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;Inside the dashed box below you should see the word &quot;PASS&quot;, then a small blue box, then
+        the the numbers 1, 2 and 3 on separate lines. Large letter spacing is fine.&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;margin:20px; border:2px dashed salmon; padding:10%; height:10em; orphans:1; widows:1;&quot;&gt;
+                &lt;div style=&quot; -webkit-columns:4; columns:4; -webkit-column-fill:auto; column-fill:auto;&quot;&gt;
+                    P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+                &lt;/div&gt;
+                &lt;div style=&quot;width:0.5em; height:1em; margin:10px auto; background:blue;&quot;&gt;&lt;/div&gt;
+                1&lt;br&gt;2&lt;br&gt;3
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspanner2html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner2.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner2.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner2.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner between rows, large height&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;Inside the dashed box below you should see the word &quot;PASS&quot;, then a small blue box, then
+        the the numbers 1, 2 and 3 on separate lines. Large letter spacing is fine.&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;margin:20px; border:2px dashed salmon; padding:10%; -webkit-columns:4; columns:4; -webkit-column-fill:auto; column-fill:auto; height:10em; orphans:1; widows:1;&quot;&gt;
+                P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+                &lt;div style=&quot;-webkit-column-span:all; column-span:all; width:0.5em; height:1em; margin:10px auto; background:blue;&quot;&gt;&lt;/div&gt;
+                1&lt;br&gt;2&lt;br&gt;3
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspanner3expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner3-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner3-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner3-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner between rows, large height, balanced&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;Inside the dashed box below you should see the word &quot;PASS&quot;, then a small blue box, then
+        the word &quot;PASS&quot; again. Large letter spacing is fine.&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;margin:20px; border:2px dashed salmon; padding:10%; height:10em; orphans:1; widows:1;&quot;&gt;
+                &lt;div style=&quot;-webkit-columns:4; columns:4;&quot;&gt;
+                    P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+                &lt;/div&gt;
+                &lt;div style=&quot;width:0.5em; height:1em; margin:10px auto; background:blue;&quot;&gt;&lt;/div&gt;
+                &lt;div style=&quot;-webkit-columns:4; columns:4;&quot;&gt;
+                    P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+                &lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspanner3html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner3.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner3.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner3.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner between rows, large height, balanced&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;Inside the dashed box below you should see the word &quot;PASS&quot;, then a small blue box, then
+        the word &quot;PASS&quot; again. Large letter spacing is fine.&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;margin:20px; border:2px dashed salmon; padding:10%; -webkit-columns:4; columns:4; -webkit-column-fill:balance; column-fill:balance; height:10em; orphans:1; widows:1;&quot;&gt;
+                P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+                &lt;div style=&quot;-webkit-column-span:all; column-span:all; width:0.5em; height:1em; margin:10px auto; background:blue;&quot;&gt;&lt;/div&gt;
+                P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspanner4expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner4-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner4-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner4-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,24 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner between rows, constrained height&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;Inside the dashed box below you should see the word &quot;PASS&quot; twice, then a small blue box,
+        then the word &quot;PASS&quot; three times. Large letter spacing is fine.&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;margin:20px; border:2px dashed salmon; padding:10%; height:13.5em; line-height:2em; orphans:1; widows:1;&quot;&gt;
+                &lt;div style=&quot;-webkit-columns:4; columns:4;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;
+                &lt;div style=&quot;-webkit-columns:4; columns:4;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;
+                &lt;div style=&quot;width:0.5em; height:1em; margin:0.5em auto; background:blue;&quot;&gt;&lt;/div&gt;
+                &lt;div style=&quot;-webkit-columns:4; columns:4;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;
+                &lt;div style=&quot;-webkit-columns:4; columns:4;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;
+                &lt;div style=&quot;-webkit-columns:4; columns:4;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspanner4html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner4.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner4.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner4.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner between rows, constrained height&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;Inside the dashed box below you should see the word &quot;PASS&quot; twice, then a small blue box,
+        then the word &quot;PASS&quot; three times. Large letter spacing is fine.&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;margin:20px; border:2px dashed salmon; padding:10%; -webkit-columns:4; columns:4; -webkit-column-fill:auto; column-fill:auto; height:13.5em; line-height:2em; orphans:1; widows:1;&quot;&gt;
+                P&lt;br&gt;P&lt;br&gt;A&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S
+                &lt;div style=&quot;-webkit-column-span:all; column-span:all; width:0.5em; height:1em; margin:0.5em auto; background:blue;&quot;&gt;&lt;/div&gt;
+                P&lt;br&gt;P&lt;br&gt;P&lt;br&gt;A&lt;br&gt;A&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspanner5expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner5-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner5-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner5-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,24 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner between rows, constrained height&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;Inside the dashed box below you should see the word &quot;PASS&quot; twice, then a small blue box,
+        then the word &quot;PASS&quot; three times. Large letter spacing is fine.&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;margin:20px; border:2px dashed salmon; padding:10%; height:13.5em; line-height:2em; orphans:1; widows:1;&quot;&gt;
+                &lt;div style=&quot;-webkit-columns:4; columns:4;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;
+                &lt;div style=&quot;-webkit-columns:4; columns:4;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;
+                &lt;div style=&quot;width:0.5em; height:1em; margin:0.5em auto; background:blue;&quot;&gt;&lt;/div&gt;
+                &lt;div style=&quot;-webkit-columns:4; columns:4;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;
+                &lt;div style=&quot;-webkit-columns:4; columns:4;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;
+                &lt;div style=&quot;-webkit-columns:4; columns:4;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspanner5html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner5.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner5.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner5.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner between rows, constrained height, balanced&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;Inside the dashed box below you should see the word &quot;PASS&quot; twice, then a small blue box,
+        then the word &quot;PASS&quot; three times. Large letter spacing is fine.&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;margin:20px; border:2px dashed salmon; padding:10%; -webkit-columns:4; columns:4; -webkit-column-fill:balance; column-fill:balance; height:13.5em; line-height:2em; orphans:1; widows:1;&quot;&gt;
+                P&lt;br&gt;P&lt;br&gt;A&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S
+                &lt;div style=&quot;-webkit-column-span:all; column-span:all; width:0.5em; height:1em; margin:0.5em auto; background:blue;&quot;&gt;&lt;/div&gt;
+                P&lt;br&gt;P&lt;br&gt;P&lt;br&gt;A&lt;br&gt;A&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspanner6expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner6-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner6-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner6-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,24 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner between rows, constrained height&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;Inside the dashed box below you should see the word &quot;PASS&quot; twice, then a small blue box,
+        then the word &quot;PASS&quot; three times. Large letter spacing is fine.&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;margin:20px; border:2px dashed salmon; padding:10%; height:17em; line-height:2em; orphans:1; widows:1;&quot;&gt;
+                &lt;div style=&quot;-webkit-columns:4; columns:4;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;
+                &lt;div style=&quot;-webkit-columns:4; columns:4;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;
+                &lt;div style=&quot;width:0.5em; height:1em; margin:0.5em auto; background:blue;&quot;&gt;&lt;/div&gt;
+                &lt;div style=&quot;-webkit-columns:4; columns:4;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;
+                &lt;div style=&quot;-webkit-columns:4; columns:4;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;
+                &lt;div style=&quot;-webkit-columns:4; columns:4;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspanner6html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner6.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner6.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner6.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner between rows, larger constrained height, balanced&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;Inside the dashed box below you should see the word &quot;PASS&quot; twice, then a small blue box,
+        then the word &quot;PASS&quot; three times. Large letter spacing is fine.&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;margin:20px; border:2px dashed salmon; padding:10%; -webkit-columns:4; columns:4; -webkit-column-fill:balance; column-fill:balance; height:17em; line-height:2em; orphans:1; widows:1;&quot;&gt;
+                P&lt;br&gt;P&lt;br&gt;A&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S
+                &lt;div style=&quot;-webkit-column-span:all; column-span:all; width:0.5em; height:1em; margin:0.5em auto; background:blue;&quot;&gt;&lt;/div&gt;
+                P&lt;br&gt;P&lt;br&gt;P&lt;br&gt;A&lt;br&gt;A&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S&lt;br&gt;S
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspanner7expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner7-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner7-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner7-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner between rows, large height&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;Inside the dashed box below you should see the word &quot;PASS&quot;, then a small blue box.&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;margin:20px; border:2px dashed salmon; padding:10%; height:15em; orphans:1; widows:1;&quot;&gt;
+                &lt;div style=&quot;-webkit-columns:4; columns:4;&quot;&gt;P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S&lt;/div&gt;
+                &lt;div style=&quot;width:0.5em; height:1em; margin:10px auto; background:blue;&quot;&gt;&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspanner7html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner7.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner7.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner7.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner between rows, large height&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;Inside the dashed box below you should see the word &quot;PASS&quot;, then a small blue box.&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;margin:20px; border:2px dashed salmon; padding:10%; -webkit-columns:4; columns:4; height:15em; -webkit-column-fill:auto; column-fill:auto; orphans:1; widows:1;&quot;&gt;
+                P&lt;br&gt;A&lt;br&gt;S&lt;br&gt;S
+                &lt;div style=&quot;-webkit-column-span:all; column-span:all; width:0.5em; height:1em; margin:10px auto; background:blue;&quot;&gt;&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspanner8expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner8-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner8-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner8-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner between rows, margins&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be a blue square below.&lt;/p&gt;
+        &lt;div style=&quot;margin:20px;&quot;&gt;
+            &lt;div style=&quot;width:10em; height:2em;&quot;&gt;&lt;/div&gt;
+            &lt;div style=&quot;width:6em; height:3em; background:blue;&quot;&gt;&lt;/div&gt;
+            &lt;div style=&quot;width:6em; height:3em; background:blue;&quot;&gt;&lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspanner8html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner8.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner8.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner8.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner between rows, margins&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be a blue square below.&lt;/p&gt;
+        &lt;!-- A bottom margin preceding the spanner shouldn't bleed through the spanner and be
+             applied to content following the spanner. --&gt;
+        &lt;div style=&quot;margin:20px; -webkit-columns:4; columns:4;&quot;&gt;
+            &lt;div style=&quot;width:10em; height:1em; -webkit-column-break-inside:avoid; break-inside:avoid; margin-bottom:7em;&quot;&gt;&lt;/div&gt;
+            &lt;div style=&quot;-webkit-column-span:all; column-span:all; width:6em; height:3em; background:blue;&quot;&gt;&lt;/div&gt;
+            &lt;div style=&quot;width:6em; height:3em; -webkit-column-break-inside:avoid; break-inside:avoid; background:blue;&quot;&gt;&lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspanner9expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner9-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner9-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner9-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner following row that has floats&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be no yellow below, beside or inside the blue box. Only above.&lt;/p&gt;
+        &lt;div style=&quot;margin:20px; -webkit-columns:4; columns:4;&quot;&gt;
+            &lt;div style=&quot;float:left; width:20%; height:5em; background:yellow;&quot;&gt;&lt;/div&gt;
+            Beside float.
+            &lt;div style=&quot;clear:both;&quot;&gt;&lt;/div&gt;
+            &lt;div style=&quot;-webkit-column-span:all; column-span:all; height:2em; border:2px solid blue;&quot;&gt;&lt;/div&gt;
+            Left.
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolspanner9html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/spanner9.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/spanner9.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/spanner9.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Spanner following row that has floats&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be no yellow below, beside or inside the blue box. Only above.&lt;/p&gt;
+        &lt;div style=&quot;margin:20px; -webkit-columns:4; columns:4;&quot;&gt;
+            &lt;div style=&quot;float:left; width:20%; height:5em; background:yellow;&quot;&gt;&lt;/div&gt;
+            Beside float.
+            &lt;div style=&quot;-webkit-column-span:all; column-span:all; height:2em; border:2px solid blue;&quot;&gt;&lt;/div&gt;
+            Left.
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticoltrailingmarginwithspannerexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/trailing-margin-with-spanner-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/trailing-margin-with-spanner-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/trailing-margin-with-spanner-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Trailing margin in columns, followed by a spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be no scrollbars.&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:3; columns:3; orphans:1; widows:1; background:blue;&quot;&gt;
+            &lt;div style=&quot;margin-bottom:10em;&quot;&gt;&amp;nbsp;&lt;/div&gt;
+        &lt;/div&gt;
+        &lt;div style=&quot;-webkit-column-span:all; column-span:all; background:blue;&quot;&gt;&amp;nbsp;&lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticoltrailingmarginwithspannerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/trailing-margin-with-spanner.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/trailing-margin-with-spanner.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/trailing-margin-with-spanner.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Trailing margin in columns, followed by a spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;There should be no scrollbars.&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:3; columns:3; orphans:1; widows:1; background:blue;&quot;&gt;
+            &lt;div style=&quot;margin-bottom:10em;&quot;&gt;&amp;nbsp;&lt;/div&gt;
+            &lt;div style=&quot;-webkit-column-span:all; column-span:all;&quot;&gt;&amp;nbsp;&lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticoltrailingmarginwithspanner2expectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/trailing-margin-with-spanner2-expected.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/trailing-margin-with-spanner2-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/trailing-margin-with-spanner2-expected.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Trailing margin in columns, after a spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;You should see the word 'PASS' below.&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; -webkit-column-gap:0; column-gap:0; orphans:1; widows:1;&quot;&gt;
+                P&lt;br&gt;
+                A&lt;br&gt;
+                S&lt;br&gt;
+                S&lt;br&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticoltrailingmarginwithspanner2html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/trailing-margin-with-spanner2.html (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/trailing-margin-with-spanner2.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/trailing-margin-with-spanner2.html        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,24 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Trailing margin in columns, after a spanner&lt;/title&gt;
+        &lt;script&gt;
+            if (window.internals)
+                internals.settings.setRegionBasedColumnsEnabled(true);
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;p&gt;You should see the word 'PASS' below.&lt;/p&gt;
+        &lt;div style=&quot;float:left;&quot;&gt;
+            &lt;div style=&quot;-webkit-columns:4; columns:4; -webkit-column-gap:0; column-gap:0; orphans:1; widows:1;&quot;&gt;
+                &lt;div style=&quot;margin-bottom:1px;&quot;&gt;
+                    P&lt;br&gt;
+                    A&lt;br&gt;
+                    S&lt;br&gt;
+                    S&lt;br&gt;
+                    &lt;div style=&quot;-webkit-column-span:all; column-span:all;&quot;&gt;&amp;nbsp;&lt;/div&gt;
+                &lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformgtkfastmulticolnewmulticolclientrectsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/gtk/fast/multicol/newmulticol/client-rects-expected.txt (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/gtk/fast/multicol/newmulticol/client-rects-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/gtk/fast/multicol/newmulticol/client-rects-expected.txt        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,375 @@
</span><ins>+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (8,8) size 784x584
+      RenderBlock {P} at (0,0) size 784x28
+        RenderText {#text} at (0,11) size 421x17
+          text run at (0,11) width 421: &quot;The blue borders should coincide with light blue squares, like this: &quot;
+        RenderBlock {SPAN} at (421,0) size 25x25 [bgcolor=#ADD8E6] [border: (3px solid #0000FF7F)]
+        RenderText {#text} at (446,11) size 196x17
+          text run at (446,11) width 8: &quot;. &quot;
+          text run at (454,11) width 188: &quot;There should be none of this: &quot;
+        RenderBlock {SPAN} at (642,0) size 25x25 [bgcolor=#ADD8E6]
+        RenderText {#text} at (667,11) size 51x17
+          text run at (667,11) width 4: &quot; &quot;
+          text run at (671,11) width 47: &quot;or this: &quot;
+        RenderBlock {SPAN} at (718,0) size 25x25 [border: (3px solid #0000FF7F)]
+        RenderText {#text} at (743,11) size 4x17
+          text run at (743,11) width 4: &quot;.&quot;
+      RenderBlock (anonymous) at (0,44) size 784x327
+        RenderText {#text} at (116,72) size 4x17
+          text run at (116,72) width 4: &quot; &quot;
+        RenderText {#text} at (236,72) size 4x17
+          text run at (236,72) width 4: &quot; &quot;
+        RenderText {#text} at (356,72) size 4x17
+          text run at (356,72) width 4: &quot; &quot;
+        RenderText {#text} at (476,72) size 4x17
+          text run at (476,72) width 4: &quot; &quot;
+        RenderText {#text} at (596,72) size 4x17
+          text run at (596,72) width 4: &quot; &quot;
+        RenderText {#text} at (716,72) size 4x17
+          text run at (716,72) width 4: &quot; &quot;
+        RenderText {#text} at (116,191) size 4x17
+          text run at (116,191) width 4: &quot; &quot;
+        RenderText {#text} at (206,191) size 4x17
+          text run at (206,191) width 4: &quot; &quot;
+        RenderText {#text} at (296,191) size 4x17
+          text run at (296,191) width 4: &quot; &quot;
+        RenderText {#text} at (386,191) size 4x17
+          text run at (386,191) width 4: &quot; &quot;
+        RenderText {#text} at (476,191) size 4x17
+          text run at (476,191) width 4: &quot; &quot;
+        RenderText {#text} at (566,191) size 4x17
+          text run at (566,191) width 4: &quot; &quot;
+        RenderText {#text} at (656,191) size 4x17
+          text run at (656,191) width 4: &quot; &quot;
+        RenderText {#text} at (0,0) size 0x0
+        RenderText {#text} at (86,310) size 4x17
+          text run at (86,310) width 4: &quot; &quot;
+        RenderText {#text} at (176,310) size 4x17
+          text run at (176,310) width 4: &quot; &quot;
+        RenderText {#text} at (266,310) size 4x17
+          text run at (266,310) width 4: &quot; &quot;
+        RenderText {#text} at (356,310) size 4x17
+          text run at (356,310) width 4: &quot; &quot;
+        RenderText {#text} at (446,310) size 4x17
+          text run at (446,310) width 4: &quot; &quot;
+        RenderText {#text} at (536,310) size 4x17
+          text run at (536,310) width 4: &quot; &quot;
+        RenderText {#text} at (0,0) size 0x0
+layer at (8,62) size 116x66
+  RenderBlock {DIV} at (0,10) size 116x66 [color=#ADD8E6] [border: (3px solid #000000)]
+    RenderMultiColumnSet at (8,8) size 100x50
+layer at (128,62) size 116x66
+  RenderBlock {DIV} at (120,10) size 116x66 [color=#ADD8E6] [border: (3px solid #000000)]
+    RenderMultiColumnSet at (8,8) size 100x50
+layer at (248,62) size 116x66
+  RenderBlock {DIV} at (240,10) size 116x66 [color=#ADD8E6] [border: (3px solid #000000)]
+    RenderMultiColumnSet at (8,8) size 100x50
+layer at (368,62) size 116x66
+  RenderBlock {DIV} at (360,10) size 116x66 [color=#ADD8E6] [border: (3px solid #000000)]
+    RenderMultiColumnSet at (8,8) size 100x50
+layer at (488,62) size 116x66
+  RenderBlock {DIV} at (480,10) size 116x66 [color=#ADD8E6] [border: (3px solid #000000)]
+    RenderMultiColumnSet at (8,8) size 100x50
+layer at (608,62) size 116x66
+  RenderBlock {DIV} at (600,10) size 116x66 [color=#ADD8E6] [border: (3px solid #000000)]
+    RenderMultiColumnSet at (8,8) size 100x50
+layer at (8,181) size 116x66
+  RenderBlock {DIV} at (0,129) size 116x66 [color=#ADD8E6] [border: (3px solid #000000)]
+    RenderMultiColumnSet at (8,8) size 100x50
+layer at (138,141) size 66x116
+  RenderBlock {DIV} at (130,89) size 66x116 [color=#ADD8E6] [border: (3px solid #000000)]
+    RenderMultiColumnSet at (8,8) size 50x100
+layer at (228,141) size 66x116
+  RenderBlock {DIV} at (220,89) size 66x116 [color=#ADD8E6] [border: (3px solid #000000)]
+    RenderMultiColumnSet at (8,8) size 50x100
+layer at (318,141) size 66x116
+  RenderBlock {DIV} at (310,89) size 66x116 [color=#ADD8E6] [border: (3px solid #000000)]
+    RenderMultiColumnSet at (8,8) size 50x100
+layer at (408,141) size 66x116
+  RenderBlock {DIV} at (400,89) size 66x116 [color=#ADD8E6] [border: (3px solid #000000)]
+    RenderMultiColumnSet at (8,8) size 50x100
+layer at (498,141) size 66x116
+  RenderBlock {DIV} at (490,89) size 66x116 [color=#ADD8E6] [border: (3px solid #000000)]
+    RenderMultiColumnSet at (8,8) size 50x100
+layer at (588,141) size 66x116
+  RenderBlock {DIV} at (580,89) size 66x116 [color=#ADD8E6] [border: (3px solid #000000)]
+    RenderMultiColumnSet at (8,8) size 50x100
+layer at (678,141) size 66x116
+  RenderBlock {DIV} at (670,89) size 66x116 [color=#ADD8E6] [border: (3px solid #000000)]
+    RenderMultiColumnSet at (8,8) size 50x100
+layer at (18,260) size 66x116
+  RenderBlock {DIV} at (10,208) size 66x116 [color=#ADD8E6] [border: (3px solid #000000)]
+    RenderMultiColumnSet at (8,8) size 50x100
+layer at (108,260) size 66x116
+  RenderBlock {DIV} at (100,208) size 66x116 [color=#ADD8E6] [border: (3px solid #000000)]
+    RenderMultiColumnSet at (8,8) size 50x100
+layer at (198,260) size 66x116
+  RenderBlock {DIV} at (190,208) size 66x116 [color=#ADD8E6] [border: (3px solid #000000)]
+    RenderMultiColumnSet at (8,8) size 50x100
+layer at (288,260) size 66x116
+  RenderBlock {DIV} at (280,208) size 66x116 [color=#ADD8E6] [border: (3px solid #000000)]
+    RenderMultiColumnSet at (8,8) size 50x100
+layer at (378,260) size 66x116
+  RenderBlock {DIV} at (370,208) size 66x116 [color=#ADD8E6] [border: (3px solid #000000)]
+    RenderMultiColumnSet at (8,8) size 50x100
+layer at (468,260) size 66x116
+  RenderBlock {DIV} at (460,208) size 66x116 [color=#ADD8E6] [border: (3px solid #000000)]
+    RenderMultiColumnSet at (8,8) size 50x100
+layer at (558,260) size 66x116
+  RenderBlock {DIV} at (550,208) size 66x116 [color=#ADD8E6] [border: (3px solid #000000)]
+    RenderMultiColumnSet at (8,8) size 50x100
+layer at (16,70) size 48x100
+  RenderMultiColumnFlowThread at (8,8) size 48x100
+    RenderBlock (anonymous) at (0,0) size 48x100
+      RenderBR {BR} at (0,0) size 0x25
+      RenderText {#text} at (0,25) size 25x75
+        text run at (0,25) width 25: &quot;x&quot;
+        text run at (0,50) width 25: &quot;y&quot;
+        text run at (0,75) width 25: &quot;z&quot;
+layer at (136,70) size 48x100
+  RenderMultiColumnFlowThread at (8,8) size 48x100
+    RenderBlock (anonymous) at (0,0) size 48x100
+      RenderBR {BR} at (0,0) size 0x25
+      RenderInline {SPAN} at (0,0) size 25x75
+        RenderText {#text} at (0,25) size 25x75
+          text run at (0,25) width 25: &quot;x&quot;
+          text run at (0,50) width 25: &quot;y&quot;
+          text run at (0,75) width 25: &quot;z&quot;
+      RenderText {#text} at (0,0) size 0x0
+layer at (256,70) size 48x100
+  RenderMultiColumnFlowThread at (8,8) size 48x100
+    RenderBlock (anonymous) at (0,0) size 48x25
+      RenderBR {BR} at (0,0) size 0x25
+    RenderBlock {DIV} at (0,25) size 48x75
+      RenderText {#text} at (0,0) size 25x75
+        text run at (0,0) width 25: &quot;x&quot;
+        text run at (0,25) width 25: &quot;y&quot;
+        text run at (0,50) width 25: &quot;z&quot;
+layer at (376,70) size 48x100
+  RenderMultiColumnFlowThread at (8,8) size 48x100
+    RenderBlock (anonymous) at (0,0) size 48x25
+      RenderBR {BR} at (0,0) size 0x25
+    RenderBlock {DIV} at (0,25) size 48x75
+      RenderBR {BR} at (0,0) size 0x25
+      RenderText {#text} at (0,25) size 25x50
+        text run at (0,25) width 25: &quot;y&quot;
+        text run at (0,50) width 25: &quot;z&quot;
+layer at (496,70) size 48x100
+  RenderMultiColumnFlowThread at (8,8) size 48x100
+    RenderBlock (anonymous) at (0,0) size 48x25
+      RenderBR {BR} at (0,0) size 0x25
+    RenderBlock {DIV} at (0,25) size 48x54
+      RenderBR {BR} at (0,0) size 0x25
+      RenderSlider {INPUT} at (2,27) size 25x25 [color=#909090] [bgcolor=#ADD8E6]
+        RenderFlexibleBox {DIV} at (0,0) size 25x25
+          RenderBlock {DIV} at (0,12) size 25x1
+            RenderBlock {DIV} at (0,0) size 25x0
+layer at (616,70) size 48x100
+  RenderMultiColumnFlowThread at (8,8) size 48x100
+    RenderBlock (anonymous) at (0,0) size 48x25
+      RenderBR {BR} at (0,0) size 0x25
+    RenderBlock {DIV} at (0,25) size 48x50
+      RenderBR {BR} at (0,0) size 0x25
+      RenderImage {IMG} at (0,25) size 25x25 [bgcolor=#ADD8E6]
+layer at (16,189) size 48x100
+  RenderMultiColumnFlowThread at (8,8) size 48x100
+    RenderBlock {DIV} at (0,40) size 25x25 [bgcolor=#ADD8E6]
+layer at (146,149) size 100x48
+  RenderMultiColumnFlowThread at (8,8) size 100x48
+    RenderBlock (anonymous) at (0,0) size 100x48
+      RenderBR {BR} at (0,0) size 25x0
+      RenderText {#text} at (25,0) size 75x25
+        text run at (25,0) width 25: &quot;x&quot;
+        text run at (50,0) width 25: &quot;y&quot;
+        text run at (75,0) width 25: &quot;z&quot;
+layer at (236,149) size 100x48
+  RenderMultiColumnFlowThread at (8,8) size 100x48
+    RenderBlock (anonymous) at (0,0) size 100x48
+      RenderBR {BR} at (0,0) size 25x0
+      RenderInline {SPAN} at (0,0) size 75x25
+        RenderText {#text} at (25,0) size 75x25
+          text run at (25,0) width 25: &quot;x&quot;
+          text run at (50,0) width 25: &quot;y&quot;
+          text run at (75,0) width 25: &quot;z&quot;
+      RenderText {#text} at (0,0) size 0x0
+layer at (326,149) size 100x48
+  RenderMultiColumnFlowThread at (8,8) size 100x48
+    RenderBlock (anonymous) at (0,0) size 25x48
+      RenderBR {BR} at (0,0) size 25x0
+    RenderBlock {DIV} at (25,0) size 75x48
+      RenderText {#text} at (0,0) size 75x25
+        text run at (0,0) width 25: &quot;x&quot;
+        text run at (25,0) width 25: &quot;y&quot;
+        text run at (50,0) width 25: &quot;z&quot;
+layer at (416,149) size 100x48
+  RenderMultiColumnFlowThread at (8,8) size 100x48
+    RenderBlock (anonymous) at (0,0) size 25x48
+      RenderBR {BR} at (0,0) size 25x0
+    RenderBlock {DIV} at (25,0) size 75x48
+      RenderBR {BR} at (0,0) size 25x0
+      RenderText {#text} at (25,0) size 50x25
+        text run at (25,0) width 25: &quot;y&quot;
+        text run at (50,0) width 25: &quot;z&quot;
+layer at (506,149) size 100x48
+  RenderMultiColumnFlowThread at (8,8) size 100x48
+    RenderBlock (anonymous) at (0,0) size 25x48
+      RenderBR {BR} at (0,0) size 25x0
+    RenderBlock {DIV} at (25,0) size 54x48
+      RenderBR {BR} at (0,0) size 25x0
+      RenderSlider {INPUT} at (27,2) size 25x25 [color=#909090] [bgcolor=#ADD8E6]
+        RenderFlexibleBox {DIV} at (0,0) size 25x25
+          RenderBlock {DIV} at (0,12) size 25x1
+            RenderBlock {DIV} at (0,0) size 25x0
+layer at (596,149) size 100x48
+  RenderMultiColumnFlowThread at (8,8) size 100x48
+    RenderBlock (anonymous) at (0,0) size 25x48
+      RenderBR {BR} at (0,0) size 25x0
+    RenderBlock {DIV} at (25,0) size 50x48
+      RenderBR {BR} at (0,0) size 25x0
+      RenderImage {IMG} at (25,0) size 25x25 [bgcolor=#ADD8E6]
+layer at (686,149) size 100x48
+  RenderMultiColumnFlowThread at (8,8) size 100x48
+    RenderBlock {DIV} at (40,0) size 25x25 [bgcolor=#ADD8E6]
+layer at (-24,268) size 100x48 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600 outlineClip at (0,0) size 800x600
+  RenderMultiColumnFlowThread at (8,8) size 100x48
+    RenderBlock (anonymous) at (0,0) size 100x48
+      RenderBR {BR} at (0,0) size 25x0
+      RenderText {#text} at (25,0) size 75x25
+        text run at (25,0) width 25: &quot;x&quot;
+        text run at (50,0) width 25: &quot;y&quot;
+        text run at (75,0) width 25: &quot;z&quot;
+layer at (66,268) size 100x48
+  RenderMultiColumnFlowThread at (8,8) size 100x48
+    RenderBlock (anonymous) at (0,0) size 100x48
+      RenderBR {BR} at (0,0) size 25x0
+      RenderInline {SPAN} at (0,0) size 75x25
+        RenderText {#text} at (25,0) size 75x25
+          text run at (25,0) width 25: &quot;x&quot;
+          text run at (50,0) width 25: &quot;y&quot;
+          text run at (75,0) width 25: &quot;z&quot;
+      RenderText {#text} at (0,0) size 0x0
+layer at (156,268) size 100x48
+  RenderMultiColumnFlowThread at (8,8) size 100x48
+    RenderBlock (anonymous) at (0,0) size 25x48
+      RenderBR {BR} at (0,0) size 25x0
+    RenderBlock {DIV} at (25,0) size 75x48
+      RenderText {#text} at (0,0) size 75x25
+        text run at (0,0) width 25: &quot;x&quot;
+        text run at (25,0) width 25: &quot;y&quot;
+        text run at (50,0) width 25: &quot;z&quot;
+layer at (246,268) size 100x48
+  RenderMultiColumnFlowThread at (8,8) size 100x48
+    RenderBlock (anonymous) at (0,0) size 25x48
+      RenderBR {BR} at (0,0) size 25x0
+    RenderBlock {DIV} at (25,0) size 75x48
+      RenderBR {BR} at (0,0) size 25x0
+      RenderText {#text} at (25,0) size 50x25
+        text run at (25,0) width 25: &quot;y&quot;
+        text run at (50,0) width 25: &quot;z&quot;
+layer at (336,268) size 100x48
+  RenderMultiColumnFlowThread at (8,8) size 100x48
+    RenderBlock (anonymous) at (0,0) size 25x48
+      RenderBR {BR} at (0,0) size 25x0
+    RenderBlock {DIV} at (25,0) size 54x48
+      RenderBR {BR} at (0,0) size 25x0
+      RenderSlider {INPUT} at (27,2) size 25x25 [color=#909090] [bgcolor=#ADD8E6]
+        RenderFlexibleBox {DIV} at (0,0) size 25x25
+          RenderBlock {DIV} at (0,12) size 25x1
+            RenderBlock {DIV} at (0,0) size 25x0
+layer at (426,268) size 100x48
+  RenderMultiColumnFlowThread at (8,8) size 100x48
+    RenderBlock (anonymous) at (0,0) size 25x48
+      RenderBR {BR} at (0,0) size 25x0
+    RenderBlock {DIV} at (25,0) size 50x48
+      RenderBR {BR} at (0,0) size 25x0
+      RenderImage {IMG} at (25,0) size 25x25 [bgcolor=#ADD8E6]
+layer at (516,268) size 100x48
+  RenderMultiColumnFlowThread at (8,8) size 100x48
+    RenderBlock {DIV} at (40,0) size 25x25 [bgcolor=#ADD8E6]
+layer at (16,95) size 25x25
+  RenderBlock (positioned) {DIV} at (16,95) size 25x25 [border: (3px solid #0000FF7F)]
+layer at (68,70) size 26x25
+  RenderBlock (positioned) {DIV} at (68,70) size 26x25 [border: (3px solid #0000FF7F)]
+layer at (68,95) size 26x25
+  RenderBlock (positioned) {DIV} at (68,95) size 26x25 [border: (3px solid #0000FF7F)]
+layer at (136,95) size 25x25
+  RenderBlock (positioned) {DIV} at (136,95) size 25x25 [border: (3px solid #0000FF7F)]
+layer at (188,70) size 26x25
+  RenderBlock (positioned) {DIV} at (188,70) size 26x25 [border: (3px solid #0000FF7F)]
+layer at (188,95) size 26x25
+  RenderBlock (positioned) {DIV} at (188,95) size 26x25 [border: (3px solid #0000FF7F)]
+layer at (256,95) size 25x25
+  RenderBlock (positioned) {DIV} at (256,95) size 25x25 [border: (3px solid #0000FF7F)]
+layer at (308,70) size 26x25
+  RenderBlock (positioned) {DIV} at (308,70) size 26x25 [border: (3px solid #0000FF7F)]
+layer at (308,95) size 26x25
+  RenderBlock (positioned) {DIV} at (308,95) size 26x25 [border: (3px solid #0000FF7F)]
+layer at (428,70) size 26x25
+  RenderBlock (positioned) {DIV} at (428,70) size 26x25 [border: (3px solid #0000FF7F)]
+layer at (428,95) size 26x25
+  RenderBlock (positioned) {DIV} at (428,95) size 26x25 [border: (3px solid #0000FF7F)]
+layer at (550,72) size 26x25
+  RenderBlock (positioned) {DIV} at (550,72) size 26x25 [border: (3px solid #0000FF7F)]
+layer at (668,70) size 26x25
+  RenderBlock (positioned) {DIV} at (668,70) size 26x25 [border: (3px solid #0000FF7F)]
+layer at (68,179) size 26x25
+  RenderBlock (positioned) {DIV} at (68,179) size 26x25 [border: (3px solid #0000FF7F)]
+layer at (171,149) size 25x25
+  RenderBlock (positioned) {DIV} at (171,149) size 25x25 [border: (3px solid #0000FF7F)]
+layer at (146,201) size 25x26
+  RenderBlock (positioned) {DIV} at (146,201) size 25x26 [border: (3px solid #0000FF7F)]
+layer at (171,201) size 25x26
+  RenderBlock (positioned) {DIV} at (171,201) size 25x26 [border: (3px solid #0000FF7F)]
+layer at (261,149) size 25x25
+  RenderBlock (positioned) {DIV} at (261,149) size 25x25 [border: (3px solid #0000FF7F)]
+layer at (236,201) size 25x26
+  RenderBlock (positioned) {DIV} at (236,201) size 25x26 [border: (3px solid #0000FF7F)]
+layer at (261,201) size 25x26
+  RenderBlock (positioned) {DIV} at (261,201) size 25x26 [border: (3px solid #0000FF7F)]
+layer at (351,149) size 25x25
+  RenderBlock (positioned) {DIV} at (351,149) size 25x25 [border: (3px solid #0000FF7F)]
+layer at (326,201) size 25x26
+  RenderBlock (positioned) {DIV} at (326,201) size 25x26 [border: (3px solid #0000FF7F)]
+layer at (351,201) size 25x26
+  RenderBlock (positioned) {DIV} at (351,201) size 25x26 [border: (3px solid #0000FF7F)]
+layer at (416,201) size 25x26
+  RenderBlock (positioned) {DIV} at (416,201) size 25x26 [border: (3px solid #0000FF7F)]
+layer at (441,201) size 25x26
+  RenderBlock (positioned) {DIV} at (441,201) size 25x26 [border: (3px solid #0000FF7F)]
+layer at (508,203) size 25x26
+  RenderBlock (positioned) {DIV} at (508,203) size 25x26 [border: (3px solid #0000FF7F)]
+layer at (596,201) size 25x26
+  RenderBlock (positioned) {DIV} at (596,201) size 25x26 [border: (3px solid #0000FF7F)]
+layer at (676,201) size 25x26
+  RenderBlock (positioned) {DIV} at (676,201) size 25x26 [border: (3px solid #0000FF7F)]
+layer at (26,268) size 25x25
+  RenderBlock (positioned) {DIV} at (26,268) size 25x25 [border: (3px solid #0000FF7F)]
+layer at (51,320) size 25x26
+  RenderBlock (positioned) {DIV} at (51,320) size 25x26 [border: (3px solid #0000FF7F)]
+layer at (26,320) size 25x26
+  RenderBlock (positioned) {DIV} at (26,320) size 25x26 [border: (3px solid #0000FF7F)]
+layer at (115,268) size 25x25
+  RenderBlock (positioned) {DIV} at (115,268) size 25x25 [border: (3px solid #0000FF7F)]
+layer at (140,320) size 25x26
+  RenderBlock (positioned) {DIV} at (140,320) size 25x26 [border: (3px solid #0000FF7F)]
+layer at (115,320) size 25x26
+  RenderBlock (positioned) {DIV} at (115,320) size 25x26 [border: (3px solid #0000FF7F)]
+layer at (206,268) size 25x25
+  RenderBlock (positioned) {DIV} at (206,268) size 25x25 [border: (3px solid #0000FF7F)]
+layer at (231,320) size 25x26
+  RenderBlock (positioned) {DIV} at (231,320) size 25x26 [border: (3px solid #0000FF7F)]
+layer at (206,320) size 25x26
+  RenderBlock (positioned) {DIV} at (206,320) size 25x26 [border: (3px solid #0000FF7F)]
+layer at (321,320) size 25x26
+  RenderBlock (positioned) {DIV} at (321,320) size 25x26 [border: (3px solid #0000FF7F)]
+layer at (296,320) size 25x26
+  RenderBlock (positioned) {DIV} at (296,320) size 25x26 [border: (3px solid #0000FF7F)]
+layer at (409,322) size 25x26
+  RenderBlock (positioned) {DIV} at (409,322) size 25x26 [border: (3px solid #0000FF7F)]
+layer at (501,320) size 25x26
+  RenderBlock (positioned) {DIV} at (501,320) size 25x26 [border: (3px solid #0000FF7F)]
+layer at (601,320) size 25x26
+  RenderBlock (positioned) {DIV} at (601,320) size 25x26 [border: (3px solid #0000FF7F)]
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastmulticolnewmulticolclientrectsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/fast/multicol/newmulticol/client-rects-expected.txt (167334 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/fast/multicol/newmulticol/client-rects-expected.txt        2014-04-15 23:25:38 UTC (rev 167334)
+++ trunk/LayoutTests/platform/mac/fast/multicol/newmulticol/client-rects-expected.txt        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -155,8 +155,8 @@
</span><span class="cx">       RenderText {#text} at (0,25) size 25x50
</span><span class="cx">         text run at (0,25) width 25: &quot;y&quot;
</span><span class="cx">         text run at (0,50) width 25: &quot;z&quot;
</span><del>-layer at (496,71) size 48x79
-  RenderMultiColumnFlowThread at (8,8) size 48x79
</del><ins>+layer at (496,71) size 48x100
+  RenderMultiColumnFlowThread at (8,8) size 48x100
</ins><span class="cx">     RenderBlock (anonymous) at (0,0) size 48x25
</span><span class="cx">       RenderBR {BR} at (0,0) size 0x25
</span><span class="cx">     RenderBlock {DIV} at (0,25) size 48x54
</span><span class="lines">@@ -165,15 +165,15 @@
</span><span class="cx">         RenderFlexibleBox {DIV} at (0,0) size 25x25
</span><span class="cx">           RenderBlock {DIV} at (0,12) size 25x1
</span><span class="cx">             RenderBlock {DIV} at (0,0) size 25x0
</span><del>-layer at (616,71) size 48x75
-  RenderMultiColumnFlowThread at (8,8) size 48x75
</del><ins>+layer at (616,71) size 48x100
+  RenderMultiColumnFlowThread at (8,8) size 48x100
</ins><span class="cx">     RenderBlock (anonymous) at (0,0) size 48x25
</span><span class="cx">       RenderBR {BR} at (0,0) size 0x25
</span><span class="cx">     RenderBlock {DIV} at (0,25) size 48x50
</span><span class="cx">       RenderBR {BR} at (0,0) size 0x25
</span><span class="cx">       RenderImage {IMG} at (0,25) size 25x25 [bgcolor=#ADD8E6]
</span><del>-layer at (16,191) size 48x65
-  RenderMultiColumnFlowThread at (8,8) size 48x65
</del><ins>+layer at (16,191) size 48x100
+  RenderMultiColumnFlowThread at (8,8) size 48x100
</ins><span class="cx">     RenderBlock {DIV} at (0,40) size 25x25 [bgcolor=#ADD8E6]
</span><span class="cx"> layer at (146,151) size 100x48
</span><span class="cx">   RenderMultiColumnFlowThread at (8,8) size 100x48
</span><span class="lines">@@ -209,8 +209,8 @@
</span><span class="cx">       RenderText {#text} at (25,0) size 50x25
</span><span class="cx">         text run at (25,0) width 25: &quot;y&quot;
</span><span class="cx">         text run at (50,0) width 25: &quot;z&quot;
</span><del>-layer at (506,151) size 79x48
-  RenderMultiColumnFlowThread at (8,8) size 79x48
</del><ins>+layer at (506,151) size 100x48
+  RenderMultiColumnFlowThread at (8,8) size 100x48
</ins><span class="cx">     RenderBlock (anonymous) at (0,0) size 25x48
</span><span class="cx">       RenderBR {BR} at (0,0) size 25x0
</span><span class="cx">     RenderBlock {DIV} at (25,0) size 54x48
</span><span class="lines">@@ -219,15 +219,15 @@
</span><span class="cx">         RenderFlexibleBox {DIV} at (0,0) size 25x25
</span><span class="cx">           RenderBlock {DIV} at (0,12) size 25x1
</span><span class="cx">             RenderBlock {DIV} at (0,0) size 25x0
</span><del>-layer at (596,151) size 75x48
-  RenderMultiColumnFlowThread at (8,8) size 75x48
</del><ins>+layer at (596,151) size 100x48
+  RenderMultiColumnFlowThread at (8,8) size 100x48
</ins><span class="cx">     RenderBlock (anonymous) at (0,0) size 25x48
</span><span class="cx">       RenderBR {BR} at (0,0) size 25x0
</span><span class="cx">     RenderBlock {DIV} at (25,0) size 50x48
</span><span class="cx">       RenderBR {BR} at (0,0) size 25x0
</span><span class="cx">       RenderImage {IMG} at (25,0) size 25x25 [bgcolor=#ADD8E6]
</span><del>-layer at (686,151) size 65x48
-  RenderMultiColumnFlowThread at (8,8) size 65x48
</del><ins>+layer at (686,151) size 100x48
+  RenderMultiColumnFlowThread at (8,8) size 100x48
</ins><span class="cx">     RenderBlock {DIV} at (40,0) size 25x25 [bgcolor=#ADD8E6]
</span><span class="cx"> layer at (-24,271) size 100x48 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600 outlineClip at (0,0) size 800x600
</span><span class="cx">   RenderMultiColumnFlowThread at (8,8) size 100x48
</span><span class="lines">@@ -263,8 +263,8 @@
</span><span class="cx">       RenderText {#text} at (25,0) size 50x25
</span><span class="cx">         text run at (25,0) width 25: &quot;y&quot;
</span><span class="cx">         text run at (50,0) width 25: &quot;z&quot;
</span><del>-layer at (357,271) size 79x48
-  RenderMultiColumnFlowThread at (8,8) size 79x48
</del><ins>+layer at (336,271) size 100x48
+  RenderMultiColumnFlowThread at (8,8) size 100x48
</ins><span class="cx">     RenderBlock (anonymous) at (0,0) size 25x48
</span><span class="cx">       RenderBR {BR} at (0,0) size 25x0
</span><span class="cx">     RenderBlock {DIV} at (25,0) size 54x48
</span><span class="lines">@@ -273,15 +273,15 @@
</span><span class="cx">         RenderFlexibleBox {DIV} at (0,0) size 25x25
</span><span class="cx">           RenderBlock {DIV} at (0,12) size 25x1
</span><span class="cx">             RenderBlock {DIV} at (0,0) size 25x0
</span><del>-layer at (451,271) size 75x48
-  RenderMultiColumnFlowThread at (8,8) size 75x48
</del><ins>+layer at (426,271) size 100x48
+  RenderMultiColumnFlowThread at (8,8) size 100x48
</ins><span class="cx">     RenderBlock (anonymous) at (0,0) size 25x48
</span><span class="cx">       RenderBR {BR} at (0,0) size 25x0
</span><span class="cx">     RenderBlock {DIV} at (25,0) size 50x48
</span><span class="cx">       RenderBR {BR} at (0,0) size 25x0
</span><span class="cx">       RenderImage {IMG} at (25,0) size 25x25 [bgcolor=#ADD8E6]
</span><del>-layer at (551,271) size 65x48
-  RenderMultiColumnFlowThread at (8,8) size 65x48
</del><ins>+layer at (516,271) size 100x48
+  RenderMultiColumnFlowThread at (8,8) size 100x48
</ins><span class="cx">     RenderBlock {DIV} at (40,0) size 25x25 [bgcolor=#ADD8E6]
</span><span class="cx"> layer at (16,96) size 25x25
</span><span class="cx">   RenderBlock (positioned) {DIV} at (16,96) size 25x25 [border: (3px solid #0000FF7F)]
</span></span></pre></div>
<a id="trunkSourceWebCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/CMakeLists.txt (167334 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/CMakeLists.txt        2014-04-15 23:25:38 UTC (rev 167334)
+++ trunk/Source/WebCore/CMakeLists.txt        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -2327,6 +2327,7 @@
</span><span class="cx">     rendering/RenderMeter.cpp
</span><span class="cx">     rendering/RenderMultiColumnFlowThread.cpp
</span><span class="cx">     rendering/RenderMultiColumnSet.cpp
</span><ins>+    rendering/RenderMultiColumnSpannerPlaceholder.cpp
</ins><span class="cx">     rendering/RenderNamedFlowFragment.cpp
</span><span class="cx">     rendering/RenderNamedFlowThread.cpp
</span><span class="cx">     rendering/RenderObject.cpp
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (167334 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-04-15 23:25:38 UTC (rev 167334)
+++ trunk/Source/WebCore/ChangeLog        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -1,3 +1,278 @@
</span><ins>+2014-04-14  Morten Stenshorne  &lt;mstensho@opera.com&gt;
+
+        [New Multicolumn] Add support for column-span:all
+        https://bugs.webkit.org/show_bug.cgi?id=129330
+
+        Reviewed by Dave Hyatt.
+
+        Column spanners are implemented as siblings of RenderMultiColumnSet
+        objects (i.e. the regions for the column rows). This means that they
+        are pulled out from the flow thread tree where they would otherwise
+        live. This causes some complexity, most of which is contained within
+        the multicol code.
+
+        A placeholder is put in the flow thread tree where the spanner's
+        renderer would otherwise live. This is needed in order make sure that
+        we interrupt line layout before after the spanner. We also need this
+        to be able to switch from one multicol set to the next.
+
+        Some extra logic is required when dynamically inserting and removing
+        flow thread descendants now, because we need to figure out if the
+        renderer added should trigger creation of new multi column sets. If
+        a spanner is inserted in the middle of a multi column set, we need to
+        detect this, split the set and put the spanner in the middle.
+
+        Wrote a bunch of tests. A few of the tests were copied from existing
+        (old-impl) tests and put in a separate directory. That directory can
+        be wiped when we turn on the new multicol implementation by default.
+
+        Tests: fast/multicol/newmulticol/adjacent-spanners.html
+               fast/multicol/newmulticol/block-becomes-spanner.html
+               fast/multicol/newmulticol/change-spanner-display.html
+               fast/multicol/newmulticol/change-spanner-parent-display.html
+               fast/multicol/newmulticol/compare-with-old-impl/anonymous-block-split-crash.html
+               fast/multicol/newmulticol/compare-with-old-impl/before-child-anonymous-column-block.html
+               fast/multicol/newmulticol/compare-with-old-impl/clone-before-after-content-crash.html
+               fast/multicol/newmulticol/compare-with-old-impl/clone-block-children-inline-mismatch-crash.html
+               fast/multicol/newmulticol/compare-with-old-impl/clone-flexbox.html
+               fast/multicol/newmulticol/compare-with-old-impl/clone-summary.html
+               fast/multicol/newmulticol/compare-with-old-impl/column-span-inside-multicol-webkit-box.html
+               fast/multicol/newmulticol/compare-with-old-impl/continuation-crash.html
+               fast/multicol/newmulticol/compare-with-old-impl/double-merge-anonymous-block-crash.html
+               fast/multicol/newmulticol/compare-with-old-impl/empty-anonymous-block-split-crash.html
+               fast/multicol/newmulticol/compare-with-old-impl/float-not-removed-crash.html
+               fast/multicol/newmulticol/compare-with-old-impl/list-multi-column-crash.html
+               fast/multicol/newmulticol/compare-with-old-impl/positioned-child-not-removed-crash.html
+               fast/multicol/newmulticol/compare-with-old-impl/positioned-objects-not-removed-crash.html
+               fast/multicol/newmulticol/compare-with-old-impl/recursive-split-flow-crash.html
+               fast/multicol/newmulticol/compare-with-old-impl/removal-of-multicol-span-crash.html
+               fast/multicol/newmulticol/compare-with-old-impl/remove-child-split-flow-crash.html
+               fast/multicol/newmulticol/compare-with-old-impl/runin-continuation-crash.html
+               fast/multicol/newmulticol/compare-with-old-impl/span-as-immediate-child-complex-splitting.html
+               fast/multicol/newmulticol/compare-with-old-impl/span-as-nested-inline-block-child.html
+               fast/multicol/newmulticol/compare-with-old-impl/split-flow-anonymous-wrapper-crash.html
+               fast/multicol/newmulticol/compare-with-old-impl/split-inline-wrong-post-block-crash.html
+               fast/multicol/newmulticol/compare-with-old-impl/table-multi-column-crash.html
+               fast/multicol/newmulticol/compare-with-old-impl/textbox-not-removed-crash.html
+               fast/multicol/newmulticol/compare-with-old-impl/update-after-content-before-child-crash.html
+               fast/multicol/newmulticol/insert-row-content1.html
+               fast/multicol/newmulticol/insert-row-content2.html
+               fast/multicol/newmulticol/insert-row-content3.html
+               fast/multicol/newmulticol/insert-row-content4.html
+               fast/multicol/newmulticol/insert-row-content5.html
+               fast/multicol/newmulticol/insert-row-content6.html
+               fast/multicol/newmulticol/insert-row-content7.html
+               fast/multicol/newmulticol/insert-row-content8.html
+               fast/multicol/newmulticol/insert-row-content9.html
+               fast/multicol/newmulticol/insert-spanner-child1.html
+               fast/multicol/newmulticol/insert-spanner-child2.html
+               fast/multicol/newmulticol/insert-spanner-child3.html
+               fast/multicol/newmulticol/insert-spanner1.html
+               fast/multicol/newmulticol/insert-spanner2.html
+               fast/multicol/newmulticol/insert-spanner3.html
+               fast/multicol/newmulticol/insert-spanner4.html
+               fast/multicol/newmulticol/insert-spanner5.html
+               fast/multicol/newmulticol/insert-spanner6.html
+               fast/multicol/newmulticol/insert-spanner7.html
+               fast/multicol/newmulticol/insert-spanner8.html
+               fast/multicol/newmulticol/multicol-with-spanner-becomes-regular-block.html
+               fast/multicol/newmulticol/remove-row-content1.html
+               fast/multicol/newmulticol/remove-row-content2.html
+               fast/multicol/newmulticol/remove-row-content3.html
+               fast/multicol/newmulticol/remove-row-content4.html
+               fast/multicol/newmulticol/remove-row-content5.html
+               fast/multicol/newmulticol/remove-row-content6.html
+               fast/multicol/newmulticol/remove-row-content7.html
+               fast/multicol/newmulticol/remove-row-content8.html
+               fast/multicol/newmulticol/remove-row-content9.html
+               fast/multicol/newmulticol/remove-spanner1.html
+               fast/multicol/newmulticol/remove-spanner2.html
+               fast/multicol/newmulticol/remove-spanner3.html
+               fast/multicol/newmulticol/remove-spanner4.html
+               fast/multicol/newmulticol/remove-spanner5.html
+               fast/multicol/newmulticol/remove-spanner6.html
+               fast/multicol/newmulticol/sole-spanner.html
+               fast/multicol/newmulticol/span-between-text.html
+               fast/multicol/newmulticol/spanner-becomes-regular-block.html
+               fast/multicol/newmulticol/spanner-first.html
+               fast/multicol/newmulticol/spanner-img.html
+               fast/multicol/newmulticol/spanner-inline-block.html
+               fast/multicol/newmulticol/spanner-last.html
+               fast/multicol/newmulticol/spanner-nested-dynamic.html
+               fast/multicol/newmulticol/spanner-nested.html
+               fast/multicol/newmulticol/spanner-pseudo-after1.html
+               fast/multicol/newmulticol/spanner-pseudo-after2.html
+               fast/multicol/newmulticol/spanner-pseudo-after3.html
+               fast/multicol/newmulticol/spanner-pseudo-after4.html
+               fast/multicol/newmulticol/spanner-pseudo-before-after1.html
+               fast/multicol/newmulticol/spanner-pseudo-before-after2.html
+               fast/multicol/newmulticol/spanner-pseudo-before-after3.html
+               fast/multicol/newmulticol/spanner-pseudo-before-after4.html
+               fast/multicol/newmulticol/spanner-pseudo-before1.html
+               fast/multicol/newmulticol/spanner-pseudo-before2.html
+               fast/multicol/newmulticol/spanner-pseudo-before3.html
+               fast/multicol/newmulticol/spanner-pseudo-before4.html
+               fast/multicol/newmulticol/spanner-table.html
+               fast/multicol/newmulticol/spanner-with-margin.html
+               fast/multicol/newmulticol/spanner1.html
+               fast/multicol/newmulticol/spanner2.html
+               fast/multicol/newmulticol/spanner3.html
+               fast/multicol/newmulticol/spanner4.html
+               fast/multicol/newmulticol/spanner5.html
+               fast/multicol/newmulticol/spanner6.html
+               fast/multicol/newmulticol/spanner7.html
+               fast/multicol/newmulticol/spanner8.html
+               fast/multicol/newmulticol/spanner9.html
+               fast/multicol/newmulticol/trailing-margin-with-spanner.html
+               fast/multicol/newmulticol/trailing-margin-with-spanner2.html
+
+        * CMakeLists.txt:
+        * WebCore.vcxproj/WebCore.vcxproj:
+        * WebCore.vcxproj/WebCore.vcxproj.filters:
+        * rendering/RenderBlock.cpp:
+        (WebCore::RenderBlock::addChildIgnoringAnonymousColumnBlocks):
+        Disable the old anonymous multicol container and spanner anonymous
+        block generation machinery when the new multicol implementation is
+        enabled.
+        * rendering/RenderBlockFlow.cpp:
+        (WebCore::RenderBlockFlow::createMultiColumnFlowThread):
+        (WebCore::RenderBlockFlow::destroyMultiColumnFlowThread):
+        (WebCore::RenderBlockFlow::layoutBlockChild): Need to notify the
+        flow thread when a descendant's final position is known. Spanner
+        placeholders need to know where to terminate the column set that
+        it follows.
+        (WebCore::RenderBlockFlow::styleDidChange): Remove old code that
+        isn't needed anymore. The renderers in question (flow thread and
+        column sets) set display:block on themselves already. This code
+        caused problems for spanners, which got all their style wiped.
+        (WebCore::RenderBlockFlow::setMultiColumnFlowThread): If setting
+        the flow thread to nullptr, there's no need to create the &quot;rare
+        data&quot; structure.
+        (WebCore::RenderBlockFlow::relayoutForPagination):
+        (WebCore::RenderBlockFlow::layoutSpecialExcludedChild):
+        (WebCore::RenderBlockFlow::addChild): beforeChild is retrieved via
+        the DOM. If it is a spanner, we need to locate the placeholder
+        here, because that's the correct location to insert siblings,
+        DOM-wise.
+        (WebCore::RenderBlockFlow::removeChild): The multicol flow thread
+        needs to know when children disappear.
+        (WebCore::RenderBlockFlow::checkForPaginationLogicalHeightChange):
+        Don't modify the height back and forth when calculating the
+        multicol container's final height, as that messes up balancing.
+        (WebCore::RenderBlockFlow::insertedIntoTree): Deleted.
+        (WebCore::RenderBlockFlow::willBeDestroyed): Deleted.
+        (WebCore::RenderBlockFlow::styleWillChange): Deleted.
+        (WebCore::RenderBlockFlow::lineAtIndex): Deleted.
+        * rendering/RenderBlockFlow.h:
+        * rendering/RenderElement.cpp:
+        (WebCore::RenderElement::insertedIntoTree): Set up an element's
+        layer before notifying the flow thread. The multicol flow thread
+        may decide to move the element (if it's a spanner), which may
+        involve re-insertion of layers.  Calling
+        RenderObject::insertedIntoTree() last instead of first also better
+        matches the order we used to have prior to the introduction of
+        RenderElement, FWIW.
+        * rendering/RenderFlowThread.cpp:
+        (WebCore::RenderFlowThread::layout):
+        (WebCore::RenderFlowThread::removeRegionFromThread): Deleted.
+        (WebCore::RenderFlowThread::invalidateRegions): Deleted.
+        * rendering/RenderFlowThread.h:
+        * rendering/RenderMultiColumnFlowThread.cpp:
+        (WebCore::RenderMultiColumnFlowThread::RenderMultiColumnFlowThread):
+        (WebCore::RenderMultiColumnFlowThread::removeFlowChildInfo): When
+        a flow thread descendant is inserted, the multicol flow thread
+        needs to be notified.
+        (WebCore::RenderMultiColumnFlowThread::firstMultiColumnSet):
+        (WebCore::RenderMultiColumnFlowThread::lastMultiColumnSet):
+        (WebCore::RenderMultiColumnFlowThread::firstColumnSetOrSpanner):
+        (WebCore::RenderMultiColumnFlowThread::nextColumnSetOrSpannerSiblingOf):
+        (WebCore::RenderMultiColumnFlowThread::previousColumnSetOrSpannerSiblingOf):
+        (WebCore::RenderMultiColumnFlowThread::layout):
+        (WebCore::RenderMultiColumnFlowThread::findSetRendering):
+        (WebCore::RenderMultiColumnFlowThread::populate):
+        (WebCore::RenderMultiColumnFlowThread::evacuateAndDestroy):
+        (WebCore::RenderMultiColumnFlowThread::addRegionToThread):
+        (WebCore::RenderMultiColumnFlowThread::willBeRemovedFromTree):
+        Need to detach column sets here, since they have pointers to their
+        flow thread.
+        (WebCore::RenderMultiColumnFlowThread::resolveMovedChild):
+        (WebCore::isValidColumnSpanner):
+        (WebCore::RenderMultiColumnFlowThread::flowThreadDescendantInserted):
+        (WebCore::RenderMultiColumnFlowThread::flowThreadRelativeWillBeRemoved):
+        (WebCore::RenderMultiColumnFlowThread::flowThreadDescendantBoxLaidOut):
+        (WebCore::RenderMultiColumnFlowThread::autoGenerateRegionsToBlockOffset):
+        Nothing to be done here for the time being. Column sets are now
+        created during box creation. We are going to need to add some code
+        here again once multicol properly supports nested fragmentation
+        contexts (and you get adjacent column rows because of that).
+        (WebCore::RenderMultiColumnFlowThread::regionAtBlockOffset):
+        During layout, don't trust the region interval tree, as that one
+        depends on the resulting layout.
+        (WebCore::RenderMultiColumnFlowThread::setRegionRangeForBox): With
+        a convenience method to get the last column set, and column sets
+        now being created during normal box creation, this young method
+        needs an overhaul.
+        (WebCore::RenderMultiColumnFlowThread::setRegionRangeForBox):
+        (WebCore::RenderMultiColumnFlowThread::isPageLogicalHeightKnown):
+        * rendering/RenderMultiColumnFlowThread.h:
+        * rendering/RenderMultiColumnSet.cpp:
+        (WebCore::RenderMultiColumnSet::nextSiblingMultiColumnSet):
+        (WebCore::RenderMultiColumnSet::previousSiblingMultiColumnSet):
+        (WebCore::RenderMultiColumnSet::firstRendererInFlowThread):
+        (WebCore::RenderMultiColumnSet::lastRendererInFlowThread):
+        (WebCore::precedesRenderer):
+        (WebCore::RenderMultiColumnSet::containsRendererInFlowThread):
+        (WebCore::RenderMultiColumnSet::setLogicalTopInFlowThread):
+        (WebCore::RenderMultiColumnSet::setLogicalBottomInFlowThread):
+        (WebCore::RenderMultiColumnSet::pageLogicalTopForOffset):
+        (WebCore::RenderMultiColumnSet::distributeImplicitBreaks):
+        (WebCore::RenderMultiColumnSet::calculateBalancedHeight):
+        (WebCore::RenderMultiColumnSet::addForcedBreak):
+        (WebCore::RenderMultiColumnSet::recalculateColumnHeight):
+        Previously only needed if columns were to be balanced, now it's
+        also needed when not balancing.
+        (WebCore::RenderMultiColumnSet::recordSpaceShortage): Some layout
+        elements actually have 0 height. Skip them, since they're not
+        taking us anywhere.
+        (WebCore::RenderMultiColumnSet::updateLogicalWidth):
+        (WebCore::RenderMultiColumnSet::requiresBalancing): Column sets
+        now have individual balancing needs. If they precede a spanner,
+        they must always be balanced. For the last column set, see if
+        height is unspecified or column-fill is 'balance' (like before).
+        (WebCore::RenderMultiColumnSet::prepareForLayout):
+        (WebCore::RenderMultiColumnSet::beginFlow):
+        (WebCore::RenderMultiColumnSet::endFlow):
+        (WebCore::RenderMultiColumnSet::layout):
+        (WebCore::RenderMultiColumnSet::calculateMaxColumnHeight):
+        (WebCore::RenderMultiColumnSet::columnRectAt):
+        (WebCore::RenderMultiColumnSet::flowThreadPortionOverflowRect):
+        (WebCore::RenderMultiColumnSet::paintColumnRules):
+        (WebCore::RenderMultiColumnSet::initialBlockOffsetForPainting):
+        (WebCore::RenderMultiColumnSet::collectLayerFragments):
+        (WebCore::RenderMultiColumnSet::columnTranslationForOffset):
+        (WebCore::RenderMultiColumnSet::setAndConstrainColumnHeight): Deleted.
+        (WebCore::RenderMultiColumnSet::findRunWithTallestColumns): Deleted.
+        (WebCore::RenderMultiColumnSet::clearForcedBreaks): Deleted.
+        (WebCore::RenderMultiColumnSet::repaintFlowThreadContent): Deleted.
+        * rendering/RenderMultiColumnSet.h:
+        * rendering/RenderMultiColumnSpannerPlaceholder.cpp: Added.
+        (WebCore::RenderMultiColumnSpannerPlaceholder::createAnonymous):
+        (WebCore::RenderMultiColumnSpannerPlaceholder::RenderMultiColumnSpannerPlaceholder):
+        (WebCore::RenderMultiColumnSpannerPlaceholder::renderName):
+        * rendering/RenderMultiColumnSpannerPlaceholder.h: Added.
+        * rendering/RenderObject.cpp:
+        (WebCore::RenderObject::insertedIntoTree): Need to notify the
+        multicol flow thread when descendants are inserted. That may
+        trigger insertion of column sets, or, in the case of spanners,
+        they need to be moved out from the flow thread.
+        * rendering/RenderObject.h:
+        (WebCore::RenderObject::isRenderMultiColumnSpannerPlaceholder):
+        (WebCore::RenderObject::isAnonymousBlock): Exclude column sets
+        here, so that they don't get involved in anonymous block merging
+        and other kinds of fun.
+        * rendering/RenderRegion.h:
+        * rendering/RenderRegionSet.h:
+
</ins><span class="cx"> 2014-04-15  Simon Fraser  &lt;simon.fraser@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         LayerTreeAsTextBehavior should be in the WebCore namespace
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorevcxprojWebCorevcxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj (167334 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj        2014-04-15 23:25:38 UTC (rev 167334)
+++ trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -10495,6 +10495,20 @@
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><ins>+    &lt;ClCompile Include=&quot;..\rendering\RenderMultiColumnSpannerPlaceholder.cpp&quot;&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+    &lt;/ClCompile&gt;
</ins><span class="cx">     &lt;ClCompile Include=&quot;..\rendering\RenderNamedFlowFragment.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\rendering\RenderNamedFlowThread.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\rendering\RenderObject.cpp&quot;&gt;
</span><span class="lines">@@ -20005,6 +20019,7 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\rendering\RenderMeter.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\rendering\RenderMultiColumnFlowThread.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\rendering\RenderMultiColumnSet.h&quot; /&gt;
</span><ins>+    &lt;ClInclude Include=&quot;..\rendering\RenderMultiColumnSpannerPlaceholder.h&quot; /&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;..\rendering\RenderNamedFlowFragment.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\rendering\RenderNamedFlowThread.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\rendering\RenderObject.h&quot; /&gt;
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorevcxprojWebCorevcxprojfilters"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters (167334 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters        2014-04-15 23:25:38 UTC (rev 167334)
+++ trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -2520,6 +2520,9 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\rendering\RenderMultiColumnSet.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;rendering&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><ins>+    &lt;ClCompile Include=&quot;..\rendering\RenderMultiColumnSpannerPlaceholder.cpp&quot;&gt;
+      &lt;Filter&gt;rendering&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
</ins><span class="cx">     &lt;ClCompile Include=&quot;..\rendering\RenderNamedFlowThread.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;rendering&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><span class="lines">@@ -9406,6 +9409,9 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\rendering\RenderMultiColumnSet.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;rendering&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><ins>+    &lt;ClInclude Include=&quot;..\rendering\RenderMultiColumnSpannerPlaceholder.h&quot;&gt;
+      &lt;Filter&gt;rendering&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;..\rendering\RenderNamedFlowThread.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;rendering&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (167334 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2014-04-15 23:25:38 UTC (rev 167334)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -4962,6 +4962,8 @@
</span><span class="cx">                 BC1A37BE097C715F0019F3D8 /* DOMTraversal.h in Headers */ = {isa = PBXBuildFile; fileRef = BC1A37A8097C715F0019F3D8 /* DOMTraversal.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 BC1A37BF097C715F0019F3D8 /* DOMUtility.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC1A37A9097C715F0019F3D8 /* DOMUtility.mm */; };
</span><span class="cx">                 BC1A37C0097C715F0019F3D8 /* DOMViews.h in Headers */ = {isa = PBXBuildFile; fileRef = BC1A37AA097C715F0019F3D8 /* DOMViews.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><ins>+                BC1A7D9718FCB5B000421879 /* RenderMultiColumnSpannerPlaceholder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC1A7D9518FCB5B000421879 /* RenderMultiColumnSpannerPlaceholder.cpp */; };
+                BC1A7D9818FCB5B000421879 /* RenderMultiColumnSpannerPlaceholder.h in Headers */ = {isa = PBXBuildFile; fileRef = BC1A7D9618FCB5B000421879 /* RenderMultiColumnSpannerPlaceholder.h */; };
</ins><span class="cx">                 BC1BDF24156C1883001C1243 /* DOMError.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC1BDF20156C17A9001C1243 /* DOMError.cpp */; };
</span><span class="cx">                 BC1BDF25156C18C7001C1243 /* DOMError.h in Headers */ = {isa = PBXBuildFile; fileRef = BC1BDF21156C17A9001C1243 /* DOMError.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 BC20FB7F0C0E8E6C00D1447F /* JSCSSValueCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC20FB7E0C0E8E6C00D1447F /* JSCSSValueCustom.cpp */; };
</span><span class="lines">@@ -12227,6 +12229,8 @@
</span><span class="cx">                 BC1A37A8097C715F0019F3D8 /* DOMTraversal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMTraversal.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BC1A37A9097C715F0019F3D8 /* DOMUtility.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMUtility.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BC1A37AA097C715F0019F3D8 /* DOMViews.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMViews.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                BC1A7D9518FCB5B000421879 /* RenderMultiColumnSpannerPlaceholder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderMultiColumnSpannerPlaceholder.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                BC1A7D9618FCB5B000421879 /* RenderMultiColumnSpannerPlaceholder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderMultiColumnSpannerPlaceholder.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 BC1BDF20156C17A9001C1243 /* DOMError.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMError.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BC1BDF21156C17A9001C1243 /* DOMError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMError.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BC1BDF22156C17A9001C1243 /* DOMError.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DOMError.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -22012,6 +22016,8 @@
</span><span class="cx">                                 1A3586DE15264C450022A659 /* RenderMultiColumnFlowThread.h */,
</span><span class="cx">                                 BCE32B9D1517C22700F542EC /* RenderMultiColumnSet.cpp */,
</span><span class="cx">                                 BCE32B9B1517C0B100F542EC /* RenderMultiColumnSet.h */,
</span><ins>+                                BC1A7D9518FCB5B000421879 /* RenderMultiColumnSpannerPlaceholder.cpp */,
+                                BC1A7D9618FCB5B000421879 /* RenderMultiColumnSpannerPlaceholder.h */,
</ins><span class="cx">                                 8AC822FA180FC03300FB64D5 /* RenderNamedFlowFragment.cpp */,
</span><span class="cx">                                 8AC822FB180FC03300FB64D5 /* RenderNamedFlowFragment.h */,
</span><span class="cx">                                 BC85F23E1519187300BC17BE /* RenderNamedFlowThread.cpp */,
</span><span class="lines">@@ -23606,6 +23612,7 @@
</span><span class="cx">                                 85DF821D0AA7849E00486AD7 /* DOMHTMLTableCaptionElement.h in Headers */,
</span><span class="cx">                                 85E711C80AC5D5350053270F /* DOMHTMLTableCaptionElementInternal.h in Headers */,
</span><span class="cx">                                 85DF821F0AA7849E00486AD7 /* DOMHTMLTableCellElement.h in Headers */,
</span><ins>+                                BC1A7D9818FCB5B000421879 /* RenderMultiColumnSpannerPlaceholder.h in Headers */,
</ins><span class="cx">                                 85E711C90AC5D5350053270F /* DOMHTMLTableCellElementInternal.h in Headers */,
</span><span class="cx">                                 85DF82210AA7849E00486AD7 /* DOMHTMLTableColElement.h in Headers */,
</span><span class="cx">                                 85E711CA0AC5D5350053270F /* DOMHTMLTableColElementInternal.h in Headers */,
</span><span class="lines">@@ -28567,6 +28574,7 @@
</span><span class="cx">                                 B27535640B053814002CE64F /* PDFDocumentImage.cpp in Sources */,
</span><span class="cx">                                 2D6E468417D660F500ECF8BB /* PDFDocumentImageMac.mm in Sources */,
</span><span class="cx">                                 8A7CC97012076F8A001D4588 /* PendingScript.cpp in Sources */,
</span><ins>+                                BC1A7D9718FCB5B000421879 /* RenderMultiColumnSpannerPlaceholder.cpp in Sources */,
</ins><span class="cx">                                 E526AF3F1727F8F200E41781 /* Performance.cpp in Sources */,
</span><span class="cx">                                 86BE340315058CB200CE0FD8 /* PerformanceEntryList.cpp in Sources */,
</span><span class="cx">                                 8AF4E55511DC5A36000ED3DE /* PerformanceNavigation.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBlockcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBlock.cpp (167334 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBlock.cpp        2014-04-15 23:25:38 UTC (rev 167334)
+++ trunk/Source/WebCore/rendering/RenderBlock.cpp        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -754,7 +754,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // Check for a spanning element in columns.
</span><del>-    if (gColumnFlowSplitEnabled) {
</del><ins>+    if (gColumnFlowSplitEnabled &amp;&amp; !document().regionBasedColumnsEnabled()) {
</ins><span class="cx">         RenderBlock* columnsBlockAncestor = columnsBlockForSpanningElement(newChild);
</span><span class="cx">         if (columnsBlockAncestor) {
</span><span class="cx">             TemporaryChange&lt;bool&gt; columnFlowSplitEnabled(gColumnFlowSplitEnabled, false);
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBlockFlowcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBlockFlow.cpp (167334 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBlockFlow.cpp        2014-04-15 23:25:38 UTC (rev 167334)
+++ trunk/Source/WebCore/rendering/RenderBlockFlow.cpp        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -117,27 +117,16 @@
</span><span class="cx"> {
</span><span class="cx">     RenderMultiColumnFlowThread* flowThread = new RenderMultiColumnFlowThread(document(), RenderStyle::createAnonymousStyleWithDisplay(&amp;style(), BLOCK));
</span><span class="cx">     flowThread-&gt;initializeStyle();
</span><del>-    moveAllChildrenTo(flowThread, true);
</del><ins>+    setChildrenInline(false); // Do this to avoid wrapping inline children that are just going to move into the flow thread.
</ins><span class="cx">     RenderBlock::addChild(flowThread);
</span><ins>+    flowThread-&gt;populate(); // Called after the flow thread is inserted so that we are reachable by the flow thread.
</ins><span class="cx">     setMultiColumnFlowThread(flowThread);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderBlockFlow::destroyMultiColumnFlowThread()
</span><span class="cx"> {
</span><del>-    // Get the flow thread out of our list.
-    multiColumnFlowThread()-&gt;removeFromParent();
-    
-    // Destroy all the multicolumn sets.
-    destroyLeftoverChildren();
-    
-    // Move all the children of the flow thread into our block.
-    multiColumnFlowThread()-&gt;moveAllChildrenTo(this, true);
-    
-    // Now destroy the flow thread.
-    multiColumnFlowThread()-&gt;destroy();
-    
-    // Clear the multi-column flow thread pointer.
-    setMultiColumnFlowThread(nullptr);
</del><ins>+    multiColumnFlowThread()-&gt;evacuateAndDestroy();
+    ASSERT(!multiColumnFlowThread());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderBlockFlow::insertedIntoTree()
</span><span class="lines">@@ -703,6 +692,8 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (paginated) {
</span><ins>+        if (RenderFlowThread* flowThread = flowThreadContainingBlock())
+            flowThread-&gt;flowThreadDescendantBoxLaidOut(&amp;child);
</ins><span class="cx">         // Check for an after page/column break.
</span><span class="cx">         LayoutUnit newHeight = applyAfterBreak(child, logicalHeight(), marginInfo);
</span><span class="cx">         if (newHeight != height())
</span><span class="lines">@@ -1877,11 +1868,6 @@
</span><span class="cx"> 
</span><span class="cx">     if (diff &gt;= StyleDifferenceRepaint)
</span><span class="cx">         invalidateLineLayoutPath();
</span><del>-    
-    if (multiColumnFlowThread()) {
-        for (RenderBox* child = firstChildBox(); child; child = child-&gt;nextSiblingBox())
-            child-&gt;setStyle(RenderStyle::createAnonymousStyleWithDisplay(&amp;style(), BLOCK));
-    }
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderBlockFlow::styleWillChange(StyleDifference diff, const RenderStyle&amp; newStyle)
</span><span class="lines">@@ -2932,8 +2918,10 @@
</span><span class="cx"> 
</span><span class="cx"> void RenderBlockFlow::setMultiColumnFlowThread(RenderMultiColumnFlowThread* flowThread)
</span><span class="cx"> {
</span><del>-    RenderBlockFlowRareData&amp; rareData = ensureRareBlockFlowData();
-    rareData.m_multiColumnFlowThread = flowThread;
</del><ins>+    if (flowThread || hasRareBlockFlowData()) {
+        RenderBlockFlowRareData&amp; rareData = ensureRareBlockFlowData();
+        rareData.m_multiColumnFlowThread = flowThread;
+    }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static bool shouldCheckLines(const RenderBlockFlow&amp; blockFlow)
</span><span class="lines">@@ -3262,7 +3250,7 @@
</span><span class="cx">     if (!multiColumnFlowThread()-&gt;shouldRelayoutForPagination())
</span><span class="cx">         return false;
</span><span class="cx">     
</span><del>-    multiColumnFlowThread()-&gt;setNeedsRebalancing(false);
</del><ins>+    multiColumnFlowThread()-&gt;setNeedsHeightsRecalculation(false);
</ins><span class="cx">     multiColumnFlowThread()-&gt;setInBalancingPass(true); // Prevent re-entering this method (and recursion into layout).
</span><span class="cx"> 
</span><span class="cx">     bool needsRelayout;
</span><span class="lines">@@ -3275,15 +3263,17 @@
</span><span class="cx">         // passes than that, though, but the number of retries should not exceed the number of
</span><span class="cx">         // columns, unless we have a bug.
</span><span class="cx">         needsRelayout = false;
</span><del>-        for (RenderBox* childBox = firstChildBox(); childBox; childBox = childBox-&gt;nextSiblingBox())
-            if (childBox != multiColumnFlowThread() &amp;&amp; childBox-&gt;isRenderMultiColumnSet()) {
-                RenderMultiColumnSet* multicolSet = toRenderMultiColumnSet(childBox);
-                if (multicolSet-&gt;recalculateBalancedHeight(firstPass)) {
-                    multicolSet-&gt;setChildNeedsLayout(MarkOnlyThis);
-                    needsRelayout = true;
-                }
</del><ins>+        for (RenderMultiColumnSet* multicolSet = multiColumnFlowThread()-&gt;firstMultiColumnSet(); multicolSet; multicolSet = multicolSet-&gt;nextSiblingMultiColumnSet()) {
+            if (multicolSet-&gt;recalculateColumnHeight(firstPass))
+                needsRelayout = true;
+            if (needsRelayout) {
+                // Once a column set gets a new column height, that column set and all successive column
+                // sets need to be laid out over again, since their logical top will be affected by
+                // this, and therefore their column heights may change as well, at least if the multicol
+                // height is constrained.
+                multicolSet-&gt;setChildNeedsLayout(MarkOnlyThis);
</ins><span class="cx">             }
</span><del>-
</del><ins>+        }
</ins><span class="cx">         if (needsRelayout) {
</span><span class="cx">             // Layout again. Column balancing resulted in a new height.
</span><span class="cx">             neededRelayout = true;
</span><span class="lines">@@ -3493,31 +3483,23 @@
</span><span class="cx"> 
</span><span class="cx"> RenderObject* RenderBlockFlow::layoutSpecialExcludedChild(bool relayoutChildren)
</span><span class="cx"> {
</span><del>-    if (!multiColumnFlowThread())
-        return 0;
</del><ins>+    RenderMultiColumnFlowThread* flowThread = multiColumnFlowThread();
+    if (!flowThread)
+        return nullptr;
</ins><span class="cx"> 
</span><del>-    // Update the dimensions of our regions before we lay out the flow thread.
-    // FIXME: Eventually this is going to get way more complicated, and we will be destroying regions
-    // instead of trying to keep them around.
-    bool shouldInvalidateRegions = false;
-    for (RenderBox* childBox = firstChildBox(); childBox; childBox = childBox-&gt;nextSiblingBox()) {
-        if (childBox == multiColumnFlowThread())
-            continue;
</del><ins>+    setLogicalTopForChild(*flowThread, borderAndPaddingBefore());
</ins><span class="cx"> 
</span><del>-        if (relayoutChildren || childBox-&gt;needsLayout()) {
-            if (!multiColumnFlowThread()-&gt;inBalancingPass() &amp;&amp; childBox-&gt;isRenderMultiColumnSet())
-                toRenderMultiColumnSet(childBox)-&gt;prepareForLayout();
-            shouldInvalidateRegions = true;
-        }
-    }
-    
-    if (shouldInvalidateRegions)
-        multiColumnFlowThread()-&gt;invalidateRegions();
-
</del><span class="cx">     if (relayoutChildren)
</span><del>-        multiColumnFlowThread()-&gt;setChildNeedsLayout(MarkOnlyThis);
-    
-    if (multiColumnFlowThread()-&gt;requiresBalancing()) {
</del><ins>+        flowThread-&gt;setChildNeedsLayout(MarkOnlyThis);
+
+    if (flowThread-&gt;needsLayout()) {
+        for (RenderMultiColumnSet* columnSet = flowThread-&gt;firstMultiColumnSet(); columnSet; columnSet = columnSet-&gt;nextSiblingMultiColumnSet())
+            columnSet-&gt;prepareForLayout(!flowThread-&gt;inBalancingPass());
+
+        flowThread-&gt;invalidateRegions();
+        flowThread-&gt;setNeedsHeightsRecalculation(true);
+        flowThread-&gt;layout();
+    } else {
</ins><span class="cx">         // At the end of multicol layout, relayoutForPagination() is called unconditionally, but if
</span><span class="cx">         // no children are to be laid out (e.g. fixed width with layout already being up-to-date),
</span><span class="cx">         // we want to prevent it from doing any work, so that the column balancing machinery doesn't
</span><span class="lines">@@ -3526,23 +3508,34 @@
</span><span class="cx">         // are actually required to guarantee this. The calculation of implicit breaks needs to be
</span><span class="cx">         // preceded by a proper layout pass, since it's layout that sets up content runs, and the
</span><span class="cx">         // runs get deleted right after every pass.
</span><del>-        multiColumnFlowThread()-&gt;setNeedsRebalancing(shouldInvalidateRegions || multiColumnFlowThread()-&gt;needsLayout());
</del><ins>+        flowThread-&gt;setNeedsHeightsRecalculation(false);
</ins><span class="cx">     }
</span><ins>+    determineLogicalLeftPositionForChild(*flowThread);
</ins><span class="cx"> 
</span><del>-    setLogicalTopForChild(*multiColumnFlowThread(), borderAndPaddingBefore());
-    multiColumnFlowThread()-&gt;layoutIfNeeded();
-    determineLogicalLeftPositionForChild(*multiColumnFlowThread());
-    
-    return multiColumnFlowThread();
</del><ins>+    return flowThread;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderBlockFlow::addChild(RenderObject* newChild, RenderObject* beforeChild)
</span><span class="cx"> {
</span><span class="cx">     if (multiColumnFlowThread())
</span><span class="cx">         return multiColumnFlowThread()-&gt;addChild(newChild, beforeChild);
</span><ins>+    if (beforeChild) {
+        if (RenderFlowThread* containingFlowThread = flowThreadContainingBlock())
+            beforeChild = containingFlowThread-&gt;resolveMovedChild(beforeChild);
+    }
</ins><span class="cx">     RenderBlock::addChild(newChild, beforeChild);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void RenderBlockFlow::removeChild(RenderObject&amp; oldChild)
+{
+    if (!documentBeingDestroyed()) {
+        RenderFlowThread* flowThread = multiColumnFlowThread();
+        if (flowThread &amp;&amp; flowThread != &amp;oldChild)
+            flowThread-&gt;flowThreadRelativeWillBeRemoved(&amp;oldChild);
+    }
+    RenderBlock::removeChild(oldChild);
+}
+
</ins><span class="cx"> void RenderBlockFlow::checkForPaginationLogicalHeightChange(LayoutUnit&amp; pageLogicalHeight, bool&amp; pageLogicalHeightChanged, bool&amp; hasSpecifiedPageLogicalHeight)
</span><span class="cx"> {
</span><span class="cx">     // If we don't use either of the two column implementations or a flow thread, then bail.
</span><span class="lines">@@ -3550,10 +3543,11 @@
</span><span class="cx">         return;
</span><span class="cx">     
</span><span class="cx">     // We don't actually update any of the variables. We just subclassed to adjust our column height.
</span><del>-    if (multiColumnFlowThread()) {
-        updateLogicalHeight();
-        multiColumnFlowThread()-&gt;setColumnHeightAvailable(std::max&lt;LayoutUnit&gt;(contentLogicalHeight(), 0));
-        setLogicalHeight(0);
</del><ins>+    if (RenderMultiColumnFlowThread* flowThread = multiColumnFlowThread()) {
+        LogicalExtentComputedValues computedValues;
+        computeLogicalHeight(LayoutUnit(), logicalTop(), computedValues);
+        LayoutUnit columnHeight = computedValues.m_extent - borderAndPaddingLogicalHeight() - scrollbarLogicalHeight();
+        flowThread-&gt;setColumnHeightAvailable(std::max&lt;LayoutUnit&gt;(columnHeight, 0));
</ins><span class="cx">     } else if (hasColumns()) {
</span><span class="cx">         ColumnInfo* colInfo = columnInfo();
</span><span class="cx">     
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBlockFlowh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBlockFlow.h (167334 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBlockFlow.h        2014-04-15 23:25:38 UTC (rev 167334)
+++ trunk/Source/WebCore/rendering/RenderBlockFlow.h        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -377,7 +377,8 @@
</span><span class="cx">     bool hasNextPage(LayoutUnit logicalOffset, PageBoundaryRule = ExcludePageBoundary) const;
</span><span class="cx"> 
</span><span class="cx">     void addChild(RenderObject* newChild, RenderObject* beforeChild = 0) override;
</span><del>-    
</del><ins>+    void removeChild(RenderObject&amp;) override;
+
</ins><span class="cx">     void createMultiColumnFlowThread();
</span><span class="cx">     void destroyMultiColumnFlowThread();
</span><span class="cx">     
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderElement.cpp (167334 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderElement.cpp        2014-04-15 23:25:38 UTC (rev 167334)
+++ trunk/Source/WebCore/rendering/RenderElement.cpp        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -965,8 +965,6 @@
</span><span class="cx"> 
</span><span class="cx"> void RenderElement::insertedIntoTree()
</span><span class="cx"> {
</span><del>-    RenderObject::insertedIntoTree();
-
</del><span class="cx">     if (auto* containerFlowThread = parent()-&gt;renderNamedFlowThreadWrapper())
</span><span class="cx">         containerFlowThread-&gt;addFlowChild(*this);
</span><span class="cx"> 
</span><span class="lines">@@ -986,6 +984,8 @@
</span><span class="cx">         if (layer)
</span><span class="cx">             layer-&gt;setHasVisibleContent();
</span><span class="cx">     }
</span><ins>+
+    RenderObject::insertedIntoTree();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderElement::willBeRemovedFromTree()
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderFlowThreadcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderFlowThread.cpp (167334 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderFlowThread.cpp        2014-04-15 23:25:38 UTC (rev 167334)
+++ trunk/Source/WebCore/rendering/RenderFlowThread.cpp        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -95,13 +95,6 @@
</span><span class="cx">         removeRenderBoxRegionInfo(toRenderBox(child));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void RenderFlowThread::addRegionToThread(RenderRegion* renderRegion)
-{
-    ASSERT(renderRegion);
-    m_regionList.add(renderRegion);
-    renderRegion-&gt;setIsValid(true);
-}
-
</del><span class="cx"> void RenderFlowThread::removeRegionFromThread(RenderRegion* renderRegion)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(renderRegion);
</span><span class="lines">@@ -204,9 +197,6 @@
</span><span class="cx"> 
</span><span class="cx">     m_pageLogicalSizeChanged = false;
</span><span class="cx"> 
</span><del>-    if (lastRegion())
-        lastRegion()-&gt;expandToEncompassFlowThreadContentsIfNeeded();
-
</del><span class="cx">     // If there are children layers in the RenderFlowThread then we need to make sure that the
</span><span class="cx">     // composited children layers will land in the right RenderRegions. Also, the parent RenderRegions
</span><span class="cx">     // will get RenderLayers and become composited as needed.
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderFlowThreadh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderFlowThread.h (167334 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderFlowThread.h        2014-04-15 23:25:38 UTC (rev 167334)
+++ trunk/Source/WebCore/rendering/RenderFlowThread.h        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -65,7 +65,7 @@
</span><span class="cx">     bool hasChildInfo(RenderObject* child) const { return child &amp;&amp; child-&gt;isBox() &amp;&amp; m_regionRangeMap.contains(toRenderBox(child)); }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    virtual void addRegionToThread(RenderRegion*);
</del><ins>+    virtual void addRegionToThread(RenderRegion*) = 0;
</ins><span class="cx">     virtual void removeRegionFromThread(RenderRegion*);
</span><span class="cx">     const RenderRegionList&amp; renderRegionList() const { return m_regionList; }
</span><span class="cx"> 
</span><span class="lines">@@ -81,6 +81,17 @@
</span><span class="cx">     void invalidateRegions();
</span><span class="cx">     bool hasValidRegionInfo() const { return !m_regionsInvalidated &amp;&amp; !m_regionList.isEmpty(); }
</span><span class="cx"> 
</span><ins>+    // Some renderers (column spanners) are moved out of the flow thread to live among column
+    // sets. If |child| is such a renderer, resolve it to the placeholder that lives at the original
+    // location in the tree.
+    virtual RenderObject* resolveMovedChild(RenderObject* child) const { return child; }
+    // Called when a descendant of the flow thread has been inserted.
+    virtual void flowThreadDescendantInserted(RenderObject*) { }
+    // Called when a sibling or descendant of the flow thread is about to be removed.
+    virtual void flowThreadRelativeWillBeRemoved(RenderObject*) { }
+    // Called when a descendant box's layout is finished and it has been positioned within its container.
+    virtual void flowThreadDescendantBoxLaidOut(RenderBox*) { }
+
</ins><span class="cx">     static PassRef&lt;RenderStyle&gt; createFlowThreadStyle(RenderStyle* parentStyle);
</span><span class="cx"> 
</span><span class="cx">     virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle) override;
</span><span class="lines">@@ -102,7 +113,7 @@
</span><span class="cx">         DisallowRegionAutoGeneration,
</span><span class="cx">     };
</span><span class="cx"> 
</span><del>-    RenderRegion* regionAtBlockOffset(const RenderBox*, LayoutUnit, bool extendLastRegion = false, RegionAutoGenerationPolicy = AllowRegionAutoGeneration);
</del><ins>+    virtual RenderRegion* regionAtBlockOffset(const RenderBox*, LayoutUnit, bool extendLastRegion = false, RegionAutoGenerationPolicy = AllowRegionAutoGeneration);
</ins><span class="cx"> 
</span><span class="cx">     bool regionsHaveUniformLogicalWidth() const { return m_regionsHaveUniformLogicalWidth; }
</span><span class="cx">     bool regionsHaveUniformLogicalHeight() const { return m_regionsHaveUniformLogicalHeight; }
</span><span class="lines">@@ -122,7 +133,7 @@
</span><span class="cx">     bool previousRegionCountChanged() const { return m_previousRegionCount != m_regionList.size(); };
</span><span class="cx">     void updatePreviousRegionCount() { m_previousRegionCount = m_regionList.size(); };
</span><span class="cx"> 
</span><del>-    void setRegionRangeForBox(const RenderBox*, RenderRegion*, RenderRegion*);
</del><ins>+    virtual void setRegionRangeForBox(const RenderBox*, RenderRegion*, RenderRegion*);
</ins><span class="cx">     bool getRegionRangeForBox(const RenderBox*, RenderRegion*&amp; startRegion, RenderRegion*&amp; endRegion) const;
</span><span class="cx">     bool hasRegionRangeForBox(const RenderBox* box) const { ASSERT(box); return m_regionRangeMap.contains(box); }
</span><span class="cx"> 
</span><span class="lines">@@ -207,6 +218,8 @@
</span><span class="cx">     
</span><span class="cx">     bool regionInRange(const RenderRegion* targetRegion, const RenderRegion* startRegion, const RenderRegion* endRegion) const;
</span><span class="cx"> 
</span><ins>+    virtual void layout() override;
+
</ins><span class="cx"> private:
</span><span class="cx">     virtual bool isRenderFlowThread() const override final { return true; }
</span><span class="cx"> 
</span><span class="lines">@@ -218,7 +231,6 @@
</span><span class="cx">     RenderFlowThread(Document&amp;, PassRef&lt;RenderStyle&gt;);
</span><span class="cx"> 
</span><span class="cx">     virtual const char* renderName() const = 0;
</span><del>-    virtual void layout() override;
</del><span class="cx"> 
</span><span class="cx">     // Overridden by columns/pages to set up an initial logical width of the page width even when
</span><span class="cx">     // no regions have been generated yet.
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderMultiColumnFlowThreadcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderMultiColumnFlowThread.cpp (167334 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderMultiColumnFlowThread.cpp        2014-04-15 23:25:38 UTC (rev 167334)
+++ trunk/Source/WebCore/rendering/RenderMultiColumnFlowThread.cpp        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -28,19 +28,23 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;LayoutState.h&quot;
</span><span class="cx"> #include &quot;RenderMultiColumnSet.h&quot;
</span><ins>+#include &quot;RenderMultiColumnSpannerPlaceholder.h&quot;
</ins><span class="cx"> #include &quot;TransformState.h&quot;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> RenderMultiColumnFlowThread::RenderMultiColumnFlowThread(Document&amp; document, PassRef&lt;RenderStyle&gt; style)
</span><span class="cx">     : RenderFlowThread(document, std::move(style))
</span><ins>+    , m_lastSetWorkedOn(nullptr)
</ins><span class="cx">     , m_columnCount(1)
</span><span class="cx">     , m_columnWidth(0)
</span><span class="cx">     , m_columnHeightAvailable(0)
</span><ins>+    , m_inLayout(false)
</ins><span class="cx">     , m_inBalancingPass(false)
</span><del>-    , m_needsRebalancing(false)
</del><ins>+    , m_needsHeightsRecalculation(false)
</ins><span class="cx">     , m_progressionIsInline(false)
</span><span class="cx">     , m_progressionIsReversed(false)
</span><ins>+    , m_beingEvacuated(false)
</ins><span class="cx"> {
</span><span class="cx">     setFlowThreadState(InsideInFlowThread);
</span><span class="cx"> }
</span><span class="lines">@@ -49,11 +53,365 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void RenderMultiColumnFlowThread::removeFlowChildInfo(RenderObject* child)
+{
+    RenderFlowThread::removeFlowChildInfo(child);
+    flowThreadRelativeWillBeRemoved(child);
+}
+
</ins><span class="cx"> const char* RenderMultiColumnFlowThread::renderName() const
</span><span class="cx"> {    
</span><span class="cx">     return &quot;RenderMultiColumnFlowThread&quot;;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+RenderMultiColumnSet* RenderMultiColumnFlowThread::firstMultiColumnSet() const
+{
+    for (RenderObject* sibling = nextSibling(); sibling; sibling = sibling-&gt;nextSibling()) {
+        if (sibling-&gt;isRenderMultiColumnSet())
+            return toRenderMultiColumnSet(sibling);
+    }
+    return nullptr;
+}
+
+RenderMultiColumnSet* RenderMultiColumnFlowThread::lastMultiColumnSet() const
+{
+    for (RenderObject* sibling = multiColumnBlockFlow()-&gt;lastChild(); sibling; sibling = sibling-&gt;previousSibling()) {
+        if (sibling-&gt;isRenderMultiColumnSet())
+            return toRenderMultiColumnSet(sibling);
+    }
+    return nullptr;
+}
+
+RenderBox* RenderMultiColumnFlowThread::firstColumnSetOrSpanner() const
+{
+    if (RenderObject* sibling = nextSibling()) {
+        ASSERT(sibling-&gt;isBox());
+        ASSERT(sibling-&gt;isRenderMultiColumnSet() || findColumnSpannerPlaceholder(toRenderBox(sibling)));
+        return toRenderBox(sibling);
+    }
+    return nullptr;
+}
+
+RenderBox* RenderMultiColumnFlowThread::nextColumnSetOrSpannerSiblingOf(const RenderBox* child)
+{
+    if (!child)
+        return nullptr;
+    if (RenderObject* sibling = child-&gt;nextSibling()) {
+        ASSERT(sibling-&gt;isBox());
+        return toRenderBox(sibling);
+    }
+    return nullptr;
+}
+
+RenderBox* RenderMultiColumnFlowThread::previousColumnSetOrSpannerSiblingOf(const RenderBox* child)
+{
+    if (!child)
+        return nullptr;
+    if (RenderObject* sibling = child-&gt;previousSibling()) {
+        ASSERT(sibling-&gt;isBox());
+        if (sibling-&gt;isRenderFlowThread())
+            return nullptr;
+        return toRenderBox(sibling);
+    }
+    return nullptr;
+}
+
+void RenderMultiColumnFlowThread::layout()
+{
+    ASSERT(!m_inLayout);
+    m_inLayout = true;
+    m_lastSetWorkedOn = nullptr;
+    if (RenderBox* first = firstColumnSetOrSpanner()) {
+        if (first-&gt;isRenderMultiColumnSet()) {
+            m_lastSetWorkedOn = toRenderMultiColumnSet(first);
+            m_lastSetWorkedOn-&gt;beginFlow(this);
+        }
+    }
+    RenderFlowThread::layout();
+    if (RenderMultiColumnSet* lastSet = lastMultiColumnSet()) {
+        if (!nextColumnSetOrSpannerSiblingOf(lastSet))
+            lastSet-&gt;endFlow(this, logicalHeight());
+        lastSet-&gt;expandToEncompassFlowThreadContentsIfNeeded();
+    }
+    m_inLayout = false;
+    m_lastSetWorkedOn = nullptr;
+}
+
+RenderMultiColumnSet* RenderMultiColumnFlowThread::findSetRendering(RenderObject* renderer) const
+{
+    for (RenderMultiColumnSet* multicolSet = firstMultiColumnSet(); multicolSet; multicolSet = multicolSet-&gt;nextSiblingMultiColumnSet()) {
+        if (multicolSet-&gt;containsRendererInFlowThread(renderer))
+            return multicolSet;
+    }
+    return nullptr;
+}
+
+void RenderMultiColumnFlowThread::populate()
+{
+    RenderBlockFlow* multicolContainer = multiColumnBlockFlow();
+    ASSERT(!nextSibling());
+    // Reparent children preceding the flow thread into the flow thread. It's multicol content
+    // now. At this point there's obviously nothing after the flow thread, but renderers (column
+    // sets and spanners) will be inserted there as we insert elements into the flow thread.
+    multicolContainer-&gt;moveChildrenTo(this, multicolContainer-&gt;firstChild(), this, true);
+}
+
+void RenderMultiColumnFlowThread::evacuateAndDestroy()
+{
+    RenderBlockFlow* multicolContainer = multiColumnBlockFlow();
+    m_beingEvacuated = true;
+
+    // First promote all children of the flow thread. Before we move them to the flow thread's
+    // container, we need to unregister the flow thread, so that they aren't just re-added again to
+    // the flow thread that we're trying to empty.
+    multicolContainer-&gt;setMultiColumnFlowThread(nullptr);
+    moveAllChildrenTo(multicolContainer, true);
+
+    // Move spanners back to their original DOM position in the tree, and destroy the placeholders.
+    SpannerMap::iterator it;
+    while ((it = m_spannerMap.begin()) != m_spannerMap.end()) {
+        RenderBox* spanner = it-&gt;key;
+        RenderMultiColumnSpannerPlaceholder* placeholder = it-&gt;value;
+        RenderBlockFlow* originalContainer = toRenderBlockFlow(placeholder-&gt;parent());
+        multicolContainer-&gt;removeChild(*spanner);
+        originalContainer-&gt;addChild(spanner, placeholder);
+        placeholder-&gt;destroy();
+        m_spannerMap.remove(it);
+    }
+
+    // Remove all sets.
+    while (RenderMultiColumnSet* columnSet = firstMultiColumnSet())
+        columnSet-&gt;destroy();
+
+    destroy();
+}
+
+void RenderMultiColumnFlowThread::addRegionToThread(RenderRegion* renderRegion)
+{
+    RenderMultiColumnSet* columnSet = toRenderMultiColumnSet(renderRegion);
+    if (RenderMultiColumnSet* nextSet = columnSet-&gt;nextSiblingMultiColumnSet()) {
+        RenderRegionList::iterator it = m_regionList.find(nextSet);
+        ASSERT(it != m_regionList.end());
+        m_regionList.insertBefore(it, columnSet);
+    } else
+        m_regionList.add(columnSet);
+    renderRegion-&gt;setIsValid(true);
+}
+
+void RenderMultiColumnFlowThread::willBeRemovedFromTree()
+{
+    // Detach all column sets from the flow thread. Cannot destroy them at this point, since they
+    // are siblings of this object, and there may be pointers to this object's sibling somewhere
+    // further up on the call stack.
+    for (RenderMultiColumnSet* columnSet = firstMultiColumnSet(); columnSet; columnSet = columnSet-&gt;nextSiblingMultiColumnSet())
+        columnSet-&gt;detachRegion();
+    multiColumnBlockFlow()-&gt;setMultiColumnFlowThread(nullptr);
+    RenderFlowThread::willBeRemovedFromTree();
+}
+
+RenderObject* RenderMultiColumnFlowThread::resolveMovedChild(RenderObject* child) const
+{
+    if (child-&gt;style().columnSpan() != ColumnSpanAll || !child-&gt;isBox()) {
+        // We only need to resolve for column spanners.
+        return child;
+    }
+    // The renderer for the actual DOM node that establishes a spanner is moved from its original
+    // location in the render tree to becoming a sibling of the column sets. In other words, it's
+    // moved out from the flow thread (and becomes a sibling of it). When we for instance want to
+    // create and insert a renderer for the sibling node immediately preceding the spanner, we need
+    // to map that spanner renderer to the spanner's placeholder, which is where the new inserted
+    // renderer belongs.
+    if (RenderMultiColumnSpannerPlaceholder* placeholder = findColumnSpannerPlaceholder(toRenderBox(child)))
+        return placeholder;
+
+    // This is an invalid spanner, or its placeholder hasn't been created yet. This happens when
+    // moving an entire subtree into the flow thread, when we are processing the insertion of this
+    // spanner's preceding sibling, and we obviously haven't got as far as processing this spanner
+    // yet.
+    return child;
+}
+
+static bool isValidColumnSpanner(RenderMultiColumnFlowThread* flowThread, RenderObject* descendant)
+{
+    // We assume that we're inside the flow thread. This function is not to be called otherwise.
+    ASSERT(descendant-&gt;isDescendantOf(flowThread));
+
+    // First make sure that the renderer itself has the right properties for becoming a spanner.
+    RenderStyle&amp; style = descendant-&gt;style();
+    if (style.columnSpan() != ColumnSpanAll || !descendant-&gt;isBox() || descendant-&gt;isFloatingOrOutOfFlowPositioned())
+        return false;
+
+    RenderBlock* container = descendant-&gt;containingBlock();
+    if (!container-&gt;isRenderBlockFlow() || container-&gt;childrenInline()) {
+        // Needs to be block-level.
+        return false;
+    }
+
+    // This looks like a spanner, but if we're inside something unbreakable, it's not to be treated as one.
+    for (RenderBox* ancestor = toRenderBox(descendant)-&gt;parentBox(); ancestor; ancestor = ancestor-&gt;parentBox()) {
+        if (ancestor-&gt;isRenderFlowThread()) {
+            // Don't allow any intervening non-multicol fragmentation contexts. The spec doesn't say
+            // anything about disallowing this, but it's just going to be too complicated to
+            // implement (not to mention specify behavior).
+            return ancestor == flowThread;
+        }
+        ASSERT(ancestor-&gt;style().columnSpan() != ColumnSpanAll || !isValidColumnSpanner(flowThread, ancestor));
+        if (ancestor-&gt;isUnsplittableForPagination())
+            return false;
+    }
+    ASSERT_NOT_REACHED();
+    return false;
+}
+
+void RenderMultiColumnFlowThread::flowThreadDescendantInserted(RenderObject* descendant)
+{
+    if (m_beingEvacuated)
+        return;
+    RenderObject* subtreeRoot = descendant;
+    for (; descendant; descendant = descendant-&gt;nextInPreOrder(subtreeRoot)) {
+        if (descendant-&gt;isRenderMultiColumnSpannerPlaceholder()) {
+            // A spanner's placeholder has been inserted. The actual spanner renderer is moved from
+            // where it would otherwise occur (if it weren't a spanner) to becoming a sibling of the
+            // column sets.
+            RenderMultiColumnSpannerPlaceholder* placeholder = toRenderMultiColumnSpannerPlaceholder(descendant);
+            ASSERT(!m_spannerMap.get(placeholder-&gt;spanner()));
+            m_spannerMap.add(placeholder-&gt;spanner(), placeholder);
+            ASSERT(!placeholder-&gt;firstChild()); // There should be no children here, but if there are, we ought to skip them.
+            continue;
+        }
+        RenderBlockFlow* multicolContainer = multiColumnBlockFlow();
+        RenderObject* nextRendererInFlowThread = descendant-&gt;nextInPreOrderAfterChildren(this);
+        RenderObject* insertBeforeMulticolChild = nullptr;
+        if (isValidColumnSpanner(this, descendant)) {
+            // This is a spanner (column-span:all). Such renderers are moved from where they would
+            // otherwise occur in the render tree to becoming a direct child of the multicol container,
+            // so that they live among the column sets. This simplifies the layout implementation, and
+            // basically just relies on regular block layout done by the RenderBlockFlow that
+            // establishes the multicol container.
+            RenderBlockFlow* container = toRenderBlockFlow(descendant-&gt;parent());
+            RenderMultiColumnSet* setToSplit = nullptr;
+            if (nextRendererInFlowThread) {
+                setToSplit = findSetRendering(descendant);
+                if (setToSplit) {
+                    setToSplit-&gt;setNeedsLayout();
+                    insertBeforeMulticolChild = setToSplit-&gt;nextSibling();
+                }
+            }
+            // Moving a spanner's renderer so that it becomes a sibling of the column sets requires us
+            // to insert an anonymous placeholder in the tree where the spanner's renderer otherwise
+            // would have been. This is needed for a two reasons: We need a way of separating inline
+            // content before and after the spanner, so that it becomes separate line boxes. Secondly,
+            // this placeholder serves as a break point for column sets, so that, when encountered, we
+            // end flowing one column set and move to the next one.
+            RenderMultiColumnSpannerPlaceholder* placeholder = RenderMultiColumnSpannerPlaceholder::createAnonymous(this, toRenderBox(descendant), &amp;container-&gt;style());
+            container-&gt;addChild(placeholder, descendant-&gt;nextSibling());
+            container-&gt;removeChild(*descendant);
+            multicolContainer-&gt;RenderBlock::addChild(descendant, insertBeforeMulticolChild);
+
+            // The spanner has now been moved out from the flow thread, but we don't want to
+            // examine its children anyway. They are all part of the spanner and shouldn't trigger
+            // creation of column sets or anything like that. Continue at its original position in
+            // the tree, i.e. where the placeholder was just put.
+            if (subtreeRoot == descendant)
+                subtreeRoot = placeholder;
+            descendant = placeholder;
+        } else {
+            // This is regular multicol content, i.e. not part of a spanner.
+            if (nextRendererInFlowThread &amp;&amp; nextRendererInFlowThread-&gt;isRenderMultiColumnSpannerPlaceholder()) {
+                // Inserted right before a spanner. Is there a set for us there?
+                RenderMultiColumnSpannerPlaceholder* placeholder = toRenderMultiColumnSpannerPlaceholder(nextRendererInFlowThread);
+                if (RenderObject* previous = placeholder-&gt;spanner()-&gt;previousSibling()) {
+                    if (previous-&gt;isRenderMultiColumnSet())
+                        continue; // There's already a set there. Nothing to do.
+                }
+                insertBeforeMulticolChild = placeholder-&gt;spanner();
+            } else if (RenderMultiColumnSet* lastSet = lastMultiColumnSet()) {
+                // This child is not an immediate predecessor of a spanner, which means that if this
+                // child precedes a spanner at all, there has to be a column set created for us there
+                // already. If it doesn't precede any spanner at all, on the other hand, we need a
+                // column set at the end of the multicol container. We don't really check here if the
+                // child inserted precedes any spanner or not (as that's an expensive operation). Just
+                // make sure we have a column set at the end. It's no big deal if it remains unused.
+                if (!lastSet-&gt;nextSibling())
+                    continue;
+            }
+        }
+        // Need to create a new column set when there's no set already created. We also always insert
+        // another column set after a spanner. Even if it turns out that there are no renderers
+        // following the spanner, there may be bottom margins there, which take up space.
+        RenderMultiColumnSet* newSet = new RenderMultiColumnSet(*this, RenderStyle::createAnonymousStyleWithDisplay(&amp;multicolContainer-&gt;style(), BLOCK));
+        newSet-&gt;initializeStyle();
+        multicolContainer-&gt;RenderBlock::addChild(newSet, insertBeforeMulticolChild);
+        invalidateRegions();
+
+        // We cannot handle immediate column set siblings at the moment (and there's no need for
+        // it, either). There has to be at least one spanner separating them.
+        ASSERT(!previousColumnSetOrSpannerSiblingOf(newSet) || !previousColumnSetOrSpannerSiblingOf(newSet)-&gt;isRenderMultiColumnSet());
+        ASSERT(!nextColumnSetOrSpannerSiblingOf(newSet) || !nextColumnSetOrSpannerSiblingOf(newSet)-&gt;isRenderMultiColumnSet());
+    }
+}
+
+void RenderMultiColumnFlowThread::flowThreadRelativeWillBeRemoved(RenderObject* relative)
+{
+    if (m_beingEvacuated)
+        return;
+    invalidateRegions();
+    if (relative-&gt;isRenderMultiColumnSpannerPlaceholder()) {
+        // Remove the map entry for this spanner, but leave the actual spanner renderer alone. Also
+        // keep the reference to the spanner, since the placeholder may be about to be re-inserted
+        // in the tree.
+        ASSERT(relative-&gt;isDescendantOf(this));
+        m_spannerMap.remove(toRenderMultiColumnSpannerPlaceholder(relative)-&gt;spanner());
+        return;
+    }
+    if (relative-&gt;style().columnSpan() == ColumnSpanAll) {
+        if (relative-&gt;parent() != parent())
+            return; // not a valid spanner.
+
+        // The placeholder may already have been removed, but if it hasn't, do so now.
+        if (RenderMultiColumnSpannerPlaceholder* placeholder = m_spannerMap.get(toRenderBox(relative))) {
+            placeholder-&gt;containingBlock()-&gt;RenderBlock::removeChild(*placeholder);
+            m_spannerMap.remove(toRenderBox(relative));
+        }
+
+        if (RenderObject* next = relative-&gt;nextSibling()) {
+            if (RenderObject* previous = relative-&gt;previousSibling()) {
+                if (previous-&gt;isRenderMultiColumnSet() &amp;&amp; next-&gt;isRenderMultiColumnSet()) {
+                    // Merge two sets that no longer will be separated by a spanner.
+                    next-&gt;destroy();
+                    previous-&gt;setNeedsLayout();
+                }
+            }
+        }
+    }
+    // Note that we might end up with empty column sets if all column content is removed. That's no
+    // big deal though (and locating them would be expensive), and they will be found and re-used if
+    // content is added again later.
+}
+
+void RenderMultiColumnFlowThread::flowThreadDescendantBoxLaidOut(RenderBox* descendant)
+{
+    if (!descendant-&gt;isRenderMultiColumnSpannerPlaceholder())
+        return;
+    RenderMultiColumnSpannerPlaceholder* placeholder = toRenderMultiColumnSpannerPlaceholder(descendant);
+    RenderBlock* container = placeholder-&gt;containingBlock();
+
+    for (RenderBox* prev = previousColumnSetOrSpannerSiblingOf(placeholder-&gt;spanner()); prev; prev = previousColumnSetOrSpannerSiblingOf(prev)) {
+        if (prev-&gt;isRenderMultiColumnSet()) {
+            toRenderMultiColumnSet(prev)-&gt;endFlow(container, placeholder-&gt;logicalTop());
+            break;
+        }
+    }
+
+    for (RenderBox* next = nextColumnSetOrSpannerSiblingOf(placeholder-&gt;spanner()); next; next = nextColumnSetOrSpannerSiblingOf(next)) {
+        if (next-&gt;isRenderMultiColumnSet()) {
+            m_lastSetWorkedOn = toRenderMultiColumnSet(next);
+            m_lastSetWorkedOn-&gt;beginFlow(container);
+            break;
+        }
+    }
+}
+
</ins><span class="cx"> void RenderMultiColumnFlowThread::computeLogicalHeight(LayoutUnit logicalHeight, LayoutUnit logicalTop, LogicalExtentComputedValues&amp; computedValues) const
</span><span class="cx"> {
</span><span class="cx">     // We simply remain at our intrinsic height.
</span><span class="lines">@@ -66,7 +424,7 @@
</span><span class="cx">     return columnWidth();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void RenderMultiColumnFlowThread::autoGenerateRegionsToBlockOffset(LayoutUnit /*offset*/)
</del><ins>+void RenderMultiColumnFlowThread::autoGenerateRegionsToBlockOffset(LayoutUnit offset)
</ins><span class="cx"> {
</span><span class="cx">     // This function ensures we have the correct column set information at all times.
</span><span class="cx">     // For a simple multi-column layout in continuous media, only one column set child is required.
</span><span class="lines">@@ -83,26 +441,14 @@
</span><span class="cx">     // to be unique column sets created inside any region whose width is different from its surrounding regions. This is
</span><span class="cx">     // actually pretty similar to the spanning case, in that we break up the column sets whenever the width varies.
</span><span class="cx">     //
</span><del>-    // FIXME: For now just make one column set. This matches the old multi-column code.
-    // Right now our goal is just feature parity with the old multi-column code so that we can switch over to the
-    // new code as soon as possible.
-    RenderMultiColumnSet* firstSet = toRenderMultiColumnSet(firstRegion());
-    if (firstSet)
-        return;
-    
-    invalidateRegions();
</del><ins>+    // FIXME: Parent fragmentation contexts might require us to insert additional column sets here,
+    // but we don't worry about it for now. This matches the old multi-column code. Right now our
+    // goal is just feature parity with the old multi-column code so that we can switch over to the
+    // new code as soon as possible. The one column set that we need has already been made during
+    // render tree creation, so there's nothing to do here, for the time being.
</ins><span class="cx"> 
</span><del>-    RenderBlockFlow* parentBlock = toRenderBlockFlow(parent());
-    firstSet = new RenderMultiColumnSet(*this, RenderStyle::createAnonymousStyleWithDisplay(&amp;parentBlock-&gt;style(), BLOCK));
-    firstSet-&gt;initializeStyle();
-    parentBlock-&gt;RenderBlock::addChild(firstSet);
-
-    // Even though we aren't placed yet, we can go ahead and set up our size. At this point we're
-    // typically in the middle of laying out the thread, attempting to paginate, and we need to do
-    // some rudimentary &quot;layout&quot; of the set now, so that pagination will work.
-    firstSet-&gt;prepareForLayout();
-
-    validateRegions();
</del><ins>+    (void)offset; // hide warning
+    ASSERT(toRenderMultiColumnSet(regionAtBlockOffset(0, offset, true, DisallowRegionAutoGeneration)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderMultiColumnFlowThread::setPageBreak(const RenderBlock* block, LayoutUnit offset, LayoutUnit spaceShortage)
</span><span class="lines">@@ -117,6 +463,60 @@
</span><span class="cx">         multicolSet-&gt;updateMinimumColumnHeight(minHeight);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+RenderRegion* RenderMultiColumnFlowThread::regionAtBlockOffset(const RenderBox* box, LayoutUnit offset, bool extendLastRegion, RegionAutoGenerationPolicy autoGenerationPolicy)
+{
+    if (!m_inLayout)
+        return RenderFlowThread::regionAtBlockOffset(box, offset, extendLastRegion, autoGenerationPolicy);
+
+    // Layout in progress. We are calculating the set heights as we speak, so the region range
+    // information is not up-to-date.
+
+    RenderMultiColumnSet* columnSet = m_lastSetWorkedOn ? m_lastSetWorkedOn : firstMultiColumnSet();
+    if (!columnSet) {
+        // If there's no set, bail. This multicol is empty or only consists of spanners. There
+        // are no regions.
+        return nullptr;
+    }
+    // The last set worked on is a good guess. But if we're not within the bounds, search for the
+    // right one.
+    if (offset &lt; columnSet-&gt;logicalTopInFlowThread()) {
+        do {
+            if (RenderMultiColumnSet* prev = columnSet-&gt;previousSiblingMultiColumnSet())
+                columnSet = prev;
+            else
+                break;
+        } while (offset &lt; columnSet-&gt;logicalTopInFlowThread());
+    } else {
+        while (offset &gt;= columnSet-&gt;logicalBottomInFlowThread()) {
+            RenderMultiColumnSet* next = columnSet-&gt;nextSiblingMultiColumnSet();
+            if (!next || !next-&gt;hasBeenFlowed())
+                break;
+            columnSet = next;
+        }
+    }
+    return columnSet;
+}
+
+void RenderMultiColumnFlowThread::setRegionRangeForBox(const RenderBox* box, RenderRegion* startRegion, RenderRegion* endRegion)
+{
+    // Some column sets may have zero height, which means that two or more sets may start at the
+    // exact same flow thread position, which means that some parts of the code may believe that a
+    // given box lives in sets that it doesn't really live in. Make some adjustments here and
+    // include such sets if they are adjacent to the start and/or end regions.
+    for (RenderMultiColumnSet* columnSet = toRenderMultiColumnSet(startRegion)-&gt;previousSiblingMultiColumnSet(); columnSet; columnSet = columnSet-&gt;previousSiblingMultiColumnSet()) {
+        if (columnSet-&gt;logicalHeightInFlowThread())
+            break;
+        startRegion = columnSet;
+    }
+    for (RenderMultiColumnSet* columnSet = toRenderMultiColumnSet(startRegion)-&gt;nextSiblingMultiColumnSet(); columnSet; columnSet = columnSet-&gt;nextSiblingMultiColumnSet()) {
+        if (columnSet-&gt;logicalHeightInFlowThread())
+            break;
+        endRegion = columnSet;
+    }
+
+    RenderFlowThread::setRegionRangeForBox(box, startRegion, endRegion);
+}
+
</ins><span class="cx"> bool RenderMultiColumnFlowThread::addForcedRegionBreak(const RenderBlock* block, LayoutUnit offset, RenderBox* /*breakChild*/, bool /*isBefore*/, LayoutUnit* offsetBreakAdjustment)
</span><span class="cx"> {
</span><span class="cx">     if (RenderMultiColumnSet* multicolSet = toRenderMultiColumnSet(regionAtBlockOffset(block, offset))) {
</span><span class="lines">@@ -213,12 +613,9 @@
</span><span class="cx"> 
</span><span class="cx"> bool RenderMultiColumnFlowThread::isPageLogicalHeightKnown() const
</span><span class="cx"> {
</span><del>-    for (RenderBox* renderer = parentBox()-&gt;lastChildBox(); renderer; renderer = renderer-&gt;previousSiblingBox()) {
-        if (renderer-&gt;isRenderMultiColumnSet())
-            return toRenderMultiColumnSet(renderer)-&gt;computedColumnHeight();
-    }
-    // A column set hasn't been created yet. Height may already be known if column-fill is 'auto', though.
-    return !requiresBalancing();
</del><ins>+    if (RenderMultiColumnSet* columnSet = lastMultiColumnSet())
+        return columnSet-&gt;computedColumnHeight();
+    return false;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderMultiColumnFlowThreadh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderMultiColumnFlowThread.h (167334 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderMultiColumnFlowThread.h        2014-04-15 23:25:38 UTC (rev 167334)
+++ trunk/Source/WebCore/rendering/RenderMultiColumnFlowThread.h        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -29,26 +29,55 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;RenderFlowThread.h&quot;
</span><span class="cx"> 
</span><ins>+#include &lt;wtf/HashMap.h&gt;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><ins>+class RenderMultiColumnSet;
+class RenderMultiColumnSpannerPlaceholder;
+
</ins><span class="cx"> class RenderMultiColumnFlowThread final : public RenderFlowThread {
</span><span class="cx"> public:
</span><span class="cx">     RenderMultiColumnFlowThread(Document&amp;, PassRef&lt;RenderStyle&gt;);
</span><span class="cx">     ~RenderMultiColumnFlowThread();
</span><span class="cx"> 
</span><ins>+    virtual void removeFlowChildInfo(RenderObject*) override;
+
+    RenderBlockFlow* multiColumnBlockFlow() const { return toRenderBlockFlow(parent()); }
+
+    RenderMultiColumnSet* firstMultiColumnSet() const;
+    RenderMultiColumnSet* lastMultiColumnSet() const;
+    RenderBox* firstColumnSetOrSpanner() const;
+    static RenderBox* nextColumnSetOrSpannerSiblingOf(const RenderBox*);
+    static RenderBox* previousColumnSetOrSpannerSiblingOf(const RenderBox*);
+
+    RenderMultiColumnSpannerPlaceholder* findColumnSpannerPlaceholder(RenderBox* spanner) const { return m_spannerMap.get(spanner); }
+
+    virtual void layout() override final;
+
+    // Find the set inside which the specified renderer would be rendered.
+    RenderMultiColumnSet* findSetRendering(RenderObject*) const;
+
+    // Populate the flow thread with what's currently its siblings. Called when a regular block
+    // becomes a multicol container.
+    void populate();
+
+    // Empty the flow thread by moving everything to the parent. Remove all multicol specific
+    // renderers. Then destroy the flow thread. Called when a multicol container becomes a regular
+    // block.
+    void evacuateAndDestroy();
+
</ins><span class="cx">     unsigned columnCount() const { return m_columnCount; }
</span><span class="cx">     LayoutUnit columnWidth() const { return m_columnWidth; }
</span><span class="cx">     LayoutUnit columnHeightAvailable() const { return m_columnHeightAvailable; }
</span><span class="cx">     void setColumnHeightAvailable(LayoutUnit available) { m_columnHeightAvailable = available; }
</span><span class="cx">     bool inBalancingPass() const { return m_inBalancingPass; }
</span><span class="cx">     void setInBalancingPass(bool balancing) { m_inBalancingPass = balancing; }
</span><del>-    bool needsRebalancing() const { return m_needsRebalancing; }
-    void setNeedsRebalancing(bool balancing) { m_needsRebalancing = balancing; }
-    
-    bool shouldRelayoutForPagination() const { return !m_inBalancingPass &amp;&amp; m_needsRebalancing; }
-    
-    bool requiresBalancing() const { return progressionIsInline() &amp;&amp; (!columnHeightAvailable() || parent()-&gt;style().columnFill() == ColumnFillBalance); }
</del><ins>+    bool needsHeightsRecalculation() const { return m_needsHeightsRecalculation; }
+    void setNeedsHeightsRecalculation(bool recalculate) { m_needsHeightsRecalculation = recalculate; }
</ins><span class="cx"> 
</span><ins>+    bool shouldRelayoutForPagination() const { return !m_inBalancingPass &amp;&amp; m_needsHeightsRecalculation; }
+
</ins><span class="cx">     void setColumnCountAndWidth(unsigned count, LayoutUnit width)
</span><span class="cx">     {
</span><span class="cx">         m_columnCount = count;
</span><span class="lines">@@ -67,24 +96,42 @@
</span><span class="cx">     
</span><span class="cx"> private:
</span><span class="cx">     virtual const char* renderName() const override;
</span><ins>+    virtual void addRegionToThread(RenderRegion*) override;
+    virtual void willBeRemovedFromTree() override;
+    virtual RenderObject* resolveMovedChild(RenderObject* child) const override;
+    virtual void flowThreadDescendantInserted(RenderObject*) override;
+    virtual void flowThreadRelativeWillBeRemoved(RenderObject*) override;
+    virtual void flowThreadDescendantBoxLaidOut(RenderBox*) override;
</ins><span class="cx">     virtual void computeLogicalHeight(LayoutUnit logicalHeight, LayoutUnit logicalTop, LogicalExtentComputedValues&amp;) const override;
</span><ins>+    virtual LayoutUnit initialLogicalWidth() const override;
</ins><span class="cx">     virtual void autoGenerateRegionsToBlockOffset(LayoutUnit) override;
</span><del>-    virtual LayoutUnit initialLogicalWidth() const override;
</del><span class="cx">     virtual void setPageBreak(const RenderBlock*, LayoutUnit offset, LayoutUnit spaceShortage) override;
</span><span class="cx">     virtual void updateMinimumPageHeight(const RenderBlock*, LayoutUnit offset, LayoutUnit minHeight) override;
</span><ins>+    virtual RenderRegion* regionAtBlockOffset(const RenderBox*, LayoutUnit, bool extendLastRegion = false, RegionAutoGenerationPolicy = AllowRegionAutoGeneration) override;
+    virtual void setRegionRangeForBox(const RenderBox*, RenderRegion*, RenderRegion*) override;
</ins><span class="cx">     virtual bool addForcedRegionBreak(const RenderBlock*, LayoutUnit, RenderBox* breakChild, bool isBefore, LayoutUnit* offsetBreakAdjustment = 0) override;
</span><span class="cx">     virtual bool isPageLogicalHeightKnown() const override;
</span><span class="cx"> 
</span><span class="cx"> private:
</span><ins>+    typedef HashMap&lt;RenderBox*, RenderMultiColumnSpannerPlaceholder*&gt; SpannerMap;
+    SpannerMap m_spannerMap;
+
+    // The last set we worked on. It's not to be used as the &quot;current set&quot;. The concept of a
+    // &quot;current set&quot; is difficult, since layout may jump back and forth in the tree, due to wrong
+    // top location estimates (due to e.g. margin collapsing), and possibly for other reasons.
+    RenderMultiColumnSet* m_lastSetWorkedOn;
+
</ins><span class="cx">     unsigned m_columnCount;   // The default column count/width that are based off our containing block width. These values represent only the default,
</span><span class="cx">     LayoutUnit m_columnWidth; // A multi-column block that is split across variable width pages or regions will have different column counts and widths in each.
</span><span class="cx">                               // These values will be cached (eventually) for multi-column blocks.
</span><span class="cx">     LayoutUnit m_columnHeightAvailable; // Total height available to columns, or 0 if auto.
</span><ins>+    bool m_inLayout; // Set while we're laying out the flow thread, during which colum set heights are unknown.
</ins><span class="cx">     bool m_inBalancingPass; // Guard to avoid re-entering column balancing.
</span><del>-    bool m_needsRebalancing;
</del><ins>+    bool m_needsHeightsRecalculation;
</ins><span class="cx">     
</span><span class="cx">     bool m_progressionIsInline;
</span><span class="cx">     bool m_progressionIsReversed;
</span><ins>+    bool m_beingEvacuated;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderMultiColumnSetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderMultiColumnSet.cpp (167334 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderMultiColumnSet.cpp        2014-04-15 23:25:38 UTC (rev 167334)
+++ trunk/Source/WebCore/rendering/RenderMultiColumnSet.cpp        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -29,6 +29,7 @@
</span><span class="cx"> #include &quot;PaintInfo.h&quot;
</span><span class="cx"> #include &quot;RenderLayer.h&quot;
</span><span class="cx"> #include &quot;RenderMultiColumnFlowThread.h&quot;
</span><ins>+#include &quot;RenderMultiColumnSpannerPlaceholder.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -43,6 +44,93 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+RenderMultiColumnSet* RenderMultiColumnSet::nextSiblingMultiColumnSet() const
+{
+    for (RenderObject* sibling = nextSibling(); sibling; sibling = sibling-&gt;nextSibling()) {
+        if (sibling-&gt;isRenderMultiColumnSet())
+            return toRenderMultiColumnSet(sibling);
+    }
+    return nullptr;
+}
+
+RenderMultiColumnSet* RenderMultiColumnSet::previousSiblingMultiColumnSet() const
+{
+    for (RenderObject* sibling = previousSibling(); sibling; sibling = sibling-&gt;previousSibling()) {
+        if (sibling-&gt;isRenderMultiColumnSet())
+            return toRenderMultiColumnSet(sibling);
+    }
+    return nullptr;
+}
+
+RenderObject* RenderMultiColumnSet::firstRendererInFlowThread() const
+{
+    if (RenderBox* sibling = RenderMultiColumnFlowThread::previousColumnSetOrSpannerSiblingOf(this)) {
+        // Adjacent sets should not occur. Currently we would have no way of figuring out what each
+        // of them contains then.
+        ASSERT(!sibling-&gt;isRenderMultiColumnSet());
+        RenderMultiColumnSpannerPlaceholder* placeholder = multiColumnFlowThread()-&gt;findColumnSpannerPlaceholder(sibling);
+        return placeholder-&gt;nextInPreOrderAfterChildren();
+    }
+    return flowThread()-&gt;firstChild();
+}
+
+RenderObject* RenderMultiColumnSet::lastRendererInFlowThread() const
+{
+    if (RenderBox* sibling = RenderMultiColumnFlowThread::nextColumnSetOrSpannerSiblingOf(this)) {
+        // Adjacent sets should not occur. Currently we would have no way of figuring out what each
+        // of them contains then.
+        ASSERT(!sibling-&gt;isRenderMultiColumnSet());
+        RenderMultiColumnSpannerPlaceholder* placeholder = multiColumnFlowThread()-&gt;findColumnSpannerPlaceholder(sibling);
+        return placeholder-&gt;previousInPreOrder();
+    }
+    return flowThread()-&gt;lastLeafChild();
+}
+
+static bool precedesRenderer(RenderObject* renderer, RenderObject* boundary)
+{
+    for (; renderer; renderer = renderer-&gt;nextInPreOrder()) {
+        if (renderer == boundary)
+            return true;
+    }
+    return false;
+}
+
+bool RenderMultiColumnSet::containsRendererInFlowThread(RenderObject* renderer) const
+{
+    if (!previousSiblingMultiColumnSet() &amp;&amp; !nextSiblingMultiColumnSet()) {
+        // There is only one set. This is easy, then.
+        return renderer-&gt;isDescendantOf(m_flowThread);
+    }
+
+    RenderObject* firstRenderer = firstRendererInFlowThread();
+    RenderObject* lastRenderer = lastRendererInFlowThread();
+    ASSERT(firstRenderer);
+    ASSERT(lastRenderer);
+
+    // This is SLOW! But luckily very uncommon.
+    return precedesRenderer(firstRenderer, renderer) &amp;&amp; precedesRenderer(renderer, lastRenderer);
+}
+
+void RenderMultiColumnSet::setLogicalTopInFlowThread(LayoutUnit logicalTop)
+{
+    LayoutRect rect = flowThreadPortionRect();
+    if (isHorizontalWritingMode())
+        rect.setY(logicalTop);
+    else
+        rect.setX(logicalTop);
+    setFlowThreadPortionRect(rect);
+}
+
+void RenderMultiColumnSet::setLogicalBottomInFlowThread(LayoutUnit logicalBottom)
+{
+    LayoutRect rect = flowThreadPortionRect();
+    if (isHorizontalWritingMode())
+        rect.shiftMaxYEdgeTo(logicalBottom);
+    else
+        rect.shiftMaxXEdgeTo(logicalBottom);
+    setFlowThreadPortionRect(rect);
+}
+
</ins><span class="cx"> LayoutUnit RenderMultiColumnSet::heightAdjustedForSetOffset(LayoutUnit height) const
</span><span class="cx"> {
</span><span class="cx">     RenderBlockFlow* multicolBlock = toRenderBlockFlow(parent());
</span><span class="lines">@@ -54,9 +142,8 @@
</span><span class="cx"> 
</span><span class="cx"> LayoutUnit RenderMultiColumnSet::pageLogicalTopForOffset(LayoutUnit offset) const
</span><span class="cx"> {
</span><del>-    LayoutUnit portionLogicalTop = (isHorizontalWritingMode() ? flowThreadPortionRect().y() : flowThreadPortionRect().x());
</del><span class="cx">     unsigned columnIndex = columnIndexAtOffset(offset, AssumeNewColumns);
</span><del>-    return portionLogicalTop + columnIndex * computedColumnHeight();
</del><ins>+    return logicalTopInFlowThread() + columnIndex * computedColumnHeight();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderMultiColumnSet::setAndConstrainColumnHeight(LayoutUnit newHeight)
</span><span class="lines">@@ -96,9 +183,12 @@
</span><span class="cx">         ASSERT(!m_contentRuns[i].assumedImplicitBreaks());
</span><span class="cx"> #endif // NDEBUG
</span><span class="cx"> 
</span><del>-    // There will always be at least one break, since the flow thread reports a &quot;forced break&quot; at
-    // end of content.
-    ASSERT(breakCount &gt;= 1);
</del><ins>+    if (!breakCount) {
+        // The flow thread would normally insert a forced break at end of content, but if this set
+        // isn't last in the multicol container, we have to do it ourselves.
+        addForcedBreak(logicalBottomInFlowThread());
+        breakCount = 1;
+    }
</ins><span class="cx"> 
</span><span class="cx">     // If there is room for more breaks (to reach the used value of column-count), imagine that we
</span><span class="cx">     // insert implicit breaks at suitable locations. At any given time, the content run with the
</span><span class="lines">@@ -118,7 +208,7 @@
</span><span class="cx">     if (initial) {
</span><span class="cx">         // Start with the lowest imaginable column height.
</span><span class="cx">         unsigned index = findRunWithTallestColumns();
</span><del>-        LayoutUnit startOffset = index &gt; 0 ? m_contentRuns[index - 1].breakOffset() : LayoutUnit::fromPixel(0);
</del><ins>+        LayoutUnit startOffset = index &gt; 0 ? m_contentRuns[index - 1].breakOffset() : logicalTopInFlowThread();
</ins><span class="cx">         return std::max&lt;LayoutUnit&gt;(m_contentRuns[index].columnLogicalHeight(startOffset), m_minimumColumnHeight);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -151,7 +241,7 @@
</span><span class="cx"> 
</span><span class="cx"> void RenderMultiColumnSet::addForcedBreak(LayoutUnit offsetFromFirstPage)
</span><span class="cx"> {
</span><del>-    if (!toRenderBlockFlow(parent())-&gt;multiColumnFlowThread()-&gt;requiresBalancing())
</del><ins>+    if (!requiresBalancing())
</ins><span class="cx">         return;
</span><span class="cx">     if (!m_contentRuns.isEmpty() &amp;&amp; offsetFromFirstPage &lt;= m_contentRuns.last().breakOffset())
</span><span class="cx">         return;
</span><span class="lines">@@ -161,27 +251,28 @@
</span><span class="cx">         m_contentRuns.append(ContentRun(offsetFromFirstPage));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool RenderMultiColumnSet::recalculateBalancedHeight(bool initial)
</del><ins>+bool RenderMultiColumnSet::recalculateColumnHeight(bool initial)
</ins><span class="cx"> {
</span><del>-    ASSERT(toRenderBlockFlow(parent())-&gt;multiColumnFlowThread()-&gt;requiresBalancing());
-
</del><span class="cx">     LayoutUnit oldColumnHeight = m_computedColumnHeight;
</span><del>-    if (initial)
-        distributeImplicitBreaks();
-    LayoutUnit newColumnHeight = calculateBalancedHeight(initial);
-    setAndConstrainColumnHeight(newColumnHeight);
-
-    // After having calculated an initial column height, the multicol container typically needs at
-    // least one more layout pass with a new column height, but if a height was specified, we only
-    // need to do this if we think that we need less space than specified. Conversely, if we
-    // determined that the columns need to be as tall as the specified height of the container, we
-    // have already laid it out correctly, and there's no need for another pass.
-
</del><ins>+    if (requiresBalancing()) {
+        if (initial)
+            distributeImplicitBreaks();
+        LayoutUnit newColumnHeight = calculateBalancedHeight(initial);
+        setAndConstrainColumnHeight(newColumnHeight);
+        // After having calculated an initial column height, the multicol container typically needs at
+        // least one more layout pass with a new column height, but if a height was specified, we only
+        // need to do this if we think that we need less space than specified. Conversely, if we
+        // determined that the columns need to be as tall as the specified height of the container, we
+        // have already laid it out correctly, and there's no need for another pass.
+    } else {
+        // The position of the column set may have changed, in which case height available for
+        // columns may have changed as well.
+        setAndConstrainColumnHeight(m_computedColumnHeight);
+    }
</ins><span class="cx">     if (m_computedColumnHeight == oldColumnHeight)
</span><span class="cx">         return false; // No change. We're done.
</span><span class="cx"> 
</span><span class="cx">     m_minSpaceShortage = RenderFlowThread::maxLogicalHeight();
</span><del>-    clearForcedBreaks();
</del><span class="cx">     return true; // Need another pass.
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -191,64 +282,138 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     // The space shortage is what we use as our stretch amount. We need a positive number here in
</span><del>-    // order to get anywhere.
-    ASSERT(spaceShortage &gt; 0);
</del><ins>+    // order to get anywhere. Some lines actually have zero height. Ignore them.
+    if (spaceShortage &gt; 0)
+        m_minSpaceShortage = spaceShortage;
</ins><span class="cx"> 
</span><span class="cx">     m_minSpaceShortage = spaceShortage;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderMultiColumnSet::updateLogicalWidth()
</span><span class="cx"> {
</span><del>-    RenderBlockFlow* parentBlock = toRenderBlockFlow(parent());
-    setComputedColumnWidthAndCount(parentBlock-&gt;multiColumnFlowThread()-&gt;columnWidth(), parentBlock-&gt;multiColumnFlowThread()-&gt;columnCount()); // FIXME: This will eventually vary if we are contained inside regions.
</del><ins>+    setComputedColumnWidthAndCount(multiColumnFlowThread()-&gt;columnWidth(), multiColumnFlowThread()-&gt;columnCount()); // FIXME: This will eventually vary if we are contained inside regions.
</ins><span class="cx">     
</span><span class="cx">     // FIXME: When we add regions support, we'll start it off at the width of the multi-column
</span><span class="cx">     // block in that particular region.
</span><span class="cx">     setLogicalWidth(parentBox()-&gt;contentLogicalWidth());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void RenderMultiColumnSet::prepareForLayout()
</del><ins>+bool RenderMultiColumnSet::requiresBalancing() const
</ins><span class="cx"> {
</span><del>-    RenderBlockFlow* multicolBlock = toRenderBlockFlow(parent());
-    const RenderStyle&amp; multicolStyle = multicolBlock-&gt;style();
</del><ins>+    if (!multiColumnFlowThread()-&gt;progressionIsInline())
+        return false;
</ins><span class="cx"> 
</span><del>-    // Set box logical top.
-    ASSERT(!previousSiblingBox() || !previousSiblingBox()-&gt;isRenderMultiColumnSet()); // FIXME: multiple set not implemented; need to examine previous set to calculate the correct logical top.
-    setLogicalTop(multicolBlock-&gt;borderAndPaddingBefore());
</del><ins>+    if (RenderBox* next = RenderMultiColumnFlowThread::nextColumnSetOrSpannerSiblingOf(this)) {
+        if (!next-&gt;isRenderMultiColumnSet()) {
+            // If we're followed by a spanner, we need to balance.
+            ASSERT(multiColumnFlowThread()-&gt;findColumnSpannerPlaceholder(next));
+            return true;
+        }
+    }
+    RenderBlockFlow* container = multiColumnBlockFlow();
+    if (container-&gt;style().columnFill() == ColumnFillBalance)
+        return true;
+    return !multiColumnFlowThread()-&gt;columnHeightAvailable();
+}
</ins><span class="cx"> 
</span><ins>+void RenderMultiColumnSet::prepareForLayout(bool initial)
+{
+    // Guess box logical top. This might eliminate the need for another layout pass.
+    if (RenderBox* previous = RenderMultiColumnFlowThread::previousColumnSetOrSpannerSiblingOf(this))
+        setLogicalTop(previous-&gt;logicalBottom() + previous-&gt;marginAfter());
+    else
+        setLogicalTop(multiColumnBlockFlow()-&gt;borderAndPaddingBefore());
+
+    if (initial)
+        m_maxColumnHeight = calculateMaxColumnHeight();
+    if (requiresBalancing()) {
+        if (initial)
+            m_computedColumnHeight = 0;
+    } else
+        setAndConstrainColumnHeight(heightAdjustedForSetOffset(multiColumnFlowThread()-&gt;columnHeightAvailable()));
+
</ins><span class="cx">     // Set box width.
</span><span class="cx">     updateLogicalWidth();
</span><span class="cx"> 
</span><del>-    if (multicolBlock-&gt;multiColumnFlowThread()-&gt;requiresBalancing()) {
-        // Set maximum column height. We will not stretch beyond this.
-        m_maxColumnHeight = RenderFlowThread::maxLogicalHeight();
-        if (!multicolStyle.logicalHeight().isAuto()) {
-            m_maxColumnHeight = multicolBlock-&gt;computeContentLogicalHeight(multicolStyle.logicalHeight());
-            if (m_maxColumnHeight == -1)
-                m_maxColumnHeight = RenderFlowThread::maxLogicalHeight();
-        }
-        if (!multicolStyle.logicalMaxHeight().isUndefined()) {
-            LayoutUnit logicalMaxHeight = multicolBlock-&gt;computeContentLogicalHeight(multicolStyle.logicalMaxHeight());
-            if (logicalMaxHeight != -1 &amp;&amp; m_maxColumnHeight &gt; logicalMaxHeight)
-                m_maxColumnHeight = logicalMaxHeight;
-        }
-        m_maxColumnHeight = heightAdjustedForSetOffset(m_maxColumnHeight);
-        m_computedColumnHeight = 0; // Restart balancing.
-    } else
-        setAndConstrainColumnHeight(heightAdjustedForSetOffset(multicolBlock-&gt;multiColumnFlowThread()-&gt;columnHeightAvailable()));
-
</del><ins>+    // Any breaks will be re-inserted during layout, so get rid of what we already have.
</ins><span class="cx">     clearForcedBreaks();
</span><span class="cx"> 
</span><span class="cx">     // Nuke previously stored minimum column height. Contents may have changed for all we know.
</span><span class="cx">     m_minimumColumnHeight = 0;
</span><ins>+
+    // Start with &quot;infinite&quot; flow thread portion height until height is known.
+    setLogicalBottomInFlowThread(RenderFlowThread::maxLogicalHeight());
+
+    setNeedsLayout();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void RenderMultiColumnSet::beginFlow(RenderBlock* container)
+{
+    RenderMultiColumnFlowThread* flowThread = multiColumnFlowThread();
+
+    // At this point layout is exactly at the beginning of this set. Store block offset from flow
+    // thread start.
+    LayoutUnit logicalTopInFlowThread = flowThread-&gt;offsetFromLogicalTopOfFirstRegion(container) + container-&gt;logicalHeight();
+    setLogicalTopInFlowThread(logicalTopInFlowThread);
+}
+
+void RenderMultiColumnSet::endFlow(RenderBlock* container, LayoutUnit bottomInContainer)
+{
+    RenderMultiColumnFlowThread* flowThread = multiColumnFlowThread();
+
+    // At this point layout is exactly at the end of this set. Store block offset from flow thread
+    // start. Also note that a new column height may have affected the height used in the flow
+    // thread (because of struts), which may affect the number of columns. So we also need to update
+    // the flow thread portion height in order to be able to calculate actual column-count.
+    LayoutUnit logicalBottomInFlowThread = flowThread-&gt;offsetFromLogicalTopOfFirstRegion(container) + bottomInContainer;
+    setLogicalBottomInFlowThread(logicalBottomInFlowThread);
+    container-&gt;setLogicalHeight(bottomInContainer);
+    unsigned colCount = columnCount();
+    if (colCount &gt; 1) {
+        LayoutUnit paddedLogicalBottomInFlowThread = logicalTopInFlowThread() + computedColumnHeight() * colCount;
+        if (logicalBottomInFlowThread != paddedLogicalBottomInFlowThread) {
+            // Stretch the container to fully contain all columns, so that later content doesn't
+            // start at the wrong position and end up bleeding into the columns of this set.
+            container-&gt;setLogicalHeight(container-&gt;logicalHeight() + paddedLogicalBottomInFlowThread - logicalBottomInFlowThread);
+            setLogicalBottomInFlowThread(paddedLogicalBottomInFlowThread);
+        }
+    }
+}
+
+void RenderMultiColumnSet::layout()
+{
+    RenderBlockFlow::layout();
+
+    // At this point the logical top and bottom of the column set are known. Update maximum column
+    // height (multicol height may be constrained).
+    m_maxColumnHeight = calculateMaxColumnHeight();
+
+    if (!nextSiblingMultiColumnSet()) {
+        // This is the last set, i.e. the last region. Seize the opportunity to validate them.
+        multiColumnFlowThread()-&gt;validateRegions();
+    }
+}
+
</ins><span class="cx"> void RenderMultiColumnSet::computeLogicalHeight(LayoutUnit, LayoutUnit logicalTop, LogicalExtentComputedValues&amp; computedValues) const
</span><span class="cx"> {
</span><span class="cx">     computedValues.m_extent = m_computedColumnHeight;
</span><span class="cx">     computedValues.m_position = logicalTop;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+LayoutUnit RenderMultiColumnSet::calculateMaxColumnHeight() const
+{
+    RenderBlockFlow* multicolBlock = multiColumnBlockFlow();
+    const RenderStyle&amp; multicolStyle = multicolBlock-&gt;style();
+    LayoutUnit availableHeight = multiColumnFlowThread()-&gt;columnHeightAvailable();
+    LayoutUnit maxColumnHeight = availableHeight ? availableHeight : RenderFlowThread::maxLogicalHeight();
+    if (!multicolStyle.logicalMaxHeight().isUndefined()) {
+        LayoutUnit logicalMaxHeight = multicolBlock-&gt;computeContentLogicalHeight(multicolStyle.logicalMaxHeight());
+        if (logicalMaxHeight != -1 &amp;&amp; maxColumnHeight &gt; logicalMaxHeight)
+            maxColumnHeight = logicalMaxHeight;
+    }
+    return heightAdjustedForSetOffset(maxColumnHeight);
+}
+
</ins><span class="cx"> LayoutUnit RenderMultiColumnSet::columnGap() const
</span><span class="cx"> {
</span><span class="cx">     // FIXME: Eventually we will cache the column gap when the widths of columns start varying, but for now we just
</span><span class="lines">@@ -284,9 +449,8 @@
</span><span class="cx">     LayoutUnit colLogicalLeft = borderAndPaddingLogicalLeft();
</span><span class="cx">     LayoutUnit colGap = columnGap();
</span><span class="cx">     
</span><del>-    RenderBlockFlow* parentFlow = toRenderBlockFlow(parent());
-    bool progressionReversed = parentFlow-&gt;multiColumnFlowThread()-&gt;progressionIsReversed();
-    bool progressionInline = parentFlow-&gt;multiColumnFlowThread()-&gt;progressionIsInline();
</del><ins>+    bool progressionReversed = multiColumnFlowThread()-&gt;progressionIsReversed();
+    bool progressionInline = multiColumnFlowThread()-&gt;progressionIsInline();
</ins><span class="cx">     
</span><span class="cx">     if (progressionInline) {
</span><span class="cx">         if (style().isLeftToRightDirection() ^ progressionReversed)
</span><span class="lines">@@ -347,10 +511,9 @@
</span><span class="cx">     // FIXME: Eventually we will know overflow on a per-column basis, but we can't do this until we have a painting
</span><span class="cx">     // mode that understands not to paint contents from a previous column in the overflow area of a following column.
</span><span class="cx">     // This problem applies to regions and pages as well and is not unique to columns.
</span><del>-    
-    RenderBlockFlow* parentFlow = toRenderBlockFlow(parent());
-    bool progressionReversed = parentFlow-&gt;multiColumnFlowThread()-&gt;progressionIsReversed();
-    
</del><ins>+
+    bool progressionReversed = multiColumnFlowThread()-&gt;progressionIsReversed();
+
</ins><span class="cx">     bool isFirstColumn = !index;
</span><span class="cx">     bool isLastColumn = index == colCount - 1;
</span><span class="cx">     bool isLeftmostColumn = style().isLeftToRightDirection() ^ progressionReversed ? isFirstColumn : isLastColumn;
</span><span class="lines">@@ -399,7 +562,7 @@
</span><span class="cx">     if (paintInfo.context-&gt;paintingDisabled())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    RenderMultiColumnFlowThread* flowThread = toRenderBlockFlow(parent())-&gt;multiColumnFlowThread();
</del><ins>+    RenderMultiColumnFlowThread* flowThread = multiColumnFlowThread();
</ins><span class="cx">     const RenderStyle&amp; blockStyle = parent()-&gt;style();
</span><span class="cx">     const Color&amp; ruleColor = blockStyle.visitedDependentColor(CSSPropertyWebkitColumnRuleColor);
</span><span class="cx">     bool ruleTransparent = blockStyle.columnRuleIsTransparent();
</span><span class="lines">@@ -519,9 +682,8 @@
</span><span class="cx"> 
</span><span class="cx"> LayoutUnit RenderMultiColumnSet::initialBlockOffsetForPainting() const
</span><span class="cx"> {
</span><del>-    RenderBlockFlow* parentFlow = toRenderBlockFlow(parent());
-    bool progressionReversed = parentFlow-&gt;multiColumnFlowThread()-&gt;progressionIsReversed();
-    bool progressionIsInline = parentFlow-&gt;multiColumnFlowThread()-&gt;progressionIsInline();
</del><ins>+    bool progressionReversed = multiColumnFlowThread()-&gt;progressionIsReversed();
+    bool progressionIsInline = multiColumnFlowThread()-&gt;progressionIsInline();
</ins><span class="cx">     
</span><span class="cx">     LayoutUnit result = 0;
</span><span class="cx">     if (!progressionIsInline &amp;&amp; progressionReversed) {
</span><span class="lines">@@ -585,11 +747,10 @@
</span><span class="cx">     LayoutUnit colLogicalWidth = computedColumnWidth();
</span><span class="cx">     LayoutUnit colGap = columnGap();
</span><span class="cx">     unsigned colCount = columnCount();
</span><del>-    
-    RenderBlockFlow* parentFlow = toRenderBlockFlow(parent());
-    bool progressionReversed = parentFlow-&gt;multiColumnFlowThread()-&gt;progressionIsReversed();
-    bool progressionIsInline = parentFlow-&gt;multiColumnFlowThread()-&gt;progressionIsInline();
-    
</del><ins>+
+    bool progressionReversed = multiColumnFlowThread()-&gt;progressionIsReversed();
+    bool progressionIsInline = multiColumnFlowThread()-&gt;progressionIsInline();
+
</ins><span class="cx">     LayoutUnit initialBlockOffset = initialBlockOffsetForPainting();
</span><span class="cx">     
</span><span class="cx">     for (unsigned i = startColumn; i &lt;= endColumn; i++) {
</span><span class="lines">@@ -617,7 +778,7 @@
</span><span class="cx">                 inlineOffset += contentLogicalWidth() - colLogicalWidth;
</span><span class="cx">         }
</span><span class="cx">         translationOffset.setX(inlineOffset);
</span><del>-        LayoutUnit blockOffset = initialBlockOffset + (isHorizontalWritingMode() ? -flowThreadPortion.y() : -flowThreadPortion.x());
</del><ins>+        LayoutUnit blockOffset = initialBlockOffset + logicalTop() - flowThread()-&gt;logicalTop() + (isHorizontalWritingMode() ? -flowThreadPortion.y() : -flowThreadPortion.x());
</ins><span class="cx">         if (!progressionIsInline) {
</span><span class="cx">             if (!progressionReversed)
</span><span class="cx">                 blockOffset = i * colGap;
</span><span class="lines">@@ -664,11 +825,10 @@
</span><span class="cx">     
</span><span class="cx">     LayoutRect flowThreadPortion = flowThreadPortionRectAt(startColumn);
</span><span class="cx">     LayoutPoint translationOffset;
</span><del>-    
-    RenderBlockFlow* parentFlow = toRenderBlockFlow(parent());
-    bool progressionReversed = parentFlow-&gt;multiColumnFlowThread()-&gt;progressionIsReversed();
-    bool progressionIsInline = parentFlow-&gt;multiColumnFlowThread()-&gt;progressionIsInline();
-    
</del><ins>+
+    bool progressionReversed = multiColumnFlowThread()-&gt;progressionIsReversed();
+    bool progressionIsInline = multiColumnFlowThread()-&gt;progressionIsInline();
+
</ins><span class="cx">     LayoutUnit initialBlockOffset = initialBlockOffsetForPainting();
</span><span class="cx">     
</span><span class="cx">     LayoutUnit inlineOffset = progressionIsInline ? startColumn * (colLogicalWidth + colGap) : LayoutUnit();
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderMultiColumnSeth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderMultiColumnSet.h (167334 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderMultiColumnSet.h        2014-04-15 23:25:38 UTC (rev 167334)
+++ trunk/Source/WebCore/rendering/RenderMultiColumnSet.h        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -27,6 +27,7 @@
</span><span class="cx"> #ifndef RenderMultiColumnSet_h
</span><span class="cx"> #define RenderMultiColumnSet_h
</span><span class="cx"> 
</span><ins>+#include &quot;RenderMultiColumnFlowThread.h&quot;
</ins><span class="cx"> #include &quot;RenderRegionSet.h&quot;
</span><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -48,6 +49,26 @@
</span><span class="cx"> 
</span><span class="cx">     virtual bool isRenderMultiColumnSet() const override { return true; }
</span><span class="cx"> 
</span><ins>+    RenderBlockFlow* multiColumnBlockFlow() const { return toRenderBlockFlow(parent()); }
+    RenderMultiColumnFlowThread* multiColumnFlowThread() const { return static_cast&lt;RenderMultiColumnFlowThread*&gt;(flowThread()); }
+
+    RenderMultiColumnSet* nextSiblingMultiColumnSet() const;
+    RenderMultiColumnSet* previousSiblingMultiColumnSet() const;
+
+    // Return the first object in the flow thread that's rendered inside this set.
+    RenderObject* firstRendererInFlowThread() const;
+    // Return the last object in the flow thread that's rendered inside this set.
+    RenderObject* lastRendererInFlowThread() const;
+
+    // Return true if the specified renderer (descendant of the flow thread) is inside this column set.
+    bool containsRendererInFlowThread(RenderObject*) const;
+
+    void setLogicalTopInFlowThread(LayoutUnit);
+    LayoutUnit logicalTopInFlowThread() const { return isHorizontalWritingMode() ? flowThreadPortionRect().y() : flowThreadPortionRect().x(); }
+    void setLogicalBottomInFlowThread(LayoutUnit);
+    LayoutUnit logicalBottomInFlowThread() const { return isHorizontalWritingMode() ? flowThreadPortionRect().maxY() : flowThreadPortionRect().maxX(); }
+    LayoutUnit logicalHeightInFlowThread() const { return isHorizontalWritingMode() ? flowThreadPortionRect().height() : flowThreadPortionRect().width(); }
+
</ins><span class="cx">     unsigned computedColumnCount() const { return m_computedColumnCount; }
</span><span class="cx">     LayoutUnit computedColumnWidth() const { return m_computedColumnWidth; }
</span><span class="cx">     LayoutUnit computedColumnHeight() const { return m_computedColumnHeight; }
</span><span class="lines">@@ -67,10 +88,12 @@
</span><span class="cx">     void clearForcedBreaks();
</span><span class="cx">     void addForcedBreak(LayoutUnit offsetFromFirstPage);
</span><span class="cx"> 
</span><del>-    // (Re-)calculate the column height when contents are supposed to be balanced. If 'initial' is
-    // set, guess an initial column height; otherwise, stretch the column height a tad. Return true
-    // if column height changed and another layout pass is required.
-    bool recalculateBalancedHeight(bool initial);
</del><ins>+    // (Re-)calculate the column height. This is first and foremost needed by sets that are to
+    // balance the column height, but even when it isn't to be balanced, this is necessary if the
+    // multicol container's height is constrained. If |initial| is set, and we are to balance, guess
+    // an initial column height; otherwise, stretch the column height a tad. Return true if column
+    // height changed and another layout pass is required.
+    bool recalculateColumnHeight(bool initial);
</ins><span class="cx"> 
</span><span class="cx">     // Record space shortage (the amount of space that would have been enough to prevent some
</span><span class="cx">     // element from being moved to the next column) at a column break. The smallest amount of space
</span><span class="lines">@@ -80,14 +103,26 @@
</span><span class="cx"> 
</span><span class="cx">     virtual void updateLogicalWidth() override;
</span><span class="cx"> 
</span><del>-    void prepareForLayout();
</del><ins>+    void prepareForLayout(bool initial);
+    // Begin laying out content for this column set. This happens at the beginning of flow thread
+    // layout, and when advancing from a previous column set or spanner to this one.
+    void beginFlow(RenderBlock* container);
+    // Finish laying out content for this column set. This happens at end of flow thread layout, and
+    // when advancing to the next column set or spanner.
+    void endFlow(RenderBlock* container, LayoutUnit bottomInContainer);
+    // Has this set been flowed in this layout pass?
+    bool hasBeenFlowed() const { return logicalBottomInFlowThread() != RenderFlowThread::maxLogicalHeight(); }
</ins><span class="cx"> 
</span><ins>+    bool requiresBalancing() const;
+
</ins><span class="cx">     LayoutPoint columnTranslationForOffset(const LayoutUnit&amp;) const;
</span><span class="cx"> 
</span><span class="cx"> protected:
</span><span class="cx">     void addOverflowFromChildren() override;
</span><span class="cx">     
</span><span class="cx"> private:
</span><ins>+    virtual void layout() override;
+
</ins><span class="cx">     virtual void computeLogicalHeight(LayoutUnit logicalHeight, LayoutUnit logicalTop, LogicalExtentComputedValues&amp;) const override;
</span><span class="cx"> 
</span><span class="cx">     virtual void paintObject(PaintInfo&amp;, const LayoutPoint&amp; paintOffset) override;
</span><span class="lines">@@ -96,10 +131,9 @@
</span><span class="cx">     virtual LayoutUnit pageLogicalHeight() const override { return m_computedColumnHeight; }
</span><span class="cx"> 
</span><span class="cx">     virtual LayoutUnit pageLogicalTopForOffset(LayoutUnit offset) const override;
</span><del>-    
-    // FIXME: This will change once we have column sets constrained by enclosing pages, etc.
-    virtual LayoutUnit logicalHeightOfAllFlowThreadContent() const override { return m_computedColumnHeight; }
-    
</del><ins>+
+    virtual LayoutUnit logicalHeightOfAllFlowThreadContent() const override { return logicalHeightInFlowThread(); }
+
</ins><span class="cx">     virtual void repaintFlowThreadContent(const LayoutRect&amp; repaintRect) override;
</span><span class="cx"> 
</span><span class="cx">     virtual void collectLayerFragments(LayerFragments&amp;, const LayoutRect&amp; layerBoundingBox, const LayoutRect&amp; dirtyRect) override;
</span><span class="lines">@@ -110,6 +144,7 @@
</span><span class="cx">     
</span><span class="cx">     void paintColumnRules(PaintInfo&amp;, const LayoutPoint&amp; paintOffset);
</span><span class="cx"> 
</span><ins>+    LayoutUnit calculateMaxColumnHeight() const;
</ins><span class="cx">     LayoutUnit columnGap() const;
</span><span class="cx">     LayoutRect columnRectAt(unsigned index) const;
</span><span class="cx">     unsigned columnCount() const;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderMultiColumnSpannerPlaceholdercpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/rendering/RenderMultiColumnSpannerPlaceholder.cpp (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderMultiColumnSpannerPlaceholder.cpp                                (rev 0)
+++ trunk/Source/WebCore/rendering/RenderMultiColumnSpannerPlaceholder.cpp        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,57 @@
</span><ins>+/*
+ * Copyright (c) 2014, Opera Software ASA. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of Opera Software ASA nor the names of its
+ *    contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;RenderMultiColumnSpannerPlaceholder.h&quot;
+
+#include &quot;RenderMultiColumnFlowThread.h&quot;
+
+namespace WebCore {
+
+RenderMultiColumnSpannerPlaceholder* RenderMultiColumnSpannerPlaceholder::createAnonymous(RenderMultiColumnFlowThread* flowThread, RenderBox* spanner, RenderStyle* parentStyle)
+{
+    RefPtr&lt;RenderStyle&gt; newStyle(RenderStyle::createAnonymousStyleWithDisplay(parentStyle, BLOCK));
+    newStyle-&gt;setClear(CBOTH); // We don't want floats in the row preceding the spanner to continue on the other side.
+    auto placeholder = new RenderMultiColumnSpannerPlaceholder(flowThread, spanner, *newStyle);
+    placeholder-&gt;initializeStyle();
+    return placeholder;
+}
+
+RenderMultiColumnSpannerPlaceholder::RenderMultiColumnSpannerPlaceholder(RenderMultiColumnFlowThread* flowThread, RenderBox* spanner, PassRef&lt;RenderStyle&gt; style)
+    : RenderBox(flowThread-&gt;document(), std::move(style), RenderBoxModelObjectFlag)
+    , m_spanner(spanner)
+{
+}
+
+const char* RenderMultiColumnSpannerPlaceholder::renderName() const
+{
+    return &quot;RenderMultiColumnSpannerPlaceholder&quot;;
+}
+
+} // namespace WebCore
</ins></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderMultiColumnSpannerPlaceholderh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/rendering/RenderMultiColumnSpannerPlaceholder.h (0 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderMultiColumnSpannerPlaceholder.h                                (rev 0)
+++ trunk/Source/WebCore/rendering/RenderMultiColumnSpannerPlaceholder.h        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -0,0 +1,60 @@
</span><ins>+/*
+ * Copyright (c) 2014, Opera Software ASA. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of Opera Software ASA nor the names of its
+ *    contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef RenderMultiColumnSpannerPlaceholder_h
+#define RenderMultiColumnSpannerPlaceholder_h
+
+#include &quot;RenderBox.h&quot;
+
+namespace WebCore {
+
+class RenderMultiColumnFlowThread;
+
+class RenderMultiColumnSpannerPlaceholder final : public RenderBox {
+public:
+    static RenderMultiColumnSpannerPlaceholder* createAnonymous(RenderMultiColumnFlowThread*, RenderBox* spanner, RenderStyle* parentStyle);
+
+    virtual bool isRenderMultiColumnSpannerPlaceholder() const override { return true; }
+    RenderBox* spanner() const { return m_spanner; }
+
+private:
+    RenderMultiColumnSpannerPlaceholder(RenderMultiColumnFlowThread*, RenderBox* spanner, PassRef&lt;RenderStyle&gt;);
+
+    virtual bool canHaveChildren() const { return false; }
+    virtual void paint(PaintInfo&amp;, const LayoutPoint&amp;) { }
+    virtual const char* renderName() const override;
+
+    RenderBox* m_spanner;
+};
+
+RENDER_OBJECT_TYPE_CASTS(RenderMultiColumnSpannerPlaceholder, isRenderMultiColumnSpannerPlaceholder())
+
+} // namespace WebCore
+
+#endif // RenderMultiColumnSpannerPlaceholder_h
</ins></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderObject.cpp (167334 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderObject.cpp        2014-04-15 23:25:38 UTC (rev 167334)
+++ trunk/Source/WebCore/rendering/RenderObject.cpp        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -1935,6 +1935,9 @@
</span><span class="cx"> 
</span><span class="cx">     if (!isFloating() &amp;&amp; parent()-&gt;childrenInline())
</span><span class="cx">         parent()-&gt;dirtyLinesFromChangedChild(this);
</span><ins>+
+    if (RenderFlowThread* flowThread = parent()-&gt;flowThreadContainingBlock())
+        flowThread-&gt;flowThreadDescendantInserted(this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderObject::willBeRemovedFromTree()
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderObject.h (167334 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderObject.h        2014-04-15 23:25:38 UTC (rev 167334)
+++ trunk/Source/WebCore/rendering/RenderObject.h        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -360,6 +360,7 @@
</span><span class="cx"> 
</span><span class="cx">     virtual bool isMultiColumnBlockFlow() const { return false; }
</span><span class="cx">     virtual bool isRenderMultiColumnSet() const { return false; }
</span><ins>+    virtual bool isRenderMultiColumnSpannerPlaceholder() const { return false; }
</ins><span class="cx"> 
</span><span class="cx">     virtual bool isRenderScrollbarPart() const { return false; }
</span><span class="cx"> 
</span><span class="lines">@@ -480,7 +481,7 @@
</span><span class="cx">         // RenderBlock::createAnonymousBlock(). This includes creating an anonymous
</span><span class="cx">         // RenderBlock having a BLOCK or BOX display. Other classes such as RenderTextFragment
</span><span class="cx">         // are not RenderBlocks and will return false. See https://bugs.webkit.org/show_bug.cgi?id=56709. 
</span><del>-        return isAnonymous() &amp;&amp; (style().display() == BLOCK || style().display() == BOX) &amp;&amp; style().styleType() == NOPSEUDO &amp;&amp; isRenderBlock() &amp;&amp; !isListMarker() &amp;&amp; !isRenderFlowThread() &amp;&amp; !isRenderView()
</del><ins>+        return isAnonymous() &amp;&amp; (style().display() == BLOCK || style().display() == BOX) &amp;&amp; style().styleType() == NOPSEUDO &amp;&amp; isRenderBlock() &amp;&amp; !isListMarker() &amp;&amp; !isRenderFlowThread() &amp;&amp; !isRenderMultiColumnSet() &amp;&amp; !isRenderView()
</ins><span class="cx"> #if ENABLE(FULLSCREEN_API)
</span><span class="cx">             &amp;&amp; !isRenderFullScreen()
</span><span class="cx">             &amp;&amp; !isRenderFullScreenPlaceholder()
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderRegionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderRegion.h (167334 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderRegion.h        2014-04-15 23:25:38 UTC (rev 167334)
+++ trunk/Source/WebCore/rendering/RenderRegion.h        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -100,8 +100,6 @@
</span><span class="cx">     // flow thread portion we contain. For sets, we have to figure out the top of the nearest column or
</span><span class="cx">     // page.
</span><span class="cx">     virtual LayoutUnit pageLogicalTopForOffset(LayoutUnit offset) const;
</span><del>-    
-    virtual void expandToEncompassFlowThreadContentsIfNeeded() { };
</del><span class="cx"> 
</span><span class="cx">     // Whether or not this region is a set.
</span><span class="cx">     virtual bool isRenderRegionSet() const { return false; }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderRegionSeth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderRegionSet.h (167334 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderRegionSet.h        2014-04-15 23:25:38 UTC (rev 167334)
+++ trunk/Source/WebCore/rendering/RenderRegionSet.h        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -46,14 +46,15 @@
</span><span class="cx"> // FIXME: For now we derive from RenderRegion, but this may change at some point.
</span><span class="cx"> 
</span><span class="cx"> class RenderRegionSet : public RenderRegion {
</span><ins>+public:
+    void expandToEncompassFlowThreadContentsIfNeeded();
+
</ins><span class="cx"> protected:
</span><span class="cx">     RenderRegionSet(Document&amp;, PassRef&lt;RenderStyle&gt;, RenderFlowThread&amp;);
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     virtual void installFlowThread() override final;
</span><span class="cx"> 
</span><del>-    virtual void expandToEncompassFlowThreadContentsIfNeeded() override final;
-
</del><span class="cx">     virtual const char* renderName() const = 0;
</span><span class="cx">     
</span><span class="cx">     virtual bool isRenderRegionSet() const override final { return true; }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderingAllInOnecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderingAllInOne.cpp (167334 => 167335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderingAllInOne.cpp        2014-04-15 23:25:38 UTC (rev 167334)
+++ trunk/Source/WebCore/rendering/RenderingAllInOne.cpp        2014-04-15 23:25:58 UTC (rev 167335)
</span><span class="lines">@@ -82,6 +82,7 @@
</span><span class="cx"> #include &quot;RenderMeter.cpp&quot;
</span><span class="cx"> #include &quot;RenderMultiColumnFlowThread.cpp&quot;
</span><span class="cx"> #include &quot;RenderMultiColumnSet.cpp&quot;
</span><ins>+#include &quot;RenderMultiColumnSpannerPlaceholder.cpp&quot;
</ins><span class="cx"> #include &quot;RenderObject.cpp&quot;
</span><span class="cx"> #include &quot;RenderProgress.cpp&quot;
</span><span class="cx"> #include &quot;RenderQuote.cpp&quot;
</span></span></pre>
</div>
</div>

</body>
</html>