From 19244802084ff32e3375186b7195b8f284697776 Mon Sep 17 00:00:00 2001 From: zhangshengfeng Date: Mon, 23 Dec 2024 20:51:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DPC=E7=AB=AFweb=E7=A6=81?= =?UTF-8?q?=E6=AD=A2=E6=BB=9A=E5=8A=A8=EF=BC=8C=E5=86=85=E9=83=A8frame?= =?UTF-8?q?=E4=B8=8D=E7=94=9F=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhangshengfeng --- .../render_widget_host_view_aura.h | 4 +++- .../render_widget_host_view_child_frame.cc | 19 +++++++++++++++++++ .../render_widget_host_view_child_frame.h | 2 +- .../public/browser/render_widget_host_view.h | 2 +- content/test/test_render_view_host.h | 3 +++ 5 files changed, 27 insertions(+), 3 deletions(-) diff --git a/content/browser/renderer_host/render_widget_host_view_aura.h b/content/browser/renderer_host/render_widget_host_view_aura.h index 47b04441a3..a90f381d8c 100644 --- a/content/browser/renderer_host/render_widget_host_view_aura.h +++ b/content/browser/renderer_host/render_widget_host_view_aura.h @@ -119,9 +119,11 @@ class CONTENT_EXPORT RenderWidgetHostViewAura void WasOccluded() override; #if BUILDFLAG(IS_OHOS) void EvictFrameBackBuffers(bool invisible) override {} - void SetDoubleTapSupportEnabled(bool enabled) override {} void SetMultiTouchZoomSupportEnabled(bool enabled) override {} + bool GetScrollable() override { + return true; + } #endif gfx::Rect GetViewBounds() override; bool IsMouseLocked() override; diff --git a/content/browser/renderer_host/render_widget_host_view_child_frame.cc b/content/browser/renderer_host/render_widget_host_view_child_frame.cc index 7d471653b3..2c057dfdb9 100644 --- a/content/browser/renderer_host/render_widget_host_view_child_frame.cc +++ b/content/browser/renderer_host/render_widget_host_view_child_frame.cc @@ -912,9 +912,28 @@ void RenderWidgetHostViewChildFrame::TakeFallbackContentFrom( // This method only makes sense for top-level views. } +#if defined(OHOS_INPUT_EVENTS) +bool RenderWidgetHostViewChildFrame::GetScrollable() { + if (!frame_connector_) + return true; + + auto* root_view = frame_connector_->GetRootRenderWidgetHostView(); + if (root_view && !root_view->GetScrollable()) { + return false; + } + return true; +} +#endif + blink::mojom::InputEventResultState RenderWidgetHostViewChildFrame::FilterInputEvent( const blink::WebInputEvent& input_event) { +#if defined(OHOS_INPUT_EVENTS) + if (!GetScrollable() && input_event.GetType() == + blink::WebInputEvent::Type::kGestureScrollUpdate) { + return blink::mojom::InputEventResultState::kConsumed; + } +#endif // A child renderer should never receive a GesturePinch event. Pinch events // can still be targeted to a child, but they must be processed without // sending the pinch event to the child (e.g. touchpad pinch synthesizes diff --git a/content/browser/renderer_host/render_widget_host_view_child_frame.h b/content/browser/renderer_host/render_widget_host_view_child_frame.h index 7d36bdbe80..7102157ed7 100644 --- a/content/browser/renderer_host/render_widget_host_view_child_frame.h +++ b/content/browser/renderer_host/render_widget_host_view_child_frame.h @@ -95,9 +95,9 @@ class CONTENT_EXPORT RenderWidgetHostViewChildFrame void WasOccluded() override; #if BUILDFLAG(IS_OHOS) void EvictFrameBackBuffers(bool) override {} - void SetDoubleTapSupportEnabled(bool enabled) override {} void SetMultiTouchZoomSupportEnabled(bool enabled) override {} + bool GetScrollable() override; #endif gfx::Rect GetViewBounds() override; gfx::Size GetVisibleViewportSize() override; diff --git a/content/public/browser/render_widget_host_view.h b/content/public/browser/render_widget_host_view.h index c42394e2cd..01b1922b93 100644 --- a/content/public/browser/render_widget_host_view.h +++ b/content/public/browser/render_widget_host_view.h @@ -130,9 +130,9 @@ class CONTENT_EXPORT RenderWidgetHostView { #if BUILDFLAG(IS_OHOS) virtual void EvictFrameBackBuffers(bool invisible) = 0; - virtual void SetDoubleTapSupportEnabled(bool enabled) = 0; virtual void SetMultiTouchZoomSupportEnabled(bool enabled) = 0; + virtual bool GetScrollable() = 0; #endif // Whether the view is showing. diff --git a/content/test/test_render_view_host.h b/content/test/test_render_view_host.h index 7b89e47c96..fae171c556 100644 --- a/content/test/test_render_view_host.h +++ b/content/test/test_render_view_host.h @@ -104,6 +104,9 @@ class TestRenderWidgetHostView : public RenderWidgetHostViewBase, void EnsureSurfaceSynchronizedForWebTest() override; #if defined(OHOS_UNITTESTS) void EvictFrameBackBuffers(bool invisible) override {} + bool GetScrollable() override { + return true; + } #endif // RenderWidgetHostViewBase: -- Gitee