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 47b04441a3d1441b5576d72bf73e078468cb3e08..a90f381d8ced25685a0b0369d749ce9fa8202ff3 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 7d471653b3dfadaa91cbe7dfdd5ff324d0fbe1bb..2c057dfdb970f1210082b653fe56304829317080 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 7d36bdbe80f1b1e469401144ee046c5cfe2897ec..7102157ed71e6f21a4c28e6f33e1df341e2d19d4 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 c42394e2cd149c7bb03618f293f29fd4d5ad7c23..01b1922b93f6237266b5514926d6e1c703f29bf8 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 7b89e47c969171348a303753b69dcb43cac864a5..fae171c556975250ccf867ebd872baa96c2fed48 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: