chromium/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc

/*
 * Copyright (C) 2014 Google Inc. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 *
 *     * Redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above
 * copyright notice, this list of conditions and the following disclaimer
 * in the documentation and/or other materials provided with the
 * distribution.
 *     * Neither the name of Google Inc. nor the names of its
 * contributors may be used to endorse or promote products derived from
 * this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#include "third_party/blink/renderer/core/frame/web_frame_widget_impl.h"

#include <memory>
#include <utility>

#include "base/auto_reset.h"
#include "base/debug/crash_logging.h"
#include "base/debug/dump_without_crashing.h"
#include "base/functional/callback_helpers.h"
#include "base/functional/function_ref.h"
#include "base/metrics/histogram_macros.h"
#include "base/numerics/safe_conversions.h"
#include "base/task/single_thread_task_runner.h"
#include "base/time/time.h"
#include "base/types/optional_ref.h"
#include "build/build_config.h"
#include "cc/animation/animation_host.h"
#include "cc/base/features.h"
#include "cc/input/browser_controls_offset_tags_info.h"
#include "cc/trees/compositor_commit_data.h"
#include "cc/trees/layer_tree_host.h"
#include "cc/trees/swap_promise.h"
#include "third_party/blink/public/common/features.h"
#include "third_party/blink/public/common/page/page_zoom.h"
#include "third_party/blink/public/mojom/frame/intrinsic_sizing_info.mojom-blink.h"
#include "third_party/blink/public/mojom/input/input_handler.mojom-blink.h"
#include "third_party/blink/public/mojom/input/touch_event.mojom-blink.h"
#include "third_party/blink/public/platform/platform.h"
#include "third_party/blink/public/web/web_autofill_client.h"
#include "third_party/blink/public/web/web_local_frame.h"
#include "third_party/blink/public/web/web_local_frame_client.h"
#include "third_party/blink/public/web/web_non_composited_widget_client.h"
#include "third_party/blink/public/web/web_performance_metrics_for_reporting.h"
#include "third_party/blink/public/web/web_plugin.h"
#include "third_party/blink/public/web/web_settings.h"
#include "third_party/blink/public/web/web_view_client.h"
#include "third_party/blink/renderer/core/accessibility/histogram_macros.h"
#include "third_party/blink/renderer/core/content_capture/content_capture_manager.h"
#include "third_party/blink/renderer/core/core_initializer.h"
#include "third_party/blink/renderer/core/css/properties/longhands.h"
#include "third_party/blink/renderer/core/dom/element.h"
#include "third_party/blink/renderer/core/dom/focus_params.h"
#include "third_party/blink/renderer/core/dom/layout_tree_builder_traversal.h"
#include "third_party/blink/renderer/core/editing/editing_utilities.h"
#include "third_party/blink/renderer/core/editing/ephemeral_range.h"
#include "third_party/blink/renderer/core/editing/frame_selection.h"
#include "third_party/blink/renderer/core/editing/ime/edit_context.h"
#include "third_party/blink/renderer/core/editing/ime/input_method_controller.h"
#include "third_party/blink/renderer/core/editing/ime/stylus_writing_gesture.h"
#include "third_party/blink/renderer/core/editing/selection_template.h"
#include "third_party/blink/renderer/core/events/current_input_event.h"
#include "third_party/blink/renderer/core/events/pointer_event_factory.h"
#include "third_party/blink/renderer/core/events/web_input_event_conversion.h"
#include "third_party/blink/renderer/core/events/wheel_event.h"
#include "third_party/blink/renderer/core/exported/web_dev_tools_agent_impl.h"
#include "third_party/blink/renderer/core/exported/web_plugin_container_impl.h"
#include "third_party/blink/renderer/core/exported/web_settings_impl.h"
#include "third_party/blink/renderer/core/exported/web_view_impl.h"
#include "third_party/blink/renderer/core/frame/local_dom_window.h"
#include "third_party/blink/renderer/core/frame/local_frame_ukm_aggregator.h"
#include "third_party/blink/renderer/core/frame/local_frame_view.h"
#include "third_party/blink/renderer/core/frame/remote_frame_client.h"
#include "third_party/blink/renderer/core/frame/screen.h"
#include "third_party/blink/renderer/core/frame/screen_metrics_emulator.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/frame/web_feature.h"
#include "third_party/blink/renderer/core/frame/web_local_frame_impl.h"
#include "third_party/blink/renderer/core/html/fenced_frame/document_fenced_frames.h"
#include "third_party/blink/renderer/core/html/fenced_frame/html_fenced_frame_element.h"
#include "third_party/blink/renderer/core/html/forms/text_control_element.h"
#include "third_party/blink/renderer/core/html/html_frame_owner_element.h"
#include "third_party/blink/renderer/core/html/html_plugin_element.h"
#include "third_party/blink/renderer/core/html/plugin_document.h"
#include "third_party/blink/renderer/core/input/context_menu_allowed_scope.h"
#include "third_party/blink/renderer/core/input/event_handler.h"
#include "third_party/blink/renderer/core/input/touch_action_util.h"
#include "third_party/blink/renderer/core/layout/hit_test_location.h"
#include "third_party/blink/renderer/core/layout/hit_test_request.h"
#include "third_party/blink/renderer/core/layout/layout_box.h"
#include "third_party/blink/renderer/core/layout/layout_embedded_content.h"
#include "third_party/blink/renderer/core/layout/layout_object.h"
#include "third_party/blink/renderer/core/layout/layout_shift_tracker.h"
#include "third_party/blink/renderer/core/layout/layout_text.h"
#include "third_party/blink/renderer/core/loader/anchor_element_interaction_tracker.h"
#include "third_party/blink/renderer/core/loader/document_loader.h"
#include "third_party/blink/renderer/core/loader/interactive_detector.h"
#include "third_party/blink/renderer/core/page/context_menu_controller.h"
#include "third_party/blink/renderer/core/page/drag_actions.h"
#include "third_party/blink/renderer/core/page/drag_data.h"
#include "third_party/blink/renderer/core/page/focus_controller.h"
#include "third_party/blink/renderer/core/page/link_highlight.h"
#include "third_party/blink/renderer/core/page/page.h"
#include "third_party/blink/renderer/core/page/page_animator.h"
#include "third_party/blink/renderer/core/page/pointer_lock_controller.h"
#include "third_party/blink/renderer/core/page/scrolling/fragment_anchor.h"
#include "third_party/blink/renderer/core/page/validation_message_client.h"
#include "third_party/blink/renderer/core/page/viewport_description.h"
#include "third_party/blink/renderer/core/paint/timing/first_meaningful_paint_detector.h"
#include "third_party/blink/renderer/core/paint/timing/paint_timing_detector.h"
#include "third_party/blink/renderer/core/probe/core_probes.h"
#include "third_party/blink/renderer/core/scroll/scroll_into_view_util.h"
#include "third_party/blink/renderer/core/scroll/scrollbar_theme.h"
#include "third_party/blink/renderer/core/timing/dom_window_performance.h"
#include "third_party/blink/renderer/core/timing/window_performance.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/animation_worklet_mutator_dispatcher_impl.h"
#include "third_party/blink/renderer/platform/graphics/compositor_mutator_client.h"
#include "third_party/blink/renderer/platform/graphics/paint_worklet_paint_dispatcher.h"
#include "third_party/blink/renderer/platform/heap/cross_thread_handle.h"
#include "third_party/blink/renderer/platform/heap/persistent.h"
#include "third_party/blink/renderer/platform/instrumentation/use_counter.h"
#include "third_party/blink/renderer/platform/keyboard_codes.h"
#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
#include "third_party/blink/renderer/platform/scheduler/public/non_main_thread.h"
#include "third_party/blink/renderer/platform/scheduler/public/post_cross_thread_task.h"
#include "third_party/blink/renderer/platform/widget/input/main_thread_event_queue.h"
#include "third_party/blink/renderer/platform/widget/input/widget_input_handler_manager.h"
#include "third_party/blink/renderer/platform/widget/widget_base.h"
#include "third_party/blink/renderer/platform/wtf/cross_thread_copier_base.h"
#include "third_party/blink/renderer/platform/wtf/cross_thread_functional.h"
#include "third_party/blink/renderer/platform/wtf/functional.h"
#include "ui/base/dragdrop/mojom/drag_drop_types.mojom-blink.h"
#include "ui/base/ui_base_types.h"
#include "ui/gfx/geometry/point_conversions.h"

#if BUILDFLAG(IS_MAC)
#include "third_party/blink/renderer/core/editing/substring_util.h"
#include "third_party/blink/renderer/platform/fonts/mac/attributed_string_type_converter.h"
#include "ui/base/mojom/attributed_string.mojom-blink.h"
#include "ui/gfx/geometry/point.h"
#endif

namespace WTF {

template <>
struct CrossThreadCopier<blink::WebFrameWidgetImpl::PromiseCallbacks>
    : public CrossThreadCopierByValuePassThrough<
          blink::WebFrameWidgetImpl::PromiseCallbacks> {};

}  // namespace WTF

namespace blink {

namespace {

DragOperation;

void ForEachLocalFrameControlledByWidget(
    LocalFrame* frame,
    base::FunctionRef<void(WebLocalFrameImpl*)> callback) {}

// Iterate the remote children that will be controlled by the widget. Skip over
// any RemoteFrames have have another LocalFrame root as their parent.
void ForEachRemoteFrameChildrenControlledByWidget(
    Frame* frame,
    base::FunctionRef<void(RemoteFrame*)> callback) {}

viz::FrameSinkId GetRemoteFrameSinkId(const HitTestResult& result) {}

bool IsElementNotNullAndEditable(Element* element) {}

bool& InputDisabledPerBrowsingContextGroup(
    const base::UnguessableToken& token) {}

}  // namespace

// WebFrameWidget ------------------------------------------------------------

bool WebFrameWidgetImpl::ignore_input_events_ =;

// static
void WebFrameWidgetImpl::SetIgnoreInputEvents(
    const base::UnguessableToken& browsing_context_group_token,
    bool value) {}

// static
bool WebFrameWidgetImpl::IgnoreInputEvents(
    const base::UnguessableToken& browsing_context_group_token) {}

WebFrameWidgetImpl::WebFrameWidgetImpl(
    base::PassKey<WebLocalFrame>,
    CrossVariantMojoAssociatedRemote<mojom::blink::FrameWidgetHostInterfaceBase>
        frame_widget_host,
    CrossVariantMojoAssociatedReceiver<mojom::blink::FrameWidgetInterfaceBase>
        frame_widget,
    CrossVariantMojoAssociatedRemote<mojom::blink::WidgetHostInterfaceBase>
        widget_host,
    CrossVariantMojoAssociatedReceiver<mojom::blink::WidgetInterfaceBase>
        widget,
    scoped_refptr<base::SingleThreadTaskRunner> task_runner,
    const viz::FrameSinkId& frame_sink_id,
    bool hidden,
    bool never_composited,
    bool is_for_child_local_root,
    bool is_for_nested_main_frame,
    bool is_for_scalable_page)
    :{}

WebFrameWidgetImpl::~WebFrameWidgetImpl() {}

void WebFrameWidgetImpl::BindLocalRoot(WebLocalFrame& local_root) {}

bool WebFrameWidgetImpl::ForTopMostMainFrame() const {}

void WebFrameWidgetImpl::Close() {}

WebLocalFrame* WebFrameWidgetImpl::LocalRoot() const {}

bool WebFrameWidgetImpl::RequestedMainFramePending() {}

ukm::UkmRecorder* WebFrameWidgetImpl::MainFrameUkmRecorder() {}
ukm::SourceId WebFrameWidgetImpl::MainFrameUkmSourceId() {}

gfx::Rect WebFrameWidgetImpl::ComputeBlockBound(
    const gfx::Point& point_in_root_frame,
    bool ignore_clipping) const {}

void WebFrameWidgetImpl::DragTargetDragEnter(
    const WebDragData& web_drag_data,
    const gfx::PointF& point_in_viewport,
    const gfx::PointF& screen_point,
    DragOperationsMask operations_allowed,
    uint32_t key_modifiers,
    DragTargetDragEnterCallback callback) {}

void WebFrameWidgetImpl::DragTargetDragOver(
    const gfx::PointF& point_in_viewport,
    const gfx::PointF& screen_point,
    DragOperationsMask operations_allowed,
    uint32_t key_modifiers,
    DragTargetDragOverCallback callback) {}

void WebFrameWidgetImpl::DragTargetDragLeave(
    const gfx::PointF& point_in_viewport,
    const gfx::PointF& screen_point) {}

void WebFrameWidgetImpl::DragTargetDrop(const WebDragData& web_drag_data,
                                        const gfx::PointF& point_in_viewport,
                                        const gfx::PointF& screen_point,
                                        uint32_t key_modifiers,
                                        base::OnceClosure callback) {}

void WebFrameWidgetImpl::DragSourceEndedAt(const gfx::PointF& point_in_viewport,
                                           const gfx::PointF& screen_point,
                                           DragOperation operation,
                                           base::OnceClosure callback) {}

void WebFrameWidgetImpl::DragSourceSystemDragEnded() {}

gfx::Rect WebFrameWidgetImpl::GetAbsoluteCaretBounds() {}

void WebFrameWidgetImpl::OnStartStylusWriting(
    OnStartStylusWritingCallback callback) {}

#if BUILDFLAG(IS_ANDROID)
void WebFrameWidgetImpl::PassImeRenderWidgetHost(
    mojo::PendingRemote<mojom::blink::ImeRenderWidgetHost> pending_remote) {
  ime_render_widget_host_ =
      HeapMojoRemote<mojom::blink::ImeRenderWidgetHost>(nullptr);
  ime_render_widget_host_.Bind(
      std::move(pending_remote),
      local_root_->GetTaskRunner(TaskType::kInternalDefault));
}
#endif  // BUILDFLAG(IS_ANDROID)

void WebFrameWidgetImpl::NotifyClearedDisplayedGraphics() {}

void WebFrameWidgetImpl::HandleStylusWritingGestureAction(
    mojom::blink::StylusWritingGestureDataPtr gesture_data,
    HandleStylusWritingGestureActionCallback callback) {}

void WebFrameWidgetImpl::SetBackgroundOpaque(bool opaque) {}

void WebFrameWidgetImpl::SetTextDirection(base::i18n::TextDirection direction) {}

void WebFrameWidgetImpl::SetInheritedEffectiveTouchActionForSubFrame(
    TouchAction touch_action) {}

void WebFrameWidgetImpl::UpdateRenderThrottlingStatusForSubFrame(
    bool is_throttled,
    bool subtree_throttled,
    bool display_locked) {}

#if BUILDFLAG(IS_MAC)
void WebFrameWidgetImpl::GetStringAtPoint(const gfx::Point& point_in_local_root,
                                          GetStringAtPointCallback callback) {
  gfx::Point baseline_point;
  ui::mojom::blink::AttributedStringPtr attributed_string = nullptr;
  base::apple::ScopedCFTypeRef<CFAttributedStringRef> string =
      SubstringUtil::AttributedWordAtPoint(this, point_in_local_root,
                                           baseline_point);
  if (string) {
    attributed_string = ui::mojom::blink::AttributedString::From(string.get());
  }

  std::move(callback).Run(std::move(attributed_string), baseline_point);
}
#endif

void WebFrameWidgetImpl::BindWidgetCompositor(
    mojo::PendingReceiver<mojom::blink::WidgetCompositor> receiver) {}

void WebFrameWidgetImpl::BindInputTargetClient(
    mojo::PendingReceiver<viz::mojom::blink::InputTargetClient> receiver) {}

void WebFrameWidgetImpl::FrameSinkIdAt(const gfx::PointF& point,
                                       const uint64_t trace_id,
                                       FrameSinkIdAtCallback callback) {}

viz::FrameSinkId WebFrameWidgetImpl::GetFrameSinkIdAtPoint(
    const gfx::PointF& point_in_dips,
    gfx::PointF* local_point_in_dips) {}

gfx::RectF WebFrameWidgetImpl::BlinkSpaceToDIPs(const gfx::RectF& rect) {}

gfx::Rect WebFrameWidgetImpl::BlinkSpaceToEnclosedDIPs(const gfx::Rect& rect) {}

gfx::Size WebFrameWidgetImpl::BlinkSpaceToFlooredDIPs(const gfx::Size& size) {}

gfx::RectF WebFrameWidgetImpl::DIPsToBlinkSpace(const gfx::RectF& rect) {}

gfx::PointF WebFrameWidgetImpl::DIPsToBlinkSpace(const gfx::PointF& point) {}

gfx::Point WebFrameWidgetImpl::DIPsToRoundedBlinkSpace(
    const gfx::Point& point) {}

float WebFrameWidgetImpl::DIPsToBlinkSpace(float scalar) {}

gfx::Size WebFrameWidgetImpl::DIPsToCeiledBlinkSpace(const gfx::Size& size) {}

void WebFrameWidgetImpl::SetActive(bool active) {}

WebInputEventResult WebFrameWidgetImpl::HandleKeyEvent(
    const WebKeyboardEvent& event) {}

void WebFrameWidgetImpl::HandleMouseDown(LocalFrame& local_root,
                                         const WebMouseEvent& event) {}

void WebFrameWidgetImpl::HandleMouseLeave(LocalFrame& local_root,
                                          const WebMouseEvent& event) {}

void WebFrameWidgetImpl::MouseContextMenu(const WebMouseEvent& event) {}

WebInputEventResult WebFrameWidgetImpl::HandleMouseUp(
    LocalFrame& local_root,
    const WebMouseEvent& event) {}

WebInputEventResult WebFrameWidgetImpl::HandleGestureEvent(
    const WebGestureEvent& event) {}

WebInputEventResult WebFrameWidgetImpl::HandleMouseWheel(
    LocalFrame& frame,
    const WebMouseWheelEvent& event) {}

WebInputEventResult WebFrameWidgetImpl::HandleCharEvent(
    const WebKeyboardEvent& event) {}

void WebFrameWidgetImpl::CancelDrag() {}

void WebFrameWidgetImpl::StartDragging(LocalFrame* source_frame,
                                       const WebDragData& drag_data,
                                       DragOperationsMask operations_allowed,
                                       const SkBitmap& drag_image,
                                       const gfx::Vector2d& cursor_offset,
                                       const gfx::Rect& drag_obj_rect) {}

void WebFrameWidgetImpl::DragTargetDragEnterOrOver(
    const gfx::PointF& point_in_viewport,
    const gfx::PointF& screen_point,
    DragAction drag_action,
    uint32_t key_modifiers) {}

void WebFrameWidgetImpl::SendOverscrollEventFromImplSide(
    const gfx::Vector2dF& overscroll_delta,
    cc::ElementId scroll_latched_element_id) {}

void WebFrameWidgetImpl::SendEndOfScrollEvents(
    bool affects_outer_viewport,
    bool affects_inner_viewport,
    cc::ElementId scroll_latched_element_id) {}

void WebFrameWidgetImpl::SendScrollSnapChangingEventIfNeeded(
    const cc::CompositorCommitData& commit_data) {}

void WebFrameWidgetImpl::UpdateCompositorScrollState(
    const cc::CompositorCommitData& commit_data) {}

bool WebFrameWidgetImpl::IsScrollGestureActive() const {}

void WebFrameWidgetImpl::RequestViewportScreenshot(
    const base::UnguessableToken& token) {}

void WebFrameWidgetImpl::RequestNewLocalSurfaceId() {}

WebInputMethodController*
WebFrameWidgetImpl::GetActiveWebInputMethodController() const {}

void WebFrameWidgetImpl::DisableDragAndDrop() {}

gfx::PointF WebFrameWidgetImpl::ViewportToRootFrame(
    const gfx::PointF& point_in_viewport) const {}

WebViewImpl* WebFrameWidgetImpl::View() const {}

Page* WebFrameWidgetImpl::GetPage() const {}

mojom::blink::FrameWidgetHost*
WebFrameWidgetImpl::GetAssociatedFrameWidgetHost() const {}

void WebFrameWidgetImpl::RequestDecode(
    const PaintImage& image,
    base::OnceCallback<void(bool)> callback) {}

void WebFrameWidgetImpl::Trace(Visitor* visitor) const {}

void WebFrameWidgetImpl::SetNeedsRecalculateRasterScales() {}

void WebFrameWidgetImpl::SetBackgroundColor(SkColor color) {}

void WebFrameWidgetImpl::SetOverscrollBehavior(
    const cc::OverscrollBehavior& overscroll_behavior) {}

void WebFrameWidgetImpl::SetPrefersReducedMotion(bool prefers_reduced_motion) {}

void WebFrameWidgetImpl::StartPageScaleAnimation(const gfx::Point& destination,
                                                 bool use_anchor,
                                                 float new_page_scale,
                                                 base::TimeDelta duration) {}

void WebFrameWidgetImpl::RequestBeginMainFrameNotExpected(bool request) {}

void WebFrameWidgetImpl::DidCommitAndDrawCompositorFrame() {}

void WebFrameWidgetImpl::DidObserveFirstScrollDelay(
    base::TimeDelta first_scroll_delay,
    base::TimeTicks first_scroll_timestamp) {}

bool WebFrameWidgetImpl::ShouldIgnoreInputEvents() {}

std::unique_ptr<cc::LayerTreeFrameSink>
WebFrameWidgetImpl::AllocateNewLayerTreeFrameSink() {}

void WebFrameWidgetImpl::ReportLongAnimationFrameTiming(
    AnimationFrameTimingInfo* timing_info) {}

void WebFrameWidgetImpl::ReportLongTaskTiming(base::TimeTicks start_time,
                                              base::TimeTicks end_time,
                                              ExecutionContext* task_context) {}

bool WebFrameWidgetImpl::ShouldReportLongAnimationFrameTiming() const {}
void WebFrameWidgetImpl::OnTaskCompletedForFrame(
    base::TimeTicks start_time,
    base::TimeTicks end_time,
    LocalFrame* frame) {}

void WebFrameWidgetImpl::DidBeginMainFrame() {}

void WebFrameWidgetImpl::UpdateLifecycle(WebLifecycleUpdate requested_update,
                                         DocumentUpdateReason reason) {}

void WebFrameWidgetImpl::DidCompletePageScaleAnimation() {}

void WebFrameWidgetImpl::ScheduleAnimation() {}

void WebFrameWidgetImpl::FocusChanged(mojom::blink::FocusState focus_state) {}

bool WebFrameWidgetImpl::ShouldAckSyntheticInputImmediately() {}

void WebFrameWidgetImpl::UpdateVisualProperties(
    const VisualProperties& visual_properties) {}

void WebFrameWidgetImpl::ApplyVisualPropertiesSizing(
    const VisualProperties& visual_properties) {}

bool WebFrameWidgetImpl::DidChangeFullscreenState(
    const VisualProperties& visual_properties) const {}

int WebFrameWidgetImpl::GetLayerTreeId() {}

const cc::LayerTreeSettings* WebFrameWidgetImpl::GetLayerTreeSettings() {}

void WebFrameWidgetImpl::UpdateBrowserControlsState(
    cc::BrowserControlsState constraints,
    cc::BrowserControlsState current,
    bool animate,
    base::optional_ref<const cc::BrowserControlsOffsetTagsInfo>
        offset_tags_info) {}

void WebFrameWidgetImpl::SetHaveScrollEventHandlers(bool has_handlers) {}

void WebFrameWidgetImpl::SetEventListenerProperties(
    cc::EventListenerClass listener_class,
    cc::EventListenerProperties listener_properties) {}

cc::EventListenerProperties WebFrameWidgetImpl::EventListenerProperties(
    cc::EventListenerClass listener_class) const {}

mojom::blink::DisplayMode WebFrameWidgetImpl::DisplayMode() const {}

ui::WindowShowState WebFrameWidgetImpl::WindowShowState() const {}

bool WebFrameWidgetImpl::Resizable() const {}

const WebVector<gfx::Rect>& WebFrameWidgetImpl::ViewportSegments() const {}

bool WebFrameWidgetImpl::StartDeferringCommits(base::TimeDelta timeout,
                                               cc::PaintHoldingReason reason) {}

void WebFrameWidgetImpl::StopDeferringCommits(
    cc::PaintHoldingCommitTrigger triggger) {}

std::unique_ptr<cc::ScopedPauseRendering> WebFrameWidgetImpl::PauseRendering() {}

std::optional<int> WebFrameWidgetImpl::GetMaxRenderBufferBounds() const {}

std::unique_ptr<cc::ScopedDeferMainFrameUpdate>
WebFrameWidgetImpl::DeferMainFrameUpdate() {}

void WebFrameWidgetImpl::SetBrowserControlsShownRatio(float top_ratio,
                                                      float bottom_ratio) {}

void WebFrameWidgetImpl::SetBrowserControlsParams(
    cc::BrowserControlsParams params) {}

void WebFrameWidgetImpl::SynchronouslyCompositeForTesting(
    base::TimeTicks frame_time) {}

void WebFrameWidgetImpl::SetDeviceColorSpaceForTesting(
    const gfx::ColorSpace& color_space) {}

// TODO(665924): Remove direct dispatches of mouse events from
// PointerLockController, instead passing them through EventHandler.
void WebFrameWidgetImpl::PointerLockMouseEvent(
    const WebCoalescedInputEvent& coalesced_event) {}
bool WebFrameWidgetImpl::IsPointerLocked() {}

void WebFrameWidgetImpl::ShowContextMenu(
    ui::mojom::blink::MenuSourceType source_type,
    const gfx::Point& location) {}

void WebFrameWidgetImpl::SetViewportIntersection(
    mojom::blink::ViewportIntersectionStatePtr intersection_state,
    const std::optional<VisualProperties>& visual_properties) {}

void WebFrameWidgetImpl::ApplyViewportIntersectionForTesting(
    mojom::blink::ViewportIntersectionStatePtr intersection_state) {}

void WebFrameWidgetImpl::ApplyViewportIntersection(
    mojom::blink::ViewportIntersectionStatePtr intersection_state) {}

void WebFrameWidgetImpl::EnableDeviceEmulation(
    const DeviceEmulationParams& parameters) {}

void WebFrameWidgetImpl::DisableDeviceEmulation() {}

void WebFrameWidgetImpl::SetIsInertForSubFrame(bool inert) {}

std::optional<gfx::Point> WebFrameWidgetImpl::GetAndResetContextMenuLocation() {}

double WebFrameWidgetImpl::GetZoomLevel() {}

void WebFrameWidgetImpl::SetZoomLevel(double zoom_level) {}

// There are four main values that go into zoom arithmetic:
//
// - "zoom level", a log-based value which represents the zoom level from the
//   browser UI. The log base for zoom level is kTextSizeMultiplierRatio.
// - "css zoom factor", which represents the effect of the CSS "zoom" property
//   applied to the embedding point (e.g. <iframe>) of this widget, if any. For
//   a top-level widget this is 1.0.
// - Hardware device scale factor, which is stored on WebViewImpl as
//   zoom_factor_for_device_scale_factor_.
// - "layout zoom factor", which is calculated from the previous three values,
//   with override mechanisms for testing and device emulation. This is the
//   value that is used by the rendering system.
void WebFrameWidgetImpl::SetZoomInternal(double zoom_level,
                                         double css_zoom_factor) {}

void WebFrameWidgetImpl::SetAutoResizeMode(bool auto_resize,
                                           const gfx::Size& min_window_size,
                                           const gfx::Size& max_window_size,
                                           float device_scale_factor) {}

void WebFrameWidgetImpl::DidAutoResize(const gfx::Size& size) {}

LocalFrame* WebFrameWidgetImpl::FocusedLocalFrameInWidget() const {}

WebLocalFrameImpl* WebFrameWidgetImpl::FocusedWebLocalFrameInWidget() const {}

bool WebFrameWidgetImpl::ScrollFocusedEditableElementIntoView() {}

void WebFrameWidgetImpl::ResetMeaningfulLayoutStateForMainFrame() {}

void WebFrameWidgetImpl::InitializeCompositing(
    const display::ScreenInfos& screen_infos,
    const cc::LayerTreeSettings* settings) {}

void WebFrameWidgetImpl::InitializeCompositingFromPreviousWidget(
    const display::ScreenInfos& screen_infos,
    const cc::LayerTreeSettings* settings,
    WebFrameWidget& previous_widget) {}

void WebFrameWidgetImpl::InitializeCompositingInternal(
    const display::ScreenInfos& screen_infos,
    const cc::LayerTreeSettings* settings,
    WebFrameWidget* previous_widget) {}

void WebFrameWidgetImpl::InitializeNonCompositing(
    WebNonCompositedWidgetClient* client) {}

void WebFrameWidgetImpl::SetCompositorVisible(bool visible) {}

void WebFrameWidgetImpl::WarmUpCompositor() {}

gfx::Size WebFrameWidgetImpl::Size() {}

void WebFrameWidgetImpl::Resize(const gfx::Size& new_size) {}

void WebFrameWidgetImpl::OnCommitRequested() {}

void WebFrameWidgetImpl::BeginMainFrame(base::TimeTicks last_frame_time) {}

void WebFrameWidgetImpl::BeginCommitCompositorFrame() {}

void WebFrameWidgetImpl::EndCommitCompositorFrame(
    base::TimeTicks commit_start_time,
    base::TimeTicks commit_finish_time) {}

void WebFrameWidgetImpl::ApplyViewportChanges(
    const ApplyViewportChangesArgs& args) {}

void WebFrameWidgetImpl::RecordManipulationTypeCounts(
    cc::ManipulationInfo info) {}

void WebFrameWidgetImpl::RecordDispatchRafAlignedInputTime(
    base::TimeTicks raf_aligned_input_start_time) {}

void WebFrameWidgetImpl::SetSuppressFrameRequestsWorkaroundFor704763Only(
    bool suppress_frame_requests) {}

void WebFrameWidgetImpl::CountDroppedPointerDownForEventTiming(unsigned count) {}

std::unique_ptr<cc::BeginMainFrameMetrics>
WebFrameWidgetImpl::GetBeginMainFrameMetrics() {}

std::unique_ptr<cc::WebVitalMetrics> WebFrameWidgetImpl::GetWebVitalMetrics() {}

void WebFrameWidgetImpl::BeginUpdateLayers() {}

void WebFrameWidgetImpl::EndUpdateLayers() {}

void WebFrameWidgetImpl::RecordStartOfFrameMetrics() {}

void WebFrameWidgetImpl::RecordEndOfFrameMetrics(
    base::TimeTicks frame_begin_time,
    cc::ActiveFrameSequenceTrackers trackers) {}

void WebFrameWidgetImpl::WillHandleGestureEvent(const WebGestureEvent& event,
                                                bool* suppress) {}

void WebFrameWidgetImpl::WillHandleMouseEvent(const WebMouseEvent& event) {}

void WebFrameWidgetImpl::ObserveGestureEventAndResult(
    const WebGestureEvent& gesture_event,
    const gfx::Vector2dF& unused_delta,
    const cc::OverscrollBehavior& overscroll_behavior,
    bool event_processed) {}

void WebFrameWidgetImpl::DidHandleKeyEvent() {}

WebTextInputType WebFrameWidgetImpl::GetTextInputType() {}

void WebFrameWidgetImpl::SetCursorVisibilityState(bool is_visible) {}

void WebFrameWidgetImpl::ApplyViewportChangesForTesting(
    const ApplyViewportChangesArgs& args) {}

void WebFrameWidgetImpl::SetDisplayMode(mojom::blink::DisplayMode mode) {}

void WebFrameWidgetImpl::SetWindowShowState(ui::WindowShowState state) {}

void WebFrameWidgetImpl::SetResizable(bool resizable) {}

void WebFrameWidgetImpl::OverrideDevicePostureForEmulation(
    mojom::blink::DevicePostureType device_posture_param) {}

void WebFrameWidgetImpl::DisableDevicePostureOverrideForEmulation() {}

void WebFrameWidgetImpl::SetViewportSegments(
    const std::vector<gfx::Rect>& viewport_segments_param) {}

void WebFrameWidgetImpl::SetCursor(const ui::Cursor& cursor) {}

bool WebFrameWidgetImpl::HandlingInputEvent() {}

void WebFrameWidgetImpl::SetHandlingInputEvent(bool handling) {}

void WebFrameWidgetImpl::ProcessInputEventSynchronouslyForTesting(
    const WebCoalescedInputEvent& event,
    WidgetBaseInputHandler::HandledEventCallback callback) {}

void WebFrameWidgetImpl::ProcessInputEventSynchronouslyForTesting(
    const WebCoalescedInputEvent& event) {}

WebInputEventResult WebFrameWidgetImpl::DispatchBufferedTouchEvents() {}

WebInputEventResult WebFrameWidgetImpl::HandleInputEvent(
    const WebCoalescedInputEvent& coalesced_event) {}

WebInputEventResult WebFrameWidgetImpl::HandleCapturedMouseEvent(
    const WebCoalescedInputEvent& coalesced_event) {}

void WebFrameWidgetImpl::UpdateTextInputState() {}

void WebFrameWidgetImpl::UpdateSelectionBounds() {}

void WebFrameWidgetImpl::ShowVirtualKeyboard() {}

void WebFrameWidgetImpl::FlushInputProcessedCallback() {}

void WebFrameWidgetImpl::CancelCompositionForPepper() {}

void WebFrameWidgetImpl::RequestMouseLock(
    bool has_transient_user_activation,
    bool request_unadjusted_movement,
    mojom::blink::WidgetInputHandlerHost::RequestMouseLockCallback callback) {}

void WebFrameWidgetImpl::MouseCaptureLost() {}

void WebFrameWidgetImpl::ApplyVisualProperties(
    const VisualProperties& visual_properties) {}

bool WebFrameWidgetImpl::IsFullscreenGranted() {}

bool WebFrameWidgetImpl::PinchGestureActiveInMainFrame() {}

float WebFrameWidgetImpl::PageScaleInMainFrame() {}

void WebFrameWidgetImpl::UpdateSurfaceAndScreenInfo(
    const viz::LocalSurfaceId& new_local_surface_id,
    const gfx::Rect& compositor_viewport_pixel_rect,
    const display::ScreenInfos& new_screen_infos) {}

void WebFrameWidgetImpl::UpdateScreenInfo(
    const display::ScreenInfos& new_screen_infos) {}

void WebFrameWidgetImpl::UpdateSurfaceAndCompositorRect(
    const viz::LocalSurfaceId& new_local_surface_id,
    const gfx::Rect& compositor_viewport_pixel_rect) {}

void WebFrameWidgetImpl::UpdateCompositorViewportRect(
    const gfx::Rect& compositor_viewport_pixel_rect) {}

const display::ScreenInfo& WebFrameWidgetImpl::GetScreenInfo() {}

const display::ScreenInfos& WebFrameWidgetImpl::GetScreenInfos() {}

const display::ScreenInfo& WebFrameWidgetImpl::GetOriginalScreenInfo() {}

const display::ScreenInfos& WebFrameWidgetImpl::GetOriginalScreenInfos() {}

gfx::Rect WebFrameWidgetImpl::WindowRect() {}

double WebFrameWidgetImpl::GetCSSZoomFactor() const {}

gfx::Rect WebFrameWidgetImpl::ViewRect() {}

void WebFrameWidgetImpl::SetScreenRects(const gfx::Rect& widget_screen_rect,
                                        const gfx::Rect& window_screen_rect) {}

gfx::Size WebFrameWidgetImpl::VisibleViewportSizeInDIPs() {}

void WebFrameWidgetImpl::SetPendingWindowRect(
    const gfx::Rect& window_screen_rect) {}

void WebFrameWidgetImpl::AckPendingWindowRect() {}

bool WebFrameWidgetImpl::IsHidden() const {}

WebString WebFrameWidgetImpl::GetLastToolTipTextForTesting() const {}

float WebFrameWidgetImpl::GetEmulatorScale() {}

void WebFrameWidgetImpl::IntrinsicSizingInfoChanged(
    mojom::blink::IntrinsicSizingInfoPtr sizing_info) {}

void WebFrameWidgetImpl::AutoscrollStart(const gfx::PointF& position) {}

void WebFrameWidgetImpl::AutoscrollFling(const gfx::Vector2dF& velocity) {}

void WebFrameWidgetImpl::AutoscrollEnd() {}

void WebFrameWidgetImpl::DidMeaningfulLayout(WebMeaningfulLayout layout_type) {}

void WebFrameWidgetImpl::PresentationCallbackForMeaningfulLayout(
    const viz::FrameTimingDetails& first_paint_details) {}

void WebFrameWidgetImpl::RequestAnimationAfterDelay(
    const base::TimeDelta& delay) {}

void WebFrameWidgetImpl::SetRootLayer(scoped_refptr<cc::Layer> layer) {}

base::WeakPtr<AnimationWorkletMutatorDispatcherImpl>
WebFrameWidgetImpl::EnsureCompositorMutatorDispatcher(
    scoped_refptr<base::SingleThreadTaskRunner> mutator_task_runner) {}

HitTestResult WebFrameWidgetImpl::CoreHitTestResultAt(
    const gfx::PointF& point_in_viewport) {}

cc::AnimationHost* WebFrameWidgetImpl::AnimationHost() const {}

cc::AnimationTimeline* WebFrameWidgetImpl::ScrollAnimationTimeline() const {}

base::WeakPtr<PaintWorkletPaintDispatcher>
WebFrameWidgetImpl::EnsureCompositorPaintDispatcher(
    scoped_refptr<base::SingleThreadTaskRunner>* paint_task_runner) {}

void WebFrameWidgetImpl::SetDelegatedInkMetadata(
    std::unique_ptr<gfx::DelegatedInkMetadata> metadata) {}

// Enables measuring and reporting both presentation times and swap times in
// swap promises.
class ReportTimeSwapPromise : public cc::SwapPromise {};

void WebFrameWidgetImpl::NotifySwapAndPresentationTimeForTesting(
    PromiseCallbacks callbacks) {}

void WebFrameWidgetImpl::NotifyPresentationTimeInBlink(
    base::OnceCallback<void(const viz::FrameTimingDetails&)>
        presentation_callback) {}

void WebFrameWidgetImpl::NotifyPresentationTime(
    base::OnceCallback<void(const viz::FrameTimingDetails&)>
        presentation_callback) {}

#if BUILDFLAG(IS_APPLE)
void WebFrameWidgetImpl::NotifyCoreAnimationErrorCode(
    base::OnceCallback<void(gfx::CALayerResult)>
        core_animation_error_code_callback) {
  NotifySwapAndPresentationTime(
      {.core_animation_error_code_callback =
           std::move(core_animation_error_code_callback)});
}
#endif

void WebFrameWidgetImpl::NotifySwapAndPresentationTime(
    PromiseCallbacks callbacks) {}

void WebFrameWidgetImpl::WaitForDebuggerWhenShown() {}

void WebFrameWidgetImpl::SetTextZoomFactor(float text_zoom_factor) {}

float WebFrameWidgetImpl::TextZoomFactor() {}

void WebFrameWidgetImpl::SetMainFrameOverlayColor(SkColor color) {}

void WebFrameWidgetImpl::AddEditCommandForNextKeyEvent(const WebString& name,
                                                       const WebString& value) {}

bool WebFrameWidgetImpl::HandleCurrentKeyboardEvent() {}

void WebFrameWidgetImpl::ClearEditCommands() {}

WebTextInputInfo WebFrameWidgetImpl::TextInputInfo() {}

ui::mojom::blink::VirtualKeyboardVisibilityRequest
WebFrameWidgetImpl::GetLastVirtualKeyboardVisibilityRequest() {}

bool WebFrameWidgetImpl::ShouldSuppressKeyboardForFocusedElement() {}

void WebFrameWidgetImpl::GetEditContextBoundsInWindow(
    std::optional<gfx::Rect>* edit_context_control_bounds,
    std::optional<gfx::Rect>* edit_context_selection_bounds) {}

int32_t WebFrameWidgetImpl::ComputeWebTextInputNextPreviousFlags() {}

void WebFrameWidgetImpl::ResetVirtualKeyboardVisibilityRequest() {}

bool WebFrameWidgetImpl::GetSelectionBoundsInWindow(
    gfx::Rect* focus,
    gfx::Rect* anchor,
    gfx::Rect* bounding_box,
    base::i18n::TextDirection* focus_dir,
    base::i18n::TextDirection* anchor_dir,
    bool* is_anchor_first) {}

void WebFrameWidgetImpl::ClearTextInputState() {}

bool WebFrameWidgetImpl::IsPasting() {}

bool WebFrameWidgetImpl::HandlingSelectRange() {}

void WebFrameWidgetImpl::SetFocus(bool focus) {}

bool WebFrameWidgetImpl::HasFocus() {}

void WebFrameWidgetImpl::UpdateTooltipUnderCursor(const String& tooltip_text,
                                                  TextDirection dir) {}

void WebFrameWidgetImpl::UpdateTooltipFromKeyboard(const String& tooltip_text,
                                                   TextDirection dir,
                                                   const gfx::Rect& bounds) {}

void WebFrameWidgetImpl::ClearKeyboardTriggeredTooltip() {}

void WebFrameWidgetImpl::InjectScrollbarGestureScroll(
    const gfx::Vector2dF& delta,
    ui::ScrollGranularity granularity,
    cc::ElementId scrollable_area_element_id,
    blink::WebInputEvent::Type injected_type) {}

void WebFrameWidgetImpl::DidChangeCursor(const ui::Cursor& cursor) {}

bool WebFrameWidgetImpl::SetComposition(
    const String& text,
    const Vector<ui::ImeTextSpan>& ime_text_spans,
    const gfx::Range& replacement_range,
    int selection_start,
    int selection_end) {}

void WebFrameWidgetImpl::CommitText(
    const String& text,
    const Vector<ui::ImeTextSpan>& ime_text_spans,
    const gfx::Range& replacement_range,
    int relative_cursor_pos) {}

void WebFrameWidgetImpl::FinishComposingText(bool keep_selection) {}

bool WebFrameWidgetImpl::IsProvisional() {}

cc::ElementId WebFrameWidgetImpl::GetScrollableContainerIdAt(
    const gfx::PointF& point) {}

bool WebFrameWidgetImpl::ShouldHandleImeEvents() {}

void WebFrameWidgetImpl::SetEditCommandsForNextKeyEvent(
    Vector<mojom::blink::EditCommandPtr> edit_commands) {}

void WebFrameWidgetImpl::FocusChangeComplete() {}

void WebFrameWidgetImpl::ShowVirtualKeyboardOnElementFocus() {}

void WebFrameWidgetImpl::ProcessTouchAction(WebTouchAction touch_action) {}

void WebFrameWidgetImpl::SetPanAction(mojom::blink::PanAction pan_action) {}

void WebFrameWidgetImpl::DidHandleGestureEvent(const WebGestureEvent& event) {}

void WebFrameWidgetImpl::SetHasPointerRawUpdateEventHandlers(
    bool has_handlers) {}

void WebFrameWidgetImpl::SetNeedsLowLatencyInput(bool needs_low_latency) {}

void WebFrameWidgetImpl::RequestUnbufferedInputEvents() {}

void WebFrameWidgetImpl::SetNeedsUnbufferedInputForDebugger(bool unbuffered) {}

void WebFrameWidgetImpl::DidNavigate() {}

void WebFrameWidgetImpl::FlushInputForTesting(base::OnceClosure done_callback) {}

void WebFrameWidgetImpl::SetMouseCapture(bool capture) {}

void WebFrameWidgetImpl::NotifyAutoscrollForSelectionInMainFrame(
    bool autoscroll_selection) {}

gfx::Range WebFrameWidgetImpl::CompositionRange() {}

void WebFrameWidgetImpl::GetCompositionCharacterBoundsInWindow(
    Vector<gfx::Rect>* bounds_in_dips) {}

namespace {

void GetLineBounds(Vector<gfx::QuadF>& line_quads,
                   TextControlInnerEditorElement* inner_editor) {}

}  // namespace

Vector<gfx::Rect> WebFrameWidgetImpl::CalculateVisibleLineBoundsOnScreen() {}

Vector<gfx::Rect>& WebFrameWidgetImpl::GetVisibleLineBoundsOnScreen() {}

void WebFrameWidgetImpl::UpdateLineBounds() {}

void WebFrameWidgetImpl::UpdateCursorAnchorInfo() {}

void WebFrameWidgetImpl::AddImeTextSpansToExistingText(
    uint32_t start,
    uint32_t end,
    const Vector<ui::ImeTextSpan>& ime_text_spans) {}

Vector<ui::mojom::blink::ImeTextSpanInfoPtr>
WebFrameWidgetImpl::GetImeTextSpansInfo(
    const WebVector<ui::ImeTextSpan>& ime_text_spans) {}

void WebFrameWidgetImpl::ClearImeTextSpansByType(uint32_t start,
                                                 uint32_t end,
                                                 ui::ImeTextSpan::Type type) {}

void WebFrameWidgetImpl::SetCompositionFromExistingText(
    int32_t start,
    int32_t end,
    const Vector<ui::ImeTextSpan>& ime_text_spans) {}

void WebFrameWidgetImpl::ExtendSelectionAndDelete(int32_t before,
                                                  int32_t after) {}

void WebFrameWidgetImpl::ExtendSelectionAndReplace(
    uint32_t before,
    uint32_t after,
    const String& replacement_text) {}

void WebFrameWidgetImpl::DeleteSurroundingText(int32_t before, int32_t after) {}

void WebFrameWidgetImpl::DeleteSurroundingTextInCodePoints(int32_t before,
                                                           int32_t after) {}

void WebFrameWidgetImpl::SetEditableSelectionOffsets(int32_t start,
                                                     int32_t end) {}

void WebFrameWidgetImpl::ExecuteEditCommand(const String& command,
                                            const String& value) {}

void WebFrameWidgetImpl::Undo() {}

void WebFrameWidgetImpl::Redo() {}

void WebFrameWidgetImpl::Cut() {}

void WebFrameWidgetImpl::Copy() {}

void WebFrameWidgetImpl::CopyToFindPboard() {}

void WebFrameWidgetImpl::CenterSelection() {}

void WebFrameWidgetImpl::Paste() {}

void WebFrameWidgetImpl::PasteAndMatchStyle() {}

void WebFrameWidgetImpl::Delete() {}

void WebFrameWidgetImpl::SelectAll() {}

void WebFrameWidgetImpl::CollapseSelection() {}

void WebFrameWidgetImpl::Replace(const String& word) {}

void WebFrameWidgetImpl::ReplaceMisspelling(const String& word) {}

void WebFrameWidgetImpl::SelectRange(const gfx::Point& base_in_dips,
                                     const gfx::Point& extent_in_dips) {}

void WebFrameWidgetImpl::AdjustSelectionByCharacterOffset(
    int32_t start,
    int32_t end,
    mojom::blink::SelectionMenuBehavior selection_menu_behavior) {}

void WebFrameWidgetImpl::MoveRangeSelectionExtent(
    const gfx::Point& extent_in_dips) {}

void WebFrameWidgetImpl::ScrollFocusedEditableNodeIntoView() {}

void WebFrameWidgetImpl::WaitForPageScaleAnimationForTesting(
    WaitForPageScaleAnimationForTestingCallback callback) {}

void WebFrameWidgetImpl::ZoomToFindInPageRect(
    const gfx::Rect& rect_in_root_frame) {}

void WebFrameWidgetImpl::MoveCaret(const gfx::Point& point_in_dips) {}

void WebFrameWidgetImpl::SelectAroundCaret(
    mojom::blink::SelectionGranularity granularity,
    bool should_show_handle,
    bool should_show_context_menu,
    SelectAroundCaretCallback callback) {}

void WebFrameWidgetImpl::ForEachRemoteFrameControlledByWidget(
    base::FunctionRef<void(RemoteFrame*)> callback) {}

void WebFrameWidgetImpl::CalculateSelectionBounds(gfx::Rect& anchor_root_frame,
                                                  gfx::Rect& focus_root_frame) {}

void WebFrameWidgetImpl::CalculateSelectionBounds(
    gfx::Rect& anchor_root_frame,
    gfx::Rect& focus_root_frame,
    gfx::Rect* bounding_box_in_root_frame) {}

const viz::LocalSurfaceId& WebFrameWidgetImpl::LocalSurfaceIdFromParent() {}

cc::LayerTreeHost* WebFrameWidgetImpl::LayerTreeHost() {}

cc::LayerTreeHost* WebFrameWidgetImpl::LayerTreeHostForTesting() const {}

ScreenMetricsEmulator* WebFrameWidgetImpl::DeviceEmulator() {}

bool WebFrameWidgetImpl::AutoResizeMode() {}

void WebFrameWidgetImpl::SetScreenMetricsEmulationParameters(
    bool enabled,
    const DeviceEmulationParams& params) {}

void WebFrameWidgetImpl::SetScreenInfoAndSize(
    const display::ScreenInfos& screen_infos,
    const gfx::Size& widget_size_in_dips,
    const gfx::Size& visible_viewport_size_in_dips) {}

float WebFrameWidgetImpl::GetCompositingScaleFactor() {}

const cc::LayerTreeDebugState* WebFrameWidgetImpl::GetLayerTreeDebugState() {}

void WebFrameWidgetImpl::SetLayerTreeDebugState(
    const cc::LayerTreeDebugState& state) {}

void WebFrameWidgetImpl::NotifyCompositingScaleFactorChanged(
    float compositing_scale_factor) {}

void WebFrameWidgetImpl::NotifyPageScaleFactorChanged(
    float page_scale_factor,
    bool is_pinch_gesture_active) {}

void WebFrameWidgetImpl::SetPageScaleStateAndLimits(
    float page_scale_factor,
    bool is_pinch_gesture_active,
    float minimum,
    float maximum) {}

void WebFrameWidgetImpl::UpdateViewportDescription(
    const ViewportDescription& viewport) {}

bool WebFrameWidgetImpl::UpdateScreenRects(
    const gfx::Rect& widget_screen_rect,
    const gfx::Rect& window_screen_rect) {}

void WebFrameWidgetImpl::EnqueueMoveEvent() {}

void WebFrameWidgetImpl::OrientationChanged() {}

void WebFrameWidgetImpl::DidUpdateSurfaceAndScreen(
    const display::ScreenInfos& previous_original_screen_infos) {}

gfx::Rect WebFrameWidgetImpl::ViewportVisibleRect() {}

std::optional<display::mojom::blink::ScreenOrientation>
WebFrameWidgetImpl::ScreenOrientationOverride() {}

void WebFrameWidgetImpl::WasHidden() {}

void WebFrameWidgetImpl::WasShown(bool was_evicted) {}

void WebFrameWidgetImpl::RunPaintBenchmark(int repeat_count,
                                           cc::PaintBenchmarkResult& result) {}

void WebFrameWidgetImpl::NotifyInputObservers(
    const WebCoalescedInputEvent& coalesced_event) {}

Frame* WebFrameWidgetImpl::FocusedCoreFrame() const {}

Element* WebFrameWidgetImpl::FocusedElement() const {}

HitTestResult WebFrameWidgetImpl::HitTestResultForRootFramePos(
    const gfx::PointF& pos_in_root_frame) {}

KURL WebFrameWidgetImpl::GetURLForDebugTrace() {}

float WebFrameWidgetImpl::GetTestingDeviceScaleFactorOverride() {}

void WebFrameWidgetImpl::ReleaseMouseLockAndPointerCaptureForTesting() {}

const viz::FrameSinkId& WebFrameWidgetImpl::GetFrameSinkId() {}

WebHitTestResult WebFrameWidgetImpl::HitTestResultAt(const gfx::PointF& point) {}

void WebFrameWidgetImpl::SetZoomLevelForTesting(double zoom_level) {}

void WebFrameWidgetImpl::ResetZoomLevelForTesting() {}

void WebFrameWidgetImpl::SetDeviceScaleFactorForTesting(float factor) {}

FrameWidgetTestHelper*
WebFrameWidgetImpl::GetFrameWidgetTestHelperForTesting() {}

void WebFrameWidgetImpl::PrepareForFinalLifecyclUpdateForTesting() {}

void WebFrameWidgetImpl::ApplyLocalSurfaceIdUpdate(
    const viz::LocalSurfaceId& id) {}

void WebFrameWidgetImpl::SetMayThrottleIfUndrawnFrames(
    bool may_throttle_if_undrawn_frames) {}

int WebFrameWidgetImpl::GetVirtualKeyboardResizeHeight() const {}

void WebFrameWidgetImpl::SetVirtualKeyboardResizeHeightForTesting(int height) {}

bool WebFrameWidgetImpl::GetMayThrottleIfUndrawnFramesForTesting() {}

WebPlugin* WebFrameWidgetImpl::GetFocusedPluginContainer() {}

bool WebFrameWidgetImpl::HasPendingPageScaleAnimation() {}

void WebFrameWidgetImpl::UpdateNavigationStateForCompositor(
    ukm::SourceId source_id,
    const KURL& url) {}

base::ReadOnlySharedMemoryRegion
WebFrameWidgetImpl::CreateSharedMemoryForSmoothnessUkm() {}

bool WebFrameWidgetImpl::CanComposeInline() {}

bool WebFrameWidgetImpl::ShouldDispatchImeEventsToPlugin() {}

void WebFrameWidgetImpl::ImeSetCompositionForPlugin(
    const String& text,
    const Vector<ui::ImeTextSpan>& ime_text_spans,
    const gfx::Range& replacement_range,
    int selection_start,
    int selection_end) {}

void WebFrameWidgetImpl::ImeCommitTextForPlugin(
    const String& text,
    const Vector<ui::ImeTextSpan>& ime_text_spans,
    const gfx::Range& replacement_range,
    int relative_cursor_pos) {}

void WebFrameWidgetImpl::ImeFinishComposingTextForPlugin(bool keep_selection) {}

void WebFrameWidgetImpl::SetWindowRect(const gfx::Rect& requested_rect,
                                       const gfx::Rect& adjusted_rect) {}

void WebFrameWidgetImpl::SetWindowRectSynchronouslyForTesting(
    const gfx::Rect& new_window_rect) {}

void WebFrameWidgetImpl::DidCreateLocalRootView() {}

bool WebFrameWidgetImpl::ShouldAutoDetermineCompositingToLCDTextSetting() {}

bool WebFrameWidgetImpl::WillBeDestroyed() const {}

void WebFrameWidgetImpl::DispatchNonBlockingEventForTesting(
    std::unique_ptr<WebCoalescedInputEvent> event) {}

}  // namespace blink