diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index 179cb169c46..de34eb401e0 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -87,6 +87,7 @@ use crate::task::TaskOnce; use devtools_traits::AttrInfo; use dom_struct::dom_struct; use euclid::default::Rect; +use euclid::default::Size2D; use html5ever::serialize; use html5ever::serialize::SerializeOpts; use html5ever::serialize::TraversalScope; @@ -3292,7 +3293,25 @@ impl Element { { return rect; } - let rect = self.upcast::().client_rect(); + + let mut rect = self.upcast::().client_rect(); + let in_quirks_mode = self.node.owner_doc().quirks_mode() == QuirksMode::Quirks; + + if (in_quirks_mode && + self.node.owner_doc().GetBody().as_deref() == self.downcast::()) || + (!in_quirks_mode && *self.root_element() == *self) + { + let viewport_dimensions = self + .node + .owner_doc() + .window() + .window_size() + .initial_viewport + .round() + .to_i32(); + rect.size = Size2D::::new(viewport_dimensions.width, viewport_dimensions.height); + } + self.ensure_rare_data().client_rect = Some(window_from_node(self).cache_layout_value(rect)); rect } diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/client-props-root.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/client-props-root.html.ini deleted file mode 100644 index cbdf6bf109c..00000000000 --- a/tests/wpt/metadata-layout-2020/css/cssom-view/client-props-root.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[client-props-root.html] - [client* properties on the root element] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/scrolling-quirks-vs-nonquirks.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/scrolling-quirks-vs-nonquirks.html.ini index 993cbe0ae7f..ccfa50ad607 100644 --- a/tests/wpt/metadata-layout-2020/css/cssom-view/scrolling-quirks-vs-nonquirks.html.ini +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/scrolling-quirks-vs-nonquirks.html.ini @@ -2,9 +2,6 @@ [scrollingElement in non-quirks mode] expected: FAIL - [clientWidth/clientHeight on the HTML body element in quirks mode] - expected: FAIL - [scrollLeft/scrollRight of the content in quirks mode] expected: FAIL @@ -14,9 +11,6 @@ [scrollingElement in quirks mode] expected: FAIL - [clientWidth/clientHeight on the root element in non-quirks mode] - expected: FAIL - [scrollWidth/scrollHeight on the root element in quirks mode] expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/client-props-root.html.ini b/tests/wpt/metadata/css/cssom-view/client-props-root.html.ini deleted file mode 100644 index cbdf6bf109c..00000000000 --- a/tests/wpt/metadata/css/cssom-view/client-props-root.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[client-props-root.html] - [client* properties on the root element] - expected: FAIL - diff --git a/tests/wpt/metadata/css/cssom-view/scrolling-quirks-vs-nonquirks.html.ini b/tests/wpt/metadata/css/cssom-view/scrolling-quirks-vs-nonquirks.html.ini index 791c8776104..f98497c5a12 100644 --- a/tests/wpt/metadata/css/cssom-view/scrolling-quirks-vs-nonquirks.html.ini +++ b/tests/wpt/metadata/css/cssom-view/scrolling-quirks-vs-nonquirks.html.ini @@ -8,9 +8,6 @@ [scrollWidth/scrollHeight on the HTML body element in quirks mode] expected: FAIL - [clientWidth/clientHeight on the HTML body element in quirks mode] - expected: FAIL - [scrollLeft/scrollRight of the content in quirks mode] expected: FAIL @@ -20,9 +17,6 @@ [scrollWidth/scrollHeight on the root element in non-quirks mode] expected: FAIL - [clientWidth/clientHeight on the root element in non-quirks mode] - expected: FAIL - [scroll() on the HTML body element in non-quirks mode] expected: FAIL