From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: deepak1556 Date: Mon, 1 Sep 2025 23:31:49 +0900 Subject: Revert: partial "Remove unused PreHandleMouseEvent" Refs https://chromium-review.googlesource.com/c/chromium/src/+/6880411 diff --git a/content/browser/renderer_host/render_widget_host_delegate.cc b/content/browser/renderer_host/render_widget_host_delegate.cc index 74fea36ea7f9a345b3474ea18be00704831a685e..c75785d5a26fa52a39d1a3552da9a7621e4c8430 100644 --- a/content/browser/renderer_host/render_widget_host_delegate.cc +++ b/content/browser/renderer_host/render_widget_host_delegate.cc @@ -13,6 +13,11 @@ namespace content { +bool RenderWidgetHostDelegate::PreHandleMouseEvent( + const blink::WebMouseEvent& event) { + return false; +} + KeyboardEventProcessingResult RenderWidgetHostDelegate::PreHandleKeyboardEvent( const input::NativeWebKeyboardEvent& event) { return KeyboardEventProcessingResult::NOT_HANDLED; diff --git a/content/browser/renderer_host/render_widget_host_delegate.h b/content/browser/renderer_host/render_widget_host_delegate.h index bc1bfa1ac381ec94121a264d9dcbae9e02ab5a81..c6fc03ae158b3ce87fd684d765a3f1b0e9f79212 100644 --- a/content/browser/renderer_host/render_widget_host_delegate.h +++ b/content/browser/renderer_host/render_widget_host_delegate.h @@ -103,6 +103,12 @@ class CONTENT_EXPORT RenderWidgetHostDelegate { virtual void ResizeDueToAutoResize(RenderWidgetHostImpl* render_widget_host, const gfx::Size& new_size) {} + // Callback to give the browser a chance to handle the specified mouse + // event before sending it to the renderer. Returns true if the event was + // handled, false otherwise. A true value means no more processing should + // happen on the event. The default return value is false. + virtual bool PreHandleMouseEvent(const blink::WebMouseEvent& event); + // Callback to give the browser a chance to handle the specified keyboard // event before sending it to the renderer. See enum for details on return // value. diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc index fa909df2ac167b8d2553ff56e5a3305027b520e6..39af86f78724d648667d8d1abc4e8cd385422f54 100644 --- a/content/browser/renderer_host/render_widget_host_impl.cc +++ b/content/browser/renderer_host/render_widget_host_impl.cc @@ -1589,6 +1589,10 @@ void RenderWidgetHostImpl::ForwardMouseEventWithLatencyInfo( CHECK_GE(mouse_event.GetType(), WebInputEvent::Type::kMouseTypeFirst); CHECK_LE(mouse_event.GetType(), WebInputEvent::Type::kMouseTypeLast); + if (delegate_ && delegate_->PreHandleMouseEvent(mouse_event)) { + return; + } + for (auto& mouse_event_callback : mouse_event_callbacks_) { if (mouse_event_callback.Run(mouse_event)) { return; diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc index 30f6ecdeb1c85ea9f7e5345a52fe9fe89ea9d03e..f9dd6aa73ab4a36cecbb4fc374b9471af3fa822f 100644 --- a/content/browser/web_contents/web_contents_impl.cc +++ b/content/browser/web_contents/web_contents_impl.cc @@ -4476,6 +4476,12 @@ void WebContentsImpl::RenderWidgetWasResized( width_changed); } +bool WebContentsImpl::PreHandleMouseEvent(const blink::WebMouseEvent& event) { + OPTIONAL_TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("content.verbose"), + "WebContentsImpl::PreHandleMouseEvent"); + return delegate_ ? delegate_->PreHandleMouseEvent(this, event) : false; +} + void WebContentsImpl::PreHandleDragUpdate(const DropData& drop_data, const gfx::PointF& client_pt) { if (delegate_) { diff --git a/content/browser/web_contents/web_contents_impl.h b/content/browser/web_contents/web_contents_impl.h index 5d32d4af9d1d4f3af4c8a6a8c562e86197acc5aa..42698a8717f6e3cad52b2deeca373658889de712 100644 --- a/content/browser/web_contents/web_contents_impl.h +++ b/content/browser/web_contents/web_contents_impl.h @@ -1122,6 +1122,7 @@ class CONTENT_EXPORT WebContentsImpl double GetPendingZoomLevel(RenderWidgetHostImpl* rwh) override; + bool PreHandleMouseEvent(const blink::WebMouseEvent& event) override; void PreHandleDragUpdate(const DropData& drop_data, const gfx::PointF& client_pt); void PreHandleDragExit(); diff --git a/content/public/browser/web_contents_delegate.cc b/content/public/browser/web_contents_delegate.cc index 4083a3de23b451fa41cf20d8ebd5f7e9e2b5327a..52c09b87d6f844e2bd617301162b2cd3f738dc62 100644 --- a/content/public/browser/web_contents_delegate.cc +++ b/content/public/browser/web_contents_delegate.cc @@ -127,6 +127,12 @@ bool WebContentsDelegate::HandleContextMenu(RenderFrameHost& render_frame_host, return false; } +bool WebContentsDelegate::PreHandleMouseEvent( + WebContents* source, + const blink::WebMouseEvent& event) { + return false; +} + KeyboardEventProcessingResult WebContentsDelegate::PreHandleKeyboardEvent( WebContents* source, const input::NativeWebKeyboardEvent& event) { diff --git a/content/public/browser/web_contents_delegate.h b/content/public/browser/web_contents_delegate.h index 58f34bc33426136d2040f241f2cb5928dc19fb2d..951ef162e4783979857d1d1d2eb15695618a2021 100644 --- a/content/public/browser/web_contents_delegate.h +++ b/content/public/browser/web_contents_delegate.h @@ -326,6 +326,13 @@ class CONTENT_EXPORT WebContentsDelegate { virtual bool HandleContextMenu(RenderFrameHost& render_frame_host, const ContextMenuParams& params); + // Allows delegates to handle mouse events before sending to the renderer. + // Returns true if the event was handled, false otherwise. A true value means + // no more processing should happen on the event. The default return value is + // false. + virtual bool PreHandleMouseEvent(WebContents* source, + const blink::WebMouseEvent& event); + // Allows delegates to handle mouse drag events before sending to the // renderer. Returns true if the event was handled, false otherwise. A true // value means no more processing should happen on the event. The default