aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/dom/element.rs20
-rw-r--r--tests/wpt/meta-legacy-layout/css/cssom-view/subpixel-sizes-and-offsets.tentative.html.ini3
-rw-r--r--tests/wpt/meta/css/cssom-view/subpixel-sizes-and-offsets.tentative.html.ini15
3 files changed, 8 insertions, 30 deletions
diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs
index e607f27c232..6348bb412a9 100644
--- a/components/script/dom/element.rs
+++ b/components/script/dom/element.rs
@@ -3372,30 +3372,26 @@ impl<'a> SelectorsElement for DomRoot<Element> {
impl Element {
fn client_rect(&self) -> Rect<i32> {
+ let doc = self.node.owner_doc();
+
if let Some(rect) = self
.rare_data()
.as_ref()
.and_then(|data| data.client_rect.as_ref())
.and_then(|rect| rect.get().ok())
{
- return rect;
+ if doc.needs_reflow().is_none() {
+ return rect;
+ }
}
let mut rect = self.upcast::<Node>().client_rect();
- let in_quirks_mode = self.node.owner_doc().quirks_mode() == QuirksMode::Quirks;
+ let in_quirks_mode = doc.quirks_mode() == QuirksMode::Quirks;
- if (in_quirks_mode &&
- self.node.owner_doc().GetBody().as_deref() == self.downcast::<HTMLElement>()) ||
+ if (in_quirks_mode && doc.GetBody().as_deref() == self.downcast::<HTMLElement>()) ||
(!in_quirks_mode && *self.root_element() == *self)
{
- let viewport_dimensions = self
- .node
- .owner_doc()
- .window()
- .window_size()
- .initial_viewport
- .round()
- .to_i32();
+ let viewport_dimensions = doc.window().window_size().initial_viewport.round().to_i32();
rect.size = Size2D::<i32>::new(viewport_dimensions.width, viewport_dimensions.height);
}
diff --git a/tests/wpt/meta-legacy-layout/css/cssom-view/subpixel-sizes-and-offsets.tentative.html.ini b/tests/wpt/meta-legacy-layout/css/cssom-view/subpixel-sizes-and-offsets.tentative.html.ini
index e021cff99f4..949df1ceeae 100644
--- a/tests/wpt/meta-legacy-layout/css/cssom-view/subpixel-sizes-and-offsets.tentative.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/cssom-view/subpixel-sizes-and-offsets.tentative.html.ini
@@ -5,9 +5,6 @@
[clientWidth, offsetWidth and scrollWidth round 5.9 to 6]
expected: FAIL
- [clientHeight, offsetHeight and scrollHeight round 5.1 to 5]
- expected: FAIL
-
[clientHeight, offsetHeight and scrollHeight round 5.5 to 6]
expected: FAIL
diff --git a/tests/wpt/meta/css/cssom-view/subpixel-sizes-and-offsets.tentative.html.ini b/tests/wpt/meta/css/cssom-view/subpixel-sizes-and-offsets.tentative.html.ini
index e021cff99f4..ddddc14630c 100644
--- a/tests/wpt/meta/css/cssom-view/subpixel-sizes-and-offsets.tentative.html.ini
+++ b/tests/wpt/meta/css/cssom-view/subpixel-sizes-and-offsets.tentative.html.ini
@@ -1,19 +1,4 @@
[subpixel-sizes-and-offsets.tentative.html]
- [clientWidth, offsetWidth and scrollWidth round 5.5 to 6]
- expected: FAIL
-
- [clientWidth, offsetWidth and scrollWidth round 5.9 to 6]
- expected: FAIL
-
- [clientHeight, offsetHeight and scrollHeight round 5.1 to 5]
- expected: FAIL
-
- [clientHeight, offsetHeight and scrollHeight round 5.5 to 6]
- expected: FAIL
-
- [clientHeight, offsetHeight and scrollHeight round 5.9 to 6]
- expected: FAIL
-
[clientLeft and clientTop don't round 44.9]
expected: FAIL