Title: [279278] trunk
- Revision
- 279278
- Author
- [email protected]
- Date
- 2021-06-25 06:58:25 -0700 (Fri, 25 Jun 2021)
Log Message
[css-grid] Consider container's writing mode to get grid item's margin
https://bugs.webkit.org/show_bug.cgi?id=226877
Reviewed by Sergio Villar Senin.
LayoutTests/imported/w3c:
Update test results.
* web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-008-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011-expected.txt:
Source/WebCore:
When computing the logical offset of a non-static absolute positioned grid item, we need
to pass its container's style in order to resolve the child margin correctly, especially
for the case when the item has flipped block writing mode (vertical-rl).
This change is an import of the Chromium change at
https://chromium-review.googlesource.com/c/chromium/src/+/2577365
* rendering/RenderBox.h:
(WebCore::RenderBox::marginLogicalLeft const):
(WebCore::RenderBox::marginLogicalRight const):
* rendering/RenderGrid.cpp:
(WebCore::RenderGrid::logicalOffsetForOutOfFlowChild const):
Modified Paths
Diff
Modified: trunk/LayoutTests/imported/w3c/ChangeLog (279277 => 279278)
--- trunk/LayoutTests/imported/w3c/ChangeLog 2021-06-25 13:49:07 UTC (rev 279277)
+++ trunk/LayoutTests/imported/w3c/ChangeLog 2021-06-25 13:58:25 UTC (rev 279278)
@@ -1,5 +1,17 @@
2021-06-25 Ziran Sun <[email protected]>
+ [css-grid] Consider container's writing mode to get grid item's margin
+ https://bugs.webkit.org/show_bug.cgi?id=226877
+
+ Reviewed by Sergio Villar Senin.
+
+ Update test results.
+
+ * web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-008-expected.txt:
+ * web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011-expected.txt:
+
+2021-06-25 Ziran Sun <[email protected]>
+
Resync web-platform-tests/css/css-grid tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=223593
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-008-expected.txt (279277 => 279278)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-008-expected.txt 2021-06-25 13:49:07 UTC (rev 279277)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-008-expected.txt 2021-06-25 13:58:25 UTC (rev 279278)
@@ -22,29 +22,8 @@
X
XX XXX
-FAIL .grid 1 assert_equals:
-<div class="grid">
- <div data-offset-x="25" data-offset-y="5" data-expected-width="10" data-expected-height="60" class="firstRowFirstColumn verticalLR">X XX X</div>
- <div data-offset-x="200" data-offset-y="65" data-expected-width="30" data-expected-height="70" class="firstRowSecondColumn verticalRL">XX X<br>X XXX X<br>XX XXX</div>
- <div data-offset-x="20" data-offset-y="165" data-expected-width="60" data-expected-height="10" class="secondRowFirstColumn RTL">X XX X</div>
- <div data-offset-x="125" data-offset-y="165" data-expected-width="40" data-expected-height="60" class="secondRowSecondColumn verticalLR RTL">XX X<br>X XXX<br>X<br>XX XXX</div>
-</div>
-offsetLeft expected 200 but got 210
-FAIL .grid 2 assert_equals:
-<div class="grid RTL">
- <div data-offset-x="175" data-offset-y="5" data-expected-width="10" data-expected-height="60" class="firstRowFirstColumn verticalLR">X XX X</div>
- <div data-offset-x="100" data-offset-y="65" data-expected-width="30" data-expected-height="70" class="firstRowSecondColumn verticalRL">XX X<br>X XXX X<br>XX XXX</div>
- <div data-offset-x="180" data-offset-y="165" data-expected-width="60" data-expected-height="10" class="secondRowFirstColumn LTR">X XX X</div>
- <div data-offset-x="25" data-offset-y="165" data-expected-width="40" data-expected-height="60" class="secondRowSecondColumn verticalRL RTL">XX X<br>X XXX<br>X<br>XX XXX</div>
-</div>
-offsetLeft expected 100 but got 110
+PASS .grid 1
+PASS .grid 2
PASS .grid 3
-FAIL .grid 4 assert_equals:
-<div class="grid verticalRL">
- <div data-offset-x="125" data-offset-y="75" data-expected-width="60" data-expected-height="10" class="firstRowFirstColumn horizontal">X XX X</div>
- <div data-offset-x="160" data-offset-y="155" data-expected-width="70" data-expected-height="30" class="firstRowSecondColumn horizontal">XX X<br>X XXX X<br>XX XXX</div>
- <div data-offset-x="25" data-offset-y="15" data-expected-width="60" data-expected-height="10" class="secondRowFirstColumn horizontal RTL">X XX X</div>
- <div data-offset-x="25" data-offset-y="115" data-expected-width="40" data-expected-height="60" class="secondRowSecondColumn verticalLR">XX X<br>X XXX<br>X<br>XX XXX</div>
-</div>
-offsetLeft expected 125 but got 135
+PASS .grid 4
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011-expected.txt (279277 => 279278)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011-expected.txt 2021-06-25 13:49:07 UTC (rev 279277)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011-expected.txt 2021-06-25 13:58:25 UTC (rev 279278)
@@ -22,29 +22,8 @@
X
XX XXX
-FAIL .grid 1 assert_equals:
-<div class="grid">
- <div data-offset-x="13" data-offset-y="2" data-expected-width="26" data-expected-height="70" class="firstRowFirstColumn verticalLR">X XX X</div>
- <div data-offset-x="190" data-offset-y="64" data-expected-width="46" data-expected-height="80" class="firstRowSecondColumn verticalRL">XX X<br>X XXX X<br>XX XXX</div>
- <div data-offset-x="8" data-offset-y="162" data-expected-width="76" data-expected-height="20" class="secondRowFirstColumn RTL">X XX X</div>
- <div data-offset-x="113" data-offset-y="162" data-expected-width="56" data-expected-height="70" class="secondRowSecondColumn verticalLR RTL">XX X<br>X XXX<br>X<br>XX XXX</div>
-</div>
-offsetLeft expected 190 but got 194
-FAIL .grid 2 assert_equals:
-<div class="grid RTL">
- <div data-offset-x="163" data-offset-y="2" data-expected-width="26" data-expected-height="70" class="firstRowFirstColumn verticalLR">X XX X</div>
- <div data-offset-x="90" data-offset-y="64" data-expected-width="46" data-expected-height="80" class="firstRowSecondColumn verticalRL">XX X<br>X XXX X<br>XX XXX</div>
- <div data-offset-x="170" data-offset-y="162" data-expected-width="76" data-expected-height="20" class="secondRowFirstColumn LTR">X XX X</div>
- <div data-offset-x="13" data-offset-y="162" data-expected-width="56" data-expected-height="70" class="secondRowSecondColumn verticalRL RTL">XX X<br>X XXX<br>X<br>XX XXX</div>
-</div>
-offsetLeft expected 90 but got 94
+PASS .grid 1
+PASS .grid 2
PASS .grid 3
-FAIL .grid 4 assert_equals:
-<div class="grid verticalRL">
- <div data-offset-x="113" data-offset-y="74" data-expected-width="76" data-expected-height="20" class="firstRowFirstColumn horizontal">X XX X</div>
- <div data-offset-x="150" data-offset-y="153" data-expected-width="86" data-expected-height="40" class="firstRowSecondColumn horizontal">XX X<br>X XXX X<br>XX XXX</div>
- <div data-offset-x="14" data-offset-y="12" data-expected-width="76" data-expected-height="20" class="secondRowFirstColumn horizontal RTL">X XX X</div>
- <div data-offset-x="13" data-offset-y="112" data-expected-width="56" data-expected-height="70" class="secondRowSecondColumn verticalLR">XX X<br>X XXX<br>X<br>XX XXX</div>
-</div>
-offsetLeft expected 113 but got 117
+PASS .grid 4
Modified: trunk/Source/WebCore/ChangeLog (279277 => 279278)
--- trunk/Source/WebCore/ChangeLog 2021-06-25 13:49:07 UTC (rev 279277)
+++ trunk/Source/WebCore/ChangeLog 2021-06-25 13:58:25 UTC (rev 279278)
@@ -1,3 +1,23 @@
+2021-06-25 Ziran Sun <[email protected]>
+
+ [css-grid] Consider container's writing mode to get grid item's margin
+ https://bugs.webkit.org/show_bug.cgi?id=226877
+
+ Reviewed by Sergio Villar Senin.
+
+ When computing the logical offset of a non-static absolute positioned grid item, we need
+ to pass its container's style in order to resolve the child margin correctly, especially
+ for the case when the item has flipped block writing mode (vertical-rl).
+
+ This change is an import of the Chromium change at
+ https://chromium-review.googlesource.com/c/chromium/src/+/2577365
+
+ * rendering/RenderBox.h:
+ (WebCore::RenderBox::marginLogicalLeft const):
+ (WebCore::RenderBox::marginLogicalRight const):
+ * rendering/RenderGrid.cpp:
+ (WebCore::RenderGrid::logicalOffsetForOutOfFlowChild const):
+
2021-06-25 Philippe Normand <[email protected]>
[GStreamer] Minor debugging improvements in mediastream source element
Modified: trunk/Source/WebCore/rendering/RenderBox.h (279277 => 279278)
--- trunk/Source/WebCore/rendering/RenderBox.h 2021-06-25 13:49:07 UTC (rev 279277)
+++ trunk/Source/WebCore/rendering/RenderBox.h 2021-06-25 13:58:25 UTC (rev 279278)
@@ -265,9 +265,9 @@
void setMarginLeft(LayoutUnit margin) { m_marginBox.setLeft(margin); }
void setMarginRight(LayoutUnit margin) { m_marginBox.setRight(margin); }
- LayoutUnit marginLogicalLeft() const { return m_marginBox.start(style().writingMode()); }
- LayoutUnit marginLogicalRight() const { return m_marginBox.end(style().writingMode()); }
-
+ LayoutUnit marginLogicalLeft(const RenderStyle* overrideStyle = nullptr) const { return m_marginBox.start((overrideStyle ? overrideStyle : &style())->writingMode()); }
+ LayoutUnit marginLogicalRight(const RenderStyle* overrideStyle = nullptr) const { return m_marginBox.end((overrideStyle ? overrideStyle : &style())->writingMode()); }
+
LayoutUnit marginBefore(const RenderStyle* overrideStyle = nullptr) const final { return m_marginBox.before((overrideStyle ? overrideStyle : &style())->writingMode()); }
LayoutUnit marginAfter(const RenderStyle* overrideStyle = nullptr) const final { return m_marginBox.after((overrideStyle ? overrideStyle : &style())->writingMode()); }
LayoutUnit marginStart(const RenderStyle* overrideStyle = nullptr) const final
Modified: trunk/Source/WebCore/rendering/RenderGrid.cpp (279277 => 279278)
--- trunk/Source/WebCore/rendering/RenderGrid.cpp 2021-06-25 13:49:07 UTC (rev 279277)
+++ trunk/Source/WebCore/rendering/RenderGrid.cpp 2021-06-25 13:58:25 UTC (rev 279278)
@@ -1588,7 +1588,7 @@
bool isFlowAwareRowAxis = GridLayoutFunctions::flowAwareDirectionForChild(*this, child, direction) == ForColumns;
LayoutUnit childPosition = isFlowAwareRowAxis ? child.logicalLeft() : child.logicalTop();
LayoutUnit gridBorder = isRowAxis ? borderLogicalLeft() : borderBefore();
- LayoutUnit childMargin = isFlowAwareRowAxis ? child.marginLogicalLeft() : child.marginBefore();
+ LayoutUnit childMargin = isRowAxis ? child.marginLogicalLeft(&style()) : child.marginBefore(&style());
LayoutUnit offset = childPosition - gridBorder - childMargin;
if (!isRowAxis || style().isLeftToRightDirection())
return offset;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes