From 52f89c95b9decf86b445f311b8c04412d8c1754f Mon Sep 17 00:00:00 2001 From: Oriol Brufau Date: Fri, 13 Sep 2024 12:47:50 +0200 Subject: [PATCH] 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 --- components/layout_2020/display_list/mod.rs | 9 ++++----- .../wpt/meta/css/css-backgrounds/box-shadow-041.html.ini | 2 -- .../wpt/meta/css/css-backgrounds/box-shadow-042.html.ini | 2 -- .../box-shadow-inset-without-border-radius.html.ini | 2 -- tests/wpt/meta/css/css-tables/box-shadow-001.html.ini | 2 -- 5 files changed, 4 insertions(+), 13 deletions(-) delete mode 100644 tests/wpt/meta/css/css-backgrounds/box-shadow-041.html.ini delete mode 100644 tests/wpt/meta/css/css-backgrounds/box-shadow-042.html.ini delete mode 100644 tests/wpt/meta/css/css-backgrounds/box-shadow-inset-without-border-radius.html.ini delete mode 100644 tests/wpt/meta/css/css-tables/box-shadow-001.html.ini 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