Title: [278194] trunk
- Revision
- 278194
- Author
- commit-qu...@webkit.org
- Date
- 2021-05-28 04:35:54 -0700 (Fri, 28 May 2021)
Log Message
Webkit doesn't calculate padding-top/-bottom in % correctly when parent has padding
https://bugs.webkit.org/show_bug.cgi?id=221202
Patch by Rob Buis <rb...@igalia.com> on 2021-05-28
Reviewed by Manuel Rego Casasnovas.
LayoutTests/imported/w3c:
Add test for this.
* web-platform-tests/css/css-position/position-absolute-padding-percentage-expected.txt: Added.
* web-platform-tests/css/css-position/position-absolute-padding-percentage.html: Added.
Source/WebCore:
Absolute positioned elements should resolve %-ge padding against containing block padding-edge:
https://drafts.csswg.org/css-position-3/#absolute-positioning-containing-block
Test: imported/w3c/web-platform-tests/css/css-position/position-absolute-padding-percentage.html
* rendering/RenderBox.cpp:
(WebCore::RenderBox::containingBlockLogicalWidthForContent const):
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/imported/w3c/ChangeLog (278193 => 278194)
--- trunk/LayoutTests/imported/w3c/ChangeLog 2021-05-28 08:59:20 UTC (rev 278193)
+++ trunk/LayoutTests/imported/w3c/ChangeLog 2021-05-28 11:35:54 UTC (rev 278194)
@@ -1,3 +1,15 @@
+2021-05-28 Rob Buis <rb...@igalia.com>
+
+ Webkit doesn't calculate padding-top/-bottom in % correctly when parent has padding
+ https://bugs.webkit.org/show_bug.cgi?id=221202
+
+ Reviewed by Manuel Rego Casasnovas.
+
+ Add test for this.
+
+ * web-platform-tests/css/css-position/position-absolute-padding-percentage-expected.txt: Added.
+ * web-platform-tests/css/css-position/position-absolute-padding-percentage.html: Added.
+
2021-05-28 Martin Robinson <mrobin...@webkit.org>
More readily layout when scroll-snap properties change
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-position/position-absolute-padding-percentage-expected.txt (0 => 278194)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-position/position-absolute-padding-percentage-expected.txt (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-position/position-absolute-padding-percentage-expected.txt 2021-05-28 11:35:54 UTC (rev 278194)
@@ -0,0 +1,4 @@
+
+PASS absolute positioned element should resolve padding left+right against container padding-box width
+PASS absolute positioned element should resolve padding top+bottom against container padding-box width
+
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-position/position-absolute-padding-percentage.html (0 => 278194)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-position/position-absolute-padding-percentage.html (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-position/position-absolute-padding-percentage.html 2021-05-28 11:35:54 UTC (rev 278194)
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<title>CSS Position Absolute: css-position-3</title>
+<script src=""
+<script src=""
+<link rel="help" href=""
+<link rel="help" href=""
+<meta name="assert" content="abspos resolves padding %-ge sizes correctly.">
+<style>
+#outer-horizontal-padding {
+ position: relative;
+ padding: 10px;
+ width: 30px;
+ height: 80px;
+ background: green;
+}
+#inner-horizontal-padding {
+ position: absolute;
+ left: 50px;
+ height: 100px;
+ top: 0px;
+ padding-left: 50%;
+ padding-right: 50%;
+ background: green;
+}
+#outer-vertical-padding {
+ position: relative;
+ padding: 10px;
+ width: 30px;
+ height: 80px;
+ background: green;
+}
+#inner-vertical-padding {
+ position: absolute;
+ left: 50px;
+ width: 50px;
+ top: 0px;
+ padding-top: 100%;
+ padding-bottom: 100%;
+ background: green;
+}
+</style>
+<div id="outer-horizontal-padding">
+ <div id="inner-horizontal-padding"></div>
+</div>
+<div id="outer-vertical-padding">
+ <div id="inner-vertical-padding"></div>
+</div>
+<script>
+document.body.offsetTop;
+test(() => {
+ let target = document.querySelector("#inner-horizontal-padding");
+ assert_equals(target.offsetWidth, 50);
+}, 'absolute positioned element should resolve padding left+right against container padding-box width' );
+
+test(() => {
+ let target = document.querySelector("#inner-vertical-padding");
+ assert_equals(target.offsetHeight, 100);
+}, 'absolute positioned element should resolve padding top+bottom against container padding-box width' );
+</script>
Modified: trunk/Source/WebCore/ChangeLog (278193 => 278194)
--- trunk/Source/WebCore/ChangeLog 2021-05-28 08:59:20 UTC (rev 278193)
+++ trunk/Source/WebCore/ChangeLog 2021-05-28 11:35:54 UTC (rev 278194)
@@ -1,3 +1,18 @@
+2021-05-28 Rob Buis <rb...@igalia.com>
+
+ Webkit doesn't calculate padding-top/-bottom in % correctly when parent has padding
+ https://bugs.webkit.org/show_bug.cgi?id=221202
+
+ Reviewed by Manuel Rego Casasnovas.
+
+ Absolute positioned elements should resolve %-ge padding against containing block padding-edge:
+ https://drafts.csswg.org/css-position-3/#absolute-positioning-containing-block
+
+ Test: imported/w3c/web-platform-tests/css/css-position/position-absolute-padding-percentage.html
+
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::containingBlockLogicalWidthForContent const):
+
2021-05-28 Martin Robinson <mrobin...@webkit.org>
More readily layout when scroll-snap properties change
Modified: trunk/Source/WebCore/rendering/RenderBox.cpp (278193 => 278194)
--- trunk/Source/WebCore/rendering/RenderBox.cpp 2021-05-28 08:59:20 UTC (rev 278193)
+++ trunk/Source/WebCore/rendering/RenderBox.cpp 2021-05-28 11:35:54 UTC (rev 278194)
@@ -2045,8 +2045,11 @@
if (hasOverridingContainingBlockContentLogicalWidth())
return overridingContainingBlockContentLogicalWidth().value_or(0_lu);
- if (RenderBlock* cb = containingBlock())
+ if (RenderBlock* cb = containingBlock()) {
+ if (isOutOfFlowPositioned())
+ return cb->clientLogicalWidth();
return cb->availableLogicalWidth();
+ }
return 0_lu;
}
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes