#include "content/browser/renderer_host/cross_process_frame_connector.h"
#include "base/functional/bind.h"
#include "base/metrics/histogram_macros.h"
#include "base/trace_event/optional_trace_event.h"
#include "components/input/cursor_manager.h"
#include "components/input/render_widget_host_input_event_router.h"
#include "components/viz/common/features.h"
#include "content/browser/renderer_host/frame_tree.h"
#include "content/browser/renderer_host/frame_tree_node.h"
#include "content/browser/renderer_host/render_frame_host_delegate.h"
#include "content/browser/renderer_host/render_frame_host_manager.h"
#include "content/browser/renderer_host/render_frame_proxy_host.h"
#include "content/browser/renderer_host/render_view_host_impl.h"
#include "content/browser/renderer_host/render_widget_host_delegate.h"
#include "content/browser/renderer_host/render_widget_host_impl.h"
#include "content/browser/renderer_host/render_widget_host_view_base.h"
#include "content/browser/renderer_host/render_widget_host_view_child_frame.h"
#include "content/common/features.h"
#include "third_party/blink/public/common/frame/frame_visual_properties.h"
#include "third_party/blink/public/common/input/web_input_event.h"
#include "third_party/blink/public/mojom/frame/intrinsic_sizing_info.mojom.h"
#include "ui/base/cursor/cursor.h"
#include "ui/gfx/geometry/dip_util.h"
namespace content {
CrossProcessFrameConnector::CrossProcessFrameConnector(
RenderFrameProxyHost* frame_proxy_in_parent_renderer)
: … { … }
CrossProcessFrameConnector::~CrossProcessFrameConnector() { … }
void CrossProcessFrameConnector::SetView(RenderWidgetHostViewChildFrame* view,
bool allow_paint_holding) { … }
void CrossProcessFrameConnector::RenderProcessGone() { … }
void CrossProcessFrameConnector::SendIntrinsicSizingInfoToParent(
blink::mojom::IntrinsicSizingInfoPtr sizing_info) { … }
void CrossProcessFrameConnector::SynchronizeVisualProperties(
const blink::FrameVisualProperties& visual_properties,
bool propagate) { … }
void CrossProcessFrameConnector::UpdateCursor(const ui::Cursor& cursor) { … }
gfx::PointF CrossProcessFrameConnector::TransformPointToRootCoordSpace(
const gfx::PointF& point,
const viz::SurfaceId& surface_id) { … }
bool CrossProcessFrameConnector::TransformPointToCoordSpaceForView(
const gfx::PointF& point,
input::RenderWidgetHostViewInput* target_view,
const viz::SurfaceId& local_surface_id,
gfx::PointF* transformed_point) { … }
void CrossProcessFrameConnector::ForwardAckedTouchpadZoomEvent(
const blink::WebGestureEvent& event,
blink::mojom::InputEventResultSource ack_source,
blink::mojom::InputEventResultState ack_result) { … }
bool CrossProcessFrameConnector::BubbleScrollEvent(
const blink::WebGestureEvent& event) { … }
CrossProcessFrameConnector::RootViewFocusState
CrossProcessFrameConnector::HasFocus() { … }
void CrossProcessFrameConnector::FocusRootView() { … }
blink::mojom::PointerLockResult CrossProcessFrameConnector::LockPointer(
bool request_unadjusted_movement) { … }
blink::mojom::PointerLockResult CrossProcessFrameConnector::ChangePointerLock(
bool request_unadjusted_movement) { … }
void CrossProcessFrameConnector::UnlockPointer() { … }
void CrossProcessFrameConnector::OnSynchronizeVisualProperties(
const blink::FrameVisualProperties& visual_properties) { … }
void CrossProcessFrameConnector::UpdateViewportIntersection(
const blink::mojom::ViewportIntersectionState& intersection_state,
const std::optional<blink::FrameVisualProperties>& visual_properties) { … }
void CrossProcessFrameConnector::UpdateViewportIntersectionInternal(
const blink::mojom::ViewportIntersectionState& intersection_state,
bool include_visual_properties) { … }
void CrossProcessFrameConnector::OnVisibilityChanged(
blink::mojom::FrameVisibility visibility) { … }
void CrossProcessFrameConnector::SetIsInert(bool inert) { … }
void CrossProcessFrameConnector::OnSetInheritedEffectiveTouchAction(
cc::TouchAction touch_action) { … }
RenderWidgetHostViewBase*
CrossProcessFrameConnector::GetRootRenderWidgetHostView() { … }
RenderWidgetHostViewBase*
CrossProcessFrameConnector::GetParentRenderWidgetHostView() { … }
void CrossProcessFrameConnector::EnableAutoResize(const gfx::Size& min_size,
const gfx::Size& max_size) { … }
void CrossProcessFrameConnector::DisableAutoResize() { … }
bool CrossProcessFrameConnector::IsInert() const { … }
cc::TouchAction CrossProcessFrameConnector::InheritedEffectiveTouchAction()
const { … }
bool CrossProcessFrameConnector::IsHidden() const { … }
void CrossProcessFrameConnector::DidUpdateVisualProperties(
const cc::RenderFrameMetadata& metadata) { … }
void CrossProcessFrameConnector::DidAckGestureEvent(
const blink::WebGestureEvent& event,
blink::mojom::InputEventResultState ack_result) { … }
void CrossProcessFrameConnector::SetVisibilityForChildViews(
bool visible) const { … }
void CrossProcessFrameConnector::SetLocalFrameSize(
const gfx::Size& local_frame_size) { … }
void CrossProcessFrameConnector::SetRectInParentView(
const gfx::Rect& rect_in_parent_view) { … }
void CrossProcessFrameConnector::ResetRectInParentView() { … }
void CrossProcessFrameConnector::UpdateRenderThrottlingStatus(
bool is_throttled,
bool subtree_throttled,
bool display_locked) { … }
bool CrossProcessFrameConnector::IsThrottled() const { … }
bool CrossProcessFrameConnector::IsSubtreeThrottled() const { … }
bool CrossProcessFrameConnector::IsDisplayLocked() const { … }
bool CrossProcessFrameConnector::MaybeLogCrash(CrashVisibility visibility) { … }
void CrossProcessFrameConnector::MaybeLogShownCrash(
ShownAfterCrashingReason reason) { … }
void CrossProcessFrameConnector::DelegateWasShown() { … }
bool CrossProcessFrameConnector::IsVisible() { … }
RenderFrameHostImpl* CrossProcessFrameConnector::current_child_frame_host()
const { … }
}