From e88cac71427820510be1f4a68a468a7a03b0edd0 Mon Sep 17 00:00:00 2001 From: Oriol Brufau Date: Wed, 7 Dec 2022 12:25:34 +0000 Subject: [PATCH] Bug 1804406 - Prevent internal SVG elements from becoming query containers for size features. r=emilio Differential Revision: https://phabricator.services.mozilla.com/D164045 --- layout/style/nsStyleStruct.cpp | 7 +++++++ .../container-queries/never-match-container.html.ini | 3 --- .../svg-foreignobject-no-size-container.html.ini | 4 ---- 3 files changed, 7 insertions(+), 7 deletions(-) delete mode 100644 testing/web-platform/meta/css/css-contain/container-queries/never-match-container.html.ini delete mode 100644 testing/web-platform/meta/css/css-contain/container-queries/svg-foreignobject-no-size-container.html.ini diff --git a/layout/style/nsStyleStruct.cpp b/layout/style/nsStyleStruct.cpp index 95869d1180f3..bcac86f9242f 100644 --- a/layout/style/nsStyleStruct.cpp +++ b/layout/style/nsStyleStruct.cpp @@ -3729,6 +3729,13 @@ ContainSizeAxes nsStyleDisplay::GetContainSizeAxes( return ContainSizeAxes(false, false); } + // Internal SVG elements do not use the standard CSS box model, and wouldn't + // be affected by size containment. By disabling it we prevent them from + // becoming query containers for size features. + if (aFrame.HasAnyStateBits(NS_FRAME_SVG_LAYOUT)) { + return ContainSizeAxes(false, false); + } + // https://drafts.csswg.org/css-contain-2/#content-visibility // If this content skips its content via content-visibility, it always has // size containment. diff --git a/testing/web-platform/meta/css/css-contain/container-queries/never-match-container.html.ini b/testing/web-platform/meta/css/css-contain/container-queries/never-match-container.html.ini deleted file mode 100644 index beb0d0287ae0..000000000000 --- a/testing/web-platform/meta/css/css-contain/container-queries/never-match-container.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[never-match-container.html] - [Size @container query against svg element never matches] - expected: FAIL diff --git a/testing/web-platform/meta/css/css-contain/container-queries/svg-foreignobject-no-size-container.html.ini b/testing/web-platform/meta/css/css-contain/container-queries/svg-foreignobject-no-size-container.html.ini deleted file mode 100644 index 613003b1823c..000000000000 --- a/testing/web-platform/meta/css/css-contain/container-queries/svg-foreignobject-no-size-container.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[svg-foreignobject-no-size-container.html] - expected: - if (os == "android") and not debug: TIMEOUT - FAIL