<!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>[170304] 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/170304">170304</a></dd>
<dt>Author</dt> <dd>hyatt@apple.com</dd>
<dt>Date</dt> <dd>2014-06-23 11:56:52 -0700 (Mon, 23 Jun 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>[New Multicolumn] Writing mode changes on the &lt;html&gt; and RenderView need to
be propagated to column sets and flow thread children of those renderers.
https://bugs.webkit.org/show_bug.cgi?id=134121
&lt;rdar://problem/16884527&gt;

Reviewed by Dean Jackson.


Source/WebCore: 
Added fast/multicol/pagination/RightToLeft-rl-dynamic.html

* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::styleDidChange):
Refactor the propagation code for column sets and flow thread styles into a helper
function that is called here.

(WebCore::RenderBlockFlow::updateStylesForColumnChildren):
* rendering/RenderBlockFlow.h:
Add a new helper function for recalculating the styles of the column sets and
flow thread in response to changes.

* rendering/RenderBox.cpp:
(WebCore::RenderBox::styleDidChange):
When the style is changed for a root element or the RenderView in response to
writing mode and direction changes, make sure that style gets propagated to
the column children by calling the new helper function.

LayoutTests: 
* fast/multicol/pagination/RightToLeft-rl-dynamic.html: Added.
* platform/mac/fast/multicol/pagination/BottomToTop-bt-expected.png:
* platform/mac/fast/multicol/pagination/BottomToTop-lr-expected.png:
* platform/mac/fast/multicol/pagination/BottomToTop-rl-expected.png:
* platform/mac/fast/multicol/pagination/BottomToTop-tb-expected.png:
* platform/mac/fast/multicol/pagination/LeftToRight-bt-expected.png:
* platform/mac/fast/multicol/pagination/LeftToRight-lr-expected.png:
* platform/mac/fast/multicol/pagination/LeftToRight-rl-expected.png:
* platform/mac/fast/multicol/pagination/LeftToRight-tb-expected.png:
* platform/mac/fast/multicol/pagination/RightToLeft-bt-expected.png:
* platform/mac/fast/multicol/pagination/RightToLeft-lr-expected.png:
* platform/mac/fast/multicol/pagination/RightToLeft-rl-dynamic-expected.png: Added.
* platform/mac/fast/multicol/pagination/RightToLeft-rl-dynamic-expected.txt: Added.
* platform/mac/fast/multicol/pagination/RightToLeft-rl-expected.png:
* platform/mac/fast/multicol/pagination/RightToLeft-tb-expected.png:
* platform/mac/fast/multicol/pagination/TopToBottom-bt-expected.png:
* platform/mac/fast/multicol/pagination/TopToBottom-lr-expected.png:
* platform/mac/fast/multicol/pagination/TopToBottom-rl-expected.png:
* platform/mac/fast/multicol/pagination/TopToBottom-tb-expected.png:
* platform/mac/fast/multicol/pagination/nested-transforms-expected.png:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastmulticolpaginationBottomToTopbtexpectedpng">trunk/LayoutTests/platform/mac/fast/multicol/pagination/BottomToTop-bt-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastmulticolpaginationBottomToToplrexpectedpng">trunk/LayoutTests/platform/mac/fast/multicol/pagination/BottomToTop-lr-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastmulticolpaginationBottomToToprlexpectedpng">trunk/LayoutTests/platform/mac/fast/multicol/pagination/BottomToTop-rl-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastmulticolpaginationBottomToToptbexpectedpng">trunk/LayoutTests/platform/mac/fast/multicol/pagination/BottomToTop-tb-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastmulticolpaginationLeftToRightbtexpectedpng">trunk/LayoutTests/platform/mac/fast/multicol/pagination/LeftToRight-bt-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastmulticolpaginationLeftToRightlrexpectedpng">trunk/LayoutTests/platform/mac/fast/multicol/pagination/LeftToRight-lr-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastmulticolpaginationLeftToRightrlexpectedpng">trunk/LayoutTests/platform/mac/fast/multicol/pagination/LeftToRight-rl-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastmulticolpaginationLeftToRighttbexpectedpng">trunk/LayoutTests/platform/mac/fast/multicol/pagination/LeftToRight-tb-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastmulticolpaginationRightToLeftbtexpectedpng">trunk/LayoutTests/platform/mac/fast/multicol/pagination/RightToLeft-bt-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastmulticolpaginationRightToLeftlrexpectedpng">trunk/LayoutTests/platform/mac/fast/multicol/pagination/RightToLeft-lr-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastmulticolpaginationRightToLeftrlexpectedpng">trunk/LayoutTests/platform/mac/fast/multicol/pagination/RightToLeft-rl-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastmulticolpaginationRightToLefttbexpectedpng">trunk/LayoutTests/platform/mac/fast/multicol/pagination/RightToLeft-tb-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastmulticolpaginationTopToBottombtexpectedpng">trunk/LayoutTests/platform/mac/fast/multicol/pagination/TopToBottom-bt-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastmulticolpaginationTopToBottomlrexpectedpng">trunk/LayoutTests/platform/mac/fast/multicol/pagination/TopToBottom-lr-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastmulticolpaginationTopToBottomrlexpectedpng">trunk/LayoutTests/platform/mac/fast/multicol/pagination/TopToBottom-rl-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastmulticolpaginationTopToBottomtbexpectedpng">trunk/LayoutTests/platform/mac/fast/multicol/pagination/TopToBottom-tb-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastmulticolpaginationnestedtransformsexpectedpng">trunk/LayoutTests/platform/mac/fast/multicol/pagination/nested-transforms-expected.png</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</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="#trunkSourceWebCorerenderingRenderBoxcpp">trunk/Source/WebCore/rendering/RenderBox.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderMultiColumnSetcpp">trunk/Source/WebCore/rendering/RenderMultiColumnSet.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfastmulticolpaginationRightToLeftrldynamichtml">trunk/LayoutTests/fast/multicol/pagination/RightToLeft-rl-dynamic.html</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastmulticolpaginationRightToLeftrldynamicexpectedpng">trunk/LayoutTests/platform/mac/fast/multicol/pagination/RightToLeft-rl-dynamic-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastmulticolpaginationRightToLeftrldynamicexpectedtxt">trunk/LayoutTests/platform/mac/fast/multicol/pagination/RightToLeft-rl-dynamic-expected.txt</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (170303 => 170304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2014-06-23 18:25:12 UTC (rev 170303)
+++ trunk/LayoutTests/ChangeLog        2014-06-23 18:56:52 UTC (rev 170304)
</span><span class="lines">@@ -1,3 +1,33 @@
</span><ins>+2014-06-23  David Hyatt  &lt;hyatt@apple.com&gt;
+
+        [New Multicolumn] Writing mode changes on the &lt;html&gt; and RenderView need to
+        be propagated to column sets and flow thread children of those renderers.
+        https://bugs.webkit.org/show_bug.cgi?id=134121
+        &lt;rdar://problem/16884527&gt;
+
+        Reviewed by Dean Jackson.
+
+        * fast/multicol/pagination/RightToLeft-rl-dynamic.html: Added.
+        * platform/mac/fast/multicol/pagination/BottomToTop-bt-expected.png:
+        * platform/mac/fast/multicol/pagination/BottomToTop-lr-expected.png:
+        * platform/mac/fast/multicol/pagination/BottomToTop-rl-expected.png:
+        * platform/mac/fast/multicol/pagination/BottomToTop-tb-expected.png:
+        * platform/mac/fast/multicol/pagination/LeftToRight-bt-expected.png:
+        * platform/mac/fast/multicol/pagination/LeftToRight-lr-expected.png:
+        * platform/mac/fast/multicol/pagination/LeftToRight-rl-expected.png:
+        * platform/mac/fast/multicol/pagination/LeftToRight-tb-expected.png:
+        * platform/mac/fast/multicol/pagination/RightToLeft-bt-expected.png:
+        * platform/mac/fast/multicol/pagination/RightToLeft-lr-expected.png:
+        * platform/mac/fast/multicol/pagination/RightToLeft-rl-dynamic-expected.png: Added.
+        * platform/mac/fast/multicol/pagination/RightToLeft-rl-dynamic-expected.txt: Added.
+        * platform/mac/fast/multicol/pagination/RightToLeft-rl-expected.png:
+        * platform/mac/fast/multicol/pagination/RightToLeft-tb-expected.png:
+        * platform/mac/fast/multicol/pagination/TopToBottom-bt-expected.png:
+        * platform/mac/fast/multicol/pagination/TopToBottom-lr-expected.png:
+        * platform/mac/fast/multicol/pagination/TopToBottom-rl-expected.png:
+        * platform/mac/fast/multicol/pagination/TopToBottom-tb-expected.png:
+        * platform/mac/fast/multicol/pagination/nested-transforms-expected.png:
+
</ins><span class="cx"> 2014-06-23  Michał Pakuła vel Rutka  &lt;m.pakula@samsung.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [EFL] Move WebKit2 test results into LayoutTests/platform/efl
</span></span></pre></div>
<a id="trunkLayoutTestsfastmulticolpaginationRightToLeftrldynamichtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/pagination/RightToLeft-rl-dynamic.html (0 => 170304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/pagination/RightToLeft-rl-dynamic.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/pagination/RightToLeft-rl-dynamic.html        2014-06-23 18:56:52 UTC (rev 170304)
</span><span class="lines">@@ -0,0 +1,41 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+
+&lt;html&gt;
+&lt;head&gt;
+    &lt;style&gt;
+        .box {
+            height: 50px;
+            width: 50px;
+            background-color: blue;
+        }
+        .box.changed {
+            background-color: green;
+        }
+    &lt;/style&gt;
+    &lt;script&gt;
+        if (window.internals)
+            internals.setPagination(&quot;RightToLeftPaginated&quot;, 20, 180);
+    &lt;/script&gt;
+&lt;/head&gt;
+&lt;body onload=&quot;document.body.offsetLeft; document.body.style.webkitWritingMode = 'vertical-rl'&quot;&gt;
+
+&lt;div class=&quot;box&quot; onclick=&quot;this.classList.toggle('changed')&quot;&gt;&lt;/div&gt;
+&lt;p&gt;1 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&lt;/p&gt;
+&lt;div class=&quot;box&quot; onclick=&quot;this.classList.toggle('changed')&quot;&gt;&lt;/div&gt;
+&lt;p&gt;2 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&lt;/p&gt;
+&lt;div class=&quot;box&quot; onclick=&quot;this.classList.toggle('changed')&quot;&gt;&lt;/div&gt;
+&lt;p&gt;3 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&lt;/p&gt;
+&lt;div class=&quot;box&quot; onclick=&quot;this.classList.toggle('changed')&quot;&gt;&lt;/div&gt;
+&lt;p&gt;4 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. &lt;/p&gt;
+&lt;div class=&quot;box&quot; onclick=&quot;this.classList.toggle('changed')&quot;&gt;&lt;/div&gt;
+&lt;p&gt;5 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&lt;/p&gt;
+&lt;div class=&quot;box&quot; onclick=&quot;this.classList.toggle('changed')&quot;&gt;&lt;/div&gt;
+&lt;p&gt;6 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&lt;/p&gt;
+&lt;div class=&quot;box&quot; onclick=&quot;this.classList.toggle('changed')&quot;&gt;&lt;/div&gt;
+&lt;p&gt;7 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. &lt;/p&gt;
+&lt;div class=&quot;box&quot; onclick=&quot;this.classList.toggle('changed')&quot;&gt;&lt;/div&gt;
+&lt;p&gt;8 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. &lt;/p&gt;
+
+
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastmulticolpaginationBottomToTopbtexpectedpng"></a>
<div class="binary"><h4>Modified: trunk/LayoutTests/platform/mac/fast/multicol/pagination/BottomToTop-bt-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastmulticolpaginationBottomToToplrexpectedpng"></a>
<div class="binary"><h4>Modified: trunk/LayoutTests/platform/mac/fast/multicol/pagination/BottomToTop-lr-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastmulticolpaginationBottomToToprlexpectedpng"></a>
<div class="binary"><h4>Modified: trunk/LayoutTests/platform/mac/fast/multicol/pagination/BottomToTop-rl-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastmulticolpaginationBottomToToptbexpectedpng"></a>
<div class="binary"><h4>Modified: trunk/LayoutTests/platform/mac/fast/multicol/pagination/BottomToTop-tb-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastmulticolpaginationLeftToRightbtexpectedpng"></a>
<div class="binary"><h4>Modified: trunk/LayoutTests/platform/mac/fast/multicol/pagination/LeftToRight-bt-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastmulticolpaginationLeftToRightlrexpectedpng"></a>
<div class="binary"><h4>Modified: trunk/LayoutTests/platform/mac/fast/multicol/pagination/LeftToRight-lr-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastmulticolpaginationLeftToRightrlexpectedpng"></a>
<div class="binary"><h4>Modified: trunk/LayoutTests/platform/mac/fast/multicol/pagination/LeftToRight-rl-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastmulticolpaginationLeftToRighttbexpectedpng"></a>
<div class="binary"><h4>Modified: trunk/LayoutTests/platform/mac/fast/multicol/pagination/LeftToRight-tb-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastmulticolpaginationRightToLeftbtexpectedpng"></a>
<div class="binary"><h4>Modified: trunk/LayoutTests/platform/mac/fast/multicol/pagination/RightToLeft-bt-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastmulticolpaginationRightToLeftlrexpectedpng"></a>
<div class="binary"><h4>Modified: trunk/LayoutTests/platform/mac/fast/multicol/pagination/RightToLeft-lr-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastmulticolpaginationRightToLeftrldynamicexpectedpng"></a>
<div class="binary"><h4>Added: trunk/LayoutTests/platform/mac/fast/multicol/pagination/RightToLeft-rl-dynamic-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: trunk/LayoutTests/platform/mac/fast/multicol/pagination/RightToLeft-rl-dynamic-expected.png
</span><span class="cx">___________________________________________________________________
</span><a id="svnmimetype"></a>
<div class="addfile"><h4>Added: svn:mime-type</h4></div>
<a id="trunkLayoutTestsplatformmacfastmulticolpaginationRightToLeftrldynamicexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/mac/fast/multicol/pagination/RightToLeft-rl-dynamic-expected.txt (0 => 170304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/fast/multicol/pagination/RightToLeft-rl-dynamic-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/mac/fast/multicol/pagination/RightToLeft-rl-dynamic-expected.txt        2014-06-23 18:56:52 UTC (rev 170304)
</span><span class="lines">@@ -0,0 +1,80 @@
</span><ins>+layer at (0,0) size 1780x585
+  RenderView at (0,0) size 800x585
+    RenderMultiColumnSet at (0,0) size 800x585
+layer at (-764,0) size 1564x585 backgroundClip at (0,0) size 1780x585 clip at (0,0) size 1780x585 outlineClip at (0,0) size 1780x585
+  RenderMultiColumnFlowThread at (0,0) size 1564x585
+layer at (-764,0) size 1564x585 backgroundClip at (0,0) size 1780x585 clip at (0,0) size 1780x585 outlineClip at (0,0) size 1780x585
+  RenderBlock {HTML} at (0,0) size 1564x585
+    RenderBody {BODY} at (8,8) size 1540x569
+      RenderBlock {DIV} at (0,0) size 50x50 [bgcolor=#0000FF]
+      RenderBlock {P} at (66,0) size 124x569
+        RenderText {#text} at (0,0) size 124x546
+          text run at (0,0) width 513: &quot;1 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor&quot;
+          text run at (18,0) width 526: &quot;incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud&quot;
+          text run at (36,0) width 534: &quot;exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure&quot;
+          text run at (54,0) width 512: &quot;dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.&quot;
+          text run at (72,0) width 546: &quot;Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit&quot;
+          text run at (106,0) width 128: &quot;anim id est laborum.&quot;
+      RenderBlock {DIV} at (206,0) size 50x50 [bgcolor=#0000FF]
+      RenderBlock {P} at (272,0) size 116x569
+        RenderText {#text} at (0,0) size 116x546
+          text run at (0,0) width 513: &quot;2 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor&quot;
+          text run at (18,0) width 526: &quot;incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud&quot;
+          text run at (36,0) width 534: &quot;exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure&quot;
+          text run at (54,0) width 512: &quot;dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.&quot;
+          text run at (80,0) width 546: &quot;Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit&quot;
+          text run at (98,0) width 128: &quot;anim id est laborum.&quot;
+      RenderBlock {DIV} at (404,0) size 50x50 [bgcolor=#0000FF]
+      RenderBlock {P} at (470,0) size 116x569
+        RenderText {#text} at (0,0) size 116x546
+          text run at (0,0) width 513: &quot;3 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor&quot;
+          text run at (18,0) width 526: &quot;incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud&quot;
+          text run at (36,0) width 534: &quot;exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure&quot;
+          text run at (62,0) width 512: &quot;dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.&quot;
+          text run at (80,0) width 546: &quot;Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit&quot;
+          text run at (98,0) width 128: &quot;anim id est laborum.&quot;
+      RenderBlock {DIV} at (602,0) size 50x50 [bgcolor=#0000FF]
+      RenderBlock {P} at (668,0) size 116x569
+        RenderText {#text} at (0,0) size 116x546
+          text run at (0,0) width 513: &quot;4 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor&quot;
+          text run at (18,0) width 526: &quot;incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud&quot;
+          text run at (44,0) width 534: &quot;exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure&quot;
+          text run at (62,0) width 512: &quot;dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.&quot;
+          text run at (80,0) width 546: &quot;Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit&quot;
+          text run at (98,0) width 128: &quot;anim id est laborum.&quot;
+      RenderBlock {DIV} at (800,0) size 50x50 [bgcolor=#0000FF]
+      RenderBlock {P} at (866,0) size 116x569
+        RenderText {#text} at (0,0) size 116x546
+          text run at (0,0) width 513: &quot;5 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor&quot;
+          text run at (26,0) width 526: &quot;incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud&quot;
+          text run at (44,0) width 534: &quot;exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure&quot;
+          text run at (62,0) width 512: &quot;dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.&quot;
+          text run at (80,0) width 546: &quot;Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit&quot;
+          text run at (98,0) width 128: &quot;anim id est laborum.&quot;
+      RenderBlock {DIV} at (998,0) size 50x50 [bgcolor=#0000FF]
+      RenderBlock {P} at (1072,0) size 108x569
+        RenderText {#text} at (0,0) size 108x546
+          text run at (0,0) width 513: &quot;6 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor&quot;
+          text run at (18,0) width 526: &quot;incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud&quot;
+          text run at (36,0) width 534: &quot;exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure&quot;
+          text run at (54,0) width 512: &quot;dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.&quot;
+          text run at (72,0) width 546: &quot;Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit&quot;
+          text run at (90,0) width 128: &quot;anim id est laborum.&quot;
+      RenderBlock {DIV} at (1196,0) size 50x50 [bgcolor=#0000FF]
+      RenderBlock {P} at (1252,0) size 108x569
+        RenderText {#text} at (0,0) size 108x546
+          text run at (0,0) width 513: &quot;7 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor&quot;
+          text run at (18,0) width 526: &quot;incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud&quot;
+          text run at (36,0) width 534: &quot;exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure&quot;
+          text run at (54,0) width 512: &quot;dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.&quot;
+          text run at (72,0) width 546: &quot;Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit&quot;
+          text run at (90,0) width 128: &quot;anim id est laborum.&quot;
+      RenderBlock {DIV} at (1376,0) size 50x50 [bgcolor=#0000FF]
+      RenderBlock {P} at (1432,0) size 108x569
+        RenderText {#text} at (0,0) size 108x546
+          text run at (0,0) width 513: &quot;8 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor&quot;
+          text run at (18,0) width 526: &quot;incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud&quot;
+          text run at (36,0) width 534: &quot;exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure&quot;
+          text run at (54,0) width 512: &quot;dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.&quot;
+          text run at (72,0) width 546: &quot;Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit&quot;
+          text run at (90,0) width 128: &quot;anim id est laborum.&quot;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastmulticolpaginationRightToLeftrlexpectedpng"></a>
<div class="binary"><h4>Modified: trunk/LayoutTests/platform/mac/fast/multicol/pagination/RightToLeft-rl-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastmulticolpaginationRightToLefttbexpectedpng"></a>
<div class="binary"><h4>Modified: trunk/LayoutTests/platform/mac/fast/multicol/pagination/RightToLeft-tb-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastmulticolpaginationTopToBottombtexpectedpng"></a>
<div class="binary"><h4>Modified: trunk/LayoutTests/platform/mac/fast/multicol/pagination/TopToBottom-bt-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastmulticolpaginationTopToBottomlrexpectedpng"></a>
<div class="binary"><h4>Modified: trunk/LayoutTests/platform/mac/fast/multicol/pagination/TopToBottom-lr-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastmulticolpaginationTopToBottomrlexpectedpng"></a>
<div class="binary"><h4>Modified: trunk/LayoutTests/platform/mac/fast/multicol/pagination/TopToBottom-rl-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastmulticolpaginationTopToBottomtbexpectedpng"></a>
<div class="binary"><h4>Modified: trunk/LayoutTests/platform/mac/fast/multicol/pagination/TopToBottom-tb-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastmulticolpaginationnestedtransformsexpectedpng"></a>
<div class="binary"><h4>Modified: trunk/LayoutTests/platform/mac/fast/multicol/pagination/nested-transforms-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (170303 => 170304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-06-23 18:25:12 UTC (rev 170303)
+++ trunk/Source/WebCore/ChangeLog        2014-06-23 18:56:52 UTC (rev 170304)
</span><span class="lines">@@ -1,3 +1,30 @@
</span><ins>+2014-06-23  David Hyatt  &lt;hyatt@apple.com&gt;
+
+        [New Multicolumn] Writing mode changes on the &lt;html&gt; and RenderView need to
+        be propagated to column sets and flow thread children of those renderers.
+        https://bugs.webkit.org/show_bug.cgi?id=134121
+        &lt;rdar://problem/16884527&gt;
+
+        Reviewed by Dean Jackson.
+
+        Added fast/multicol/pagination/RightToLeft-rl-dynamic.html
+
+        * rendering/RenderBlockFlow.cpp:
+        (WebCore::RenderBlockFlow::styleDidChange):
+        Refactor the propagation code for column sets and flow thread styles into a helper
+        function that is called here.
+
+        (WebCore::RenderBlockFlow::updateStylesForColumnChildren):
+        * rendering/RenderBlockFlow.h:
+        Add a new helper function for recalculating the styles of the column sets and
+        flow thread in response to changes.
+
+        * rendering/RenderBox.cpp:
+        (WebCore::RenderBox::styleDidChange):
+        When the style is changed for a root element or the RenderView in response to
+        writing mode and direction changes, make sure that style gets propagated to
+        the column children by calling the new helper function.
+
</ins><span class="cx"> 2014-06-23  Jer Noble  &lt;jer.noble@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [Mac] Uncaught exception crash when destroying MediaPlayerPrivateAVFoundationObjC
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBlockFlowcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBlockFlow.cpp (170303 => 170304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBlockFlow.cpp        2014-06-23 18:25:12 UTC (rev 170303)
+++ trunk/Source/WebCore/rendering/RenderBlockFlow.cpp        2014-06-23 18:56:52 UTC (rev 170304)
</span><span class="lines">@@ -1968,14 +1968,16 @@
</span><span class="cx">             invalidateLineLayoutPath();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (multiColumnFlowThread()) {
-        for (auto child = firstChildBox();
-             child &amp;&amp; (child-&gt;isInFlowRenderFlowThread() || child-&gt;isRenderMultiColumnSet());
-             child = child-&gt;nextSiblingBox())
-            child-&gt;setStyle(RenderStyle::createAnonymousStyleWithDisplay(&amp;style(), BLOCK));
-    }
</del><ins>+    if (multiColumnFlowThread())
+        updateStylesForColumnChildren();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void RenderBlockFlow::updateStylesForColumnChildren()
+{
+    for (auto child = firstChildBox(); child &amp;&amp; (child-&gt;isInFlowRenderFlowThread() || child-&gt;isRenderMultiColumnSet()); child = child-&gt;nextSiblingBox())
+        child-&gt;setStyle(RenderStyle::createAnonymousStyleWithDisplay(&amp;style(), BLOCK));
+}
+
</ins><span class="cx"> void RenderBlockFlow::styleWillChange(StyleDifference diff, const RenderStyle&amp; newStyle)
</span><span class="cx"> {
</span><span class="cx">     const RenderStyle* oldStyle = hasInitializedStyle() ? &amp;style() : nullptr;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBlockFlowh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBlockFlow.h (170303 => 170304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBlockFlow.h        2014-06-23 18:25:12 UTC (rev 170303)
+++ trunk/Source/WebCore/rendering/RenderBlockFlow.h        2014-06-23 18:56:52 UTC (rev 170304)
</span><span class="lines">@@ -386,8 +386,9 @@
</span><span class="cx"> 
</span><span class="cx">     void createMultiColumnFlowThread();
</span><span class="cx">     void destroyMultiColumnFlowThread();
</span><del>-    
</del><ins>+
</ins><span class="cx">     void updateColumnProgressionFromStyle(RenderStyle*);
</span><ins>+    void updateStylesForColumnChildren();
</ins><span class="cx"> 
</span><span class="cx">     virtual bool needsLayoutAfterRegionRangeChange() const override;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBoxcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBox.cpp (170303 => 170304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBox.cpp        2014-06-23 18:25:12 UTC (rev 170303)
+++ trunk/Source/WebCore/rendering/RenderBox.cpp        2014-06-23 18:56:52 UTC (rev 170304)
</span><span class="lines">@@ -367,21 +367,29 @@
</span><span class="cx">         // Propagate the new writing mode and direction up to the RenderView.
</span><span class="cx">         RenderStyle&amp; viewStyle = view().style();
</span><span class="cx">         bool viewChangedWritingMode = false;
</span><ins>+        bool rootStyleChanged = false;
+        bool viewStyleChanged = false;
+        RenderObject* rootRenderer = isBodyRenderer ? document().documentElement()-&gt;renderer() : nullptr;
</ins><span class="cx">         if (viewStyle.direction() != newStyle.direction() &amp;&amp; (isRootRenderer || !document().directionSetOnDocumentElement())) {
</span><span class="cx">             viewStyle.setDirection(newStyle.direction());
</span><del>-            if (isBodyRenderer)
-                document().documentElement()-&gt;renderer()-&gt;style().setDirection(newStyle.direction());
</del><ins>+            viewStyleChanged = true;
+            if (isBodyRenderer) {
+                rootRenderer-&gt;style().setDirection(newStyle.direction());
+                rootStyleChanged = true;
+            }
</ins><span class="cx">             setNeedsLayoutAndPrefWidthsRecalc();
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         if (viewStyle.writingMode() != newStyle.writingMode() &amp;&amp; (isRootRenderer || !document().writingModeSetOnDocumentElement())) {
</span><span class="cx">             viewStyle.setWritingMode(newStyle.writingMode());
</span><span class="cx">             viewChangedWritingMode = true;
</span><ins>+            viewStyleChanged = true;
</ins><span class="cx">             view().setHorizontalWritingMode(newStyle.isHorizontalWritingMode());
</span><span class="cx">             view().markAllDescendantsWithFloatsForLayout();
</span><span class="cx">             if (isBodyRenderer) {
</span><del>-                document().documentElement()-&gt;renderer()-&gt;style().setWritingMode(newStyle.writingMode());
-                document().documentElement()-&gt;renderer()-&gt;setHorizontalWritingMode(newStyle.isHorizontalWritingMode());
</del><ins>+                rootStyleChanged = true;
+                rootRenderer-&gt;style().setWritingMode(newStyle.writingMode());
+                rootRenderer-&gt;setHorizontalWritingMode(newStyle.isHorizontalWritingMode());
</ins><span class="cx">             }
</span><span class="cx">             setNeedsLayoutAndPrefWidthsRecalc();
</span><span class="cx">         }
</span><span class="lines">@@ -394,6 +402,12 @@
</span><span class="cx">             if (view().multiColumnFlowThread())
</span><span class="cx">                 view().updateColumnProgressionFromStyle(&amp;viewStyle);
</span><span class="cx">         }
</span><ins>+        
+        if (viewStyleChanged &amp;&amp; view().multiColumnFlowThread())
+            view().updateStylesForColumnChildren();
+        
+        if (rootStyleChanged &amp;&amp; rootRenderer &amp;&amp; rootRenderer-&gt;isRenderBlockFlow() &amp;&amp; toRenderBlockFlow(rootRenderer)-&gt;multiColumnFlowThread())
+            toRenderBlockFlow(rootRenderer)-&gt;updateStylesForColumnChildren();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(CSS_SHAPES)
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderMultiColumnSetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderMultiColumnSet.cpp (170303 => 170304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderMultiColumnSet.cpp        2014-06-23 18:25:12 UTC (rev 170303)
+++ trunk/Source/WebCore/rendering/RenderMultiColumnSet.cpp        2014-06-23 18:56:52 UTC (rev 170304)
</span><span class="lines">@@ -665,6 +665,7 @@
</span><span class="cx">         LayoutRect flowThreadOverflowPortion = flowThreadPortionOverflowRect(flowThreadPortion, i, colCount, colGap);
</span><span class="cx"> 
</span><span class="cx">         // Do a repaint for this specific column.
</span><ins>+        flipForWritingMode(colRect);
</ins><span class="cx">         repaintFlowThreadContentRectangle(repaintRect, flowThreadPortion, colRect.location(), &amp;flowThreadOverflowPortion);
</span><span class="cx">     }
</span><span class="cx"> }
</span></span></pre>
</div>
</div>

</body>
</html>