#include "third_party/blink/renderer/core/layout/layout_view.h"
#include <inttypes.h>
#include "base/time/time.h"
#include "build/build_config.h"
#include "third_party/blink/public/common/features.h"
#include "third_party/blink/public/mojom/scroll/scrollbar_mode.mojom-blink.h"
#include "third_party/blink/public/platform/platform.h"
#include "third_party/blink/public/web/web_print_page_description.h"
#include "third_party/blink/renderer/core/css/style_engine.h"
#include "third_party/blink/renderer/core/dom/document.h"
#include "third_party/blink/renderer/core/dom/element.h"
#include "third_party/blink/renderer/core/editing/frame_selection.h"
#include "third_party/blink/renderer/core/editing/markers/document_marker_controller.h"
#include "third_party/blink/renderer/core/frame/local_frame.h"
#include "third_party/blink/renderer/core/frame/local_frame_view.h"
#include "third_party/blink/renderer/core/frame/settings.h"
#include "third_party/blink/renderer/core/frame/visual_viewport.h"
#include "third_party/blink/renderer/core/html/html_iframe_element.h"
#include "third_party/blink/renderer/core/html/plugin_document.h"
#include "third_party/blink/renderer/core/input/event_handler.h"
#include "third_party/blink/renderer/core/inspector/inspector_trace_events.h"
#include "third_party/blink/renderer/core/layout/block_node.h"
#include "third_party/blink/renderer/core/layout/constraint_space_builder.h"
#include "third_party/blink/renderer/core/layout/geometry/transform_state.h"
#include "third_party/blink/renderer/core/layout/hit_test_cache.h"
#include "third_party/blink/renderer/core/layout/hit_test_result.h"
#include "third_party/blink/renderer/core/layout/layout_counter.h"
#include "third_party/blink/renderer/core/layout/layout_embedded_content.h"
#include "third_party/blink/renderer/core/layout/layout_result.h"
#include "third_party/blink/renderer/core/layout/layout_view_transition_root.h"
#include "third_party/blink/renderer/core/layout/length_utils.h"
#include "third_party/blink/renderer/core/layout/list/layout_inline_list_item.h"
#include "third_party/blink/renderer/core/layout/list/layout_list_item.h"
#include "third_party/blink/renderer/core/layout/physical_box_fragment.h"
#include "third_party/blink/renderer/core/layout/svg/layout_svg_root.h"
#include "third_party/blink/renderer/core/layout/svg/layout_svg_text.h"
#include "third_party/blink/renderer/core/page/chrome_client.h"
#include "third_party/blink/renderer/core/page/page.h"
#include "third_party/blink/renderer/core/page/scrolling/root_scroller_controller.h"
#include "third_party/blink/renderer/core/paint/paint_layer.h"
#include "third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h"
#include "third_party/blink/renderer/core/paint/view_painter.h"
#include "third_party/blink/renderer/core/svg/svg_document_extensions.h"
#include "third_party/blink/renderer/core/view_transition/view_transition.h"
#include "third_party/blink/renderer/core/view_transition/view_transition_utils.h"
#include "third_party/blink/renderer/platform/graphics/paint/paint_controller.h"
#include "third_party/blink/renderer/platform/instrumentation/histogram.h"
#include "third_party/blink/renderer/platform/instrumentation/tracing/trace_event.h"
#include "third_party/blink/renderer/platform/instrumentation/tracing/traced_value.h"
#include "ui/display/screen_info.h"
#include "ui/gfx/geometry/quad_f.h"
#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
#include "third_party/blink/renderer/platform/fonts/font_cache.h"
#endif
namespace blink {
LayoutView::LayoutView(ContainerNode* document)
: … { … }
LayoutView::~LayoutView() = default;
void LayoutView::Trace(Visitor* visitor) const { … }
bool LayoutView::HitTest(const HitTestLocation& location,
HitTestResult& result) { … }
bool LayoutView::HitTestNoLifecycleUpdate(const HitTestLocation& location,
HitTestResult& result) { … }
void LayoutView::ClearHitTestCache() { … }
LayoutUnit LayoutView::ComputeMinimumWidth() { … }
void LayoutView::AddChild(LayoutObject* new_child, LayoutObject* before_child) { … }
bool LayoutView::IsChildAllowed(LayoutObject* child,
const ComputedStyle&) const { … }
bool LayoutView::CanHaveChildren() const { … }
bool LayoutView::ShouldPlaceBlockDirectionScrollbarOnLogicalLeft() const { … }
PhysicalRect LayoutView::LocalVisualRectIgnoringVisibility() const { … }
void LayoutView::MapLocalToAncestor(const LayoutBoxModelObject* ancestor,
TransformState& transform_state,
MapCoordinatesFlags mode) const { … }
void LayoutView::MapAncestorToLocal(const LayoutBoxModelObject* ancestor,
TransformState& transform_state,
MapCoordinatesFlags mode) const { … }
LogicalSize LayoutView::InitialContainingBlockSize() const { … }
TrackedDescendantsMap& LayoutView::SvgTextDescendantsMap() { … }
void LayoutView::RegisterVariableLengthTransformResult(
const LayoutText& text,
const VariableLengthTransformResult& result) { … }
void LayoutView::UnregisterVariableLengthTransformResult(
const LayoutText& text) { … }
VariableLengthTransformResult LayoutView::GetVariableLengthTransformResult(
const LayoutText& text) { … }
LayoutViewTransitionRoot* LayoutView::GetViewTransitionRoot() const { … }
void LayoutView::InvalidatePaintForViewAndDescendants() { … }
bool LayoutView::MapToVisualRectInAncestorSpaceInternal(
const LayoutBoxModelObject* ancestor,
TransformState& transform_state,
VisualRectFlags visual_rect_flags) const { … }
PhysicalOffset LayoutView::OffsetForFixedPosition() const { … }
void LayoutView::AbsoluteQuads(Vector<gfx::QuadF>& quads,
MapCoordinatesFlags mode) const { … }
void LayoutView::CommitPendingSelection() { … }
bool LayoutView::ShouldUsePaginatedLayout(const Document& document) { … }
PhysicalRect LayoutView::ViewRect() const { … }
PhysicalRect LayoutView::OverflowClipRect(
const PhysicalOffset& location,
OverlayScrollbarClipBehavior overlay_scrollbar_clip_behavior) const { … }
void LayoutView::SetAutosizeScrollbarModes(mojom::blink::ScrollbarMode h_mode,
mojom::blink::ScrollbarMode v_mode) { … }
void LayoutView::CalculateScrollbarModes(
mojom::blink::ScrollbarMode& h_mode,
mojom::blink::ScrollbarMode& v_mode) const { … }
AtomicString LayoutView::NamedPageAtIndex(wtf_size_t page_index) const { … }
PhysicalRect LayoutView::DocumentRect() const { … }
gfx::Size LayoutView::GetLayoutSize(
IncludeScrollbarsInRect scrollbar_inclusion) const { … }
gfx::Size LayoutView::GetNonPrintingLayoutSize(
IncludeScrollbarsInRect scrollbar_inclusion) const { … }
int LayoutView::ViewLogicalWidth(
IncludeScrollbarsInRect scrollbar_inclusion) const { … }
int LayoutView::ViewLogicalHeight(
IncludeScrollbarsInRect scrollbar_inclusion) const { … }
LayoutUnit LayoutView::ViewLogicalHeightForPercentages() const { … }
const LayoutBox& LayoutView::RootBox() const { … }
void LayoutView::InvalidateSvgRootsWithRelativeLengthDescendents() { … }
void LayoutView::LayoutRoot() { … }
void LayoutView::UpdateAfterLayout() { … }
void LayoutView::UpdateHitTestResult(HitTestResult& result,
const PhysicalOffset& point) const { … }
bool LayoutView::BackgroundIsKnownToBeOpaqueInRect(const PhysicalRect&) const { … }
gfx::SizeF LayoutView::SmallViewportSizeForViewportUnits() const { … }
gfx::SizeF LayoutView::LargeViewportSizeForViewportUnits() const { … }
gfx::SizeF LayoutView::DynamicViewportSizeForViewportUnits() const { … }
gfx::SizeF LayoutView::DefaultPageAreaSize() const { … }
void LayoutView::WillBeDestroyed() { … }
void LayoutView::UpdateFromStyle() { … }
void LayoutView::StyleDidChange(StyleDifference diff,
const ComputedStyle* old_style) { … }
PhysicalRect LayoutView::DebugRect() const { … }
CompositingReasons LayoutView::AdditionalCompositingReasons() const { … }
bool LayoutView::AffectedByResizedInitialContainingBlock(
const LayoutResult& layout_result) { … }
void LayoutView::UpdateCountersAfterStyleChange(LayoutObject* container) { … }
bool LayoutView::HasTickmarks() const { … }
Vector<gfx::Rect> LayoutView::GetTickmarks() const { … }
bool LayoutView::IsFragmentationContextRoot() const { … }
}