<!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>[168464] 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/168464">168464</a></dd>
<dt>Author</dt> <dd>rego@igalia.com</dd>
<dt>Date</dt> <dd>2014-05-08 01:05:58 -0700 (Thu, 08 May 2014)</dd>
</dl>
<h3>Log Message</h3>
<pre>REGRESSION (<a href="http://trac.webkit.org/projects/webkit/changeset/167652">r167652</a>): SelectionState is not set properly for non leaf objects in pages with regions
https://bugs.webkit.org/show_bug.cgi?id=132493
Reviewed by David Hyatt.
Source/WebCore:
Non selection leaf elements were not included in the selection ranges,
that was causing that their selection state was not set properly and
when one of the element was removed as it was marked as SelectionNone
current selection was not removed.
Due to this fix, the regression detected in bug #131982 arose again.
Reverted changes from <a href="http://trac.webkit.org/projects/webkit/changeset/167675">r167675</a> and reopened bug as previous fix was not
right. Updated TestExpectations accordingly.
Test: fast/regions/selection/crash-select-all.html
* rendering/RenderView.cpp:
(WebCore::RenderView::splitSelectionBetweenSubtrees): We need to include
non selection leafs in the range, otherwise we won't be marking
selection state of some elements properly.
LayoutTests:
* TestExpectations: Marked
fast/regions/cssom/region-range-for-box-crash.html as crashing on
debug due to regression detected in bug #131982.
* fast/regions/selection/crash-select-all-expected.txt: Added.
* fast/regions/selection/crash-select-all.html: Added.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsTestExpectations">trunk/LayoutTests/TestExpectations</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderViewcpp">trunk/Source/WebCore/rendering/RenderView.cpp</a></li>
</ul>
<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfastregionsselectioncrashselectallexpectedtxt">trunk/LayoutTests/fast/regions/selection/crash-select-all-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastregionsselectioncrashselectallhtml">trunk/LayoutTests/fast/regions/selection/crash-select-all.html</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (168463 => 168464)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2014-05-08 07:57:10 UTC (rev 168463)
+++ trunk/LayoutTests/ChangeLog        2014-05-08 08:05:58 UTC (rev 168464)
</span><span class="lines">@@ -1,3 +1,16 @@
</span><ins>+2014-05-08 Manuel Rego Casasnovas <rego@igalia.com>
+
+ REGRESSION (r167652): SelectionState is not set properly for non leaf objects in pages with regions
+ https://bugs.webkit.org/show_bug.cgi?id=132493
+
+ Reviewed by David Hyatt.
+
+ * TestExpectations: Marked
+ fast/regions/cssom/region-range-for-box-crash.html as crashing on
+ debug due to regression detected in bug #131982.
+ * fast/regions/selection/crash-select-all-expected.txt: Added.
+ * fast/regions/selection/crash-select-all.html: Added.
+
</ins><span class="cx"> 2014-05-08 Zoltan Horvath <zoltan@webkit.org>
</span><span class="cx">
</span><span class="cx"> [CSS Shapes] Can't select content within the area of the floating box when clip-path is applied
</span></span></pre></div>
<a id="trunkLayoutTestsTestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/TestExpectations (168463 => 168464)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/TestExpectations        2014-05-08 07:57:10 UTC (rev 168463)
+++ trunk/LayoutTests/TestExpectations        2014-05-08 08:05:58 UTC (rev 168464)
</span><span class="lines">@@ -114,3 +114,6 @@
</span><span class="cx"> # These tests are incorrect in the CSS test suite and should be fixed there first.
</span><span class="cx"> css2.1/20110323/replaced-intrinsic-001.htm [ Failure ]
</span><span class="cx"> css2.1/20110323/replaced-intrinsic-002.htm [ Failure ]
</span><ins>+
+# Regression from r167652:
+webkit.org/b/131982 [ Debug ] fast/regions/cssom/region-range-for-box-crash.html [ Crash ]
</ins></span></pre></div>
<a id="trunkLayoutTestsfastregionsselectioncrashselectallexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/regions/selection/crash-select-all-expected.txt (0 => 168464)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/regions/selection/crash-select-all-expected.txt         (rev 0)
+++ trunk/LayoutTests/fast/regions/selection/crash-select-all-expected.txt        2014-05-08 08:05:58 UTC (rev 168464)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+Bug 132493: REGRESSION (r167652): SelectionState is not set properly for non leaf objects in pages with regions
+
+This test has PASSED if it doesn't CRASH in debug.
</ins></span></pre></div>
<a id="trunkLayoutTestsfastregionsselectioncrashselectallhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/regions/selection/crash-select-all.html (0 => 168464)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/regions/selection/crash-select-all.html         (rev 0)
+++ trunk/LayoutTests/fast/regions/selection/crash-select-all.html        2014-05-08 08:05:58 UTC (rev 168464)
</span><span class="lines">@@ -0,0 +1,24 @@
</span><ins>+<!DOCTYPE html>
+<head>
+<script>
+ if (window.testRunner) {
+ testRunner.dumpAsText();
+ }
+</script>
+<style>
+ .region { -webkit-flow-from: no-flow; }
+ .border { border: solid; }
+</style>
+</head>
+<body>
+ <div id="div" class="region border"></div>
+ <div class="region border"></div>
+ <p><a href="https://bugs.webkit.org/show_bug.cgi?id=132493">Bug 132493</a>: REGRESSION (r167652): SelectionState is not set properly for non leaf objects in pages with regions</p>
+ <p>This test has PASSED if it doesn't CRASH in debug.</p>
+ <script>
+ document.execCommand("SelectAll");
+ var elem = document.getElementById("div");
+ elem.removeAttribute("class");
+ </script>
+</body>
+</html>
</ins></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (168463 => 168464)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-05-08 07:57:10 UTC (rev 168463)
+++ trunk/Source/WebCore/ChangeLog        2014-05-08 08:05:58 UTC (rev 168464)
</span><span class="lines">@@ -1,3 +1,26 @@
</span><ins>+2014-05-08 Manuel Rego Casasnovas <rego@igalia.com>
+
+ REGRESSION (r167652): SelectionState is not set properly for non leaf objects in pages with regions
+ https://bugs.webkit.org/show_bug.cgi?id=132493
+
+ Reviewed by David Hyatt.
+
+ Non selection leaf elements were not included in the selection ranges,
+ that was causing that their selection state was not set properly and
+ when one of the element was removed as it was marked as SelectionNone
+ current selection was not removed.
+
+ Due to this fix, the regression detected in bug #131982 arose again.
+ Reverted changes from r167675 and reopened bug as previous fix was not
+ right. Updated TestExpectations accordingly.
+
+ Test: fast/regions/selection/crash-select-all.html
+
+ * rendering/RenderView.cpp:
+ (WebCore::RenderView::splitSelectionBetweenSubtrees): We need to include
+ non selection leafs in the range, otherwise we won't be marking
+ selection state of some elements properly.
+
</ins><span class="cx"> 2014-05-08 Zoltan Horvath <zoltan@webkit.org>
</span><span class="cx">
</span><span class="cx"> [CSS Shapes] Can't select content within the area of the floating box when clip-path is applied
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderViewcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderView.cpp (168463 => 168464)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderView.cpp        2014-05-08 07:57:10 UTC (rev 168463)
+++ trunk/Source/WebCore/rendering/RenderView.cpp        2014-05-08 08:05:58 UTC (rev 168464)
</span><span class="lines">@@ -844,7 +844,7 @@
</span><span class="cx"> renderSubtreesMap.set(namedFlowThread, nullptr);
</span><span class="cx">
</span><span class="cx"> if (start && end) {
</span><del>- RefPtr<Range> initialRange = Range::create(document(), start->node(), 0, end->node(), 0);
</del><ins>+ RefPtr<Range> initialRange = Range::create(document(), start->node(), startPos, end->node(), endPos);
</ins><span class="cx">
</span><span class="cx"> Node* startNode = initialRange->startContainer();
</span><span class="cx"> Node* endNode = initialRange->endContainer();
</span><span class="lines">@@ -852,7 +852,7 @@
</span><span class="cx">
</span><span class="cx"> for (Node* node = startNode; node != stopNode; node = NodeTraversal::next(node)) {
</span><span class="cx"> RenderObject* renderer = node->renderer();
</span><del>- if (!renderer || !renderer->canBeSelectionLeaf())
</del><ins>+ if (!renderer)
</ins><span class="cx"> continue;
</span><span class="cx">
</span><span class="cx"> SelectionSubtreeRoot& root = renderer->selectionRoot();
</span></span></pre>
</div>
</div>
</body>
</html>