diff options
author | Smitty <me@iter.ca> | 2024-02-02 18:24:20 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-02 23:24:20 +0000 |
commit | 436e949296890b5388af4d5a48cf139ceaa2cc58 (patch) | |
tree | cd2b929dd02aeba8c535d8549424293733deac0e | |
parent | 95931de499d19927e43c277bb36d2d9e506e3dae (diff) | |
download | servo-436e949296890b5388af4d5a48cf139ceaa2cc58.tar.gz servo-436e949296890b5388af4d5a48cf139ceaa2cc58.zip |
layout: return None bounding box when no nodes found (#31253)
Signed-off-by: syvb <me@iter.ca>
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 |