aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSmitty <me@iter.ca>2024-02-02 18:24:20 -0500
committerGitHub <noreply@github.com>2024-02-02 23:24:20 +0000
commit436e949296890b5388af4d5a48cf139ceaa2cc58 (patch)
treecd2b929dd02aeba8c535d8549424293733deac0e
parent95931de499d19927e43c277bb36d2d9e506e3dae (diff)
downloadservo-436e949296890b5388af4d5a48cf139ceaa2cc58.tar.gz
servo-436e949296890b5388af4d5a48cf139ceaa2cc58.zip
layout: return None bounding box when no nodes found (#31253)
Signed-off-by: syvb <me@iter.ca>
-rw-r--r--components/layout_2020/fragment_tree/fragment_tree.rs28
-rw-r--r--components/layout_2020/query.rs2
-rw-r--r--tests/wpt/meta/html/semantics/embedded-content/the-img-element/not-rendered-dimension-getter.html.ini3
-rw-r--r--tests/wpt/webgl/meta/conformance/textures/misc/origin-clean-conformance-offscreencanvas.html.ini3
-rw-r--r--tests/wpt/webgl/meta/conformance/textures/misc/origin-clean-conformance.html.ini3
-rw-r--r--tests/wpt/webgl/meta/conformance2/textures/misc/origin-clean-conformance-offscreencanvas.html.ini3
6 files changed, 18 insertions, 24 deletions
diff --git a/components/layout_2020/fragment_tree/fragment_tree.rs b/components/layout_2020/fragment_tree/fragment_tree.rs
index 3244a8bd2bb..5e50a54768c 100644
--- a/components/layout_2020/fragment_tree/fragment_tree.rs
+++ b/components/layout_2020/fragment_tree/fragment_tree.rs
@@ -93,8 +93,9 @@ impl FragmentTree {
});
}
- pub fn get_content_box_for_node(&self, requested_node: OpaqueNode) -> Rect<Au> {
+ pub fn get_content_box_for_node(&self, requested_node: OpaqueNode) -> Option<Rect<Au>> {
let mut bounding_box = PhysicalRect::zero();
+ let mut found_any_nodes = false;
let tag_to_find = Tag::new(requested_node);
self.find(|fragment, _, containing_block| {
if fragment.tag() != Some(tag_to_find) {
@@ -114,22 +115,27 @@ impl FragmentTree {
Fragment::Anonymous(_) => return None,
};
+ found_any_nodes = true;
bounding_box = fragment_relative_rect
.translate(containing_block.origin.to_vector())
.union(&bounding_box);
None::<()>
});
- Rect::new(
- Point2D::new(
- Au::from_f32_px(bounding_box.origin.x.px()),
- Au::from_f32_px(bounding_box.origin.y.px()),
- ),
- Size2D::new(
- Au::from_f32_px(bounding_box.size.width.px()),
- Au::from_f32_px(bounding_box.size.height.px()),
- ),
- )
+ if found_any_nodes {
+ Some(Rect::new(
+ Point2D::new(
+ Au::from_f32_px(bounding_box.origin.x.px()),
+ Au::from_f32_px(bounding_box.origin.y.px()),
+ ),
+ Size2D::new(
+ Au::from_f32_px(bounding_box.size.width.px()),
+ Au::from_f32_px(bounding_box.size.height.px()),
+ ),
+ ))
+ } else {
+ None
+ }
}
pub fn get_border_dimensions_for_node(&self, requested_node: OpaqueNode) -> Rect<i32> {
diff --git a/components/layout_2020/query.rs b/components/layout_2020/query.rs
index 198b46f0de7..dc0a57656e1 100644
--- a/components/layout_2020/query.rs
+++ b/components/layout_2020/query.rs
@@ -173,7 +173,7 @@ pub fn process_content_box_request(
requested_node: OpaqueNode,
fragment_tree: Option<Arc<FragmentTree>>,
) -> Option<Rect<Au>> {
- Some(fragment_tree?.get_content_box_for_node(requested_node))
+ fragment_tree?.get_content_box_for_node(requested_node)
}
pub fn process_content_boxes_request(_requested_node: OpaqueNode) -> Vec<Rect<Au>> {
diff --git a/tests/wpt/meta/html/semantics/embedded-content/the-img-element/not-rendered-dimension-getter.html.ini b/tests/wpt/meta/html/semantics/embedded-content/the-img-element/not-rendered-dimension-getter.html.ini
deleted file mode 100644
index 6a760d3cb9e..00000000000
--- a/tests/wpt/meta/html/semantics/embedded-content/the-img-element/not-rendered-dimension-getter.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[not-rendered-dimension-getter.html]
- [Image intrinsic dimensions are returned if the image isn't rendered]
- expected: FAIL
diff --git a/tests/wpt/webgl/meta/conformance/textures/misc/origin-clean-conformance-offscreencanvas.html.ini b/tests/wpt/webgl/meta/conformance/textures/misc/origin-clean-conformance-offscreencanvas.html.ini
index 4e4810ca509..278f0d1eb20 100644
--- a/tests/wpt/webgl/meta/conformance/textures/misc/origin-clean-conformance-offscreencanvas.html.ini
+++ b/tests/wpt/webgl/meta/conformance/textures/misc/origin-clean-conformance-offscreencanvas.html.ini
@@ -2,6 +2,3 @@
expected: ERROR
[WebGL test #2: Unable to fetch WebGL rendering context for Canvas]
expected: FAIL
-
- [WebGL test #0: img was loaded]
- expected: FAIL
diff --git a/tests/wpt/webgl/meta/conformance/textures/misc/origin-clean-conformance.html.ini b/tests/wpt/webgl/meta/conformance/textures/misc/origin-clean-conformance.html.ini
deleted file mode 100644
index dce0ae5f7d8..00000000000
--- a/tests/wpt/webgl/meta/conformance/textures/misc/origin-clean-conformance.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[origin-clean-conformance.html]
- [WebGL test #0: img was loaded]
- expected: FAIL
diff --git a/tests/wpt/webgl/meta/conformance2/textures/misc/origin-clean-conformance-offscreencanvas.html.ini b/tests/wpt/webgl/meta/conformance2/textures/misc/origin-clean-conformance-offscreencanvas.html.ini
index 4e4810ca509..278f0d1eb20 100644
--- a/tests/wpt/webgl/meta/conformance2/textures/misc/origin-clean-conformance-offscreencanvas.html.ini
+++ b/tests/wpt/webgl/meta/conformance2/textures/misc/origin-clean-conformance-offscreencanvas.html.ini
@@ -2,6 +2,3 @@
expected: ERROR
[WebGL test #2: Unable to fetch WebGL rendering context for Canvas]
expected: FAIL
-
- [WebGL test #0: img was loaded]
- expected: FAIL