No subject


Mon Jan 28 08:41:14 PST 2013


9133">r149133</a> by &lt;jchaffraix at chromium.org&gt;

Source/WebCore:

Properly handle the 'span' keyword during layout. We only had
parsing support so far but with this change we are able to
recognize these positions and act accordingly.

* rendering/RenderGrid.cpp:
(WebCore::RenderGrid::resolveGridPositionsFromStyle):
(WebCore::RenderGrid::resolveGridPositionAgainstOppositePosition):
* rendering/RenderGrid.h:
* rendering/style/GridPosition.h:
(WebCore::GridPosition::shouldBeResolvedAgainstOppositePosition):

LayoutTests:

Added some new test cases to verify that we properly resolve
'span' positions.

* fast/css-grid-layout/grid-item-negative-position-resolution-expected.tx=
t:
* fast/css-grid-layout/grid-item-negative-position-resolution.html:
* fast/css-grid-layout/grid-item-spanning-resolution-expected.txt:
* fast/css-grid-layout/grid-item-spanning-resolution.html:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href=3D"#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a=
></li>
<li><a href=3D"#trunkLayoutTestsfastcssgridlayoutgriditemnegativeposition=
resolutionexpectedtxt">trunk/LayoutTests/fast/css-grid-layout/grid-item-n=
egative-position-resolution-expected.txt</a></li>
<li><a href=3D"#trunkLayoutTestsfastcssgridlayoutgriditemnegativeposition=
resolutionhtml">trunk/LayoutTests/fast/css-grid-layout/grid-item-negative=
-position-resolution.html</a></li>
<li><a href=3D"#trunkLayoutTestsfastcssgridlayoutgriditemspanningresoluti=
onexpectedtxt">trunk/LayoutTests/fast/css-grid-layout/grid-item-spanning-=
resolution-expected.txt</a></li>
<li><a href=3D"#trunkLayoutTestsfastcssgridlayoutgriditemspanningresoluti=
onhtml">trunk/LayoutTests/fast/css-grid-layout/grid-item-spanning-resolut=
ion.html</a></li>
<li><a href=3D"#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeL=
og</a></li>
<li><a href=3D"#trunkSourceWebCorerenderingRenderGridcpp">trunk/Source/We=
bCore/rendering/RenderGrid.cpp</a></li>
<li><a href=3D"#trunkSourceWebCorerenderingRenderGridh">trunk/Source/WebC=
ore/rendering/RenderGrid.h</a></li>
<li><a href=3D"#trunkSourceWebCorerenderingstyleGridPositionh">trunk/Sour=
ce/WebCore/rendering/style/GridPosition.h</a></li>
</ul>

</div>
<div id=3D"patch">
<h3>Diff</h3>
<a id=3D"trunkLayoutTestsChangeLog"></a>
<div class=3D"modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (154752 =
=3D> 154753)</h4>
<pre class=3D"diff"><span>
<span class=3D"info">--- trunk/LayoutTests/ChangeLog	2013-08-28 16:44:27 =
UTC (rev 154752)
+++ trunk/LayoutTests/ChangeLog	2013-08-28 16:48:53 UTC (rev 154753)
</span><span class=3D"lines">@@ -1,3 +1,20 @@
</span><ins>+2013-08-28  Sergio Villar Senin  &lt;svillar at igalia.com&gt;
+
+        [CSS Grid Layout] Handle 'span' positions during layout
+        https://bugs.webkit.org/show_bug.cgi?id=3D119756
+
+        Reviewed by Andreas Kling.
+
+        From Blink r149133 by &lt;jchaffraix at chromium.org&gt;
+
+        Added some new test cases to verify that we properly resolve
+        'span' positions.
+
+        * fast/css-grid-layout/grid-item-negative-position-resolution-ex=
pected.txt:
+        * fast/css-grid-layout/grid-item-negative-position-resolution.ht=
ml:
+        * fast/css-grid-layout/grid-item-spanning-resolution-expected.tx=
t:
+        * fast/css-grid-layout/grid-item-spanning-resolution.html:
+
</ins><span class=3D"cx"> 2013-08-28  =C3=81d=C3=A1m Kallai  &lt;kadam at in=
f.u-szeged.hu&gt;
</span><span class=3D"cx">=20
</span><span class=3D"cx">         [Qt] Delete unnecessary empty director=
ies.
</span></span></pre></div>
<a id=3D"trunkLayoutTestsfastcssgridlayoutgriditemnegativepositionresolut=
ionexpectedtxt"></a>
<div class=3D"modfile"><h4>Modified: trunk/LayoutTests/fast/css-grid-layo=
ut/grid-item-negative-position-resolution-expected.txt (154752 =3D> 15475=
3)</h4>
<pre class=3D"diff"><span>
<span class=3D"info">--- trunk/LayoutTests/fast/css-grid-layout/grid-item=
-negative-position-resolution-expected.txt	2013-08-28 16:44:27 UTC (rev 1=
54752)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-item-negative-position-re=
solution-expected.txt	2013-08-28 16:48:53 UTC (rev 154753)
</span><span class=3D"lines">@@ -4,3 +4,7 @@
</span><span class=3D"cx"> PASS
</span><span class=3D"cx"> PASS
</span><span class=3D"cx"> PASS
</span><ins>+PASS
+PASS
+PASS
+PASS
</ins></span></pre></div>
<a id=3D"trunkLayoutTestsfastcssgridlayoutgriditemnegativepositionresolut=
ionhtml"></a>
<div class=3D"modfile"><h4>Modified: trunk/LayoutTests/fast/css-grid-layo=
ut/grid-item-negative-position-resolution.html (154752 =3D> 154753)</h4>
<pre class=3D"diff"><span>
<span class=3D"info">--- trunk/LayoutTests/fast/css-grid-layout/grid-item=
-negative-position-resolution.html	2013-08-28 16:44:27 UTC (rev 154752)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-item-negative-position-re=
solution.html	2013-08-28 16:48:53 UTC (rev 154753)
</span><span class=3D"lines">@@ -27,6 +27,26 @@
</span><span class=3D"cx">     -webkit-grid-row: -1 / auto;
</span><span class=3D"cx"> }
</span><span class=3D"cx">=20
</span><ins>+.endSpanGrowGridInColumnDirection {
+    -webkit-grid-column: -2 / span 3;
+    -webkit-grid-row: 1;
+}
+
+.endSpanGrowGridInRowDirection {
+    -webkit-grid-column: 1;
+    -webkit-grid-row: -2 / span 3;
+}
+
+.negativeEndPositionStartSpanInColumnDirection {
+    -webkit-grid-column: span / -1;
+    -webkit-grid-row: 1;
+}
+
+.negativeEndPositionStartSpanInRowDirection {
+    -webkit-grid-column: 1;
+    -webkit-grid-row: span 5 / -1;
+}
+
</ins><span class=3D"cx"> .negativeEndPositionStartNegativeInColumnDirect=
ion {
</span><span class=3D"cx">     -webkit-grid-column: -3 / -1;
</span><span class=3D"cx">     -webkit-grid-row: 1;
</span><span class=3D"lines">@@ -55,7 +75,31 @@
</span><span class=3D"cx"> &lt;/div&gt;
</span><span class=3D"cx">=20
</span><span class=3D"cx"> &lt;div style=3D&quot;position: relative&quot;=
&gt;
</span><ins>+&lt;div class=3D&quot;grid&quot; data-expected-width=3D&quot=
;550&quot; data-expected-height=3D&quot;150&quot;&gt;
+    &lt;div class=3D&quot;sizedToGridArea endSpanGrowGridInColumnDirecti=
on&quot; data-offset-x=3D&quot;50&quot; data-offset-y=3D&quot;0&quot; dat=
a-expected-width=3D&quot;500&quot; data-expected-height=3D&quot;50&quot;&=
gt;&lt;/div&gt;
+&lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div style=3D&quot;position: relative&quot;&gt;
+&lt;div class=3D&quot;grid&quot; data-expected-width=3D&quot;150&quot; d=
ata-expected-height=3D&quot;550&quot;&gt;
+    &lt;div class=3D&quot;sizedToGridArea endSpanGrowGridInRowDirection&=
quot; data-offset-x=3D&quot;0&quot; data-offset-y=3D&quot;50&quot; data-e=
xpected-width=3D&quot;50&quot; data-expected-height=3D&quot;500&quot;&gt;=
&lt;/div&gt;
+&lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div style=3D&quot;position: relative&quot;&gt;
</ins><span class=3D"cx"> &lt;div class=3D&quot;grid&quot; data-expected-=
width=3D&quot;150&quot; data-expected-height=3D&quot;150&quot;&gt;
</span><ins>+    &lt;div class=3D&quot;sizedToGridArea negativeEndPositio=
nStartSpanInColumnDirection&quot; data-offset-x=3D&quot;50&quot; data-off=
set-y=3D&quot;0&quot; data-expected-width=3D&quot;100&quot; data-expected=
-height=3D&quot;50&quot;&gt;&lt;/div&gt;
+&lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div style=3D&quot;position: relative&quot;&gt;
+&lt;div class=3D&quot;grid&quot; data-expected-width=3D&quot;150&quot; d=
ata-expected-height=3D&quot;150&quot;&gt;
+    &lt;div class=3D&quot;sizedToGridArea negativeEndPositionStartSpanIn=
RowDirection&quot; data-offset-x=3D&quot;0&quot; data-offset-y=3D&quot;0&=
quot; data-expected-width=3D&quot;50&quot; data-expected-height=3D&quot;1=
50&quot;&gt;&lt;/div&gt;
+&lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div style=3D&quot;position: relative&quot;&gt;
+&lt;div class=3D&quot;grid&quot; data-expected-width=3D&quot;150&quot; d=
ata-expected-height=3D&quot;150&quot;&gt;
</ins><span class=3D"cx">     &lt;div class=3D&quot;sizedToGridArea negat=
iveEndPositionStartNegativeInColumnDirection&quot; data-offset-x=3D&quot;=
0&quot; data-offset-y=3D&quot;0&quot; data-expected-width=3D&quot;150&quo=
t; data-expected-height=3D&quot;50&quot;&gt;&lt;/div&gt;
</span><span class=3D"cx"> &lt;/div&gt;
</span><span class=3D"cx"> &lt;/div&gt;
</span></span></pre></div>
<a id=3D"trunkLayoutTestsfastcssgridlayoutgriditemspanningresolutionexpec=
tedtxt"></a>
<div class=3D"modfile"><h4>Modified: trunk/LayoutTests/fast/css-grid-layo=
ut/grid-item-spanning-resolution-expected.txt (154752 =3D> 154753)</h4>
<pre class=3D"diff"><span>
<span class=3D"info">--- trunk/LayoutTests/fast/css-grid-layout/grid-item=
-spanning-resolution-expected.txt	2013-08-28 16:44:27 UTC (rev 154752)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-item-spanning-resolution-=
expected.txt	2013-08-28 16:48:53 UTC (rev 154753)
</span><span class=3D"lines">@@ -12,3 +12,8 @@
</span><span class=3D"cx"> PASS
</span><span class=3D"cx"> PASS
</span><span class=3D"cx"> PASS
</span><ins>+PASS
+PASS
+PASS
+PASS
+PASS
</ins></span></pre></div>
<a id=3D"trunkLayoutTestsfastcssgridlayoutgriditemspanningresolutionhtml"=
></a>
<div class=3D"modfile"><h4>Modified: trunk/LayoutTests/fast/css-grid-layo=
ut/grid-item-spanning-resolution.html (154752 =3D> 154753)</h4>
<pre class=3D"diff"><span>
<span class=3D"info">--- trunk/LayoutTests/fast/css-grid-layout/grid-item=
-spanning-resolution.html	2013-08-28 16:44:27 UTC (rev 154752)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-item-spanning-resolution.=
html	2013-08-28 16:48:53 UTC (rev 154753)
</span><span class=3D"lines">@@ -49,6 +49,31 @@
</span><span class=3D"cx">     -webkit-grid-column: 3 / 4;
</span><span class=3D"cx">     -webkit-grid-row: 3 / 4;
</span><span class=3D"cx"> }
</span><ins>+
+.firstRowSpanning3SecondColumn {
+    -webkit-grid-column: 2;
+    -webkit-grid-row: 1 / span 3;
+}
+
+.thirdRowSecondColumnSpanning2 {
+    -webkit-grid-column: 2 / span 2;
+    -webkit-grid-row: 3;
+}
+
+.spanning3Row5SecondColumn {
+    -webkit-grid-column: 2;
+    -webkit-grid-row: span 3 / 5;
+}
+
+.thirdRowSpanning2Column3 {
+    -webkit-grid-column: span 2 / 3;
+    -webkit-grid-row: 3;
+}
+
+.underflowSpanning {
+    -webkit-grid-column: span 3 / 3;
+    -webkit-grid-row: span 8 / 4;
+}
</ins><span class=3D"cx"> &lt;/style&gt;
</span><span class=3D"cx"> &lt;script src=3D&quot;../../resources/check-l=
ayout.js&quot;&gt;&lt;/script&gt;
</span><span class=3D"cx"> &lt;body onload=3D&quot;checkLayout('.grid');&=
quot;&gt;
</span><span class=3D"lines">@@ -126,5 +151,33 @@
</span><span class=3D"cx">     &lt;div class=3D&quot;sizedToGridArea seco=
ndRowSecondColumnNoSpan&quot; data-offset-x=3D&quot;50&quot; data-offset-=
y=3D&quot;25&quot; data-expected-width=3D&quot;50&quot; data-expected-hei=
ght=3D&quot;25&quot;&gt;&lt;/div&gt;
</span><span class=3D"cx">     &lt;div class=3D&quot;sizedToGridArea thir=
dRowThirdColumnNoSpan&quot; data-offset-x=3D&quot;100&quot; data-offset-y=
=3D&quot;50&quot; data-expected-width=3D&quot;50&quot; data-expected-heig=
ht=3D&quot;25&quot;&gt;&lt;/div&gt;
</span><span class=3D"cx"> &lt;/div&gt;
</span><ins>+
+&lt;div style=3D&quot;position: relative&quot;&gt;
+&lt;div class=3D&quot;grid&quot; id=3D&quot;bigGrid&quot; data-expected-=
width=3D&quot;200&quot; data-expected-height=3D&quot;100&quot;&gt;
+    &lt;div class=3D&quot;sizedToGridArea firstRowSpanning3SecondColumn&=
quot; data-offset-x=3D&quot;50&quot; data-offset-y=3D&quot;0&quot; data-e=
xpected-width=3D&quot;50&quot; data-expected-height=3D&quot;75&quot;&gt;&=
lt;/div&gt;
+&lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div style=3D&quot;position: relative&quot;&gt;
+&lt;div class=3D&quot;grid&quot; id=3D&quot;bigGrid&quot; data-expected-=
width=3D&quot;200&quot; data-expected-height=3D&quot;100&quot;&gt;
+    &lt;div class=3D&quot;sizedToGridArea thirdRowSecondColumnSpanning2&=
quot; data-offset-x=3D&quot;50&quot; data-offset-y=3D&quot;50&quot; data-=
expected-width=3D&quot;100&quot; data-expected-height=3D&quot;25&quot;&gt=
;&lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div style=3D&quot;position: relative&quot;&gt;
+&lt;div class=3D&quot;grid&quot; id=3D&quot;bigGrid&quot; data-expected-=
width=3D&quot;200&quot; data-expected-height=3D&quot;100&quot;&gt;
+    &lt;div class=3D&quot;sizedToGridArea spanning3Row5SecondColumn&quot=
; data-offset-x=3D&quot;50&quot; data-offset-y=3D&quot;25&quot; data-expe=
cted-width=3D&quot;50&quot; data-expected-height=3D&quot;75&quot;&gt;&lt;=
/div&gt;
+&lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div style=3D&quot;position: relative&quot;&gt;
+&lt;div class=3D&quot;grid&quot; id=3D&quot;bigGrid&quot; data-expected-=
width=3D&quot;200&quot; data-expected-height=3D&quot;100&quot;&gt;
+    &lt;div class=3D&quot;sizedToGridArea thirdRowSpanning2Column3&quot;=
 data-offset-x=3D&quot;0&quot; data-offset-y=3D&quot;50&quot; data-expect=
ed-width=3D&quot;100&quot; data-expected-height=3D&quot;25&quot;&gt;&lt;/=
div&gt;
+&lt;/div&gt;
+
+&lt;div style=3D&quot;position: relative&quot;&gt;
+&lt;div class=3D&quot;grid&quot; id=3D&quot;bigGrid&quot; data-expected-=
width=3D&quot;200&quot; data-expected-height=3D&quot;100&quot;&gt;
+    &lt;div class=3D&quot;sizedToGridArea underflowSpanning&quot; data-o=
ffset-x=3D&quot;0&quot; data-offset-y=3D&quot;0&quot; data-expected-width=
=3D&quot;100&quot; data-expected-height=3D&quot;75&quot;&gt;&lt;/div&gt;
+&lt;/div&gt;
+
</ins><span class=3D"cx"> &lt;/body&gt;
</span><span class=3D"cx"> &lt;/html&gt;
</span></span></pre></div>
<a id=3D"trunkSourceWebCoreChangeLog"></a>
<div class=3D"modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (1547=
52 =3D> 154753)</h4>
<pre class=3D"diff"><span>
<span class=3D"info">--- trunk/Source/WebCore/ChangeLog	2013-08-28 16:44:=
27 UTC (rev 154752)
+++ trunk/Source/WebCore/ChangeLog	2013-08-28 16:48:53 UTC (rev 154753)
</span><span class=3D"lines">@@ -1,3 +1,23 @@
</span><ins>+2013-08-28  Sergio Villar Senin  &lt;svillar at igalia.com&gt;
+
+        [CSS Grid Layout] Handle 'span' positions during layout
+        https://bugs.webkit.org/show_bug.cgi?id=3D119756
+
+        Reviewed by Andreas Kling.
+
+        From Blink r149133 by &lt;jchaffraix at chromium.org&gt;
+
+        Properly handle the 'span' keyword during layout. We only had
+        parsing support so far but with this change we are able to
+        recognize these positions and act accordingly.
+
+        * rendering/RenderGrid.cpp:
+        (WebCore::RenderGrid::resolveGridPositionsFromStyle):
+        (WebCore::RenderGrid::resolveGridPositionAgainstOppositePosition=
):
+        * rendering/RenderGrid.h:
+        * rendering/style/GridPosition.h:
+        (WebCore::GridPosition::shouldBeResolvedAgainstOppositePosition)=
:
+
</ins><span class=3D"cx"> 2013-08-28  Antti Koivisto  &lt;antti at apple.com=
&gt;
</span><span class=3D"cx">=20
</span><span class=3D"cx">         Factor descendant iterator assertions =
into a class.
</span></span></pre></div>
<a id=3D"trunkSourceWebCorerenderingRenderGridcpp"></a>
<div class=3D"modfile"><h4>Modified: trunk/Source/WebCore/rendering/Rende=
rGrid.cpp (154752 =3D> 154753)</h4>
<pre class=3D"diff"><span>
<span class=3D"info">--- trunk/Source/WebCore/rendering/RenderGrid.cpp	20=
13-08-28 16:44:27 UTC (rev 154752)
+++ trunk/Source/WebCore/rendering/RenderGrid.cpp	2013-08-28 16:48:53 UTC=
 (rev 154753)
</span><span class=3D"lines">@@ -720,6 +720,9 @@
</span><span class=3D"cx">     const GridPosition&amp; finalPosition =3D =
(direction =3D=3D ForColumns) ? gridItem-&gt;style()-&gt;gridItemColumnEn=
d() : gridItem-&gt;style()-&gt;gridItemRowEnd();
</span><span class=3D"cx">     const GridPositionSide finalPositionSide =3D=
 (direction =3D=3D ForColumns) ? ColumnEndSide : RowEndSide;
</span><span class=3D"cx">=20
</span><ins>+    // We should NEVER see both spans as they should have be=
en handled during style resolve.
+    ASSERT(!initialPosition.isSpan() || !finalPosition.isSpan());
+
</ins><span class=3D"cx">     if (initialPosition.isAuto() &amp;&amp; fin=
alPosition.isAuto()) {
</span><span class=3D"cx">         if (style()-&gt;gridAutoFlow() =3D=3D =
AutoFlowNone)
</span><span class=3D"cx">             return adoptPtr(new GridSpan(0, 0)=
);
</span><span class=3D"lines">@@ -728,16 +731,16 @@
</span><span class=3D"cx">         return nullptr;
</span><span class=3D"cx">     }
</span><span class=3D"cx">=20
</span><del>-    if (initialPosition.isAuto()) {
-        // Infer the position from the final position ('auto / 1' case).
</del><ins>+    if (initialPosition.shouldBeResolvedAgainstOppositePositi=
on()) {
+        // Infer the position from the final position ('auto / 1' or 'sp=
an 2 / 3' case).
</ins><span class=3D"cx">         const size_t finalResolvedPosition =3D =
resolveGridPositionFromStyle(finalPosition, finalPositionSide);
</span><del>-        return adoptPtr(new GridSpan(finalResolvedPosition, =
finalResolvedPosition));
</del><ins>+        return resolveGridPositionAgainstOppositePosition(fin=
alResolvedPosition, initialPosition, initialPositionSide);
</ins><span class=3D"cx">     }
</span><span class=3D"cx">=20
</span><del>-    if (finalPosition.isAuto()) {
-        // Infer our position from the initial position ('1 / auto' case=
).
</del><ins>+    if (finalPosition.shouldBeResolvedAgainstOppositePosition=
()) {
+        // Infer our position from the initial position ('1 / auto' or '=
3 / span 2' case).
</ins><span class=3D"cx">         const size_t initialResolvedPosition =3D=
 resolveGridPositionFromStyle(initialPosition, initialPositionSide);
</span><del>-        return adoptPtr(new GridSpan(initialResolvedPosition=
, initialResolvedPosition));
</del><ins>+        return resolveGridPositionAgainstOppositePosition(ini=
tialResolvedPosition, finalPosition, finalPositionSide);
</ins><span class=3D"cx">     }
</span><span class=3D"cx">=20
</span><span class=3D"cx">     size_t resolvedInitialPosition =3D resolve=
GridPositionFromStyle(initialPosition, initialPositionSide);
</span><span class=3D"lines">@@ -790,6 +793,25 @@
</span><span class=3D"cx">     return 0;
</span><span class=3D"cx"> }
</span><span class=3D"cx">=20
</span><ins>+PassOwnPtr&lt;RenderGrid::GridSpan&gt; RenderGrid::resolveGr=
idPositionAgainstOppositePosition(size_t resolvedOppositePosition, const =
GridPosition&amp; position, GridPositionSide side) const
+{
+    if (position.isAuto())
+        return GridSpan::create(resolvedOppositePosition, resolvedOpposi=
tePosition);
+
+    ASSERT(position.isSpan());
+    ASSERT(position.spanPosition() &gt; 0);
+
+    // 'span 1' is contained inside a single grid track regardless of th=
e direction.
+    // That's why the CSS span value is one more than the offset we appl=
y.
+    size_t positionOffset =3D position.spanPosition() - 1;
+    if (side =3D=3D ColumnStartSide || side =3D=3D RowStartSide) {
+        size_t initialResolvedPosition =3D std::max&lt;int&gt;(0, resolv=
edOppositePosition - positionOffset);
+        return GridSpan::create(initialResolvedPosition, resolvedOpposit=
ePosition);
+    }
+
+    return GridSpan::create(resolvedOppositePosition, resolvedOppositePo=
sition + positionOffset);
+}
+
</ins><span class=3D"cx"> LayoutUnit RenderGrid::gridAreaBreadthForChild(=
const RenderBox* child, TrackSizingDirection direction, const Vector&lt;G=
ridTrack&gt;&amp; tracks) const
</span><span class=3D"cx"> {
</span><span class=3D"cx">     const GridCoordinate&amp; coordinate =3D c=
achedGridCoordinate(child);
</span></span></pre></div>
<a id=3D"trunkSourceWebCorerenderingRenderGridh"></a>
<div class=3D"modfile"><h4>Modified: trunk/Source/WebCore/rendering/Rende=
rGrid.h (154752 =3D> 154753)</h4>
<pre class=3D"diff"><span>
<span class=3D"info">--- trunk/Source/WebCore/rendering/RenderGrid.h	2013=
-08-28 16:44:27 UTC (rev 154752)
+++ trunk/Source/WebCore/rendering/RenderGrid.h	2013-08-28 16:48:53 UTC (=
rev 154753)
</span><span class=3D"lines">@@ -59,6 +59,11 @@
</span><span class=3D"cx">     LayoutUnit computePreferredTrackWidth(cons=
t Length&amp;, size_t) const;
</span><span class=3D"cx">=20
</span><span class=3D"cx">     struct GridSpan {
</span><ins>+        static PassOwnPtr&lt;GridSpan&gt; create(size_t init=
ialPosition, size_t finalPosition)
+        {
+            return adoptPtr(new GridSpan(initialPosition, finalPosition)=
);
+        }
+
</ins><span class=3D"cx">         GridSpan(size_t initialPosition, size_t=
 finalPosition)
</span><span class=3D"cx">             : initialPositionIndex(initialPosi=
tion)
</span><span class=3D"cx">             , finalPositionIndex(finalPosition=
)
</span><span class=3D"lines">@@ -130,6 +135,7 @@
</span><span class=3D"cx">     GridSpan resolveGridPositionsFromAutoPlace=
mentPosition(const RenderBox*, TrackSizingDirection, size_t) const;
</span><span class=3D"cx">     PassOwnPtr&lt;GridSpan&gt; resolveGridPosi=
tionsFromStyle(const RenderBox*, TrackSizingDirection) const;
</span><span class=3D"cx">     size_t resolveGridPositionFromStyle(const =
GridPosition&amp;, GridPositionSide) const;
</span><ins>+    PassOwnPtr&lt;GridSpan&gt; resolveGridPositionAgainstOpp=
ositePosition(size_t resolvedOppositePosition, const GridPosition&amp;, G=
ridPositionSide) const;
</ins><span class=3D"cx">=20
</span><span class=3D"cx">     LayoutUnit gridAreaBreadthForChild(const R=
enderBox* child, TrackSizingDirection, const Vector&lt;GridTrack&gt;&amp;=
) const;
</span><span class=3D"cx">=20
</span></span></pre></div>
<a id=3D"trunkSourceWebCorerenderingstyleGridPositionh"></a>
<div class=3D"modfile"><h4>Modified: trunk/Source/WebCore/rendering/style=
/GridPosition.h (154752 =3D> 154753)</h4>
<pre class=3D"diff"><span>
<span class=3D"info">--- trunk/Source/WebCore/rendering/style/GridPositio=
n.h	2013-08-28 16:44:27 UTC (rev 154752)
+++ trunk/Source/WebCore/rendering/style/GridPosition.h	2013-08-28 16:48:=
53 UTC (rev 154753)
</span><span class=3D"lines">@@ -86,6 +86,10 @@
</span><span class=3D"cx">         return m_type =3D=3D other.m_type &amp=
;&amp; m_integerPosition =3D=3D other.m_integerPosition;
</span><span class=3D"cx">     }
</span><span class=3D"cx">=20
</span><ins>+    bool shouldBeResolvedAgainstOppositePosition() const
+    {
+        return isAuto() || isSpan();
+    }
</ins><span class=3D"cx"> private:
</span><span class=3D"cx">     GridPositionType m_type;
</span><span class=3D"cx">     int m_integerPosition;
</span></span></pre>
</div>
</div>

</body>
</html>


More information about the webkit-changes mailing list