1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 12:47:45 +00:00

LibWeb: Change viewport ownership from BrowsingContext to Navigable

This commit is contained in:
Aliaksandr Kalenik 2023-08-22 16:00:42 +02:00 committed by Andreas Kling
parent 4356d37b2c
commit dd7bba66ed
23 changed files with 196 additions and 129 deletions

View file

@ -137,7 +137,7 @@ Length::ResolutionContext Length::ResolutionContext::for_layout_node(Layout::Nod
VERIFY(root_element);
VERIFY(root_element->layout_node());
return Length::ResolutionContext {
.viewport_rect = node.browsing_context().viewport_rect(),
.viewport_rect = node.navigable()->viewport_rect(),
.font_metrics = { node.computed_values().font_size(), node.font().pixel_metrics(), node.line_height() },
.root_font_metrics = { root_element->layout_node()->computed_values().font_size(), root_element->layout_node()->font().pixel_metrics(), root_element->layout_node()->line_height() },
};
@ -182,7 +182,7 @@ CSSPixels Length::to_px(Layout::Node const& layout_node) const
}
VERIFY(is_viewport_relative());
auto const& viewport_rect = layout_node.document().browsing_context()->viewport_rect();
auto const& viewport_rect = layout_node.document().viewport_rect();
return viewport_relative_length_to_px(viewport_rect);
}

View file

@ -2617,8 +2617,8 @@ void StyleComputer::invalidate_rule_cache()
CSSPixelRect StyleComputer::viewport_rect() const
{
if (auto const* browsing_context = document().browsing_context())
return browsing_context->viewport_rect();
if (auto const navigable = document().navigable())
return navigable->viewport_rect();
return {};
}

View file

@ -41,8 +41,8 @@ void ImageStyleValue::load_any_resources(DOM::Document& document)
return;
// FIXME: Do less than a full repaint if possible?
if (auto* browsing_context = m_document->browsing_context())
browsing_context->set_needs_display();
if (auto navigable = m_document->navigable())
navigable->set_needs_display();
auto image_data = m_image_request->image_data();
if (image_data->is_animated() && image_data->frame_count() > 1) {

View file

@ -46,8 +46,8 @@ double VisualViewport::offset_left() const
return 0;
// 2. Otherwise, return the offset of the left edge of the visual viewport from the left edge of the layout viewport.
VERIFY(m_document->browsing_context());
return m_document->browsing_context()->viewport_rect().left().to_double();
VERIFY(m_document->navigable());
return m_document->viewport_rect().left().to_double();
}
// https://drafts.csswg.org/cssom-view/#dom-visualviewport-offsettop
@ -58,8 +58,8 @@ double VisualViewport::offset_top() const
return 0;
// 2. Otherwise, return the offset of the top edge of the visual viewport from the top edge of the layout viewport.
VERIFY(m_document->browsing_context());
return m_document->browsing_context()->viewport_rect().top().to_double();
VERIFY(m_document->navigable());
return m_document->viewport_rect().top().to_double();
}
// https://drafts.csswg.org/cssom-view/#dom-visualviewport-pageleft
@ -95,8 +95,8 @@ double VisualViewport::width() const
// 2. Otherwise, return the width of the visual viewport
// FIXME: excluding the width of any rendered vertical classic scrollbar that is fixed to the visual viewport.
VERIFY(m_document->browsing_context());
return m_document->browsing_context()->viewport_rect().width().to_double();
VERIFY(m_document->navigable());
return m_document->viewport_rect().width().to_double();
}
// https://drafts.csswg.org/cssom-view/#dom-visualviewport-height
@ -108,8 +108,8 @@ double VisualViewport::height() const
// 2. Otherwise, return the height of the visual viewport
// FIXME: excluding the height of any rendered vertical classic scrollbar that is fixed to the visual viewport.
VERIFY(m_document->browsing_context());
return m_document->browsing_context()->viewport_rect().height().to_double();
VERIFY(m_document->navigable());
return m_document->viewport_rect().height().to_double();
}
// https://drafts.csswg.org/cssom-view/#dom-visualviewport-scale