mirror of
https://github.com/RGBCube/serenity
synced 2025-07-13 17:07:34 +00:00
LibWeb: Replace to_px() with to_px_or_zero() in BlockFormattingContext
to_px() usage should be avoided because it might leak saturated (infinite) values into layout calculations.
This commit is contained in:
parent
57c1fe97fb
commit
041d02cbb1
1 changed files with 9 additions and 9 deletions
|
@ -135,7 +135,7 @@ void BlockFormattingContext::compute_width(Box const& box, AvailableSpace const&
|
||||||
// CSS2 does not define when a UA may put said element next to the float or by how much said element may
|
// CSS2 does not define when a UA may put said element next to the float or by how much said element may
|
||||||
// become narrower.
|
// become narrower.
|
||||||
auto intrusion = intrusion_by_floats_into_box(box, 0);
|
auto intrusion = intrusion_by_floats_into_box(box, 0);
|
||||||
auto remaining_width = available_space.width.to_px() - intrusion.left - intrusion.right;
|
auto remaining_width = available_space.width.to_px_or_zero() - intrusion.left - intrusion.right;
|
||||||
remaining_available_space.width = AvailableSize::make_definite(remaining_width);
|
remaining_available_space.width = AvailableSize::make_definite(remaining_width);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -163,7 +163,7 @@ void BlockFormattingContext::compute_width(Box const& box, AvailableSpace const&
|
||||||
|
|
||||||
auto const& computed_values = box.computed_values();
|
auto const& computed_values = box.computed_values();
|
||||||
|
|
||||||
auto width_of_containing_block = remaining_available_space.width.to_px();
|
auto width_of_containing_block = remaining_available_space.width.to_px_or_zero();
|
||||||
auto width_of_containing_block_as_length_for_resolve = remaining_available_space.width.is_definite() ? CSS::Length::make_px(width_of_containing_block) : CSS::Length::make_px(0);
|
auto width_of_containing_block_as_length_for_resolve = remaining_available_space.width.is_definite() ? CSS::Length::make_px(width_of_containing_block) : CSS::Length::make_px(0);
|
||||||
|
|
||||||
auto zero_value = CSS::Length::make_px(0);
|
auto zero_value = CSS::Length::make_px(0);
|
||||||
|
@ -271,7 +271,7 @@ void BlockFormattingContext::compute_width(Box const& box, AvailableSpace const&
|
||||||
// but this time using the value of 'min-width' as the computed value for 'width'.
|
// but this time using the value of 'min-width' as the computed value for 'width'.
|
||||||
if (!computed_values.min_width().is_auto()) {
|
if (!computed_values.min_width().is_auto()) {
|
||||||
auto min_width = calculate_inner_width(box, remaining_available_space.width, computed_values.min_width());
|
auto min_width = calculate_inner_width(box, remaining_available_space.width, computed_values.min_width());
|
||||||
auto used_width_px = used_width.is_auto() ? remaining_available_space.width.to_px() : used_width.to_px(box);
|
auto used_width_px = used_width.is_auto() ? remaining_available_space.width : AvailableSize::make_definite(used_width.to_px(box));
|
||||||
if (used_width_px < min_width.to_px(box)) {
|
if (used_width_px < min_width.to_px(box)) {
|
||||||
used_width = try_compute_width(min_width);
|
used_width = try_compute_width(min_width);
|
||||||
}
|
}
|
||||||
|
@ -290,7 +290,7 @@ void BlockFormattingContext::compute_width_for_floating_box(Box const& box, Avai
|
||||||
auto& computed_values = box.computed_values();
|
auto& computed_values = box.computed_values();
|
||||||
|
|
||||||
auto zero_value = CSS::Length::make_px(0);
|
auto zero_value = CSS::Length::make_px(0);
|
||||||
auto width_of_containing_block = available_space.width.to_px();
|
auto width_of_containing_block = available_space.width.to_px_or_zero();
|
||||||
auto width_of_containing_block_as_length_for_resolve = CSS::Length::make_px(width_of_containing_block);
|
auto width_of_containing_block_as_length_for_resolve = CSS::Length::make_px(width_of_containing_block);
|
||||||
if (!available_space.width.is_definite())
|
if (!available_space.width.is_definite())
|
||||||
width_of_containing_block_as_length_for_resolve = CSS::Length::make_px(0);
|
width_of_containing_block_as_length_for_resolve = CSS::Length::make_px(0);
|
||||||
|
@ -367,7 +367,7 @@ void BlockFormattingContext::compute_width_for_block_level_replaced_element_in_n
|
||||||
auto& computed_values = box.computed_values();
|
auto& computed_values = box.computed_values();
|
||||||
|
|
||||||
auto zero_value = CSS::Length::make_px(0);
|
auto zero_value = CSS::Length::make_px(0);
|
||||||
auto width_of_containing_block = available_space.width.to_px();
|
auto width_of_containing_block = available_space.width.to_px_or_zero();
|
||||||
auto width_of_containing_block_as_length_for_resolve = CSS::Length::make_px(width_of_containing_block);
|
auto width_of_containing_block_as_length_for_resolve = CSS::Length::make_px(width_of_containing_block);
|
||||||
if (!available_space.width.is_definite())
|
if (!available_space.width.is_definite())
|
||||||
width_of_containing_block_as_length_for_resolve = CSS::Length::make_px(0);
|
width_of_containing_block_as_length_for_resolve = CSS::Length::make_px(0);
|
||||||
|
@ -403,7 +403,7 @@ CSSPixels BlockFormattingContext::compute_table_box_width_inside_table_wrapper(B
|
||||||
|
|
||||||
auto const& computed_values = box.computed_values();
|
auto const& computed_values = box.computed_values();
|
||||||
|
|
||||||
auto width_of_containing_block = available_space.width.to_px();
|
auto width_of_containing_block = available_space.width.to_px_or_zero();
|
||||||
auto width_of_containing_block_as_length_for_resolve = available_space.width.is_definite() ? CSS::Length::make_px(width_of_containing_block) : CSS::Length::make_px(0);
|
auto width_of_containing_block_as_length_for_resolve = available_space.width.is_definite() ? CSS::Length::make_px(width_of_containing_block) : CSS::Length::make_px(0);
|
||||||
|
|
||||||
auto zero_value = CSS::Length::make_px(0);
|
auto zero_value = CSS::Length::make_px(0);
|
||||||
|
@ -442,7 +442,7 @@ CSSPixels BlockFormattingContext::compute_table_box_width_inside_table_wrapper(B
|
||||||
void BlockFormattingContext::compute_height(Box const& box, AvailableSpace const& available_space)
|
void BlockFormattingContext::compute_height(Box const& box, AvailableSpace const& available_space)
|
||||||
{
|
{
|
||||||
auto const& computed_values = box.computed_values();
|
auto const& computed_values = box.computed_values();
|
||||||
auto containing_block_height = CSS::Length::make_px(available_space.height.to_px());
|
auto containing_block_height = CSS::Length::make_px(available_space.height.to_px_or_zero());
|
||||||
|
|
||||||
// Then work out what the height is, based on box type and CSS properties.
|
// Then work out what the height is, based on box type and CSS properties.
|
||||||
CSSPixels height = 0;
|
CSSPixels height = 0;
|
||||||
|
@ -850,7 +850,7 @@ void BlockFormattingContext::place_block_level_element_in_normal_flow_horizontal
|
||||||
auto& box_state = m_state.get_mutable(child_box);
|
auto& box_state = m_state.get_mutable(child_box);
|
||||||
|
|
||||||
CSSPixels x = 0;
|
CSSPixels x = 0;
|
||||||
CSSPixels available_width_within_containing_block = available_space.width.to_px();
|
CSSPixels available_width_within_containing_block = available_space.width.to_px_or_zero();
|
||||||
|
|
||||||
if ((!m_left_floats.current_boxes.is_empty() || !m_right_floats.current_boxes.is_empty())
|
if ((!m_left_floats.current_boxes.is_empty() || !m_right_floats.current_boxes.is_empty())
|
||||||
&& creates_block_formatting_context(child_box)) {
|
&& creates_block_formatting_context(child_box)) {
|
||||||
|
@ -899,7 +899,7 @@ void BlockFormattingContext::layout_floating_box(Box const& box, BlockContainer
|
||||||
VERIFY(box.is_floating());
|
VERIFY(box.is_floating());
|
||||||
|
|
||||||
auto& box_state = m_state.get_mutable(box);
|
auto& box_state = m_state.get_mutable(box);
|
||||||
CSSPixels width_of_containing_block = available_space.width.to_px();
|
CSSPixels width_of_containing_block = available_space.width.to_px_or_zero();
|
||||||
|
|
||||||
resolve_vertical_box_model_metrics(box);
|
resolve_vertical_box_model_metrics(box);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue