diff --git a/src/core/delegated_frame_host_client_qt.cpp b/src/core/delegated_frame_host_client_qt.cpp
index d3f5a4adeeb096f49fae948adc4c0693dd04761d..817ea2fa542a092cdc407f6a3154dbde3ddf3953 100644
--- a/src/core/delegated_frame_host_client_qt.cpp
+++ b/src/core/delegated_frame_host_client_qt.cpp
@@ -61,6 +61,7 @@ SkColor DelegatedFrameHostClientQt::DelegatedFrameHostGetGutterColor() const
 void DelegatedFrameHostClientQt::OnBeginFrame(base::TimeTicks frame_time)
 {
     p->host()->ProgressFlingIfNeeded(frame_time);
+    p->UpdateNeedsBeginFramesInternal();
 }
 
 void DelegatedFrameHostClientQt::OnFrameTokenChanged(uint32_t frame_token)
diff --git a/src/core/render_widget_host_view_qt.cpp b/src/core/render_widget_host_view_qt.cpp
index 2918fd8bce0bac169c25c502edfe13b2d145787e..e741962fb18780b8a3ed59f5d53c45185f42815c 100644
--- a/src/core/render_widget_host_view_qt.cpp
+++ b/src/core/render_widget_host_view_qt.cpp
@@ -280,6 +280,7 @@ RenderWidgetHostViewQt::RenderWidgetHostViewQt(content::RenderWidgetHost *widget
     , m_touchMotionStarted(false)
     , m_enableViz(features::IsVizDisplayCompositorEnabled())
     , m_visible(false)
+    , m_needsBeginFrames(false)
     , m_loadVisuallyCommittedState(NotCommitted)
     , m_adapterClient(0)
     , m_imeInProgress(false)
@@ -1741,8 +1742,8 @@ void RenderWidgetHostViewQt::handleFocusEvent(QFocusEvent *ev)
 
 void RenderWidgetHostViewQt::SetNeedsBeginFrames(bool needs_begin_frames)
 {
-    DCHECK(!m_enableViz);
-    m_compositor->setNeedsBeginFrames(needs_begin_frames);
+    m_needsBeginFrames = needs_begin_frames;
+    UpdateNeedsBeginFramesInternal();
 }
 
 content::RenderFrameHost *RenderWidgetHostViewQt::getFocusedFrameHost()
@@ -1777,6 +1778,8 @@ ui::TextInputType RenderWidgetHostViewQt::getTextInputType() const
 
 void RenderWidgetHostViewQt::SetWantsAnimateOnlyBeginFrames()
 {
+    if (m_enableViz)
+        m_delegatedFrameHost->SetWantsAnimateOnlyBeginFrames();
 }
 
 viz::SurfaceId RenderWidgetHostViewQt::GetCurrentSurfaceId() const
@@ -1877,4 +1880,12 @@ std::unique_ptr<content::SyntheticGestureTarget> RenderWidgetHostViewQt::CreateS
     return nullptr;
 }
 
+void RenderWidgetHostViewQt::UpdateNeedsBeginFramesInternal()
+{
+    if (m_enableViz)
+        m_delegatedFrameHost->SetNeedsBeginFrames(m_needsBeginFrames);
+    else
+        m_compositor->setNeedsBeginFrames(m_needsBeginFrames);
+}
+
 } // namespace QtWebEngineCore
diff --git a/src/core/render_widget_host_view_qt.h b/src/core/render_widget_host_view_qt.h
index 5935f477a24f740e963ce138ce2b22ec92ceac36..b5f2d65bbd2c1ac319029c188189bafac3915d35 100644
--- a/src/core/render_widget_host_view_qt.h
+++ b/src/core/render_widget_host_view_qt.h
@@ -214,6 +214,7 @@ public:
     void ShowDefinitionForSelection() override { QT_NOT_YET_IMPLEMENTED }
 #endif // defined(OS_MACOSX)
 
+    void UpdateNeedsBeginFramesInternal();
 
     // Overridden from content::BrowserAccessibilityDelegate
     content::BrowserAccessibilityManager* CreateBrowserAccessibilityManager(content::BrowserAccessibilityDelegate* delegate, bool for_root_frame) override;
@@ -269,6 +270,7 @@ private:
 
     const bool m_enableViz;
     bool m_visible;
+    bool m_needsBeginFrames;
     DelegatedFrameHostClientQt m_delegatedFrameHostClient{this};
     std::unique_ptr<content::DelegatedFrameHost> m_delegatedFrameHost;
     std::unique_ptr<ui::Layer> m_rootLayer;