summaryrefslogtreecommitdiffstats
path: root/src/core/web_contents_delegate_qt.cpp
diff options
context:
space:
mode:
authorMartin Negyokru <negyokru@inf.u-szeged.hu>2022-12-14 10:37:23 +0100
committerMartin Negyokru <negyokru@inf.u-szeged.hu>2023-01-17 19:01:42 +0100
commite70f53df4d189fa832e3cd6bb729a00c5b6d52ea (patch)
tree289c8a9fe21219f1f2728118b7b6e0f14a062dee /src/core/web_contents_delegate_qt.cpp
parente8137c729afbbb5c1549cad863ecbfd8c95b94a5 (diff)
Add InputEventObserver to child frames
RenderWidgetHostViewChildFrame does not Ack mouse wheel events. RenderWidgetHostViewQt::handleWheelEvent expects Ack on every event. Origin-Agent-Cluster is a HTTP response header that instructs the browser to prevent synchronous scripting between same-site cross-origin pages. Chromium also uses this header as a hint that an origin should get its own separate resources, such as a dedicated process. That's where child frames are created. This feature is implemented in chromium 88. Add observer to child frames that responds to wheel events. Add test for wheel/scroll events on child frames. Pick-to: 6.5 Fixes: QTBUG-109348 Change-Id: I20439a9068c5c2f8416a350891a6cf8830e1a5d6 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/core/web_contents_delegate_qt.cpp')
-rw-r--r--src/core/web_contents_delegate_qt.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/core/web_contents_delegate_qt.cpp b/src/core/web_contents_delegate_qt.cpp
index fd445f88a..b58b56500 100644
--- a/src/core/web_contents_delegate_qt.cpp
+++ b/src/core/web_contents_delegate_qt.cpp
@@ -255,6 +255,10 @@ void WebContentsDelegateQt::RenderFrameCreated(content::RenderFrameHost *render_
{
content::FrameTreeNode *node = static_cast<content::RenderFrameHostImpl *>(render_frame_host)->frame_tree_node();
m_frameFocusedObserver.addNode(node);
+
+ // If it's a child frame (render_widget_host_view_child_frame) install an InputEventObserver on
+ // it. Note that it is only needed for WheelEventAck.
+ RenderWidgetHostViewQt::registerInputEventObserver(web_contents(), render_frame_host);
}
void WebContentsDelegateQt::PrimaryMainFrameRenderProcessGone(base::TerminationStatus status)