diff options
author | Martin Negyokru <negyokru@inf.u-szeged.hu> | 2022-12-14 10:37:23 +0100 |
---|---|---|
committer | Martin Negyokru <negyokru@inf.u-szeged.hu> | 2023-01-17 19:01:42 +0100 |
commit | e70f53df4d189fa832e3cd6bb729a00c5b6d52ea (patch) | |
tree | 289c8a9fe21219f1f2728118b7b6e0f14a062dee /src/core/web_contents_delegate_qt.cpp | |
parent | e8137c729afbbb5c1549cad863ecbfd8c95b94a5 (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.cpp | 4 |
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) |