[M76 Migration] Handle fling gesture events in the browser process for EFL port 21/223321/1
authorsuyambu.rm <suyambu.rm@samsung.com>
Tue, 28 Jan 2020 12:38:38 +0000 (04:38 -0800)
committersuyambu.rm <suyambu.rm@samsung.com>
Tue, 28 Jan 2020 12:50:00 +0000 (04:50 -0800)
Fling events handling has been moved from renderer to browser in
upstream chromium as per [1]. Fling scroll was not working in M69
as fling events were not handled in the browser for chromium-efl.

With this change, DidStopFlinging gets called naturally when fling
ends which fixes hidden contextmenu not shown issue in [2].

Reference:
https://review.tizen.org/gerrit/c/platform/framework/web/chromium-efl/+/217340

Change-Id: Ie601be59ab05ef51c762c9ebd1cdc20dd67ce36e
Signed-off-by: suyambu.rm <suyambu.rm@samsung.com>
tizen_src/chromium_impl/content/browser/compositor/evasgl_delegated_frame_host.cc
tizen_src/chromium_impl/content/browser/compositor/evasgl_delegated_frame_host.h
tizen_src/chromium_impl/content/browser/renderer_host/render_widget_host_view_efl.cc
tizen_src/chromium_impl/content/browser/renderer_host/render_widget_host_view_efl.h

index c477f64..e483ac9 100644 (file)
@@ -93,8 +93,7 @@ void EvasGLDelegatedFrameHost::SwapDelegatedFrame(
   ClearRenderPasses(resources_in_frame);
 
   DCHECK(!invalid_frame);
-  client_->DelegatedFrameHostSendReclaimCompositorResources(
-      local_surface_id, returned_resources_);
+  client_->DidReceiveCompositorFrameAck(local_surface_id, returned_resources_);
   returned_resources_.clear();
 }
 
index eca2efa..ff87648 100644 (file)
@@ -30,7 +30,7 @@ class CONTENT_EXPORT EvasGLDelegatedFrameHostClient {
   // and surface from EvasGLDelegatedFrameHost.
   virtual Evas_GL_API* GetEvasGLAPI() = 0;
   virtual Evas_GL* GetEvasGL() = 0;
-  virtual void DelegatedFrameHostSendReclaimCompositorResources(
+  virtual void DidReceiveCompositorFrameAck(
       const viz::LocalSurfaceId& local_surface_id,
       const std::vector<viz::ReturnedResource>& resources) = 0;
 };
index 8abd4fa..8127a23 100644 (file)
@@ -331,10 +331,12 @@ Evas_GL* RenderWidgetHostViewEfl::GetEvasGL() {
   return evas_gl_;
 }
 
-void RenderWidgetHostViewEfl::DelegatedFrameHostSendReclaimCompositorResources(
+void RenderWidgetHostViewEfl::DidReceiveCompositorFrameAck(
     const viz::LocalSurfaceId& local_surface_id,
     const std::vector<viz::ReturnedResource>& resources) {
   renderer_compositor_frame_sink_->DidReceiveCompositorFrameAck(resources);
+  if (needs_begin_frames_)
+    host_->ProgressFlingIfNeeded(base::TimeTicks::Now());
 }
 
 void RenderWidgetHostViewEfl::InitializeDeviceDisplayInfo() {
@@ -963,7 +965,14 @@ bool RenderWidgetHostViewEfl::RequestSnapshotAsync(
 
 void RenderWidgetHostViewEfl::SetWantsAnimateOnlyBeginFrames() {}
 
-void RenderWidgetHostViewEfl::SetNeedsBeginFrames(bool needs_begin_frames) {}
+void RenderWidgetHostViewEfl::SetNeedsBeginFrames(bool needs_begin_frames) {
+  if (needs_begin_frames_ == needs_begin_frames)
+    return;
+
+  needs_begin_frames_ = needs_begin_frames;
+  if (needs_begin_frames_)
+    host_->ProgressFlingIfNeeded(base::TimeTicks::Now());
+}
 
 void RenderWidgetHostViewEfl::DidOverscroll(
     const ui::DidOverscrollParams& params) {
index a9bdf83..6dc4ad9 100644 (file)
@@ -244,7 +244,7 @@ class CONTENT_EXPORT RenderWidgetHostViewEfl
 
   // EvasGLDelegatedFrameHostClient implementation.
   Evas_GL_API* GetEvasGLAPI() override;
-  void DelegatedFrameHostSendReclaimCompositorResources(
+  void DidReceiveCompositorFrameAck(
       const viz::LocalSurfaceId& local_surface_id,
       const std::vector<viz::ReturnedResource>& resources) override;
   Evas_GL* GetEvasGL() override;
@@ -361,6 +361,8 @@ class CONTENT_EXPORT RenderWidgetHostViewEfl
   viz::mojom::CompositorFrameSinkClient* renderer_compositor_frame_sink_ =
       nullptr;
 
+  bool needs_begin_frames_ = false;
+
   base::WeakPtrFactory<RenderWidgetHostViewEfl> weak_factory_;
 
   DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostViewEfl);