aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOriol Brufau <obrufau@igalia.com>2024-09-13 12:47:50 +0200
committerGitHub <noreply@github.com>2024-09-13 10:47:50 +0000
commit52f89c95b9decf86b445f311b8c04412d8c1754f (patch)
treedfaff1f99d4412131e766f3ef8b2a440d7e65222
parent6e80a34d09e8bb22bdac5feeff4cf30b571987ff (diff)
downloadservo-52f89c95b9decf86b445f311b8c04412d8c1754f.tar.gz
servo-52f89c95b9decf86b445f311b8c04412d8c1754f.zip
Fix inset box-shadow to use the padding box (#33433)
As specified in https://drafts.csswg.org/css-backgrounds-3/#shadow-shape Signed-off-by: Oriol Brufau <obrufau@igalia.com>
-rw-r--r--components/layout_2020/display_list/mod.rs9
-rw-r--r--tests/wpt/meta/css/css-backgrounds/box-shadow-041.html.ini2
-rw-r--r--tests/wpt/meta/css/css-backgrounds/box-shadow-042.html.ini2
-rw-r--r--tests/wpt/meta/css/css-backgrounds/box-shadow-inset-without-border-radius.html.ini2
-rw-r--r--tests/wpt/meta/css/css-tables/box-shadow-001.html.ini2
5 files changed, 4 insertions, 13 deletions
diff --git a/components/layout_2020/display_list/mod.rs b/components/layout_2020/display_list/mod.rs
index c89a6f272ac..dcc912ef903 100644
--- a/components/layout_2020/display_list/mod.rs
+++ b/components/layout_2020/display_list/mod.rs
@@ -1028,18 +1028,17 @@ impl<'a> BuilderForBoxFragment<'a> {
}
// NB: According to CSS-BACKGROUNDS, box shadows render in *reverse* order (front to back).
- let border_rect = self.border_rect;
let common = builder.common_properties(MaxRect::max_rect(), &self.fragment.style);
for box_shadow in box_shadows.iter().rev() {
- let clip_mode = if box_shadow.inset {
- BoxShadowClipMode::Inset
+ let (rect, clip_mode) = if box_shadow.inset {
+ (*self.padding_rect(), BoxShadowClipMode::Inset)
} else {
- BoxShadowClipMode::Outset
+ (self.border_rect, BoxShadowClipMode::Outset)
};
builder.wr().push_box_shadow(
&common,
- border_rect,
+ rect,
LayoutVector2D::new(
box_shadow.base.horizontal.px(),
box_shadow.base.vertical.px(),
diff --git a/tests/wpt/meta/css/css-backgrounds/box-shadow-041.html.ini b/tests/wpt/meta/css/css-backgrounds/box-shadow-041.html.ini
deleted file mode 100644
index 8cc89a20010..00000000000
--- a/tests/wpt/meta/css/css-backgrounds/box-shadow-041.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[box-shadow-041.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-backgrounds/box-shadow-042.html.ini b/tests/wpt/meta/css/css-backgrounds/box-shadow-042.html.ini
deleted file mode 100644
index 85fe3c5242e..00000000000
--- a/tests/wpt/meta/css/css-backgrounds/box-shadow-042.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[box-shadow-042.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-backgrounds/box-shadow-inset-without-border-radius.html.ini b/tests/wpt/meta/css/css-backgrounds/box-shadow-inset-without-border-radius.html.ini
deleted file mode 100644
index 0e7d21410ad..00000000000
--- a/tests/wpt/meta/css/css-backgrounds/box-shadow-inset-without-border-radius.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[box-shadow-inset-without-border-radius.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-tables/box-shadow-001.html.ini b/tests/wpt/meta/css/css-tables/box-shadow-001.html.ini
deleted file mode 100644
index fc97f559495..00000000000
--- a/tests/wpt/meta/css/css-tables/box-shadow-001.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[box-shadow-001.html]
- expected: FAIL