<!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>[198834] 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/198834">198834</a></dd>
<dt>Author</dt> <dd>rego@igalia.com</dd>
<dt>Date</dt> <dd>2016-03-30 04:45:38 -0700 (Wed, 30 Mar 2016)</dd>
</dl>
<h3>Log Message</h3>
<pre>[css-grid] Refactor positioned children code
https://bugs.webkit.org/show_bug.cgi?id=155972
Reviewed by Sergio Villar Senin.
Source/WebCore:
This is a refactoring of RenderGrid::offsetAndBreadthForPositionedChild()
in order to calculate offset and breadth in a more clean way.
Hopefully making the code easier to follow.
Thanks to the refactoring, now positioned children in RTL
are working fine if they use the static inline position
(when "left" and "right" properties are both "auto").
The other case (not having a static inline position)
will be fixed in a separated patch.
* rendering/RenderGrid.cpp:
(WebCore::RenderGrid::offsetAndBreadthForPositionedChild):
LayoutTests:
Added RTL cases for most of the positioned tests,
which are now passing with this patch.
Pending to add RTL tests when "left" and "right" are not "auto"
(the item doesn't use the static inline position),
but that will be done in the other patch.
* fast/css-grid-layout/absolute-positioning-grid-container-containing-block-expected.txt:
* fast/css-grid-layout/absolute-positioning-grid-container-containing-block.html:
* fast/css-grid-layout/absolute-positioning-grid-container-parent-expected.txt:
* fast/css-grid-layout/absolute-positioning-grid-container-parent.html:
* fast/css-grid-layout/grid-positioned-items-background-expected.html:
* fast/css-grid-layout/grid-positioned-items-background.html:
Fix test setting transparent background as it couldn't fail before.
Also using a different width, to have different values when we create the RTL version.
* fast/css-grid-layout/grid-positioned-items-implicit-grid-expected.txt:
* fast/css-grid-layout/grid-positioned-items-implicit-grid-line-expected.txt:
* fast/css-grid-layout/grid-positioned-items-implicit-grid-line.html:
* fast/css-grid-layout/grid-positioned-items-implicit-grid.html:
* fast/css-grid-layout/grid-positioned-items-unknown-named-grid-line-expected.txt:
* fast/css-grid-layout/grid-positioned-items-unknown-named-grid-line.html:
* fast/css-grid-layout/grid-sizing-positioned-items-expected.txt:
* fast/css-grid-layout/grid-sizing-positioned-items.html:</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsfastcssgridlayoutabsolutepositioninggridcontainercontainingblockexpectedtxt">trunk/LayoutTests/fast/css-grid-layout/absolute-positioning-grid-container-containing-block-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastcssgridlayoutabsolutepositioninggridcontainercontainingblockhtml">trunk/LayoutTests/fast/css-grid-layout/absolute-positioning-grid-container-containing-block.html</a></li>
<li><a href="#trunkLayoutTestsfastcssgridlayoutabsolutepositioninggridcontainerparentexpectedtxt">trunk/LayoutTests/fast/css-grid-layout/absolute-positioning-grid-container-parent-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastcssgridlayoutabsolutepositioninggridcontainerparenthtml">trunk/LayoutTests/fast/css-grid-layout/absolute-positioning-grid-container-parent.html</a></li>
<li><a href="#trunkLayoutTestsfastcssgridlayoutgridpositioneditemsbackgroundexpectedhtml">trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-background-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastcssgridlayoutgridpositioneditemsbackgroundhtml">trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-background.html</a></li>
<li><a href="#trunkLayoutTestsfastcssgridlayoutgridpositioneditemsimplicitgridexpectedtxt">trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-implicit-grid-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastcssgridlayoutgridpositioneditemsimplicitgridlineexpectedtxt">trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-implicit-grid-line-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastcssgridlayoutgridpositioneditemsimplicitgridlinehtml">trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-implicit-grid-line.html</a></li>
<li><a href="#trunkLayoutTestsfastcssgridlayoutgridpositioneditemsimplicitgridhtml">trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-implicit-grid.html</a></li>
<li><a href="#trunkLayoutTestsfastcssgridlayoutgridpositioneditemsunknownnamedgridlineexpectedtxt">trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-unknown-named-grid-line-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastcssgridlayoutgridpositioneditemsunknownnamedgridlinehtml">trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-unknown-named-grid-line.html</a></li>
<li><a href="#trunkLayoutTestsfastcssgridlayoutgridsizingpositioneditemsexpectedtxt">trunk/LayoutTests/fast/css-grid-layout/grid-sizing-positioned-items-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastcssgridlayoutgridsizingpositioneditemshtml">trunk/LayoutTests/fast/css-grid-layout/grid-sizing-positioned-items.html</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderGridcpp">trunk/Source/WebCore/rendering/RenderGrid.cpp</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (198833 => 198834)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-03-30 08:18:19 UTC (rev 198833)
+++ trunk/LayoutTests/ChangeLog        2016-03-30 11:45:38 UTC (rev 198834)
</span><span class="lines">@@ -1,3 +1,34 @@
</span><ins>+2016-03-30 Manuel Rego Casasnovas <rego@igalia.com>
+
+ [css-grid] Refactor positioned children code
+ https://bugs.webkit.org/show_bug.cgi?id=155972
+
+ Reviewed by Sergio Villar Senin.
+
+ Added RTL cases for most of the positioned tests,
+ which are now passing with this patch.
+
+ Pending to add RTL tests when "left" and "right" are not "auto"
+ (the item doesn't use the static inline position),
+ but that will be done in the other patch.
+
+ * fast/css-grid-layout/absolute-positioning-grid-container-containing-block-expected.txt:
+ * fast/css-grid-layout/absolute-positioning-grid-container-containing-block.html:
+ * fast/css-grid-layout/absolute-positioning-grid-container-parent-expected.txt:
+ * fast/css-grid-layout/absolute-positioning-grid-container-parent.html:
+ * fast/css-grid-layout/grid-positioned-items-background-expected.html:
+ * fast/css-grid-layout/grid-positioned-items-background.html:
+ Fix test setting transparent background as it couldn't fail before.
+ Also using a different width, to have different values when we create the RTL version.
+ * fast/css-grid-layout/grid-positioned-items-implicit-grid-expected.txt:
+ * fast/css-grid-layout/grid-positioned-items-implicit-grid-line-expected.txt:
+ * fast/css-grid-layout/grid-positioned-items-implicit-grid-line.html:
+ * fast/css-grid-layout/grid-positioned-items-implicit-grid.html:
+ * fast/css-grid-layout/grid-positioned-items-unknown-named-grid-line-expected.txt:
+ * fast/css-grid-layout/grid-positioned-items-unknown-named-grid-line.html:
+ * fast/css-grid-layout/grid-sizing-positioned-items-expected.txt:
+ * fast/css-grid-layout/grid-sizing-positioned-items.html:
+
</ins><span class="cx"> 2016-03-26 Antti Koivisto <antti@apple.com>
</span><span class="cx">
</span><span class="cx"> Separate render tree updating from style resolve
</span></span></pre></div>
<a id="trunkLayoutTestsfastcssgridlayoutabsolutepositioninggridcontainercontainingblockexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css-grid-layout/absolute-positioning-grid-container-containing-block-expected.txt (198833 => 198834)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css-grid-layout/absolute-positioning-grid-container-containing-block-expected.txt        2016-03-30 08:18:19 UTC (rev 198833)
+++ trunk/LayoutTests/fast/css-grid-layout/absolute-positioning-grid-container-containing-block-expected.txt        2016-03-30 11:45:38 UTC (rev 198834)
</span><span class="lines">@@ -5,3 +5,6 @@
</span><span class="cx"> PASS
</span><span class="cx"> PASS
</span><span class="cx"> PASS
</span><ins>+PASS
+PASS
+PASS
</ins></span></pre></div>
<a id="trunkLayoutTestsfastcssgridlayoutabsolutepositioninggridcontainercontainingblockhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css-grid-layout/absolute-positioning-grid-container-containing-block.html (198833 => 198834)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css-grid-layout/absolute-positioning-grid-container-containing-block.html        2016-03-30 08:18:19 UTC (rev 198833)
+++ trunk/LayoutTests/fast/css-grid-layout/absolute-positioning-grid-container-containing-block.html        2016-03-30 11:45:38 UTC (rev 198834)
</span><span class="lines">@@ -227,5 +227,71 @@
</span><span class="cx"> </div>
</span><span class="cx"> </div>
</span><span class="cx">
</span><ins>+<div class="grid directionRTL">
+ <div class="sizedToGridArea absolute autoRowAutoColumn"
+ data-offset-x="-15" data-offset-y="15" data-expected-width="530" data-expected-height="530">
+ </div>
+ <div class="sizedToGridArea absolute firstRowFirstColumn"
+ data-offset-x="0" data-offset-y="15" data-expected-width="515" data-expected-height="515">
+ </div>
+ <div class="sizedToGridArea absolute secondRowFirstColumn"
+ data-offset-x="0" data-offset-y="65" data-expected-width="515" data-expected-height="465">
+ </div>
+ <div class="sizedToGridArea absolute firstRowSecondColumn"
+ data-offset-x="0" data-offset-y="15" data-expected-width="465" data-expected-height="515">
+ </div>
+ <div class="sizedToGridArea absolute secondRowSecondColumn"
+ data-offset-x="0" data-offset-y="65" data-expected-width="465" data-expected-height="465">
+ </div>
+ <div class="sizedToGridArea absolute thirdRowThirdColumnSpanning2Rows"
+ data-offset-x="0" data-offset-y="165" data-expected-width="365" data-expected-height="350">
+ </div>
+ <div class="sizedToGridArea absolute thirdRowThirdColumnSpanning2Rows2Columns"
+ data-offset-x="15" data-offset-y="165" data-expected-width="350" data-expected-height="350">
+ </div>
+</div>
+
+<div class="grid directionRTL">
+ <div class="sizedToGridArea absolute endThirdRowEndThirdColumnSpanning2Rows"
+ data-offset-x="200" data-offset-y="65" data-expected-width="315" data-expected-height="250">
+ </div>
+ <div class="sizedToGridArea absolute endThirdRowEndThirdColumnSpanning2Rows2Columns"
+ data-offset-x="215" data-offset-y="65" data-expected-width="250" data-expected-height="250">
+ </div>
+ <div class="sizedToGridArea absolute endSecondRowEndSecondColumn"
+ data-offset-x="350" data-offset-y="15" data-expected-width="165" data-expected-height="165">
+ </div>
+ <div class="sizedToGridArea absolute endSecondRowEndFirstColumn"
+ data-offset-x="450" data-offset-y="15" data-expected-width="65" data-expected-height="165">
+ </div>
+ <div class="sizedToGridArea absolute endFirstRowEndSecondColumn"
+ data-offset-x="350" data-offset-y="15" data-expected-width="165" data-expected-height="65">
+ </div>
+ <div class="sizedToGridArea absolute endFirstRowEndFirstColumn"
+ data-offset-x="450" data-offset-y="15" data-expected-width="65" data-expected-height="65">
+ </div>
+</div>
+
+<div class="grid directionRTL">
+ <div class="sizedToGridArea absolute onlyFirstRowOnlyFirstColumn"
+ data-offset-x="465" data-offset-y="15" data-expected-width="50" data-expected-height="50">
+ </div>
+ <div class="sizedToGridArea absolute onlySecondRowOnlyFirstColumn"
+ data-offset-x="465" data-offset-y="65" data-expected-width="50" data-expected-height="100">
+ </div>
+ <div class="sizedToGridArea absolute onlyFirstRowOnlySecondColumn"
+ data-offset-x="365" data-offset-y="15" data-expected-width="100" data-expected-height="50">
+ </div>
+ <div class="sizedToGridArea absolute onlySecondRowOnlySecondColumn"
+ data-offset-x="365" data-offset-y="65" data-expected-width="100" data-expected-height="100">
+ </div>
+ <div class="sizedToGridArea absolute onlyThirdRowOnlyThirdColumnSpanning2Rows2Columns"
+ data-offset-x="15" data-offset-y="165" data-expected-width="350" data-expected-height="350">
+ </div>
+ <div class="sizedToGridArea absolute onlyThirdRowOnlyThirdColumnSpanning2Rows"
+ data-offset-x="215" data-offset-y="165" data-expected-width="150" data-expected-height="350">
+ </div>
+</div>
+
</ins><span class="cx"> </body>
</span><span class="cx"> </html>
</span></span></pre></div>
<a id="trunkLayoutTestsfastcssgridlayoutabsolutepositioninggridcontainerparentexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css-grid-layout/absolute-positioning-grid-container-parent-expected.txt (198833 => 198834)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css-grid-layout/absolute-positioning-grid-container-parent-expected.txt        2016-03-30 08:18:19 UTC (rev 198833)
+++ trunk/LayoutTests/fast/css-grid-layout/absolute-positioning-grid-container-parent-expected.txt        2016-03-30 11:45:38 UTC (rev 198834)
</span><span class="lines">@@ -6,3 +6,9 @@
</span><span class="cx"> PASS
</span><span class="cx"> PASS
</span><span class="cx"> PASS
</span><ins>+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
</ins></span></pre></div>
<a id="trunkLayoutTestsfastcssgridlayoutabsolutepositioninggridcontainerparenthtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css-grid-layout/absolute-positioning-grid-container-parent.html (198833 => 198834)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css-grid-layout/absolute-positioning-grid-container-parent.html        2016-03-30 08:18:19 UTC (rev 198833)
+++ trunk/LayoutTests/fast/css-grid-layout/absolute-positioning-grid-container-parent.html        2016-03-30 11:45:38 UTC (rev 198834)
</span><span class="lines">@@ -69,5 +69,41 @@
</span><span class="cx"> </div>
</span><span class="cx"> </div>
</span><span class="cx">
</span><ins>+<div class="container relative">
+ <div class="grid directionRTL">
+ <div class="sizedToGridArea absolute autoRowAutoColumn" data-offset-x="-150" data-offset-y="10" data-expected-width="500" data-expected-height="400"></div>
+ </div>
+</div>
+
+<div class="container relative">
+ <div class="grid directionRTL">
+ <div class="sizedToGridArea absolute firstRowFirstColumn" data-offset-x="-150" data-offset-y="10" data-expected-width="500" data-expected-height="400"></div>
+ </div>
+</div>
+
+<div class="container relative">
+ <div class="grid directionRTL">
+ <div class="sizedToGridArea absolute secondRowSecondColumn" data-offset-x="-150" data-offset-y="10" data-expected-width="500" data-expected-height="400"></div>
+ </div>
+</div>
+
+<div class="container">
+ <div class="grid relative directionRTL">
+ <div class="sizedToGridArea absolute autoRowAutoColumn" data-offset-x="-15" data-offset-y="5" data-expected-width="330" data-expected-height="210"></div>
+ </div>
+</div>
+
+<div class="container">
+ <div class="grid relative directionRTL">
+ <div class="sizedToGridArea absolute firstRowFirstColumn" data-offset-x="0" data-offset-y="5" data-expected-width="315" data-expected-height="205"></div>
+ </div>
+</div>
+
+<div class="container">
+ <div class="grid relative directionRTL">
+ <div class="sizedToGridArea absolute secondRowSecondColumn" data-offset-x="0" data-offset-y="30" data-expected-width="265" data-expected-height="180"></div>
+ </div>
+</div>
+
</ins><span class="cx"> </body>
</span><span class="cx"> </html>
</span></span></pre></div>
<a id="trunkLayoutTestsfastcssgridlayoutgridpositioneditemsbackgroundexpectedhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-background-expected.html (198833 => 198834)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-background-expected.html        2016-03-30 08:18:19 UTC (rev 198833)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-background-expected.html        2016-03-30 11:45:38 UTC (rev 198834)
</span><span class="lines">@@ -2,12 +2,11 @@
</span><span class="cx"> <html>
</span><span class="cx"> <style>
</span><span class="cx"> .grid {
</span><del>- width: 400px;
</del><ins>+ width: 500px;
</ins><span class="cx"> height: 300px;
</span><span class="cx"> border: 5px solid black;
</span><span class="cx"> margin: 30px;
</span><span class="cx"> padding: 15px;
</span><del>- background-color: grey;
</del><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> .container {
</span></span></pre></div>
<a id="trunkLayoutTestsfastcssgridlayoutgridpositioneditemsbackgroundhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-background.html (198833 => 198834)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-background.html        2016-03-30 08:18:19 UTC (rev 198833)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-background.html        2016-03-30 11:45:38 UTC (rev 198834)
</span><span class="lines">@@ -6,13 +6,14 @@
</span><span class="cx"> .grid {
</span><span class="cx"> -webkit-grid-template-columns: 100px 200px;
</span><span class="cx"> -webkit-grid-template-rows: 50px 150px;
</span><del>- width: 400px;
</del><ins>+ width: 500px;
</ins><span class="cx"> height: 300px;
</span><span class="cx"> border: 5px solid black;
</span><span class="cx"> margin: 30px;
</span><span class="cx"> padding: 15px;
</span><span class="cx"> /* Ensures that the grid container is the containing block of the absolutely positioned grid children. */
</span><span class="cx"> position: relative;
</span><ins>+ background-color: transparent;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> .container {
</span></span></pre></div>
<a id="trunkLayoutTestsfastcssgridlayoutgridpositioneditemsimplicitgridexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-implicit-grid-expected.txt (198833 => 198834)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-implicit-grid-expected.txt        2016-03-30 08:18:19 UTC (rev 198833)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-implicit-grid-expected.txt        2016-03-30 11:45:38 UTC (rev 198834)
</span><span class="lines">@@ -2,3 +2,5 @@
</span><span class="cx">
</span><span class="cx"> PASS
</span><span class="cx"> PASS
</span><ins>+PASS
+PASS
</ins></span></pre></div>
<a id="trunkLayoutTestsfastcssgridlayoutgridpositioneditemsimplicitgridlineexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-implicit-grid-line-expected.txt (198833 => 198834)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-implicit-grid-line-expected.txt        2016-03-30 08:18:19 UTC (rev 198833)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-implicit-grid-line-expected.txt        2016-03-30 11:45:38 UTC (rev 198834)
</span><span class="lines">@@ -2,3 +2,5 @@
</span><span class="cx">
</span><span class="cx"> PASS
</span><span class="cx"> PASS
</span><ins>+PASS
+PASS
</ins></span></pre></div>
<a id="trunkLayoutTestsfastcssgridlayoutgridpositioneditemsimplicitgridlinehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-implicit-grid-line.html (198833 => 198834)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-implicit-grid-line.html        2016-03-30 08:18:19 UTC (rev 198833)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-implicit-grid-line.html        2016-03-30 11:45:38 UTC (rev 198834)
</span><span class="lines">@@ -66,4 +66,22 @@
</span><span class="cx"> </div>
</span><span class="cx"> </div>
</span><span class="cx">
</span><ins>+<div class="grid directionRTL">
+ <div class="absolute sizedToGridArea startImplicitLine"
+ data-offset-x="-15" data-offset-y="15" data-expected-width="530" data-expected-height="330">
+ </div>
+ <div class="absolute sizedToGridArea endImplicitLine"
+ data-offset-x="0" data-offset-y="15" data-expected-width="515" data-expected-height="315">
+ </div>
+</div>
+
+<div class="grid directionRTL">
+ <div class="absolute sizedToGridArea startImplicitLineSpan"
+ data-offset-x="-15" data-offset-y="15" data-expected-width="530" data-expected-height="330">
+ </div>
+ <div class="absolute sizedToGridArea endImplicitLineSpan"
+ data-offset-x="0" data-offset-y="15" data-expected-width="515" data-expected-height="315">
+ </div>
+</div>
+
</ins><span class="cx"> </body>
</span></span></pre></div>
<a id="trunkLayoutTestsfastcssgridlayoutgridpositioneditemsimplicitgridhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-implicit-grid.html (198833 => 198834)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-implicit-grid.html        2016-03-30 08:18:19 UTC (rev 198833)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-implicit-grid.html        2016-03-30 11:45:38 UTC (rev 198834)
</span><span class="lines">@@ -52,5 +52,29 @@
</span><span class="cx"> </div>
</span><span class="cx"> </div>
</span><span class="cx">
</span><ins>+<div class="grid directionRTL">
+ <div class="sizedToGridArea absolute secondRowSecondColumn"
+ data-offset-x="-15" data-offset-y="15" data-expected-width="230" data-expected-height="230">
+ </div>
+ <div class="sizedToGridArea absolute endSecondRowEndSecondColumn"
+ data-offset-x="-15" data-offset-y="15" data-expected-width="230" data-expected-height="230">
+ </div>
+ <div class="sizedToGridArea absolute onlySecondRowOnlySecondColumn"
+ data-offset-x="-15" data-offset-y="15" data-expected-width="230" data-expected-height="230">
+ </div>
+</div>
+
+<div class="grid grid-columns-rows directionRTL">
+ <div class="sizedToGridArea absolute secondRowSecondColumn"
+ data-offset-x="0" data-offset-y="65" data-expected-width="115" data-expected-height="165">
+ </div>
+ <div class="sizedToGridArea absolute endSecondRowEndSecondColumn"
+ data-offset-x="-15" data-offset-y="15" data-expected-width="230" data-expected-height="230">
+ </div>
+ <div class="sizedToGridArea absolute onlySecondRowOnlySecondColumn"
+ data-offset-x="0" data-offset-y="65" data-expected-width="115" data-expected-height="165">
+ </div>
+</div>
+
</ins><span class="cx"> </body>
</span><span class="cx"> </html>
</span></span></pre></div>
<a id="trunkLayoutTestsfastcssgridlayoutgridpositioneditemsunknownnamedgridlineexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-unknown-named-grid-line-expected.txt (198833 => 198834)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-unknown-named-grid-line-expected.txt        2016-03-30 08:18:19 UTC (rev 198833)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-unknown-named-grid-line-expected.txt        2016-03-30 11:45:38 UTC (rev 198834)
</span><span class="lines">@@ -1,3 +1,4 @@
</span><span class="cx"> This test checks that grid placement properties of absolutely positioned items using unknown named grid lines are treated as "auto".
</span><span class="cx">
</span><span class="cx"> PASS
</span><ins>+PASS
</ins></span></pre></div>
<a id="trunkLayoutTestsfastcssgridlayoutgridpositioneditemsunknownnamedgridlinehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-unknown-named-grid-line.html (198833 => 198834)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-unknown-named-grid-line.html        2016-03-30 08:18:19 UTC (rev 198833)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-unknown-named-grid-line.html        2016-03-30 11:45:38 UTC (rev 198834)
</span><span class="lines">@@ -54,4 +54,16 @@
</span><span class="cx"> </div>
</span><span class="cx"> </div>
</span><span class="cx">
</span><ins>+<div class="grid directionRTL">
+ <div class="absolute sizedToGridArea startAndEndUnknownLines"
+ data-offset-x="-15" data-offset-y="15" data-expected-width="530" data-expected-height="330">
+ </div>
+ <div class="absolute sizedToGridArea endUnknownLine"
+ data-offset-x="0" data-offset-y="15" data-expected-width="515" data-expected-height="315">
+ </div>
+ <div class="absolute sizedToGridArea startUnknownLine"
+ data-offset-x="200" data-offset-y="15" data-expected-width="315" data-expected-height="215">
+ </div>
+</div>
+
</ins><span class="cx"> </body>
</span></span></pre></div>
<a id="trunkLayoutTestsfastcssgridlayoutgridsizingpositioneditemsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css-grid-layout/grid-sizing-positioned-items-expected.txt (198833 => 198834)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css-grid-layout/grid-sizing-positioned-items-expected.txt        2016-03-30 08:18:19 UTC (rev 198833)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-sizing-positioned-items-expected.txt        2016-03-30 11:45:38 UTC (rev 198834)
</span><span class="lines">@@ -4,3 +4,6 @@
</span><span class="cx"> PASS
</span><span class="cx"> PASS
</span><span class="cx"> PASS
</span><ins>+PASS
+PASS
+PASS
</ins></span></pre></div>
<a id="trunkLayoutTestsfastcssgridlayoutgridsizingpositioneditemshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css-grid-layout/grid-sizing-positioned-items.html (198833 => 198834)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css-grid-layout/grid-sizing-positioned-items.html        2016-03-30 08:18:19 UTC (rev 198833)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-sizing-positioned-items.html        2016-03-30 11:45:38 UTC (rev 198834)
</span><span class="lines">@@ -110,4 +110,55 @@
</span><span class="cx"> </div>
</span><span class="cx"> </div>
</span><span class="cx">
</span><ins>+<div class="unconstrainedContainer">
+ <div class="grid directionRTL">
+ <div class="absolute autoRowAutoColumn sizedToGridArea"
+ data-offset-x="-15" data-offset-y="15" data-expected-width="1030" data-expected-height="1030">
+ </div>
+ <div class="absolute secondRowSecondColumn sizedToGridArea"
+ data-offset-x="0" data-offset-y="65" data-expected-width="915" data-expected-height="965">
+ </div>
+ <div class="absolute onlyFirstRowOnlyFirstColumn sizedToGridArea"
+ data-offset-x="915" data-offset-y="15" data-expected-width="100" data-expected-height="50">
+ </div>
+ <div class="absolute endSecondRowEndSecondColumn sizedToGridArea"
+ data-offset-x="700" data-offset-y="15" data-expected-width="315" data-expected-height="215">
+ </div>
+ </div>
+</div>
+
+<div class="unconstrainedContainer">
+ <div class="grid directionRTL">
+ <div class="absolute autoRowAutoColumn lengthSize"
+ data-offset-x="965" data-offset-y="15" data-expected-width="50" data-expected-height="20">
+ </div>
+ <div class="absolute secondRowSecondColumn lengthSize"
+ data-offset-x="865" data-offset-y="65" data-expected-width="50" data-expected-height="20">
+ </div>
+ <div class="absolute onlyFirstRowOnlyFirstColumn lengthSize"
+ data-offset-x="965" data-offset-y="15" data-expected-width="50" data-expected-height="20">
+ </div>
+ <div class="absolute endSecondRowEndSecondColumn lengthSize"
+ data-offset-x="965" data-offset-y="15" data-expected-width="50" data-expected-height="20">
+ </div>
+ </div>
+</div>
+
+<div class="unconstrainedContainer">
+ <div class="grid directionRTL">
+ <div class="absolute autoRowAutoColumn percentageSize"
+ data-offset-x="603" data-offset-y="15" data-expected-width="412" data-expected-height="206">
+ </div>
+ <div class="absolute secondRowSecondColumn percentageSize"
+ data-offset-x="549" data-offset-y="65" data-expected-width="366" data-expected-height="193">
+ </div>
+ <div class="absolute onlyFirstRowOnlyFirstColumn percentageSize"
+ data-offset-x="975" data-offset-y="15" data-expected-width="40" data-expected-height="10">
+ </div>
+ <div class="absolute endSecondRowEndSecondColumn percentageSize"
+ data-offset-x="889" data-offset-y="15" data-expected-width="126" data-expected-height="43">
+ </div>
+ </div>
+</div>
+
</ins><span class="cx"> </body>
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (198833 => 198834)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-03-30 08:18:19 UTC (rev 198833)
+++ trunk/Source/WebCore/ChangeLog        2016-03-30 11:45:38 UTC (rev 198834)
</span><span class="lines">@@ -1,3 +1,24 @@
</span><ins>+2016-03-30 Manuel Rego Casasnovas <rego@igalia.com>
+
+ [css-grid] Refactor positioned children code
+ https://bugs.webkit.org/show_bug.cgi?id=155972
+
+ Reviewed by Sergio Villar Senin.
+
+ This is a refactoring of RenderGrid::offsetAndBreadthForPositionedChild()
+ in order to calculate offset and breadth in a more clean way.
+ Hopefully making the code easier to follow.
+
+ Thanks to the refactoring, now positioned children in RTL
+ are working fine if they use the static inline position
+ (when "left" and "right" properties are both "auto").
+
+ The other case (not having a static inline position)
+ will be fixed in a separated patch.
+
+ * rendering/RenderGrid.cpp:
+ (WebCore::RenderGrid::offsetAndBreadthForPositionedChild):
+
</ins><span class="cx"> 2016-03-30 Youenn Fablet <youenn.fablet@crf.canon.fr>
</span><span class="cx">
</span><span class="cx"> Binding generator should allow passing DOM objects parameters as references
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderGridcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderGrid.cpp (198833 => 198834)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderGrid.cpp        2016-03-30 08:18:19 UTC (rev 198833)
+++ trunk/Source/WebCore/rendering/RenderGrid.cpp        2016-03-30 11:45:38 UTC (rev 198834)
</span><span class="lines">@@ -1517,21 +1517,24 @@
</span><span class="cx"> || (endLine < firstExplicitLine)
</span><span class="cx"> || (endLine > lastExplicitLine);
</span><span class="cx">
</span><del>- LayoutUnit start = startIsAuto ? LayoutUnit() : (isRowAxis ? m_columnPositions[startLine] : m_rowPositions[startLine]);
- LayoutUnit end = endIsAuto ? (isRowAxis ? logicalWidth() : logicalHeight()) : (isRowAxis ? m_columnPositions[endLine] : m_rowPositions[endLine]);
</del><ins>+ // We're normalizing the positions to avoid issues with RTL (as they're stored in the same order than LTR but adding an offset).
+ LayoutUnit start;
+ if (!startIsAuto) {
+ if (isRowAxis)
+ start = m_columnPositions[startLine] - m_columnPositions[0] + paddingStart();
+ else
+ start = m_rowPositions[startLine] - m_rowPositions[0] + paddingBefore();
+ }
</ins><span class="cx">
</span><del>- breadth = end - start;
-
- if (startIsAuto)
- breadth -= isRowAxis ? borderStart() : borderBefore();
- else
- start -= isRowAxis ? borderStart() : borderBefore();
-
- if (endIsAuto) {
- breadth -= isRowAxis ? borderEnd() : borderAfter();
- breadth -= scrollbarLogicalWidth();
</del><ins>+ LayoutUnit end = isRowAxis ? clientLogicalWidth() : clientLogicalHeight();
+ if (!endIsAuto) {
+ if (isRowAxis)
+ end = m_columnPositions[endLine] - m_columnPositions[0] + paddingStart();
+ else
+ end = m_rowPositions[endLine] - m_rowPositions[0] + paddingBefore();
</ins><span class="cx"> }
</span><span class="cx">
</span><ins>+ breadth = end - start;
</ins><span class="cx"> offset = start;
</span><span class="cx">
</span><span class="cx"> if (child.parent() == this && !startIsAuto) {
</span></span></pre>
</div>
</div>
</body>
</html>