aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/dom/element.rs9
-rw-r--r--tests/wpt/metadata/MANIFEST.json10
-rw-r--r--tests/wpt/web-platform-tests/css/cssom-view/scroll-no-layout-box.html21
3 files changed, 36 insertions, 4 deletions
diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs
index 4c7d4be40d8..c6224e7dc87 100644
--- a/components/script/dom/element.rs
+++ b/components/script/dom/element.rs
@@ -348,11 +348,12 @@ impl Element {
}
// https://drafts.csswg.org/cssom-view/#css-layout-box
- // Elements that have a computed value of the display property
- // that is table-column or table-column-group
- // FIXME: Currently, it is assumed to be true always
+ //
+ // We'll have no content box if there's no fragment for the node, and we use
+ // bounding_content_box, for simplicity, to detect this (rather than making a more specific
+ // query to the layout thread).
fn has_css_layout_box(&self) -> bool {
- true
+ self.upcast::<Node>().bounding_content_box().is_some()
}
// https://drafts.csswg.org/cssom-view/#potentially-scrollable
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 6c89d94229d..1e5937ddc0c 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -308101,6 +308101,12 @@
{}
]
],
+ "css/cssom-view/scroll-no-layout-box.html": [
+ [
+ "/css/cssom-view/scroll-no-layout-box.html",
+ {}
+ ]
+ ],
"css/cssom-view/scrollIntoView-shadow.html": [
[
"/css/cssom-view/scrollIntoView-shadow.html",
@@ -516726,6 +516732,10 @@
"966ebff69f91c0ea92f4bc2f943df9ef9dc3bcf9",
"testharness"
],
+ "css/cssom-view/scroll-no-layout-box.html": [
+ "8f423a757bd716c9c22e82fd2f35007d05982c08",
+ "testharness"
+ ],
"css/cssom-view/scrollIntoView-shadow.html": [
"3c4a18992105fd7bf19cbf29f0b6d80cb12ca98c",
"testharness"
diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scroll-no-layout-box.html b/tests/wpt/web-platform-tests/css/cssom-view/scroll-no-layout-box.html
new file mode 100644
index 00000000000..cc67ce76ed9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom-view/scroll-no-layout-box.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>cssom-view - Scrolling element with no layout box</title>
+<link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-element-scroll">
+<link rel="help" href="https://drafts.csswg.org/cssom-view/#css-layout-box">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<div style="display: none">
+ <div id="elem"></div>
+</div>
+
+<script>
+test(() => {
+ const elem = document.getElementById('elem');
+ elem.scroll(1, 2);
+
+ assert_equals(elem.scrollTop, 0, "scrollTop should be unchanged");
+ assert_equals(elem.scrollLeft, 0, "scrollLeft should be unchanged");
+}, "scrolling an element with no CSS layout box should have no effect");
+</script>