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