| diff --git content/browser/renderer_host/input/fling_scheduler.cc content/browser/renderer_host/input/fling_scheduler.cc |
| index 431df5d50debe..0fcc9ea8fbb1a 100644 |
| --- content/browser/renderer_host/input/fling_scheduler.cc |
| +++ content/browser/renderer_host/input/fling_scheduler.cc |
| @@ -68,6 +68,9 @@ void FlingScheduler::ProgressFlingOnBeginFrameIfneeded( |
| } |
| |
| ui::Compositor* FlingScheduler::GetCompositor() { |
| + if (compositor_) { |
| + return compositor_; |
| + } |
| if (!host_->GetView()) { |
| return nullptr; |
| } |
| diff --git content/browser/renderer_host/input/fling_scheduler_base.h content/browser/renderer_host/input/fling_scheduler_base.h |
| index afefe3cd83dee..6668463247644 100644 |
| --- content/browser/renderer_host/input/fling_scheduler_base.h |
| +++ content/browser/renderer_host/input/fling_scheduler_base.h |
| @@ -7,12 +7,23 @@ |
| |
| #include "content/browser/renderer_host/input/fling_controller.h" |
| |
| +namespace ui { |
| +class Compositor; |
| +} |
| + |
| namespace content { |
| |
| class FlingSchedulerBase : public FlingControllerSchedulerClient { |
| public: |
| virtual void ProgressFlingOnBeginFrameIfneeded( |
| base::TimeTicks current_time) = 0; |
| + |
| + void SetCompositor(ui::Compositor* compositor) { |
| + compositor_ = compositor; |
| + } |
| + |
| +protected: |
| + ui::Compositor* compositor_ = nullptr; |
| }; |
| |
| } // namespace content |
| diff --git content/browser/renderer_host/render_widget_host_impl.cc content/browser/renderer_host/render_widget_host_impl.cc |
| index d7b85d4a6adbe..6bd3035c313b3 100644 |
| --- content/browser/renderer_host/render_widget_host_impl.cc |
| +++ content/browser/renderer_host/render_widget_host_impl.cc |
| @@ -3271,6 +3271,11 @@ void RenderWidgetHostImpl::OnInvalidInputEventSource() { |
| GetProcess(), bad_message::INPUT_ROUTER_INVALID_EVENT_SOURCE); |
| } |
| |
| +void RenderWidgetHostImpl::SetCompositorForFlingScheduler(ui::Compositor* compositor) |
| +{ |
| + fling_scheduler_->SetCompositor(compositor); |
| +} |
| + |
| void RenderWidgetHostImpl::AddPendingUserActivation( |
| const WebInputEvent& event) { |
| if ((base::FeatureList::IsEnabled( |
| diff --git content/browser/renderer_host/render_widget_host_impl.h content/browser/renderer_host/render_widget_host_impl.h |
| index 5c042eea04022..8752e45f39f1f 100644 |
| --- content/browser/renderer_host/render_widget_host_impl.h |
| +++ content/browser/renderer_host/render_widget_host_impl.h |
| @@ -801,6 +801,7 @@ class CONTENT_EXPORT RenderWidgetHostImpl |
| |
| void ProgressFlingIfNeeded(base::TimeTicks current_time); |
| void StopFling(); |
| + void SetCompositorForFlingScheduler(ui::Compositor* compositor); |
| |
| // The RenderWidgetHostImpl will keep showing the old page (for a while) after |
| // navigation until the first frame of the new page arrives. This reduces |