No subject


Mon Jan 28 08:41:14 PST 2013


8091">r148091</a> by &lt;jchaffraix at chromium.org&gt;

Source/WebCore:

This change makes us match the updated specification by making
grid line numbers to always resolve against the
grid-{column|row}-start edge (the previous code would resolve
grid-{column|row}-end grid lines against the grid-{column|row}-end
edge).

To keep feature parity, negative numbers resolve against the
grid-{column|row}-end edge of the 'explicit grid'.

Test: fast/css-grid-layout/grid-item-negative-integer-explicit-grid-resol=
ution.html

* rendering/RenderGrid.cpp:
(WebCore::estimatedGridSizeForPosition):
(WebCore::RenderGrid::explicitGridColumnCount): New utility function.
(WebCore::RenderGrid::explicitGridRowCount): Ditto.
(WebCore::RenderGrid::maximumIndexInDirection): Use explicitGridXXXCount(=
).
(WebCore::RenderGrid::resolveGridPositionsFromStyle): Check that row-end =
&gt; row-start.
(WebCore::RenderGrid::resolveGridPositionFromStyle): Clamp negative value=
s to the first line.
* rendering/RenderGrid.h:
* rendering/style/GridPosition.h:

LayoutTests:

Added a couple of new tests to cover the cases of grid resolutions
using negative integers. Negative integers must resolve against
the grid-{column|row}-end of the explicit grid.

* fast/css-grid-layout/grid-auto-flow-resolution-expected.txt:
* fast/css-grid-layout/grid-auto-flow-resolution.html:
* fast/css-grid-layout/grid-item-negative-integer-explicit-grid-resolutio=
n-expected.txt: Added.
* fast/css-grid-layout/grid-item-negative-integer-explicit-grid-resolutio=
n.html: Added.
* fast/css-grid-layout/grid-item-spanning-resolution-expected.txt:
* fast/css-grid-layout/grid-item-spanning-resolution.html:
* fast/css-grid-layout/resources/grid.css:
(.autoLastRowAutoLastColumn):
(.autoSecondRowAutoFirstColumn):
(.firstRowBothColumn):
(.secondRowBothColumn):
(.bothRowFirstColumn):
(.bothRowSecondColumn):
(.bothRowBothColumn):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href=3D"#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a=
></li>
<li><a href=3D"#trunkLayoutTestsfastcssgridlayoutgridautoflowresolutionex=
pectedtxt">trunk/LayoutTests/fast/css-grid-layout/grid-auto-flow-resoluti=
on-expected.txt</a></li>
<li><a href=3D"#trunkLayoutTestsfastcssgridlayoutgridautoflowresolutionht=
ml">trunk/LayoutTests/fast/css-grid-layout/grid-auto-flow-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"#trunkLayoutTestsfastcssgridlayoutresourcesgridcss">trunk/=
LayoutTests/fast/css-grid-layout/resources/grid.css</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>

<h3>Added Paths</h3>
<ul>
<li><a href=3D"#trunkLayoutTestsfastcssgridlayoutgriditemnegativeintegere=
xplicitgridresolutionexpectedtxt">trunk/LayoutTests/fast/css-grid-layout/=
grid-item-negative-integer-explicit-grid-resolution-expected.txt</a></li>
<li><a href=3D"#trunkLayoutTestsfastcssgridlayoutgriditemnegativeintegere=
xplicitgridresolutionhtml">trunk/LayoutTests/fast/css-grid-layout/grid-it=
em-negative-integer-explicit-grid-resolution.html</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 (154043 =
=3D> 154044)</h4>
<pre class=3D"diff"><span>
<span class=3D"info">--- trunk/LayoutTests/ChangeLog	2013-08-14 10:12:38 =
UTC (rev 154043)
+++ trunk/LayoutTests/ChangeLog	2013-08-14 10:40:40 UTC (rev 154044)
</span><span class=3D"lines">@@ -1,3 +1,31 @@
</span><ins>+2013-08-13  Sergio Villar Senin  &lt;svillar at igalia.com&gt;
+
+        [CSS Grid Layout] Align our grid-line handling with the updated =
specification
+        https://bugs.webkit.org/show_bug.cgi?id=3D113546
+
+        Reviewed by Andreas Kling.
+
+        From Blink r148091 by &lt;jchaffraix at chromium.org&gt;
+
+        Added a couple of new tests to cover the cases of grid resolutio=
ns
+        using negative integers. Negative integers must resolve against
+        the grid-{column|row}-end of the explicit grid.
+
+        * fast/css-grid-layout/grid-auto-flow-resolution-expected.txt:
+        * fast/css-grid-layout/grid-auto-flow-resolution.html:
+        * fast/css-grid-layout/grid-item-negative-integer-explicit-grid-=
resolution-expected.txt: Added.
+        * fast/css-grid-layout/grid-item-negative-integer-explicit-grid-=
resolution.html: Added.
+        * fast/css-grid-layout/grid-item-spanning-resolution-expected.tx=
t:
+        * fast/css-grid-layout/grid-item-spanning-resolution.html:
+        * fast/css-grid-layout/resources/grid.css:
+        (.autoLastRowAutoLastColumn):
+        (.autoSecondRowAutoFirstColumn):
+        (.firstRowBothColumn):
+        (.secondRowBothColumn):
+        (.bothRowFirstColumn):
+        (.bothRowSecondColumn):
+        (.bothRowBothColumn):
+
</ins><span class=3D"cx"> 2013-08-13  Gyuyoung Kim  &lt;gyuyoung.kim at sams=
ung.com&gt;
</span><span class=3D"cx">=20
</span><span class=3D"cx">         The length of scheme is at least five =
characters even when the scheme has 'web+' prefix
</span></span></pre></div>
<a id=3D"trunkLayoutTestsfastcssgridlayoutgridautoflowresolutionexpectedt=
xt"></a>
<div class=3D"modfile"><h4>Modified: trunk/LayoutTests/fast/css-grid-layo=
ut/grid-auto-flow-resolution-expected.txt (154043 =3D> 154044)</h4>
<pre class=3D"diff"><span>
<span class=3D"info">--- trunk/LayoutTests/fast/css-grid-layout/grid-auto=
-flow-resolution-expected.txt	2013-08-14 10:12:38 UTC (rev 154043)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-auto-flow-resolution-expe=
cted.txt	2013-08-14 10:40:40 UTC (rev 154044)
</span><span class=3D"lines">@@ -49,3 +49,9 @@
</span><span class=3D"cx"> XXXXX XXXXX XXXXX
</span><span class=3D"cx"> XXXXX XXXXX XXXXX
</span><span class=3D"cx"> PASS
</span><ins>+XXXXX XXXXX XXXXX
+XXXXX XXXXX XXXXX
+PASS
+XXXXX XXXXX XXXXX
+XXXXX XXXXX XXXXX
+PASS
</ins></span></pre></div>
<a id=3D"trunkLayoutTestsfastcssgridlayoutgridautoflowresolutionhtml"></a=
>
<div class=3D"modfile"><h4>Modified: trunk/LayoutTests/fast/css-grid-layo=
ut/grid-auto-flow-resolution.html (154043 =3D> 154044)</h4>
<pre class=3D"diff"><span>
<span class=3D"info">--- trunk/LayoutTests/fast/css-grid-layout/grid-auto=
-flow-resolution.html	2013-08-14 10:12:38 UTC (rev 154043)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-auto-flow-resolution.html=
	2013-08-14 10:40:40 UTC (rev 154044)
</span><span class=3D"lines">@@ -16,8 +16,6 @@
</span><span class=3D"cx">     -webkit-grid-definition-rows: 50px 100px 1=
50px 200px;
</span><span class=3D"cx"> }
</span><span class=3D"cx">=20
</span><del>-/* These 2 classes forces the grid to be sized after the gri=
d-{end|after}, thus end up in the
-   first row / columns. */
</del><span class=3D"cx"> .overflowingRowFirstColumn {
</span><span class=3D"cx">     -webkit-grid-row: auto / 10;
</span><span class=3D"cx">     -webkit-grid-column: 1;
</span><span class=3D"lines">@@ -28,6 +26,18 @@
</span><span class=3D"cx">     -webkit-grid-column: auto / 8;
</span><span class=3D"cx"> }
</span><span class=3D"cx">=20
</span><ins>+/* These 2 classes forces the grid to be sized after the gri=
d-{column|row}-end, thus end up in the
+   first row / columns. */
+.negativeOverflowingRowFirstColumn {
+    -webkit-grid-row: auto / -10;
+    -webkit-grid-column: 1;
+}
+
+.secondRowNegativeOverflowingColumn {
+    -webkit-grid-row: 2;
+    -webkit-grid-column: auto / -8;
+}
+
</ins><span class=3D"cx"> .unconstrainedContainer {
</span><span class=3D"cx">     /* For accurate x / y offset. */
</span><span class=3D"cx">     position: relative;
</span><span class=3D"lines">@@ -92,7 +102,7 @@
</span><span class=3D"cx"> &lt;!-- Using some 2 positions non-spanning fi=
xed grid-{row|column} --&gt;
</span><span class=3D"cx"> &lt;div class=3D&quot;unconstrainedContainer&q=
uot;&gt;
</span><span class=3D"cx">     &lt;div class=3D&quot;grid bigGrid gridAut=
oFlowColumn&quot;&gt;
</span><del>-        &lt;div class=3D&quot;sizedToGridArea autoFirstRowAu=
toFirstColumn&quot; data-offset-x=3D&quot;300&quot; data-offset-y=3D&quot=
;300&quot; data-expected-width=3D&quot;200&quot; data-expected-height=3D&=
quot;200&quot;&gt;XXXXX XXXXX XXXXX&lt;/div&gt;
</del><ins>+        &lt;div class=3D&quot;sizedToGridArea autoLastRowAuto=
LastColumn&quot; data-offset-x=3D&quot;300&quot; data-offset-y=3D&quot;30=
0&quot; data-expected-width=3D&quot;200&quot; data-expected-height=3D&quo=
t;200&quot;&gt;XXXXX XXXXX XXXXX&lt;/div&gt;
</ins><span class=3D"cx">         &lt;div class=3D&quot;sizedToGridArea f=
irstAutoRowSecondAutoColumn&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;XXXXX XXXXX XXXXX&lt;/div&gt;
</span><span class=3D"cx">         &lt;div class=3D&quot;sizedToGridArea =
secondRowAutoColumn&quot; data-offset-x=3D&quot;0&quot; data-offset-y=3D&=
quot;50&quot; data-expected-width=3D&quot;50&quot; data-expected-height=3D=
&quot;100&quot;&gt;XXXXX XXXXX XXXXX&lt;/div&gt;
</span><span class=3D"cx">         &lt;div class=3D&quot;sizedToGridArea =
firstRowFirstColumn&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;50&quot;&gt;XXXXX XXXXX XXXXX&lt;/div&gt;
</span><span class=3D"lines">@@ -102,7 +112,7 @@
</span><span class=3D"cx">=20
</span><span class=3D"cx"> &lt;div class=3D&quot;unconstrainedContainer&q=
uot;&gt;
</span><span class=3D"cx">     &lt;div class=3D&quot;grid bigGrid gridAut=
oFlowRow&quot;&gt;
</span><del>-        &lt;div class=3D&quot;sizedToGridArea autoFirstRowAu=
toFirstColumn&quot; data-offset-x=3D&quot;300&quot; data-offset-y=3D&quot=
;300&quot; data-expected-width=3D&quot;200&quot; data-expected-height=3D&=
quot;200&quot;&gt;XXXXX XXXXX XXXXX&lt;/div&gt;
</del><ins>+        &lt;div class=3D&quot;sizedToGridArea autoLastRowAuto=
LastColumn&quot; data-offset-x=3D&quot;300&quot; data-offset-y=3D&quot;30=
0&quot; data-expected-width=3D&quot;200&quot; data-expected-height=3D&quo=
t;200&quot;&gt;XXXXX XXXXX XXXXX&lt;/div&gt;
</ins><span class=3D"cx">         &lt;div class=3D&quot;sizedToGridArea f=
irstAutoRowSecondAutoColumn&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;XXXXX XXXXX XXXXX&lt;/div&gt;
</span><span class=3D"cx">         &lt;div class=3D&quot;sizedToGridArea =
secondRowAutoColumn&quot; data-offset-x=3D&quot;0&quot; data-offset-y=3D&=
quot;50&quot; data-expected-width=3D&quot;50&quot; data-expected-height=3D=
&quot;100&quot;&gt;XXXXX XXXXX XXXXX&lt;/div&gt;
</span><span class=3D"cx">         &lt;div class=3D&quot;sizedToGridArea =
firstRowFirstColumn&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;50&quot;&gt;XXXXX XXXXX XXXXX&lt;/div&gt;
</span><span class=3D"lines">@@ -110,18 +120,31 @@
</span><span class=3D"cx">     &lt;/div&gt;
</span><span class=3D"cx"> &lt;/div&gt;
</span><span class=3D"cx">=20
</span><ins>+&lt;div class=3D&quot;unconstrainedContainer&quot;&gt;
+    &lt;div class=3D&quot;grid bigGrid gridAutoFlowColumn&quot;&gt;
+        &lt;div class=3D&quot;sizedToGridArea overflowingRowFirstColumn&=
quot; data-offset-x=3D&quot;0&quot; data-offset-y=3D&quot;500&quot; data-=
expected-width=3D&quot;50&quot; data-expected-height=3D&quot;30&quot;&gt;=
XXXXX XXXXX XXXXX&lt;/div&gt;
+        &lt;div class=3D&quot;sizedToGridArea secondRowOverflowingColumn=
&quot; data-offset-x=3D&quot;500&quot; data-offset-y=3D&quot;50&quot; dat=
a-expected-width=3D&quot;170&quot; data-expected-height=3D&quot;100&quot;=
&gt;XXXXX XXXXX XXXXX&lt;/div&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
</ins><span class=3D"cx">=20
</span><span class=3D"cx"> &lt;div class=3D&quot;unconstrainedContainer&q=
uot;&gt;
</span><ins>+    &lt;div class=3D&quot;grid bigGrid gridAutoFlowRow&quot;=
&gt;
+        &lt;div class=3D&quot;sizedToGridArea overflowingRowFirstColumn&=
quot; data-offset-x=3D&quot;0&quot; data-offset-y=3D&quot;500&quot; data-=
expected-width=3D&quot;50&quot; data-expected-height=3D&quot;30&quot;&gt;=
XXXXX XXXXX XXXXX&lt;/div&gt;
+        &lt;div class=3D&quot;sizedToGridArea secondRowOverflowingColumn=
&quot; data-offset-x=3D&quot;500&quot; data-offset-y=3D&quot;50&quot; dat=
a-expected-width=3D&quot;170&quot; data-expected-height=3D&quot;100&quot;=
&gt;XXXXX XXXXX XXXXX&lt;/div&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=3D&quot;unconstrainedContainer&quot;&gt;
</ins><span class=3D"cx">     &lt;div class=3D&quot;grid bigGrid gridAuto=
FlowColumn&quot;&gt;
</span><del>-        &lt;div class=3D&quot;sizedToGridArea overflowingRow=
FirstColumn&quot; data-offset-x=3D&quot;0&quot; data-offset-y=3D&quot;0&q=
uot; data-expected-width=3D&quot;50&quot; data-expected-height=3D&quot;50=
&quot;&gt;XXXXX XXXXX XXXXX&lt;/div&gt;
-        &lt;div class=3D&quot;sizedToGridArea secondRowOverflowingColumn=
&quot; data-offset-x=3D&quot;0&quot; data-offset-y=3D&quot;50&quot; data-=
expected-width=3D&quot;50&quot; data-expected-height=3D&quot;100&quot;&gt=
;XXXXX XXXXX XXXXX&lt;/div&gt;
</del><ins>+        &lt;div class=3D&quot;sizedToGridArea negativeOverflo=
wingRowFirstColumn&quot; data-offset-x=3D&quot;0&quot; data-offset-y=3D&q=
uot;0&quot; data-expected-width=3D&quot;50&quot; data-expected-height=3D&=
quot;50&quot;&gt;XXXXX XXXXX XXXXX&lt;/div&gt;
+        &lt;div class=3D&quot;sizedToGridArea secondRowNegativeOverflowi=
ngColumn&quot; data-offset-x=3D&quot;0&quot; data-offset-y=3D&quot;50&quo=
t; data-expected-width=3D&quot;50&quot; data-expected-height=3D&quot;100&=
quot;&gt;XXXXX XXXXX XXXXX&lt;/div&gt;
</ins><span class=3D"cx">     &lt;/div&gt;
</span><span class=3D"cx"> &lt;/div&gt;
</span><span class=3D"cx">=20
</span><span class=3D"cx"> &lt;div class=3D&quot;unconstrainedContainer&q=
uot;&gt;
</span><span class=3D"cx">     &lt;div class=3D&quot;grid bigGrid gridAut=
oFlowRow&quot;&gt;
</span><del>-        &lt;div class=3D&quot;sizedToGridArea overflowingRow=
FirstColumn&quot; data-offset-x=3D&quot;0&quot; data-offset-y=3D&quot;0&q=
uot; data-expected-width=3D&quot;50&quot; data-expected-height=3D&quot;50=
&quot;&gt;XXXXX XXXXX XXXXX&lt;/div&gt;
-        &lt;div class=3D&quot;sizedToGridArea secondRowOverflowingColumn=
&quot; data-offset-x=3D&quot;0&quot; data-offset-y=3D&quot;50&quot; data-=
expected-width=3D&quot;50&quot; data-expected-height=3D&quot;100&quot;&gt=
;XXXXX XXXXX XXXXX&lt;/div&gt;
</del><ins>+        &lt;div class=3D&quot;sizedToGridArea negativeOverflo=
wingRowFirstColumn&quot; data-offset-x=3D&quot;0&quot; data-offset-y=3D&q=
uot;0&quot; data-expected-width=3D&quot;50&quot; data-expected-height=3D&=
quot;50&quot;&gt;XXXXX XXXXX XXXXX&lt;/div&gt;
+        &lt;div class=3D&quot;sizedToGridArea secondRowNegativeOverflowi=
ngColumn&quot; data-offset-x=3D&quot;0&quot; data-offset-y=3D&quot;50&quo=
t; data-expected-width=3D&quot;50&quot; data-expected-height=3D&quot;100&=
quot;&gt;XXXXX XXXXX XXXXX&lt;/div&gt;
</ins><span class=3D"cx">     &lt;/div&gt;
</span><span class=3D"cx"> &lt;/div&gt;
</span><span class=3D"cx">=20
</span></span></pre></div>
<a id=3D"trunkLayoutTestsfastcssgridlayoutgriditemnegativeintegerexplicit=
gridresolutionexpectedtxt"></a>
<div class=3D"addfile"><h4>Added: trunk/LayoutTests/fast/css-grid-layout/=
grid-item-negative-integer-explicit-grid-resolution-expected.txt (0 =3D> =
154044)</h4>
<pre class=3D"diff"><span>
<span class=3D"info">--- trunk/LayoutTests/fast/css-grid-layout/grid-item=
-negative-integer-explicit-grid-resolution-expected.txt	                 =
       (rev 0)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-item-negative-integer-exp=
licit-grid-resolution-expected.txt	2013-08-14 10:40:40 UTC (rev 154044)
</span><span class=3D"lines">@@ -0,0 +1,10 @@
</span><ins>+Test that negative &lt;integer&gt; positions are resolved ag=
ainst the explicit grid (that is don't account for implicit columns and r=
ows).
+
+XXXXXX XXXXX XXXXX
+PASS
+XXXXXX XXXXX XXXXX
+PASS
+XXXXXX XXXXX XXXXX
+PASS
+XXXXXX XXXXX XXXXX
+PASS
</ins></span></pre></div>
<a id=3D"trunkLayoutTestsfastcssgridlayoutgriditemnegativeintegerexplicit=
gridresolutionhtml"></a>
<div class=3D"addfile"><h4>Added: trunk/LayoutTests/fast/css-grid-layout/=
grid-item-negative-integer-explicit-grid-resolution.html (0 =3D> 154044)<=
/h4>
<pre class=3D"diff"><span>
<span class=3D"info">--- trunk/LayoutTests/fast/css-grid-layout/grid-item=
-negative-integer-explicit-grid-resolution.html	                        (=
rev 0)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-item-negative-integer-exp=
licit-grid-resolution.html	2013-08-14 10:40:40 UTC (rev 154044)
</span><span class=3D"lines">@@ -0,0 +1,55 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;script&gt;
+if (window.testRunner)
+    testRunner.overridePreference(&quot;WebKitCSSGridLayoutEnabled&quot;=
, 1);
+&lt;/script&gt;
+&lt;link href=3D&quot;resources/grid.css&quot; rel=3D&quot;stylesheet&qu=
ot;&gt;
+&lt;style&gt;
+.columnGrid {
+    -webkit-grid-definition-columns: 50px 100px;
+    /* -webkit-grid-definition-rows is left unset so that the grid items=
' row is implicit. */
+    font: 10px/1 Ahem;
+}
+
+.rowGrid {
+    -webkit-grid-definition-rows: 50px 100px;
+    /* -webkit-grid-definition-columns is left unset so that the grid it=
ems' column is implicit. */
+    font: 10px/1 Ahem;
+}
+&lt;/style&gt;
+&lt;script src=3D&quot;../../resources/check-layout.js&quot;&gt;&lt;/scr=
ipt&gt;
+&lt;body onload=3D&quot;checkLayout('.grid');&quot;&gt;
+
+&lt;p&gt;Test that negative &amp;lt;integer&amp;gt; positions are resolv=
ed against the explicit grid (that is don't account for implicit columns =
and rows).&lt;/p&gt;
+
+&lt;div class=3D&quot;constrainedContainer&quot;&gt;
+    &lt;div class=3D&quot;grid columnGrid&quot;&gt;
+        &lt;div class=3D&quot;sizedToGridArea autoRowThirdColumn&quot; d=
ata-expected-width=3D&quot;60&quot; data-expected-height=3D&quot;30&quot;=
&gt;XXXXXX XXXXX XXXXX&lt;/div&gt;
+        &lt;div class=3D&quot;sizedToGridArea autoLastRowAutoLastColumn&=
quot; data-expected-width=3D&quot;100&quot; data-expected-height=3D&quot;=
30&quot;&gt;&lt;/div&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=3D&quot;constrainedContainer&quot;&gt;
+    &lt;div class=3D&quot;grid columnGrid&quot;&gt;
+        &lt;div class=3D&quot;sizedToGridArea thirdRowAutoColumn&quot; d=
ata-expected-width=3D&quot;50&quot; data-expected-height=3D&quot;30&quot;=
&gt;XXXXXX XXXXX XXXXX&lt;/div&gt;
+        &lt;div class=3D&quot;sizedToGridArea autoLastRowAutoLastColumn&=
quot; data-expected-width=3D&quot;100&quot; data-expected-height=3D&quot;=
0&quot;&gt;&lt;/div&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=3D&quot;constrainedContainer&quot;&gt;
+    &lt;div class=3D&quot;grid rowGrid&quot;&gt;
+        &lt;div class=3D&quot;sizedToGridArea autoRowThirdColumn&quot; d=
ata-expected-width=3D&quot;60&quot; data-expected-height=3D&quot;50&quot;=
&gt;XXXXXX XXXXX XXXXX&lt;/div&gt;
+        &lt;div class=3D&quot;sizedToGridArea autoLastRowAutoLastColumn&=
quot; data-expected-width=3D&quot;0&quot; data-expected-height=3D&quot;10=
0&quot;&gt;&lt;/div&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=3D&quot;constrainedContainer&quot;&gt;
+    &lt;div class=3D&quot;grid rowGrid&quot;&gt;
+        &lt;div class=3D&quot;sizedToGridArea thirdRowAutoColumn&quot; d=
ata-expected-width=3D&quot;60&quot; data-expected-height=3D&quot;30&quot;=
&gt;XXXXXX XXXXX XXXXX&lt;/div&gt;
+        &lt;div class=3D&quot;sizedToGridArea autoLastRowAutoLastColumn&=
quot; data-expected-width=3D&quot;60&quot; data-expected-height=3D&quot;1=
00&quot;&gt;&lt;/div&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;/body&gt;
+&lt;/html&gt;
</ins></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 (154043 =3D> 154044)</h4>
<pre class=3D"diff"><span>
<span class=3D"info">--- trunk/LayoutTests/fast/css-grid-layout/grid-item=
-spanning-resolution-expected.txt	2013-08-14 10:12:38 UTC (rev 154043)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-item-spanning-resolution-=
expected.txt	2013-08-14 10:40:40 UTC (rev 154044)
</span><span class=3D"lines">@@ -8,10 +8,6 @@
</span><span class=3D"cx"> PASS
</span><span class=3D"cx"> PASS
</span><span class=3D"cx"> PASS
</span><del>-FAIL:
-Expected 240 for width, but got 160.=20
-Expected 160 for offsetLeft, but got 0.=20
-
-&lt;div class=3D&quot;grid&quot; data-expected-width=3D&quot;400&quot; d=
ata-expected-height=3D&quot;300&quot;&gt;
-    &lt;div class=3D&quot;sizedToGridArea autoSecondRowAutoFirstColumn&q=
uot; data-offset-x=3D&quot;160&quot; data-offset-y=3D&quot;0&quot; data-e=
xpected-width=3D&quot;240&quot; data-expected-height=3D&quot;90&quot;&gt;=
&lt;/div&gt;
-&lt;/div&gt;
</del><ins>+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 (154043 =3D> 154044)</h4>
<pre class=3D"diff"><span>
<span class=3D"info">--- trunk/LayoutTests/fast/css-grid-layout/grid-item=
-spanning-resolution.html	2013-08-14 10:12:38 UTC (rev 154043)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-item-spanning-resolution.=
html	2013-08-14 10:40:40 UTC (rev 154044)
</span><span class=3D"lines">@@ -13,11 +13,21 @@
</span><span class=3D"cx">     height: 300px;
</span><span class=3D"cx"> }
</span><span class=3D"cx">=20
</span><ins>+.negativeOverflowRowFirstColumn {
+    -webkit-grid-row: 1 / -5;
+    -webkit-grid-column: 1;
+}
+
</ins><span class=3D"cx"> .overflowRowFirstColumn {
</span><span class=3D"cx">     -webkit-grid-row: 1 / 5;
</span><span class=3D"cx">     -webkit-grid-column: 1;
</span><span class=3D"cx"> }
</span><span class=3D"cx">=20
</span><ins>+.firstRowNegativeOverflowColumn {
+    -webkit-grid-row: 1;
+    -webkit-grid-column: 1 / -5;
+}
+
</ins><span class=3D"cx"> .firstRowOverflowColumn {
</span><span class=3D"cx">     -webkit-grid-row: 1;
</span><span class=3D"cx">     -webkit-grid-column: 1 / 5;
</span><span class=3D"lines">@@ -60,25 +70,37 @@
</span><span class=3D"cx">=20
</span><span class=3D"cx"> &lt;div style=3D&quot;position: relative&quot;=
&gt;
</span><span class=3D"cx"> &lt;div class=3D&quot;grid&quot; data-expected=
-width=3D&quot;400&quot; data-expected-height=3D&quot;300&quot;&gt;
</span><del>-    &lt;div class=3D&quot;sizedToGridArea overflowRowFirstCo=
lumn&quot; data-offset-x=3D&quot;0&quot; data-offset-y=3D&quot;0&quot; da=
ta-expected-width=3D&quot;160&quot; data-expected-height=3D&quot;90&quot;=
&gt;&lt;/div&gt;
</del><ins>+    &lt;div class=3D&quot;sizedToGridArea negativeOverflowRow=
FirstColumn&quot; data-offset-x=3D&quot;0&quot; data-offset-y=3D&quot;0&q=
uot; data-expected-width=3D&quot;160&quot; data-expected-height=3D&quot;9=
0&quot;&gt;&lt;/div&gt;
</ins><span class=3D"cx"> &lt;/div&gt;
</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><span class=3D"cx"> &lt;div class=3D&quot;grid&quot; data-expected=
-width=3D&quot;400&quot; data-expected-height=3D&quot;300&quot;&gt;
</span><del>-    &lt;div class=3D&quot;sizedToGridArea firstRowOverflowCo=
lumn&quot; data-offset-x=3D&quot;0&quot; data-offset-y=3D&quot;0&quot; da=
ta-expected-width=3D&quot;160&quot; data-expected-height=3D&quot;90&quot;=
&gt;&lt;/div&gt;
</del><ins>+    &lt;div class=3D&quot;sizedToGridArea overflowRowFirstCol=
umn&quot; data-offset-x=3D&quot;0&quot; data-offset-y=3D&quot;0&quot; dat=
a-expected-width=3D&quot;160&quot; data-expected-height=3D&quot;300&quot;=
&gt;&lt;/div&gt;
</ins><span class=3D"cx"> &lt;/div&gt;
</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><span class=3D"cx"> &lt;div class=3D&quot;grid&quot; data-expected=
-width=3D&quot;400&quot; data-expected-height=3D&quot;300&quot;&gt;
</span><ins>+    &lt;div class=3D&quot;sizedToGridArea firstRowNegativeOv=
erflowColumn&quot; data-offset-x=3D&quot;0&quot; data-offset-y=3D&quot;0&=
quot; data-expected-width=3D&quot;160&quot; data-expected-height=3D&quot;=
90&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;400&quot; d=
ata-expected-height=3D&quot;300&quot;&gt;
+    &lt;div class=3D&quot;sizedToGridArea firstRowOverflowColumn&quot; d=
ata-offset-x=3D&quot;0&quot; data-offset-y=3D&quot;0&quot; data-expected-=
width=3D&quot;400&quot; data-expected-height=3D&quot;90&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;400&quot; d=
ata-expected-height=3D&quot;300&quot;&gt;
</ins><span class=3D"cx">     &lt;div class=3D&quot;sizedToGridArea first=
AutoRowSecondAutoColumn&quot; data-offset-x=3D&quot;160&quot; data-offset=
-y=3D&quot;0&quot; data-expected-width=3D&quot;240&quot; data-expected-he=
ight=3D&quot;90&quot;&gt;&lt;/div&gt;
</span><span class=3D"cx"> &lt;/div&gt;
</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><span class=3D"cx"> &lt;div class=3D&quot;grid&quot; data-expected=
-width=3D&quot;400&quot; data-expected-height=3D&quot;300&quot;&gt;
</span><del>-    &lt;div class=3D&quot;sizedToGridArea autoSecondRowAutoF=
irstColumn&quot; data-offset-x=3D&quot;160&quot; data-offset-y=3D&quot;0&=
quot; data-expected-width=3D&quot;240&quot; data-expected-height=3D&quot;=
90&quot;&gt;&lt;/div&gt;
</del><ins>+    &lt;div class=3D&quot;sizedToGridArea autoSecondRowAutoFi=
rstColumn&quot; data-offset-x=3D&quot;0&quot; data-offset-y=3D&quot;90&qu=
ot; data-expected-width=3D&quot;160&quot; data-expected-height=3D&quot;21=
0&quot;&gt;&lt;/div&gt;
</ins><span class=3D"cx"> &lt;/div&gt;
</span><span class=3D"cx"> &lt;/div&gt;
</span><span class=3D"cx">=20
</span></span></pre></div>
<a id=3D"trunkLayoutTestsfastcssgridlayoutresourcesgridcss"></a>
<div class=3D"modfile"><h4>Modified: trunk/LayoutTests/fast/css-grid-layo=
ut/resources/grid.css (154043 =3D> 154044)</h4>
<pre class=3D"diff"><span>
<span class=3D"info">--- trunk/LayoutTests/fast/css-grid-layout/resources=
/grid.css	2013-08-14 10:12:38 UTC (rev 154043)
+++ trunk/LayoutTests/fast/css-grid-layout/resources/grid.css	2013-08-14 =
10:40:40 UTC (rev 154044)
</span><span class=3D"lines">@@ -37,34 +37,39 @@
</span><span class=3D"cx">     -webkit-grid-column: 2 / auto;
</span><span class=3D"cx"> }
</span><span class=3D"cx">=20
</span><del>-.autoFirstRowAutoFirstColumn {
-    -webkit-grid-row: auto / 1;
</del><ins>+.autoLastRowAutoLastColumn {
+    -webkit-grid-row: auto / -1;
+    -webkit-grid-column: auto / -1;
+}
+
+.autoSecondRowAutoFirstColumn {
+    -webkit-grid-row: auto / 2;
</ins><span class=3D"cx">     -webkit-grid-column: auto / 1;
</span><span class=3D"cx"> }
</span><span class=3D"cx">=20
</span><span class=3D"cx"> .firstRowBothColumn {
</span><span class=3D"cx">     -webkit-grid-row: 1;
</span><del>-    -webkit-grid-column: 1 / 1;
</del><ins>+    -webkit-grid-column: 1 / -1;
</ins><span class=3D"cx"> }
</span><span class=3D"cx">=20
</span><span class=3D"cx"> .secondRowBothColumn {
</span><span class=3D"cx">     -webkit-grid-row: 2;
</span><del>-    -webkit-grid-column: 1 / 1;
</del><ins>+    -webkit-grid-column: 1 / -1;
</ins><span class=3D"cx"> }
</span><span class=3D"cx">=20
</span><span class=3D"cx"> .bothRowFirstColumn {
</span><del>-    -webkit-grid-row: 1 / 1;
</del><ins>+    -webkit-grid-row: 1 / -1;
</ins><span class=3D"cx">     -webkit-grid-column: 1;
</span><span class=3D"cx"> }
</span><span class=3D"cx">=20
</span><span class=3D"cx"> .bothRowSecondColumn {
</span><del>-    -webkit-grid-row: 1 / 1;
</del><ins>+    -webkit-grid-row: 1 / -1;
</ins><span class=3D"cx">     -webkit-grid-column: 2;
</span><span class=3D"cx"> }
</span><span class=3D"cx">=20
</span><span class=3D"cx"> .bothRowBothColumn {
</span><del>-    -webkit-grid-row: 1 / 1;
-    -webkit-grid-column: 1 / 1;
</del><ins>+    -webkit-grid-row: 1 / -1;
+    -webkit-grid-column: 1 / -1;
</ins><span class=3D"cx"> }
</span><span class=3D"cx">=20
</span><span class=3D"cx"> /* Auto column / row. */
</span></span></pre></div>
<a id=3D"trunkSourceWebCoreChangeLog"></a>
<div class=3D"modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (1540=
43 =3D> 154044)</h4>
<pre class=3D"diff"><span>
<span class=3D"info">--- trunk/Source/WebCore/ChangeLog	2013-08-14 10:12:=
38 UTC (rev 154043)
+++ trunk/Source/WebCore/ChangeLog	2013-08-14 10:40:40 UTC (rev 154044)
</span><span class=3D"lines">@@ -1,3 +1,33 @@
</span><ins>+2013-08-13  Sergio Villar Senin  &lt;svillar at igalia.com&gt;
+
+        [CSS Grid Layout] Align our grid-line handling with the updated =
specification
+        https://bugs.webkit.org/show_bug.cgi?id=3D113546
+
+        Reviewed by Andreas Kling.
+
+        From Blink r148091 by &lt;jchaffraix at chromium.org&gt;
+
+        This change makes us match the updated specification by making
+        grid line numbers to always resolve against the
+        grid-{column|row}-start edge (the previous code would resolve
+        grid-{column|row}-end grid lines against the grid-{column|row}-e=
nd
+        edge).
+
+        To keep feature parity, negative numbers resolve against the
+        grid-{column|row}-end edge of the 'explicit grid'.
+
+        Test: fast/css-grid-layout/grid-item-negative-integer-explicit-g=
rid-resolution.html
+
+        * rendering/RenderGrid.cpp:
+        (WebCore::estimatedGridSizeForPosition):
+        (WebCore::RenderGrid::explicitGridColumnCount): New utility func=
tion.
+        (WebCore::RenderGrid::explicitGridRowCount): Ditto.
+        (WebCore::RenderGrid::maximumIndexInDirection): Use explicitGrid=
XXXCount().
+        (WebCore::RenderGrid::resolveGridPositionsFromStyle): Check that=
 row-end &gt; row-start.
+        (WebCore::RenderGrid::resolveGridPositionFromStyle): Clamp negat=
ive values to the first line.
+        * rendering/RenderGrid.h:
+        * rendering/style/GridPosition.h:
+
</ins><span class=3D"cx"> 2013-08-14  Gyuyoung Kim  &lt;gyuyoung.kim at sams=
ung.com&gt;
</span><span class=3D"cx">=20
</span><span class=3D"cx">         Add toSVGTextPathElement(), and use it
</span></span></pre></div>
<a id=3D"trunkSourceWebCorerenderingRenderGridcpp"></a>
<div class=3D"modfile"><h4>Modified: trunk/Source/WebCore/rendering/Rende=
rGrid.cpp (154043 =3D> 154044)</h4>
<pre class=3D"diff"><span>
<span class=3D"info">--- trunk/Source/WebCore/rendering/RenderGrid.cpp	20=
13-08-14 10:12:38 UTC (rev 154043)
+++ trunk/Source/WebCore/rendering/RenderGrid.cpp	2013-08-14 10:40:40 UTC=
 (rev 154044)
</span><span class=3D"lines">@@ -333,15 +333,25 @@
</span><span class=3D"cx">     if (position.isAuto())
</span><span class=3D"cx">         return 1;
</span><span class=3D"cx">=20
</span><ins>+    // Negative explicit values never grow the grid as they =
are clamped against
+    // the explicit grid's size. Thus we don't special case them here.
</ins><span class=3D"cx">     return std::max(position.integerPosition(),=
 1);
</span><span class=3D"cx"> }
</span><span class=3D"cx">=20
</span><ins>+size_t RenderGrid::explicitGridColumnCount() const
+{
+    return style()-&gt;gridColumns().size();
+}
+
+size_t RenderGrid::explicitGridRowCount() const
+{
+    return style()-&gt;gridRows().size();
+}
+
</ins><span class=3D"cx"> size_t RenderGrid::maximumIndexInDirection(Trac=
kSizingDirection direction) const
</span><span class=3D"cx"> {
</span><del>-    const Vector&lt;GridTrackSize&gt;&amp; trackStyles =3D (=
direction =3D=3D ForColumns) ? style()-&gt;gridColumns() : style()-&gt;gr=
idRows();
</del><ins>+    size_t maximumIndex =3D std::max&lt;size_t&gt;(1, (direct=
ion =3D=3D ForColumns) ? explicitGridColumnCount() : explicitGridRowCount=
());
</ins><span class=3D"cx">=20
</span><del>-    size_t maximumIndex =3D std::max&lt;size_t&gt;(1, trackS=
tyles.size());
-
</del><span class=3D"cx">     for (RenderBox* child =3D firstChildBox(); =
child; child =3D child-&gt;nextSiblingBox()) {
</span><span class=3D"cx">         // This function bypasses the cache (c=
achedGridCoordinate()) as it is used to build it.
</span><span class=3D"cx">         // Also we can't call resolveGridPosit=
ionsFromStyle here as it assumes that the grid is build and we are in
</span><span class=3D"lines">@@ -748,7 +758,14 @@
</span><span class=3D"cx">         return adoptPtr(new GridSpan(initialRe=
solvedPosition, initialResolvedPosition));
</span><span class=3D"cx">     }
</span><span class=3D"cx">=20
</span><del>-    return adoptPtr(new GridSpan(resolveGridPositionFromStyl=
e(initialPosition, initialPositionSide), resolveGridPositionFromStyle(fin=
alPosition, finalPositionSide)));
</del><ins>+    size_t resolvedInitialPosition =3D resolveGridPositionFro=
mStyle(initialPosition, initialPositionSide);
+    size_t resolvedFinalPosition =3D resolveGridPositionFromStyle(finalP=
osition, finalPositionSide);
+
+    // If 'grid-row-end' specifies a line at or before that specified by=
 'grid-row-start', it computes to 'span 1'.
+    if (resolvedFinalPosition &lt; resolvedInitialPosition)
+        resolvedFinalPosition =3D resolvedInitialPosition;
+
+    return adoptPtr(new GridSpan(resolvedInitialPosition, resolvedFinalP=
osition));
</ins><span class=3D"cx"> }
</span><span class=3D"cx">=20
</span><span class=3D"cx"> size_t RenderGrid::resolveGridPositionFromStyl=
e(const GridPosition&amp; position, GridPositionSide side) const
</span><span class=3D"lines">@@ -758,14 +775,18 @@
</span><span class=3D"cx">     // FIXME: Handle other values for grid-{ro=
w,column} like ranges or line names.
</span><span class=3D"cx">     switch (position.type()) {
</span><span class=3D"cx">     case IntegerPosition: {
</span><del>-        // FIXME: What does a non-positive integer mean for =
a column/row?
-        size_t resolvedPosition =3D position.isPositive() ? position.int=
egerPosition() - 1 : 0;
</del><ins>+        if (position.isPositive())
+            return position.integerPosition() - 1;
</ins><span class=3D"cx">=20
</span><del>-        if (side =3D=3D ColumnStartSide || side =3D=3D RowSt=
artSide)
-            return resolvedPosition;
</del><ins>+        size_t resolvedPosition =3D abs(position.integerPosit=
ion());
+        // FIXME: This returns one less than the expected result for sid=
e =3D=3D ColumnStartSide or RowStartSide as we don't properly convert
+        // the grid line to its grid track. However this avoids the issu=
e of growing the grid when inserting the item (e.g. -1 / auto).
+        const size_t endOfTrack =3D (side =3D=3D ColumnStartSide || side=
 =3D=3D ColumnEndSide) ? explicitGridColumnCount() : explicitGridRowCount=
();
</ins><span class=3D"cx">=20
</span><del>-        const size_t endOfTrack =3D (side =3D=3D ColumnEndSi=
de) ? gridColumnCount() - 1 : gridRowCount() - 1;
-        ASSERT(endOfTrack &gt;=3D resolvedPosition);
</del><ins>+        // Per http://lists.w3.org/Archives/Public/www-style/=
2013Mar/0589.html, we clamp negative value to the first line.
+        if (endOfTrack &lt; resolvedPosition)
+            return 0;
+
</ins><span class=3D"cx">         return endOfTrack - resolvedPosition;
</span><span class=3D"cx">     }
</span><span class=3D"cx">     case AutoPosition:
</span></span></pre></div>
<a id=3D"trunkSourceWebCorerenderingRenderGridh"></a>
<div class=3D"modfile"><h4>Modified: trunk/Source/WebCore/rendering/Rende=
rGrid.h (154043 =3D> 154044)</h4>
<pre class=3D"diff"><span>
<span class=3D"info">--- trunk/Source/WebCore/rendering/RenderGrid.h	2013=
-08-14 10:12:38 UTC (rev 154043)
+++ trunk/Source/WebCore/rendering/RenderGrid.h	2013-08-14 10:40:40 UTC (=
rev 154044)
</span><span class=3D"lines">@@ -110,6 +110,8 @@
</span><span class=3D"cx">     void distributeSpaceToTracks(Vector&lt;Gri=
dTrack*&gt;&amp;, Vector&lt;GridTrack*&gt;* tracksForGrowthAboveMaxBreadt=
h, AccumulatorGetter, AccumulatorGrowFunction, LayoutUnit&amp; availableL=
ogicalSpace);
</span><span class=3D"cx">=20
</span><span class=3D"cx">     const GridTrackSize&amp; gridTrackSize(Tra=
ckSizingDirection, size_t) const;
</span><ins>+    size_t explicitGridColumnCount() const;
+    size_t explicitGridRowCount() const;
</ins><span class=3D"cx">     size_t maximumIndexInDirection(TrackSizingD=
irection) const;
</span><span class=3D"cx">=20
</span><span class=3D"cx">     LayoutUnit logicalContentHeightForChild(Re=
nderBox*, Vector&lt;GridTrack&gt;&amp;);
</span></span></pre></div>
<a id=3D"trunkSourceWebCorerenderingstyleGridPositionh"></a>
<div class=3D"modfile"><h4>Modified: trunk/Source/WebCore/rendering/style=
/GridPosition.h (154043 =3D> 154044)</h4>
<pre class=3D"diff"><span>
<span class=3D"info">--- trunk/Source/WebCore/rendering/style/GridPositio=
n.h	2013-08-14 10:12:38 UTC (rev 154043)
+++ trunk/Source/WebCore/rendering/style/GridPosition.h	2013-08-14 10:40:=
40 UTC (rev 154044)
</span><span class=3D"lines">@@ -88,7 +88,6 @@
</span><span class=3D"cx">=20
</span><span class=3D"cx"> private:
</span><span class=3D"cx">     GridPositionType m_type;
</span><del>-    // FIXME: This should probably be a size_t but the spec =
currently allows any &lt;integer&gt;.
</del><span class=3D"cx">     int m_integerPosition;
</span><span class=3D"cx"> };
</span><span class=3D"cx">=20
</span></span></pre>
</div>
</div>

</body>
</html>


More information about the webkit-changes mailing list