<!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>[199657] 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/199657">199657</a></dd>
<dt>Author</dt> <dd>rego@igalia.com</dd>
<dt>Date</dt> <dd>2016-04-18 01:20:08 -0700 (Mon, 18 Apr 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>[css-grid] Fix positioned items with content alignment
https://bugs.webkit.org/show_bug.cgi?id=156597

Reviewed by Darin Adler.

Source/WebCore:

Like for the case of gaps we need to take into account
the content alignment in order to properly place and size
the positioned items.

Regarding content alignment we need to care about 2 values:
the position offset and the distribution offset.
The position offset can be extracted from m_column|rowPositions,
but the distribution offset is stored in 2 new variables called
m_offsetBetweenColumns|Rows.

Tests: fast/css-grid-layout/grid-positioned-items-content-alignment.html
       fast/css-grid-layout/grid-positioned-items-content-alignment-rtl.html

* rendering/RenderGrid.cpp:
(WebCore::RenderGrid::offsetAndBreadthForPositionedChild):
(WebCore::RenderGrid::populateGridPositions):
(WebCore::RenderGrid::columnAxisOffsetForChild):
(WebCore::RenderGrid::rowAxisOffsetForChild):
(WebCore::RenderGrid::rowAxisPositionForChild): Deleted.
* rendering/RenderGrid.h:

LayoutTests:

* fast/css-grid-layout/grid-positioned-items-content-alignment-expected.txt: Added.
* fast/css-grid-layout/grid-positioned-items-content-alignment-rtl-expected.txt: Added.
* fast/css-grid-layout/grid-positioned-items-content-alignment-rtl.html: Added.
* fast/css-grid-layout/grid-positioned-items-content-alignment.html: Added.</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="#trunkSourceWebCorerenderingRenderGridcpp">trunk/Source/WebCore/rendering/RenderGrid.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderGridh">trunk/Source/WebCore/rendering/RenderGrid.h</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfastcssgridlayoutgridpositioneditemscontentalignmentexpectedtxt">trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-content-alignment-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastcssgridlayoutgridpositioneditemscontentalignmentrtlexpectedtxt">trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-content-alignment-rtl-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastcssgridlayoutgridpositioneditemscontentalignmentrtlhtml">trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-content-alignment-rtl.html</a></li>
<li><a href="#trunkLayoutTestsfastcssgridlayoutgridpositioneditemscontentalignmenthtml">trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-content-alignment.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (199656 => 199657)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-04-18 08:09:56 UTC (rev 199656)
+++ trunk/LayoutTests/ChangeLog        2016-04-18 08:20:08 UTC (rev 199657)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2016-04-18  Manuel Rego Casasnovas  &lt;rego@igalia.com&gt;
+
+        [css-grid] Fix positioned items with content alignment
+        https://bugs.webkit.org/show_bug.cgi?id=156597
+
+        Reviewed by Darin Adler.
+
+        * fast/css-grid-layout/grid-positioned-items-content-alignment-expected.txt: Added.
+        * fast/css-grid-layout/grid-positioned-items-content-alignment-rtl-expected.txt: Added.
+        * fast/css-grid-layout/grid-positioned-items-content-alignment-rtl.html: Added.
+        * fast/css-grid-layout/grid-positioned-items-content-alignment.html: Added.
+
</ins><span class="cx"> 2016-04-18  Yusuke Suzuki  &lt;utatane.tea@gmail.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [Fetch] Use @isArray instead of `instanceof @Array`
</span></span></pre></div>
<a id="trunkLayoutTestsfastcssgridlayoutgridpositioneditemscontentalignmentexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-content-alignment-expected.txt (0 => 199657)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-content-alignment-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-content-alignment-expected.txt        2016-04-18 08:20:08 UTC (rev 199657)
</span><span class="lines">@@ -0,0 +1,62 @@
</span><ins>+This test checks the behavior of the positioned items in a grid using content alignment.
+
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
</ins></span></pre></div>
<a id="trunkLayoutTestsfastcssgridlayoutgridpositioneditemscontentalignmentrtlexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-content-alignment-rtl-expected.txt (0 => 199657)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-content-alignment-rtl-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-content-alignment-rtl-expected.txt        2016-04-18 08:20:08 UTC (rev 199657)
</span><span class="lines">@@ -0,0 +1,62 @@
</span><ins>+This test checks the behavior of the positioned items in a grid using content alignment in RTL.
+
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
</ins></span></pre></div>
<a id="trunkLayoutTestsfastcssgridlayoutgridpositioneditemscontentalignmentrtlhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-content-alignment-rtl.html (0 => 199657)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-content-alignment-rtl.html                                (rev 0)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-content-alignment-rtl.html        2016-04-18 08:20:08 UTC (rev 199657)
</span><span class="lines">@@ -0,0 +1,394 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;link href=&quot;resources/grid.css&quot; rel=&quot;stylesheet&quot;&gt;
+&lt;link href=&quot;resources/grid-alignment.css&quot; rel=&quot;stylesheet&quot;&gt;
+&lt;style&gt;
+
+.grid {
+    -webkit-grid-template-columns: 100px 50px;
+    -webkit-grid-template-rows: 70px 30px;
+    width: 400px;
+    height: 200px;
+    margin: 5px;
+    /* Ensures that the grid container is the containing block of the absolutely positioned grid children. */
+    position: relative;
+}
+
+.grid &gt; div {
+    position: absolute;
+    width: 100%;
+    height: 100%;
+    background-color: lime;
+}
+
+.offsets {
+    left: 0;
+    top: 0;
+}
+
+&lt;/style&gt;
+&lt;script src=&quot;../../resources/check-layout.js&quot;&gt;&lt;/script&gt;
+&lt;body onload=&quot;checkLayout('.grid')&quot;&gt;
+
+&lt;p&gt;This test checks the behavior of the positioned items in a grid using content alignment in RTL.&lt;/p&gt;
+
+&lt;div class=&quot;grid directionRTL contentStart&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 1 / 2; -webkit-grid-row: 1 / 2;&quot;
+        data-offset-x=&quot;300&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;70&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentStart&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 1 / 2; -webkit-grid-row: 1 / 2;&quot;
+        data-offset-x=&quot;300&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;70&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentCenter&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 1 / 2; -webkit-grid-row: 1 / 2;&quot;
+        data-offset-x=&quot;175&quot; data-offset-y=&quot;50&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;70&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentCenter&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 1 / 2; -webkit-grid-row: 1 / 2;&quot;
+        data-offset-x=&quot;175&quot; data-offset-y=&quot;50&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;70&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentEnd&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 1 / 2; -webkit-grid-row: 1 / 2;&quot;
+        data-offset-x=&quot;50&quot; data-offset-y=&quot;100&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;70&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentEnd&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 1 / 2; -webkit-grid-row: 1 / 2;&quot;
+        data-offset-x=&quot;50&quot; data-offset-y=&quot;100&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;70&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentSpaceBetween&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 1 / 2; -webkit-grid-row: 1 / 2;&quot;
+        data-offset-x=&quot;300&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;70&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentSpaceBetween&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 1 / 2; -webkit-grid-row: 1 / 2;&quot;
+        data-offset-x=&quot;300&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;70&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentSpaceAround&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 1 / 2; -webkit-grid-row: 1 / 2;&quot;
+        data-offset-x=&quot;238&quot; data-offset-y=&quot;25&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;70&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentSpaceAround&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 1 / 2; -webkit-grid-row: 1 / 2;&quot;
+        data-offset-x=&quot;238&quot; data-offset-y=&quot;25&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;70&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentSpaceEvenly&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 1 / 2; -webkit-grid-row: 1 / 2;&quot;
+        data-offset-x=&quot;217&quot; data-offset-y=&quot;33&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;70&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentSpaceEvenly&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 1 / 2; -webkit-grid-row: 1 / 2;&quot;
+        data-offset-x=&quot;217&quot; data-offset-y=&quot;33&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;70&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentStart&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 2 / 3; -webkit-grid-row: 2 / 3;&quot;
+        data-offset-x=&quot;250&quot; data-offset-y=&quot;70&quot; data-expected-width=&quot;50&quot; data-expected-height=&quot;30&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentStart&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 2 / 3; -webkit-grid-row: 2 / 3;&quot;
+        data-offset-x=&quot;250&quot; data-offset-y=&quot;70&quot; data-expected-width=&quot;50&quot; data-expected-height=&quot;30&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentCenter&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 2 / 3; -webkit-grid-row: 2 / 3;&quot;
+        data-offset-x=&quot;125&quot; data-offset-y=&quot;120&quot; data-expected-width=&quot;50&quot; data-expected-height=&quot;30&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentCenter&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 2 / 3; -webkit-grid-row: 2 / 3;&quot;
+        data-offset-x=&quot;125&quot; data-offset-y=&quot;120&quot; data-expected-width=&quot;50&quot; data-expected-height=&quot;30&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentEnd&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 2 / 3; -webkit-grid-row: 2 / 3;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;170&quot; data-expected-width=&quot;50&quot; data-expected-height=&quot;30&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentEnd&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 2 / 3; -webkit-grid-row: 2 / 3;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;170&quot; data-expected-width=&quot;50&quot; data-expected-height=&quot;30&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentSpaceBetween&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 2 / 3; -webkit-grid-row: 2 / 3;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;170&quot; data-expected-width=&quot;50&quot; data-expected-height=&quot;30&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentSpaceBetween&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 2 / 3; -webkit-grid-row: 2 / 3;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;170&quot; data-expected-width=&quot;50&quot; data-expected-height=&quot;30&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentSpaceAround&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 2 / 3; -webkit-grid-row: 2 / 3;&quot;
+        data-offset-x=&quot;63&quot; data-offset-y=&quot;145&quot; data-expected-width=&quot;50&quot; data-expected-height=&quot;30&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentSpaceAround&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 2 / 3; -webkit-grid-row: 2 / 3;&quot;
+        data-offset-x=&quot;63&quot; data-offset-y=&quot;145&quot; data-expected-width=&quot;50&quot; data-expected-height=&quot;30&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentSpaceEvenly&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 2 / 3; -webkit-grid-row: 2 / 3;&quot;
+        data-offset-x=&quot;83&quot; data-offset-y=&quot;137&quot; data-expected-width=&quot;50&quot; data-expected-height=&quot;30&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentSpaceEvenly&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 2 / 3; -webkit-grid-row: 2 / 3;&quot;
+        data-offset-x=&quot;83&quot; data-offset-y=&quot;137&quot; data-expected-width=&quot;50&quot; data-expected-height=&quot;30&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentStart&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: auto / 2; -webkit-grid-row: auto / 2;&quot;
+        data-offset-x=&quot;300&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;70&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentStart&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: auto / 2; -webkit-grid-row: auto / 2;&quot;
+        data-offset-x=&quot;300&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;70&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentCenter&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: auto / 2; -webkit-grid-row: auto / 2;&quot;
+        data-offset-x=&quot;175&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;225&quot; data-expected-height=&quot;120&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentCenter&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: auto / 2; -webkit-grid-row: auto / 2;&quot;
+        data-offset-x=&quot;175&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;225&quot; data-expected-height=&quot;120&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentEnd&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: auto / 2; -webkit-grid-row: auto / 2;&quot;
+        data-offset-x=&quot;50&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;350&quot; data-expected-height=&quot;170&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentEnd&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: auto / 2; -webkit-grid-row: auto / 2;&quot;
+        data-offset-x=&quot;50&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;350&quot; data-expected-height=&quot;170&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentSpaceBetween&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: auto / 2; -webkit-grid-row: auto / 2;&quot;
+        data-offset-x=&quot;300&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;70&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentSpaceBetween&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: auto / 2; -webkit-grid-row: auto / 2;&quot;
+        data-offset-x=&quot;300&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;70&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentSpaceAround&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: auto / 2; -webkit-grid-row: auto / 2;&quot;
+        data-offset-x=&quot;238&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;163&quot; data-expected-height=&quot;95&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentSpaceAround&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: auto / 2; -webkit-grid-row: auto / 2;&quot;
+        data-offset-x=&quot;238&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;163&quot; data-expected-height=&quot;95&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentSpaceEvenly&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: auto / 2; -webkit-grid-row: auto / 2;&quot;
+        data-offset-x=&quot;217&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;183&quot; data-expected-height=&quot;103&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentSpaceEvenly&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: auto / 2; -webkit-grid-row: auto / 2;&quot;
+        data-offset-x=&quot;217&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;183&quot; data-expected-height=&quot;103&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentStart&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 2 / auto; -webkit-grid-row: 2 / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;70&quot; data-expected-width=&quot;300&quot; data-expected-height=&quot;130&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentStart&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 2 / auto; -webkit-grid-row: 2 / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;70&quot; data-expected-width=&quot;300&quot; data-expected-height=&quot;130&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentCenter&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 2 / auto; -webkit-grid-row: 2 / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;120&quot; data-expected-width=&quot;175&quot; data-expected-height=&quot;80&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentCenter&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 2 / auto; -webkit-grid-row: 2 / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;120&quot; data-expected-width=&quot;175&quot; data-expected-height=&quot;80&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentEnd&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 2 / auto; -webkit-grid-row: 2 / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;170&quot; data-expected-width=&quot;50&quot; data-expected-height=&quot;30&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentEnd&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 2 / auto; -webkit-grid-row: 2 / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;170&quot; data-expected-width=&quot;50&quot; data-expected-height=&quot;30&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentSpaceBetween&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 2 / auto; -webkit-grid-row: 2 / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;170&quot; data-expected-width=&quot;50&quot; data-expected-height=&quot;30&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentSpaceBetween&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 2 / auto; -webkit-grid-row: 2 / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;170&quot; data-expected-width=&quot;50&quot; data-expected-height=&quot;30&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentSpaceAround&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 2 / auto; -webkit-grid-row: 2 / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;145&quot; data-expected-width=&quot;113&quot; data-expected-height=&quot;55&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentSpaceAround&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 2 / auto; -webkit-grid-row: 2 / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;145&quot; data-expected-width=&quot;113&quot; data-expected-height=&quot;55&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentSpaceEvenly&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 2 / auto; -webkit-grid-row: 2 / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;137&quot; data-expected-width=&quot;133&quot; data-expected-height=&quot;63&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentSpaceEvenly&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 2 / auto; -webkit-grid-row: 2 / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;137&quot; data-expected-width=&quot;133&quot; data-expected-height=&quot;63&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentStart&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: auto / auto; -webkit-grid-row: auto / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;400&quot; data-expected-height=&quot;200&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentStart&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: auto / auto; -webkit-grid-row: auto / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;400&quot; data-expected-height=&quot;200&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentCenter&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: auto / auto; -webkit-grid-row: auto / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;400&quot; data-expected-height=&quot;200&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentCenter&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: auto / auto; -webkit-grid-row: auto / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;400&quot; data-expected-height=&quot;200&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentEnd&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: auto / auto; -webkit-grid-row: auto / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;400&quot; data-expected-height=&quot;200&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentEnd&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: auto / auto; -webkit-grid-row: auto / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;400&quot; data-expected-height=&quot;200&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentSpaceBetween&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: auto / auto; -webkit-grid-row: auto / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;400&quot; data-expected-height=&quot;200&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentSpaceBetween&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: auto / auto; -webkit-grid-row: auto / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;400&quot; data-expected-height=&quot;200&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentSpaceAround&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: auto / auto; -webkit-grid-row: auto / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;400&quot; data-expected-height=&quot;200&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentSpaceAround&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: auto / auto; -webkit-grid-row: auto / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;400&quot; data-expected-height=&quot;200&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentSpaceEvenly&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: auto / auto; -webkit-grid-row: auto / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;400&quot; data-expected-height=&quot;200&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid directionRTL contentSpaceEvenly&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: auto / auto; -webkit-grid-row: auto / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;400&quot; data-expected-height=&quot;200&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;/body&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastcssgridlayoutgridpositioneditemscontentalignmenthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-content-alignment.html (0 => 199657)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-content-alignment.html                                (rev 0)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-content-alignment.html        2016-04-18 08:20:08 UTC (rev 199657)
</span><span class="lines">@@ -0,0 +1,394 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;link href=&quot;resources/grid.css&quot; rel=&quot;stylesheet&quot;&gt;
+&lt;link href=&quot;resources/grid-alignment.css&quot; rel=&quot;stylesheet&quot;&gt;
+&lt;style&gt;
+
+.grid {
+    -webkit-grid-template-columns: 100px 50px;
+    -webkit-grid-template-rows: 70px 30px;
+    width: 400px;
+    height: 200px;
+    margin: 5px;
+    /* Ensures that the grid container is the containing block of the absolutely positioned grid children. */
+    position: relative;
+}
+
+.grid &gt; div {
+    position: absolute;
+    width: 100%;
+    height: 100%;
+    background-color: lime;
+}
+
+.offsets {
+    left: 0;
+    top: 0;
+}
+
+&lt;/style&gt;
+&lt;script src=&quot;../../resources/check-layout.js&quot;&gt;&lt;/script&gt;
+&lt;body onload=&quot;checkLayout('.grid')&quot;&gt;
+
+&lt;p&gt;This test checks the behavior of the positioned items in a grid using content alignment.&lt;/p&gt;
+
+&lt;div class=&quot;grid contentStart&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 1 / 2; -webkit-grid-row: 1 / 2;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;70&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentStart&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 1 / 2; -webkit-grid-row: 1 / 2;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;70&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentCenter&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 1 / 2; -webkit-grid-row: 1 / 2;&quot;
+        data-offset-x=&quot;125&quot; data-offset-y=&quot;50&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;70&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentCenter&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 1 / 2; -webkit-grid-row: 1 / 2;&quot;
+        data-offset-x=&quot;125&quot; data-offset-y=&quot;50&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;70&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentEnd&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 1 / 2; -webkit-grid-row: 1 / 2;&quot;
+        data-offset-x=&quot;250&quot; data-offset-y=&quot;100&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;70&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentEnd&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 1 / 2; -webkit-grid-row: 1 / 2;&quot;
+        data-offset-x=&quot;250&quot; data-offset-y=&quot;100&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;70&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentSpaceBetween&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 1 / 2; -webkit-grid-row: 1 / 2;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;70&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentSpaceBetween&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 1 / 2; -webkit-grid-row: 1 / 2;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;70&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentSpaceAround&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 1 / 2; -webkit-grid-row: 1 / 2;&quot;
+        data-offset-x=&quot;63&quot; data-offset-y=&quot;25&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;70&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentSpaceAround&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 1 / 2; -webkit-grid-row: 1 / 2;&quot;
+        data-offset-x=&quot;63&quot; data-offset-y=&quot;25&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;70&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentSpaceEvenly&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 1 / 2; -webkit-grid-row: 1 / 2;&quot;
+        data-offset-x=&quot;83&quot; data-offset-y=&quot;33&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;70&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentSpaceEvenly&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 1 / 2; -webkit-grid-row: 1 / 2;&quot;
+        data-offset-x=&quot;83&quot; data-offset-y=&quot;33&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;70&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentStart&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 2 / 3; -webkit-grid-row: 2 / 3;&quot;
+        data-offset-x=&quot;100&quot; data-offset-y=&quot;70&quot; data-expected-width=&quot;50&quot; data-expected-height=&quot;30&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentStart&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 2 / 3; -webkit-grid-row: 2 / 3;&quot;
+        data-offset-x=&quot;100&quot; data-offset-y=&quot;70&quot; data-expected-width=&quot;50&quot; data-expected-height=&quot;30&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentCenter&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 2 / 3; -webkit-grid-row: 2 / 3;&quot;
+        data-offset-x=&quot;225&quot; data-offset-y=&quot;120&quot; data-expected-width=&quot;50&quot; data-expected-height=&quot;30&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentCenter&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 2 / 3; -webkit-grid-row: 2 / 3;&quot;
+        data-offset-x=&quot;225&quot; data-offset-y=&quot;120&quot; data-expected-width=&quot;50&quot; data-expected-height=&quot;30&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentEnd&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 2 / 3; -webkit-grid-row: 2 / 3;&quot;
+        data-offset-x=&quot;350&quot; data-offset-y=&quot;170&quot; data-expected-width=&quot;50&quot; data-expected-height=&quot;30&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentEnd&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 2 / 3; -webkit-grid-row: 2 / 3;&quot;
+        data-offset-x=&quot;350&quot; data-offset-y=&quot;170&quot; data-expected-width=&quot;50&quot; data-expected-height=&quot;30&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentSpaceBetween&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 2 / 3; -webkit-grid-row: 2 / 3;&quot;
+        data-offset-x=&quot;350&quot; data-offset-y=&quot;170&quot; data-expected-width=&quot;50&quot; data-expected-height=&quot;30&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentSpaceBetween&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 2 / 3; -webkit-grid-row: 2 / 3;&quot;
+        data-offset-x=&quot;350&quot; data-offset-y=&quot;170&quot; data-expected-width=&quot;50&quot; data-expected-height=&quot;30&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentSpaceAround&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 2 / 3; -webkit-grid-row: 2 / 3;&quot;
+        data-offset-x=&quot;288&quot; data-offset-y=&quot;145&quot; data-expected-width=&quot;50&quot; data-expected-height=&quot;30&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentSpaceAround&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 2 / 3; -webkit-grid-row: 2 / 3;&quot;
+        data-offset-x=&quot;288&quot; data-offset-y=&quot;145&quot; data-expected-width=&quot;50&quot; data-expected-height=&quot;30&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentSpaceEvenly&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 2 / 3; -webkit-grid-row: 2 / 3;&quot;
+        data-offset-x=&quot;267&quot; data-offset-y=&quot;137&quot; data-expected-width=&quot;50&quot; data-expected-height=&quot;30&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentSpaceEvenly&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 2 / 3; -webkit-grid-row: 2 / 3;&quot;
+        data-offset-x=&quot;267&quot; data-offset-y=&quot;137&quot; data-expected-width=&quot;50&quot; data-expected-height=&quot;30&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentStart&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: auto / 2; -webkit-grid-row: auto / 2;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;70&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentStart&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: auto / 2; -webkit-grid-row: auto / 2;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;70&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentCenter&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: auto / 2; -webkit-grid-row: auto / 2;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;225&quot; data-expected-height=&quot;120&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentCenter&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: auto / 2; -webkit-grid-row: auto / 2;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;225&quot; data-expected-height=&quot;120&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentEnd&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: auto / 2; -webkit-grid-row: auto / 2;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;350&quot; data-expected-height=&quot;170&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentEnd&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: auto / 2; -webkit-grid-row: auto / 2;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;350&quot; data-expected-height=&quot;170&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentSpaceBetween&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: auto / 2; -webkit-grid-row: auto / 2;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;70&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentSpaceBetween&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: auto / 2; -webkit-grid-row: auto / 2;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;70&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentSpaceAround&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: auto / 2; -webkit-grid-row: auto / 2;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;163&quot; data-expected-height=&quot;95&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentSpaceAround&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: auto / 2; -webkit-grid-row: auto / 2;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;163&quot; data-expected-height=&quot;95&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentSpaceEvenly&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: auto / 2; -webkit-grid-row: auto / 2;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;183&quot; data-expected-height=&quot;103&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentSpaceEvenly&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: auto / 2; -webkit-grid-row: auto / 2;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;183&quot; data-expected-height=&quot;103&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentStart&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 2 / auto; -webkit-grid-row: 2 / auto;&quot;
+        data-offset-x=&quot;100&quot; data-offset-y=&quot;70&quot; data-expected-width=&quot;300&quot; data-expected-height=&quot;130&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentStart&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 2 / auto; -webkit-grid-row: 2 / auto;&quot;
+        data-offset-x=&quot;100&quot; data-offset-y=&quot;70&quot; data-expected-width=&quot;300&quot; data-expected-height=&quot;130&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentCenter&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 2 / auto; -webkit-grid-row: 2 / auto;&quot;
+        data-offset-x=&quot;225&quot; data-offset-y=&quot;120&quot; data-expected-width=&quot;175&quot; data-expected-height=&quot;80&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentCenter&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 2 / auto; -webkit-grid-row: 2 / auto;&quot;
+        data-offset-x=&quot;225&quot; data-offset-y=&quot;120&quot; data-expected-width=&quot;175&quot; data-expected-height=&quot;80&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentEnd&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 2 / auto; -webkit-grid-row: 2 / auto;&quot;
+        data-offset-x=&quot;350&quot; data-offset-y=&quot;170&quot; data-expected-width=&quot;50&quot; data-expected-height=&quot;30&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentEnd&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 2 / auto; -webkit-grid-row: 2 / auto;&quot;
+        data-offset-x=&quot;350&quot; data-offset-y=&quot;170&quot; data-expected-width=&quot;50&quot; data-expected-height=&quot;30&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentSpaceBetween&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 2 / auto; -webkit-grid-row: 2 / auto;&quot;
+        data-offset-x=&quot;350&quot; data-offset-y=&quot;170&quot; data-expected-width=&quot;50&quot; data-expected-height=&quot;30&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentSpaceBetween&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 2 / auto; -webkit-grid-row: 2 / auto;&quot;
+        data-offset-x=&quot;350&quot; data-offset-y=&quot;170&quot; data-expected-width=&quot;50&quot; data-expected-height=&quot;30&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentSpaceAround&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 2 / auto; -webkit-grid-row: 2 / auto;&quot;
+        data-offset-x=&quot;288&quot; data-offset-y=&quot;145&quot; data-expected-width=&quot;113&quot; data-expected-height=&quot;55&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentSpaceAround&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 2 / auto; -webkit-grid-row: 2 / auto;&quot;
+        data-offset-x=&quot;288&quot; data-offset-y=&quot;145&quot; data-expected-width=&quot;113&quot; data-expected-height=&quot;55&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentSpaceEvenly&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: 2 / auto; -webkit-grid-row: 2 / auto;&quot;
+        data-offset-x=&quot;267&quot; data-offset-y=&quot;137&quot; data-expected-width=&quot;133&quot; data-expected-height=&quot;63&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentSpaceEvenly&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: 2 / auto; -webkit-grid-row: 2 / auto;&quot;
+        data-offset-x=&quot;267&quot; data-offset-y=&quot;137&quot; data-expected-width=&quot;133&quot; data-expected-height=&quot;63&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentStart&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: auto / auto; -webkit-grid-row: auto / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;400&quot; data-expected-height=&quot;200&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentStart&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: auto / auto; -webkit-grid-row: auto / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;400&quot; data-expected-height=&quot;200&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentCenter&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: auto / auto; -webkit-grid-row: auto / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;400&quot; data-expected-height=&quot;200&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentCenter&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: auto / auto; -webkit-grid-row: auto / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;400&quot; data-expected-height=&quot;200&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentEnd&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: auto / auto; -webkit-grid-row: auto / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;400&quot; data-expected-height=&quot;200&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentEnd&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: auto / auto; -webkit-grid-row: auto / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;400&quot; data-expected-height=&quot;200&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentSpaceBetween&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: auto / auto; -webkit-grid-row: auto / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;400&quot; data-expected-height=&quot;200&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentSpaceBetween&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: auto / auto; -webkit-grid-row: auto / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;400&quot; data-expected-height=&quot;200&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentSpaceAround&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: auto / auto; -webkit-grid-row: auto / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;400&quot; data-expected-height=&quot;200&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentSpaceAround&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: auto / auto; -webkit-grid-row: auto / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;400&quot; data-expected-height=&quot;200&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentSpaceEvenly&quot;&gt;
+    &lt;div style=&quot;-webkit-grid-column: auto / auto; -webkit-grid-row: auto / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;400&quot; data-expected-height=&quot;200&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid contentSpaceEvenly&quot;&gt;
+    &lt;div class=&quot;offsets&quot; style=&quot;-webkit-grid-column: auto / auto; -webkit-grid-row: auto / auto;&quot;
+        data-offset-x=&quot;0&quot; data-offset-y=&quot;0&quot; data-expected-width=&quot;400&quot; data-expected-height=&quot;200&quot;&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;/body&gt;
</ins></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (199656 => 199657)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-04-18 08:09:56 UTC (rev 199656)
+++ trunk/Source/WebCore/ChangeLog        2016-04-18 08:20:08 UTC (rev 199657)
</span><span class="lines">@@ -1,5 +1,33 @@
</span><span class="cx"> 2016-04-18  Manuel Rego Casasnovas  &lt;rego@igalia.com&gt;
</span><span class="cx"> 
</span><ins>+        [css-grid] Fix positioned items with content alignment
+        https://bugs.webkit.org/show_bug.cgi?id=156597
+
+        Reviewed by Darin Adler.
+
+        Like for the case of gaps we need to take into account
+        the content alignment in order to properly place and size
+        the positioned items.
+
+        Regarding content alignment we need to care about 2 values:
+        the position offset and the distribution offset.
+        The position offset can be extracted from m_column|rowPositions,
+        but the distribution offset is stored in 2 new variables called
+        m_offsetBetweenColumns|Rows.
+
+        Tests: fast/css-grid-layout/grid-positioned-items-content-alignment.html
+               fast/css-grid-layout/grid-positioned-items-content-alignment-rtl.html
+
+        * rendering/RenderGrid.cpp:
+        (WebCore::RenderGrid::offsetAndBreadthForPositionedChild):
+        (WebCore::RenderGrid::populateGridPositions):
+        (WebCore::RenderGrid::columnAxisOffsetForChild):
+        (WebCore::RenderGrid::rowAxisOffsetForChild):
+        (WebCore::RenderGrid::rowAxisPositionForChild): Deleted.
+        * rendering/RenderGrid.h:
+
+2016-04-18  Manuel Rego Casasnovas  &lt;rego@igalia.com&gt;
+
</ins><span class="cx">         [css-grid] Add method to translate RTL coordinates
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=156589
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderGridcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderGrid.cpp (199656 => 199657)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderGrid.cpp        2016-04-18 08:09:56 UTC (rev 199656)
+++ trunk/Source/WebCore/rendering/RenderGrid.cpp        2016-04-18 08:20:08 UTC (rev 199657)
</span><span class="lines">@@ -1534,10 +1534,21 @@
</span><span class="cx">             end = m_rowPositions[endLine] - m_rowPositions[0] + paddingBefore();
</span><span class="cx"> 
</span><span class="cx">         // These vectors store line positions including gaps, but we shouldn't consider them for the edges of the grid.
</span><del>-        if (endLine &gt; firstExplicitLine &amp;&amp; endLine &lt; lastExplicitLine)
</del><ins>+        if (endLine &gt; firstExplicitLine &amp;&amp; endLine &lt; lastExplicitLine) {
</ins><span class="cx">             end -= guttersSize(direction, 2);
</span><ins>+            end -= isRowAxis ? m_offsetBetweenColumns : m_offsetBetweenRows;
+        }
</ins><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    LayoutUnit alignmentOffset = isRowAxis ? m_columnPositions[0] - borderAndPaddingStart() : m_rowPositions[0] - borderAndPaddingBefore();
+    if (isRowAxis &amp;&amp; !style().isLeftToRightDirection())
+        alignmentOffset = contentLogicalWidth() - (m_columnPositions[m_columnPositions.size() - 1] - borderAndPaddingStart());
+
+    if (!startIsAuto)
+        start += alignmentOffset;
+    if (!endIsAuto)
+        end += alignmentOffset;
+
</ins><span class="cx">     breadth = end - start;
</span><span class="cx">     offset = start;
</span><span class="cx"> 
</span><span class="lines">@@ -1549,8 +1560,10 @@
</span><span class="cx">         else {
</span><span class="cx">             offset = translateRTLCoordinate(m_columnPositions[endLine]) - borderLeft();
</span><span class="cx"> 
</span><del>-            if (endLine &gt; firstExplicitLine &amp;&amp; endLine &lt; lastExplicitLine)
</del><ins>+            if (endLine &gt; firstExplicitLine &amp;&amp; endLine &lt; lastExplicitLine) {
</ins><span class="cx">                 offset += guttersSize(direction, 2);
</span><ins>+                offset += isRowAxis ? m_offsetBetweenColumns : m_offsetBetweenRows;
+            }
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -1625,6 +1638,7 @@
</span><span class="cx">     for (unsigned i = 0; i &lt; nextToLastLine; ++i)
</span><span class="cx">         m_columnPositions[i + 1] = m_columnPositions[i] + offset.distributionOffset + sizingData.columnTracks[i].baseSize() + trackGap;
</span><span class="cx">     m_columnPositions[lastLine] = m_columnPositions[nextToLastLine] + sizingData.columnTracks[nextToLastLine].baseSize();
</span><ins>+    m_offsetBetweenColumns = offset.distributionOffset;
</ins><span class="cx"> 
</span><span class="cx">     numberOfTracks = sizingData.rowTracks.size();
</span><span class="cx">     numberOfLines = numberOfTracks + 1;
</span><span class="lines">@@ -1637,6 +1651,7 @@
</span><span class="cx">     for (unsigned i = 0; i &lt; nextToLastLine; ++i)
</span><span class="cx">         m_rowPositions[i + 1] = m_rowPositions[i] + offset.distributionOffset + sizingData.rowTracks[i].baseSize() + trackGap;
</span><span class="cx">     m_rowPositions[lastLine] = m_rowPositions[nextToLastLine] + sizingData.rowTracks[nextToLastLine].baseSize();
</span><ins>+    m_offsetBetweenRows = offset.distributionOffset;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static inline LayoutUnit computeOverflowAlignmentOffset(OverflowAlignment overflow, LayoutUnit trackBreadth, LayoutUnit childBreadth)
</span><span class="lines">@@ -1874,11 +1889,6 @@
</span><span class="cx">     return GridAxisStart;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static inline LayoutUnit offsetBetweenTracks(ContentDistributionType distribution, const Vector&lt;LayoutUnit&gt;&amp; trackPositions, const LayoutUnit&amp; childBreadth)
-{
-    return (distribution == ContentDistributionStretch || ContentDistributionStretch == ContentDistributionDefault) ? LayoutUnit() : trackPositions[1] - trackPositions[0] - childBreadth;
-}
-
</del><span class="cx"> LayoutUnit RenderGrid::columnAxisOffsetForChild(const RenderBox&amp; child) const
</span><span class="cx"> {
</span><span class="cx">     const GridSpan&amp; rowsSpan = cachedGridSpan(child, ForRows);
</span><span class="lines">@@ -1902,7 +1912,7 @@
</span><span class="cx">         LayoutUnit childBreadth = child.logicalHeight() + child.marginLogicalHeight();
</span><span class="cx">         // In order to properly adjust the Self Alignment values we need to consider the offset between tracks.
</span><span class="cx">         if (childEndLine - childStartLine &gt; 1 &amp;&amp; childEndLine &lt; m_rowPositions.size() - 1)
</span><del>-            endOfRow -= offsetBetweenTracks(style().resolvedAlignContentDistribution(normalValueBehaviorGrid()), m_rowPositions, childBreadth);
</del><ins>+            endOfRow -= m_offsetBetweenRows;
</ins><span class="cx">         LayoutUnit offsetFromStartPosition = computeOverflowAlignmentOffset(RenderStyle::resolveAlignmentOverflow(style(), child.style()), endOfRow - startOfRow, childBreadth);
</span><span class="cx">         return startPosition + (axisPosition == GridAxisEnd ? offsetFromStartPosition : offsetFromStartPosition / 2);
</span><span class="cx">     }
</span><span class="lines">@@ -1936,7 +1946,7 @@
</span><span class="cx">         LayoutUnit childBreadth = child.logicalWidth() + child.marginLogicalWidth();
</span><span class="cx">         // In order to properly adjust the Self Alignment values we need to consider the offset between tracks.
</span><span class="cx">         if (childEndLine - childStartLine &gt; 1 &amp;&amp; childEndLine &lt; m_columnPositions.size() - 1)
</span><del>-            endOfColumn -= offsetBetweenTracks(style().resolvedJustifyContentDistribution(normalValueBehaviorGrid()), m_columnPositions, childBreadth);
</del><ins>+            endOfColumn -= m_offsetBetweenColumns;
</ins><span class="cx">         LayoutUnit offsetFromStartPosition = computeOverflowAlignmentOffset(RenderStyle::resolveJustificationOverflow(style(), child.style()), endOfColumn - startOfColumn, childBreadth);
</span><span class="cx">         return startPosition + (axisPosition == GridAxisEnd ? offsetFromStartPosition : offsetFromStartPosition / 2);
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderGridh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderGrid.h (199656 => 199657)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderGrid.h        2016-04-18 08:09:56 UTC (rev 199656)
+++ trunk/Source/WebCore/rendering/RenderGrid.h        2016-04-18 08:20:08 UTC (rev 199657)
</span><span class="lines">@@ -186,6 +186,8 @@
</span><span class="cx">     Vector&lt;Vector&lt;Vector&lt;RenderBox*, 1&gt;&gt;&gt; m_grid;
</span><span class="cx">     Vector&lt;LayoutUnit&gt; m_columnPositions;
</span><span class="cx">     Vector&lt;LayoutUnit&gt; m_rowPositions;
</span><ins>+    LayoutUnit m_offsetBetweenColumns;
+    LayoutUnit m_offsetBetweenRows;
</ins><span class="cx">     HashMap&lt;const RenderBox*, GridArea&gt; m_gridItemArea;
</span><span class="cx">     OrderIterator m_orderIterator;
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>