summaryrefslogtreecommitdiffstats
path: root/src/webengine
diff options
context:
space:
mode:
authorTamas Zakor <ztamas@inf.u-szeged.hu>2020-07-08 14:50:14 +0200
committerTamas Zakor <ztamas@inf.u-szeged.hu>2020-08-25 08:22:12 +0200
commit6deddc5ecd6155c567aecd0338c53c63fa465bfd (patch)
tree014a1ad0dd5ae586e493cd2e289835795d77c06a /src/webengine
parent0f444e1cadd8c7b53ca7dcdb1cc88d7642e80d23 (diff)
Ignore QQuickWebEngineNewViewRequest if it is unhandled
This is the case when the WebEngineNewViewRequest.openIn() is not called on newViewRequested(). For example, when opening the view source from context menu in quick minimal example. Fixes: QTBUG-85494 Change-Id: I7c1ae53684361de459b2f268e471904e632821b0 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/webengine')
-rw-r--r--src/webengine/api/qquickwebenginenewviewrequest.cpp1
-rw-r--r--src/webengine/api/qquickwebenginenewviewrequest_p.h1
-rw-r--r--src/webengine/api/qquickwebengineview.cpp4
3 files changed, 6 insertions, 0 deletions
diff --git a/src/webengine/api/qquickwebenginenewviewrequest.cpp b/src/webengine/api/qquickwebenginenewviewrequest.cpp
index 0af943de8..78ae1622a 100644
--- a/src/webengine/api/qquickwebenginenewviewrequest.cpp
+++ b/src/webengine/api/qquickwebenginenewviewrequest.cpp
@@ -117,5 +117,6 @@ void QQuickWebEngineNewViewRequest::openIn(QQuickWebEngineView *view)
view->d_func()->adoptWebContents(m_adapter.data());
else
view->setUrl(m_requestedUrl);
+ m_isRequestHandled = true;
m_adapter.reset();
}
diff --git a/src/webengine/api/qquickwebenginenewviewrequest_p.h b/src/webengine/api/qquickwebenginenewviewrequest_p.h
index e21f76111..d4686b291 100644
--- a/src/webengine/api/qquickwebenginenewviewrequest_p.h
+++ b/src/webengine/api/qquickwebenginenewviewrequest_p.h
@@ -77,6 +77,7 @@ private:
QQuickWebEngineNewViewRequest();
QQuickWebEngineView::NewViewDestination m_destination;
bool m_isUserInitiated;
+ bool m_isRequestHandled = false;
QSharedPointer<QtWebEngineCore::WebContentsAdapter> m_adapter;
QUrl m_requestedUrl;
friend class QQuickWebEngineView;
diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp
index aeb202c6a..7b875bf55 100644
--- a/src/webengine/api/qquickwebengineview.cpp
+++ b/src/webengine/api/qquickwebengineview.cpp
@@ -554,6 +554,7 @@ QQuickWebEngineViewPrivate::adoptNewWindow(QSharedPointer<WebContentsAdapter> ne
const QRect &, const QUrl &targetUrl)
{
Q_Q(QQuickWebEngineView);
+ Q_ASSERT(newWebContents);
QQuickWebEngineNewViewRequest request;
request.m_adapter = newWebContents;
request.m_isUserInitiated = userGesture;
@@ -578,6 +579,9 @@ QQuickWebEngineViewPrivate::adoptNewWindow(QSharedPointer<WebContentsAdapter> ne
Q_EMIT q->newViewRequested(&request);
+ if (!request.m_isRequestHandled)
+ return nullptr;
+
return newWebContents;
}