<!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>[167895] 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/167895">167895</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2014-04-28 11:05:12 -0700 (Mon, 28 Apr 2014)</dd>
</dl>
<h3>Log Message</h3>
<pre>Unreviewed, rolling out <a href="http://trac.webkit.org/projects/webkit/changeset/167871">r167871</a>.
https://bugs.webkit.org/show_bug.cgi?id=132290
broke a newmulticol test (spanner-nested-dynamic) (Requested
by thorton on #webkit).
Reverted changeset:
"Store the containing region map inside the flow thread"
https://bugs.webkit.org/show_bug.cgi?id=131647
http://trac.webkit.org/changeset/167871</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorerenderingInlineFlowBoxh">trunk/Source/WebCore/rendering/InlineFlowBox.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBlockLineLayoutcpp">trunk/Source/WebCore/rendering/RenderBlockLineLayout.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="#trunkSourceWebCorerenderingRootInlineBoxcpp">trunk/Source/WebCore/rendering/RootInlineBox.cpp</a></li>
</ul>
<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfastregionsinlinestrikethroughexpectedtxt">trunk/LayoutTests/fast/regions/inline-strike-through-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastregionsinlinestrikethroughhtml">trunk/LayoutTests/fast/regions/inline-strike-through.html</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (167894 => 167895)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2014-04-28 17:57:44 UTC (rev 167894)
+++ trunk/LayoutTests/ChangeLog        2014-04-28 18:05:12 UTC (rev 167895)
</span><span class="lines">@@ -1,3 +1,17 @@
</span><ins>+2014-04-28 Commit Queue <commit-queue@webkit.org>
+
+ Unreviewed, rolling out r167871.
+ https://bugs.webkit.org/show_bug.cgi?id=132290
+
+ broke a newmulticol test (spanner-nested-dynamic) (Requested
+ by thorton on #webkit).
+
+ Reverted changeset:
+
+ "Store the containing region map inside the flow thread"
+ https://bugs.webkit.org/show_bug.cgi?id=131647
+ http://trac.webkit.org/changeset/167871
+
</ins><span class="cx"> 2014-04-28 Mark Hahnenberg <mhahnenberg@apple.com>
</span><span class="cx">
</span><span class="cx"> Deleting properties poisons objects
</span></span></pre></div>
<a id="trunkLayoutTestsfastregionsinlinestrikethroughexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/fast/regions/inline-strike-through-expected.txt (167894 => 167895)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/regions/inline-strike-through-expected.txt        2014-04-28 17:57:44 UTC (rev 167894)
+++ trunk/LayoutTests/fast/regions/inline-strike-through-expected.txt        2014-04-28 18:05:12 UTC (rev 167895)
</span><span class="lines">@@ -1,3 +0,0 @@
</span><del>-
-131647 - The test passes if it doesn't crash and if it displays the PASS below this line.
-PASS
</del></span></pre></div>
<a id="trunkLayoutTestsfastregionsinlinestrikethroughhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/fast/regions/inline-strike-through.html (167894 => 167895)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/regions/inline-strike-through.html        2014-04-28 17:57:44 UTC (rev 167894)
+++ trunk/LayoutTests/fast/regions/inline-strike-through.html        2014-04-28 18:05:12 UTC (rev 167895)
</span><span class="lines">@@ -1,38 +0,0 @@
</span><del>-<html>
-<head>
- <style>
- #article {
- -webkit-flow-into: article;
- }
- #region {
- -webkit-flow-from: article;
- display: inline-block;
- height: 200px;
- width: 300px;
- }
- </style>
-</head>
-<body>
- <div id="article"></div>
- <div id="region"></div>
- <div><a href="https://bugs.webkit.org/show_bug.cgi?id=131647">131647</a> - The test passes if it doesn't crash and if it displays the PASS below this line.</div>
- <div>PASS</div>
- <script>
- if (window.testRunner)
- window.testRunner.dumpAsText();
- var elem = document.getElementById("article");
- var new_elem = document.createElement("table");
- elem.appendChild(new_elem); elem = new_elem;
- new_elem = document.createElement("video");
- elem.appendChild(new_elem); elem = new_elem;
- new_elem = document.createElement("div");
- elem.appendChild(new_elem);
- document.designMode = "on";
- document.execCommand("SelectAll");
- document.execCommand("StrikeThrough");
- document.body.offsetTop;
- if (window.testRunner)
- document.getElementById("region").style.visibility = "hidden";
- </script>
-</body>
-</html>
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (167894 => 167895)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-04-28 17:57:44 UTC (rev 167894)
+++ trunk/Source/WebCore/ChangeLog        2014-04-28 18:05:12 UTC (rev 167895)
</span><span class="lines">@@ -1,5 +1,19 @@
</span><span class="cx"> 2014-04-28 Commit Queue <commit-queue@webkit.org>
</span><span class="cx">
</span><ins>+ Unreviewed, rolling out r167871.
+ https://bugs.webkit.org/show_bug.cgi?id=132290
+
+ broke a newmulticol test (spanner-nested-dynamic) (Requested
+ by thorton on #webkit).
+
+ Reverted changeset:
+
+ "Store the containing region map inside the flow thread"
+ https://bugs.webkit.org/show_bug.cgi?id=131647
+ http://trac.webkit.org/changeset/167871
+
+2014-04-28 Commit Queue <commit-queue@webkit.org>
+
</ins><span class="cx"> Unreviewed, rolling out r167853.
</span><span class="cx"> https://bugs.webkit.org/show_bug.cgi?id=132288
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingInlineFlowBoxh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/InlineFlowBox.h (167894 => 167895)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/InlineFlowBox.h        2014-04-28 17:57:44 UTC (rev 167894)
+++ trunk/Source/WebCore/rendering/InlineFlowBox.h        2014-04-28 18:05:12 UTC (rev 167895)
</span><span class="lines">@@ -53,6 +53,7 @@
</span><span class="cx"> , m_hasAnnotationsBefore(false)
</span><span class="cx"> , m_hasAnnotationsAfter(false)
</span><span class="cx"> , m_isFirstAfterPageBreak(false)
</span><ins>+ , m_hasContainingRegion(false)
</ins><span class="cx"> #if !ASSERT_WITH_SECURITY_IMPLICATION_DISABLED
</span><span class="cx"> , m_hasBadChildList(false)
</span><span class="cx"> #endif
</span><span class="lines">@@ -338,6 +339,8 @@
</span><span class="cx">
</span><span class="cx"> unsigned m_isFirstAfterPageBreak : 1;
</span><span class="cx">
</span><ins>+ unsigned m_hasContainingRegion : 1;
+
</ins><span class="cx"> // End of RootInlineBox-specific members.
</span><span class="cx">
</span><span class="cx"> #if !ASSERT_WITH_SECURITY_IMPLICATION_DISABLED
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBlockLineLayoutcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp (167894 => 167895)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp        2014-04-28 17:57:44 UTC (rev 167894)
+++ trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp        2014-04-28 18:05:12 UTC (rev 167895)
</span><span class="lines">@@ -1752,7 +1752,7 @@
</span><span class="cx"> endPadding = 1;
</span><span class="cx"> for (RootInlineBox* curr = firstRootBox(); curr; curr = curr->nextRootBox()) {
</span><span class="cx"> addLayoutOverflow(curr->paddedLayoutOverflowRect(endPadding));
</span><del>- RenderRegion* region = flowThreadContainingBlock() ? curr->containingRegion() : nullptr;
</del><ins>+ RenderRegion* region = curr->containingRegion();
</ins><span class="cx"> if (region)
</span><span class="cx"> region->addLayoutOverflowForBox(this, curr->paddedLayoutOverflowRect(endPadding));
</span><span class="cx"> if (!hasOverflowClip()) {
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderFlowThreadcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderFlowThread.cpp (167894 => 167895)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderFlowThread.cpp        2014-04-28 17:57:44 UTC (rev 167894)
+++ trunk/Source/WebCore/rendering/RenderFlowThread.cpp        2014-04-28 18:05:12 UTC (rev 167895)
</span><span class="lines">@@ -91,8 +91,6 @@
</span><span class="cx">
</span><span class="cx"> void RenderFlowThread::removeFlowChildInfo(RenderObject* child)
</span><span class="cx"> {
</span><del>- if (child->isRenderBlockFlow())
- removeLineRegionInfo(toRenderBlockFlow(child));
</del><span class="cx"> if (child->isBox())
</span><span class="cx"> removeRenderBoxRegionInfo(toRenderBox(child));
</span><span class="cx"> }
</span><span class="lines">@@ -119,8 +117,6 @@
</span><span class="cx"> m_layerToRegionMap->clear();
</span><span class="cx"> if (m_regionToLayerListMap)
</span><span class="cx"> m_regionToLayerListMap->clear();
</span><del>- if (m_lineToRegionMap)
- m_lineToRegionMap->clear();
</del><span class="cx"> m_layersToRegionMappingsDirty = true;
</span><span class="cx"> setNeedsLayout();
</span><span class="cx">
</span><span class="lines">@@ -592,20 +588,6 @@
</span><span class="cx"> m_regionRangeMap.remove(box);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void RenderFlowThread::removeLineRegionInfo(const RenderBlockFlow* blockFlow)
-{
- ASSERT(blockFlow->m_lineLayoutPath != SimpleLinesPath);
- if (!m_lineToRegionMap)
- return;
-
- for (RootInlineBox* curr = blockFlow->firstRootBox(); curr; curr = curr->nextRootBox()) {
- if (m_lineToRegionMap->contains(curr))
- m_lineToRegionMap->remove(curr);
- }
-
- ASSERT_WITH_SECURITY_IMPLICATION(checkLinesConsistency(blockFlow));
-}
-
</del><span class="cx"> void RenderFlowThread::logicalWidthChangedInRegionsForBlock(const RenderBlock* block, bool& relayoutChildren)
</span><span class="cx"> {
</span><span class="cx"> if (!hasValidRegionInfo()) {
</span><span class="lines">@@ -905,25 +887,6 @@
</span><span class="cx">
</span><span class="cx"> return autoLogicalHeightRegions == m_autoLogicalHeightRegionsCount;
</span><span class="cx"> }
</span><del>-
-bool RenderFlowThread::checkLinesConsistency(const RenderBlockFlow* removedBlock) const
-{
- if (!m_lineToRegionMap)
- return true;
-
- for (auto& linePair : *m_lineToRegionMap.get()) {
- const RootInlineBox* line = linePair.key;
- RenderRegion* region = linePair.value;
- if (&line->blockFlow() == removedBlock)
- return false;
- if (line->blockFlow().flowThreadState() == NotInsideFlowThread)
- return false;
- if (!m_regionList.contains(region))
- return false;
- }
-
- return true;
-}
</del><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> // During the measure content layout phase of the named flow the regions are initialized with a height equal to their max-height.
</span><span class="lines">@@ -1442,14 +1405,6 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>-ContainingRegionMap& RenderFlowThread::containingRegionMap()
-{
- if (!m_lineToRegionMap)
- m_lineToRegionMap = std::make_unique<ContainingRegionMap>();
-
- return *m_lineToRegionMap.get();
-}
-
</del><span class="cx"> CurrentRenderFlowThreadMaintainer::CurrentRenderFlowThreadMaintainer(RenderFlowThread* renderFlowThread)
</span><span class="cx"> : m_renderFlowThread(renderFlowThread)
</span><span class="cx"> , m_previousRenderFlowThread(0)
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderFlowThreadh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderFlowThread.h (167894 => 167895)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderFlowThread.h        2014-04-28 17:57:44 UTC (rev 167894)
+++ trunk/Source/WebCore/rendering/RenderFlowThread.h        2014-04-28 18:05:12 UTC (rev 167895)
</span><span class="lines">@@ -44,13 +44,11 @@
</span><span class="cx"> class RenderNamedFlowFragment;
</span><span class="cx"> class RenderStyle;
</span><span class="cx"> class RenderRegion;
</span><del>-class RootInlineBox;
</del><span class="cx">
</span><span class="cx"> typedef ListHashSet<RenderRegion*> RenderRegionList;
</span><span class="cx"> typedef Vector<RenderLayer*> RenderLayerList;
</span><span class="cx"> typedef HashMap<RenderNamedFlowFragment*, RenderLayerList> RegionToLayerListMap;
</span><span class="cx"> typedef HashMap<RenderLayer*, RenderNamedFlowFragment*> LayerToRegionMap;
</span><del>-typedef HashMap<const RootInlineBox*, RenderRegion*> ContainingRegionMap;
</del><span class="cx">
</span><span class="cx"> // RenderFlowThread is used to collect all the render objects that participate in a
</span><span class="cx"> // flow thread. It will also help in doing the layout. However, it will not render
</span><span class="lines">@@ -65,7 +63,6 @@
</span><span class="cx"> virtual void removeFlowChildInfo(RenderObject*);
</span><span class="cx"> #ifndef NDEBUG
</span><span class="cx"> bool hasChildInfo(RenderObject* child) const { return child && child->isBox() && m_regionRangeMap.contains(toRenderBox(child)); }
</span><del>- bool checkLinesConsistency(const RenderBlockFlow*) const;
</del><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> virtual void addRegionToThread(RenderRegion*) = 0;
</span><span class="lines">@@ -123,6 +120,7 @@
</span><span class="cx">
</span><span class="cx"> virtual RenderRegion* mapFromFlowToRegion(TransformState&) const;
</span><span class="cx">
</span><ins>+ void removeRenderBoxRegionInfo(RenderBox*);
</ins><span class="cx"> void logicalWidthChangedInRegionsForBlock(const RenderBlock*, bool&);
</span><span class="cx">
</span><span class="cx"> LayoutUnit contentLogicalWidthOfFirstRegion() const;
</span><span class="lines">@@ -222,8 +220,6 @@
</span><span class="cx">
</span><span class="cx"> virtual void layout() override;
</span><span class="cx">
</span><del>- ContainingRegionMap& containingRegionMap();
-
</del><span class="cx"> private:
</span><span class="cx"> virtual bool isRenderFlowThread() const override final { return true; }
</span><span class="cx">
</span><span class="lines">@@ -264,9 +260,6 @@
</span><span class="cx">
</span><span class="cx"> bool getRegionRangeForBoxFromCachedInfo(const RenderBox*, RenderRegion*& startRegion, RenderRegion*& endRegion) const;
</span><span class="cx">
</span><del>- void removeRenderBoxRegionInfo(RenderBox*);
- void removeLineRegionInfo(const RenderBlockFlow*);
-
</del><span class="cx"> RenderRegionList m_regionList;
</span><span class="cx"> unsigned short m_previousRegionCount;
</span><span class="cx">
</span><span class="lines">@@ -328,9 +321,6 @@
</span><span class="cx"> // Map a region to the list of layers that paint in that region.
</span><span class="cx"> std::unique_ptr<RegionToLayerListMap> m_regionToLayerListMap;
</span><span class="cx">
</span><del>- // Map a line to its containing region.
- std::unique_ptr<ContainingRegionMap> m_lineToRegionMap;
-
</del><span class="cx"> // Map a box to the list of regions in which the box is rendered.
</span><span class="cx"> typedef HashMap<const RenderBox*, RenderRegionRange> RenderRegionRangeMap;
</span><span class="cx"> RenderRegionRangeMap m_regionRangeMap;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRootInlineBoxcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RootInlineBox.cpp (167894 => 167895)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RootInlineBox.cpp        2014-04-28 17:57:44 UTC (rev 167894)
+++ trunk/Source/WebCore/rendering/RootInlineBox.cpp        2014-04-28 18:05:12 UTC (rev 167895)
</span><span class="lines">@@ -53,10 +53,11 @@
</span><span class="cx"> typedef WTF::HashMap<const RootInlineBox*, std::unique_ptr<EllipsisBox>> EllipsisBoxMap;
</span><span class="cx"> static EllipsisBoxMap* gEllipsisBoxMap = 0;
</span><span class="cx">
</span><del>-static ContainingRegionMap& containingRegionMap(RenderBlockFlow& block)
</del><ins>+typedef HashMap<const RootInlineBox*, RenderRegion*> ContainingRegionMap;
+static ContainingRegionMap& containingRegionMap()
</ins><span class="cx"> {
</span><del>- ASSERT(block.flowThreadContainingBlock());
- return block.flowThreadContainingBlock()->containingRegionMap();
</del><ins>+ static NeverDestroyed<ContainingRegionMap> map;
+ return map;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> RootInlineBox::RootInlineBox(RenderBlockFlow& block)
</span><span class="lines">@@ -71,8 +72,8 @@
</span><span class="cx"> {
</span><span class="cx"> detachEllipsisBox();
</span><span class="cx">
</span><del>- if (blockFlow().flowThreadContainingBlock())
- containingRegionMap(blockFlow()).remove(this);
</del><ins>+ if (m_hasContainingRegion)
+ containingRegionMap().remove(this);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void RootInlineBox::detachEllipsisBox()
</span><span class="lines">@@ -174,11 +175,8 @@
</span><span class="cx"> void RootInlineBox::paint(PaintInfo& paintInfo, const LayoutPoint& paintOffset, LayoutUnit lineTop, LayoutUnit lineBottom)
</span><span class="cx"> {
</span><span class="cx"> // Check if we are in the correct region.
</span><del>- if (paintInfo.renderNamedFlowFragment) {
- RenderRegion* region = containingRegion();
- if (region && region != reinterpret_cast<RenderRegion*>(paintInfo.renderNamedFlowFragment))
- return;
- }
</del><ins>+ if (paintInfo.renderNamedFlowFragment && m_hasContainingRegion && containingRegion() != reinterpret_cast<RenderRegion*>(paintInfo.renderNamedFlowFragment))
+ return;
</ins><span class="cx">
</span><span class="cx"> InlineFlowBox::paint(paintInfo, paintOffset, lineTop, lineBottom);
</span><span class="cx"> paintEllipsisBox(paintInfo, paintOffset, lineTop, lineBottom);
</span><span class="lines">@@ -220,12 +218,10 @@
</span><span class="cx">
</span><span class="cx"> RenderRegion* RootInlineBox::containingRegion() const
</span><span class="cx"> {
</span><del>- ContainingRegionMap& regionMap = containingRegionMap(blockFlow());
- bool hasContainingRegion = regionMap.contains(this);
- RenderRegion* region = hasContainingRegion ? regionMap.get(this) : nullptr;
</del><ins>+ RenderRegion* region = m_hasContainingRegion ? containingRegionMap().get(this) : nullptr;
</ins><span class="cx">
</span><span class="cx"> #ifndef NDEBUG
</span><del>- if (hasContainingRegion) {
</del><ins>+ if (m_hasContainingRegion) {
</ins><span class="cx"> RenderFlowThread* flowThread = blockFlow().flowThreadContainingBlock();
</span><span class="cx"> const RenderRegionList& regionList = flowThread->renderRegionList();
</span><span class="cx"> ASSERT_WITH_SECURITY_IMPLICATION(regionList.contains(region));
</span><span class="lines">@@ -238,18 +234,22 @@
</span><span class="cx"> void RootInlineBox::clearContainingRegion()
</span><span class="cx"> {
</span><span class="cx"> ASSERT(!isDirty());
</span><ins>+ ASSERT(blockFlow().flowThreadContainingBlock());
</ins><span class="cx">
</span><del>- if (!containingRegionMap(blockFlow()).contains(this))
</del><ins>+ if (!m_hasContainingRegion)
</ins><span class="cx"> return;
</span><span class="cx">
</span><del>- containingRegionMap(blockFlow()).remove(this);
</del><ins>+ containingRegionMap().remove(this);
+ m_hasContainingRegion = false;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void RootInlineBox::setContainingRegion(RenderRegion& region)
</span><span class="cx"> {
</span><span class="cx"> ASSERT(!isDirty());
</span><ins>+ ASSERT(blockFlow().flowThreadContainingBlock());
</ins><span class="cx">
</span><del>- containingRegionMap(blockFlow()).set(this, &region);
</del><ins>+ containingRegionMap().set(this, &region);
+ m_hasContainingRegion = true;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> LayoutUnit RootInlineBox::alignBoxesInBlockDirection(LayoutUnit heightOfBlock, GlyphOverflowAndFallbackFontsMap& textBoxDataMap, VerticalPositionCache& verticalPositionCache)
</span></span></pre>
</div>
</div>
</body>
</html>