summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2021-04-30 17:15:57 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2021-06-03 02:40:25 +0200
commit82fe139dae5205a1683fb2b344c5dc867597c443 (patch)
treeeeae61e1f34ebbc8536ebc2681d43de8dfb6e475 /tests
parent5a0b312214ac182749040dac7ca09610c2124fbd (diff)
Move createWindow to a signal
Ports QQuickWebEngineNewViewRequest to QtWebEngineCore. [ChangeLog][QtWebEngineQuick][WebEngineView] WebEngineView::NewViewRequested is now handled with WebEngineView::acceptAsNewView() instead of with WebEngineNewViewRequest::openIn(). Task-number: QTBUG-74587 Change-Id: I9b27128948076e13f2c228458e1e7491df12153d Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Michal Klocek <michal.klocek@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/quick/publicapi/tst_publicapi.cpp23
-rw-r--r--tests/auto/quick/qmltests/data/tst_newViewRequest.qml16
-rw-r--r--tests/auto/quick/qmltests/data/tst_viewSource.qml6
-rw-r--r--tests/auto/util/testwindow.h2
-rw-r--r--tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp45
5 files changed, 45 insertions, 47 deletions
diff --git a/tests/auto/quick/publicapi/tst_publicapi.cpp b/tests/auto/quick/publicapi/tst_publicapi.cpp
index 87fa901c8..8a40325e0 100644
--- a/tests/auto/quick/publicapi/tst_publicapi.cpp
+++ b/tests/auto/quick/publicapi/tst_publicapi.cpp
@@ -37,6 +37,7 @@
#include <QtWebEngineCore/QWebEngineCertificateError>
#include <QtWebEngineCore/QWebEngineFindTextResult>
#include <QtWebEngineCore/QWebEngineFullScreenRequest>
+#include <QtWebEngineCore/QWebEngineNewWindowRequest>
#include <QtWebEngineCore/QWebEngineNotification>
#include <QtWebEngineCore/QWebEngineQuotaRequest>
#include <QtWebEngineCore/QWebEngineRegisterProtocolHandlerRequest>
@@ -50,7 +51,6 @@
#include <private/qquickwebenginedialogrequests_p.h>
#include <private/qquickwebenginehistory_p.h>
#include <private/qquickwebenginenavigationrequest_p.h>
-#include <private/qquickwebenginenewviewrequest_p.h>
#include <private/qquickwebenginesettings_p.h>
#include <private/qquickwebenginesingleton_p.h>
@@ -70,7 +70,6 @@ static const QList<const QMetaObject *> typesToCheck = QList<const QMetaObject *
<< &QQuickWebEngineHistoryListModel::staticMetaObject
<< &QWebEngineLoadRequest::staticMetaObject
<< &QQuickWebEngineNavigationRequest::staticMetaObject
- << &QQuickWebEngineNewViewRequest::staticMetaObject
<< &QQuickWebEngineProfile::staticMetaObject
<< &QQuickWebEngineSettings::staticMetaObject
<< &QWebEngineFullScreenRequest::staticMetaObject
@@ -86,6 +85,7 @@ static const QList<const QMetaObject *> typesToCheck = QList<const QMetaObject *
<< &QWebEngineCertificateError::staticMetaObject
<< &QWebEngineQuotaRequest::staticMetaObject
<< &QWebEngineRegisterProtocolHandlerRequest::staticMetaObject
+ << &QWebEngineNewWindowRequest::staticMetaObject
<< &QWebEngineNotification::staticMetaObject
<< &QWebEngineFindTextResult::staticMetaObject
;
@@ -332,10 +332,14 @@ static const QStringList expectedAPI = QStringList()
<< "QQuickWebEngineNavigationRequest.isMainFrame --> bool"
<< "QQuickWebEngineNavigationRequest.navigationType --> QQuickWebEngineView::NavigationType"
<< "QQuickWebEngineNavigationRequest.url --> QUrl"
- << "QQuickWebEngineNewViewRequest.destination --> QQuickWebEngineView::NewViewDestination"
- << "QQuickWebEngineNewViewRequest.openIn(QQuickWebEngineView*) --> void"
- << "QQuickWebEngineNewViewRequest.requestedUrl --> QUrl"
- << "QQuickWebEngineNewViewRequest.userInitiated --> bool"
+ << "QWebEngineNewWindowRequest.destination --> QWebEngineNewWindowRequest::DestinationType"
+ << "QWebEngineNewWindowRequest.requestedUrl --> QUrl"
+ << "QWebEngineNewWindowRequest.requestedGeometry --> QRect"
+ << "QWebEngineNewWindowRequest.userInitiated --> bool"
+ << "QWebEngineNewWindowRequest.InNewBackgroundTab --> DestinationType"
+ << "QWebEngineNewWindowRequest.InNewDialog --> DestinationType"
+ << "QWebEngineNewWindowRequest.InNewTab --> DestinationType"
+ << "QWebEngineNewWindowRequest.InNewWindow --> DestinationType"
<< "QQuickWebEngineProfile.AllowPersistentCookies --> PersistentCookiesPolicy"
<< "QQuickWebEngineProfile.DiskHttpCache --> HttpCacheType"
<< "QQuickWebEngineProfile.ForcePersistentCookies --> PersistentCookiesPolicy"
@@ -622,10 +626,6 @@ static const QStringList expectedAPI = QStringList()
<< "QQuickWebEngineView.MediaVideoCapture --> Feature"
<< "QQuickWebEngineView.NPageSize --> PrintedPageSizeId"
<< "QQuickWebEngineView.NPaperSize --> PrintedPageSizeId"
- << "QQuickWebEngineView.NewViewInBackgroundTab --> NewViewDestination"
- << "QQuickWebEngineView.NewViewInDialog --> NewViewDestination"
- << "QQuickWebEngineView.NewViewInTab --> NewViewDestination"
- << "QQuickWebEngineView.NewViewInWindow --> NewViewDestination"
<< "QQuickWebEngineView.NoErrorDomain --> ErrorDomain"
<< "QQuickWebEngineView.Notifications --> Feature"
<< "QQuickWebEngineView.NoWebAction --> WebAction"
@@ -723,7 +723,7 @@ static const QStringList expectedAPI = QStringList()
<< "QQuickWebEngineView.loadingChanged(QWebEngineLoadRequest) --> void"
<< "QQuickWebEngineView.navigationHistory --> QQuickWebEngineHistory*"
<< "QQuickWebEngineView.navigationRequested(QQuickWebEngineNavigationRequest*) --> void"
- << "QQuickWebEngineView.newViewRequested(QQuickWebEngineNewViewRequest*) --> void"
+ << "QQuickWebEngineView.newViewRequested(QWebEngineNewWindowRequest*) --> void"
<< "QQuickWebEngineView.pdfPrintingFinished(QString,bool) --> void"
<< "QQuickWebEngineView.printRequested() --> void"
<< "QQuickWebEngineView.printToPdf(QJSValue) --> void"
@@ -776,6 +776,7 @@ static const QStringList expectedAPI = QStringList()
<< "QQuickWebEngineView.windowCloseRequested() --> void"
<< "QQuickWebEngineView.zoomFactor --> double"
<< "QQuickWebEngineView.zoomFactorChanged(double) --> void"
+ << "QQuickWebEngineView.acceptAsNewView(QWebEngineNewWindowRequest*) --> void"
<< "QWebEngineQuotaRequest.accept() --> void"
<< "QWebEngineQuotaRequest.origin --> QUrl"
<< "QWebEngineQuotaRequest.reject() --> void"
diff --git a/tests/auto/quick/qmltests/data/tst_newViewRequest.qml b/tests/auto/quick/qmltests/data/tst_newViewRequest.qml
index fd720befe..c79a3aee8 100644
--- a/tests/auto/quick/qmltests/data/tst_newViewRequest.qml
+++ b/tests/auto/quick/qmltests/data/tst_newViewRequest.qml
@@ -52,7 +52,7 @@ TestWebEngineView {
signalName: "newViewRequested"
}
- onNewViewRequested: {
+ onNewViewRequested: function(request) {
newViewRequest = {
"destination": request.destination,
"userInitiated": request.userInitiated,
@@ -69,11 +69,9 @@ TestWebEngineView {
"}", webEngineView);
if (viewType === "dialog")
- request.openIn(dialog.webEngineView);
- else if (viewType === "null")
- request.openIn(0);
+ dialog.webEngineView.acceptAsNewView(request);
else if (viewType === "webEngineView")
- request.openIn(webEngineView);
+ webEngineView.acceptAsNewView(request);
}
TestCase {
@@ -118,7 +116,7 @@ TestWebEngineView {
verify(webEngineView.waitForLoadSucceeded());
tryCompare(newViewRequestedSpy, "count", 1);
- compare(newViewRequest.destination, WebEngineView.NewViewInTab);
+ compare(newViewRequest.destination, WebEngineNewViewRequest.InNewTab);
verify(!newViewRequest.userInitiated);
if (viewType === "dialog") {
@@ -139,7 +137,7 @@ TestWebEngineView {
verify(webEngineView.waitForLoadSucceeded());
tryCompare(newViewRequestedSpy, "count", 1);
- compare(newViewRequest.destination, WebEngineView.NewViewInDialog);
+ compare(newViewRequest.destination, WebEngineNewViewRequest.InNewDialog);
compare(newViewRequest.requestedUrl, url);
verify(!newViewRequest.userInitiated);
if (viewType === "dialog") {
@@ -163,7 +161,7 @@ TestWebEngineView {
tryCompare(newViewRequestedSpy, "count", 1);
compare(newViewRequest.requestedUrl, url);
- compare(newViewRequest.destination, WebEngineView.NewViewInDialog);
+ compare(newViewRequest.destination, WebEngineNewViewRequest.InNewDialog);
verify(newViewRequest.userInitiated);
if (viewType === "dialog") {
verify(dialog.webEngineView.waitForLoadSucceeded());
@@ -180,7 +178,7 @@ TestWebEngineView {
mouseClick(webEngineView, center.x, center.y, Qt.LeftButton, Qt.ControlModifier);
tryCompare(newViewRequestedSpy, "count", 1);
compare(newViewRequest.requestedUrl, Qt.resolvedUrl("test1.html"));
- compare(newViewRequest.destination, WebEngineView.NewViewInBackgroundTab);
+ compare(newViewRequest.destination, WebEngineNewViewRequest.InNewBackgroundTab);
verify(newViewRequest.userInitiated);
if (viewType === "" || viewType === "null") {
compare(loadRequestArray[0].status, WebEngineView.LoadStartedStatus);
diff --git a/tests/auto/quick/qmltests/data/tst_viewSource.qml b/tests/auto/quick/qmltests/data/tst_viewSource.qml
index 22c340c2b..0b5f6a7ab 100644
--- a/tests/auto/quick/qmltests/data/tst_viewSource.qml
+++ b/tests/auto/quick/qmltests/data/tst_viewSource.qml
@@ -55,7 +55,7 @@ TestWebEngineView {
"userInitiated": request.userInitiated
};
- request.openIn(webEngineView);
+ webEngineView.acceptAsNewView(request);
}
TestCase {
@@ -86,7 +86,7 @@ TestWebEngineView {
// The first titleChanged signal is emitted by adoptWebContents()
tryVerify(function() { return titleChangedSpy.count >= 2; });
- compare(viewRequest.destination, WebEngineView.NewViewInTab);
+ compare(viewRequest.destination, WebEngineNewViewRequest.InNewTab);
verify(viewRequest.userInitiated);
verify(!webEngineView.action(WebEngineView.ViewSource).enabled);
@@ -115,7 +115,7 @@ TestWebEngineView {
// The first titleChanged signal is emitted by adoptWebContents()
tryVerify(function() { return titleChangedSpy.count >= 2; });
- compare(viewRequest.destination, WebEngineView.NewViewInTab);
+ compare(viewRequest.destination, WebEngineNewViewRequest.InNewTab);
verify(viewRequest.userInitiated);
tryCompare(webEngineView, "url", "view-source:" + url.replace("user:passwd@", ""));
diff --git a/tests/auto/util/testwindow.h b/tests/auto/util/testwindow.h
index b57443c69..958381ff2 100644
--- a/tests/auto/util/testwindow.h
+++ b/tests/auto/util/testwindow.h
@@ -45,7 +45,7 @@ public:
QScopedPointer<QQuickItem> webEngineView;
protected:
- inline void resizeEvent(QResizeEvent*);
+ inline void resizeEvent(QResizeEvent *) override;
};
inline TestWindow::TestWindow(QQuickItem *webEngineView)
diff --git a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
index c376cbbb3..460e4369b 100644
--- a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
+++ b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
@@ -51,6 +51,7 @@
#include <qwebenginefindtextresult.h>
#include <qwebenginefullscreenrequest.h>
#include <qwebenginehistory.h>
+#include <qwebenginenewwindowrequest.h>
#include <qwebenginenotification.h>
#include <qwebenginepage.h>
#include <qwebengineprofile.h>
@@ -308,7 +309,7 @@ public:
bool m_acceptNavigationRequest;
protected:
- virtual bool acceptNavigationRequest(const QUrl &url, NavigationType type, bool isMainFrame)
+ bool acceptNavigationRequest(const QUrl &url, NavigationType type, bool isMainFrame) override
{
Q_UNUSED(url);
Q_UNUSED(isMainFrame);
@@ -527,7 +528,8 @@ class TestPage : public QWebEnginePage {
public:
TestPage(QObject *parent = nullptr) : QWebEnginePage(parent)
{
- connect(this, SIGNAL(geometryChangeRequested(QRect)), this, SLOT(slotGeometryChangeRequested(QRect)));
+ connect(this, &QWebEnginePage::geometryChangeRequested, this, &TestPage::slotGeometryChangeRequested);
+ connect(this, &QWebEnginePage::newWindowRequested, this, &TestPage::slotNewWindowRequested);
}
struct Navigation {
@@ -537,7 +539,7 @@ public:
};
QList<Navigation> navigations;
- virtual bool acceptNavigationRequest(const QUrl &url, NavigationType type, bool isMainFrame)
+ bool acceptNavigationRequest(const QUrl &url, NavigationType type, bool isMainFrame) override
{
Navigation n;
n.url = url;
@@ -548,12 +550,6 @@ public:
}
QList<TestPage*> createdWindows;
- virtual QWebEnginePage* createWindow(WebWindowType) {
- TestPage* page = new TestPage(this);
- createdWindows.append(page);
- emit windowCreated();
- return page;
- }
QRect requestedGeometry;
@@ -561,7 +557,16 @@ signals:
void windowCreated();
private Q_SLOTS:
- void slotGeometryChangeRequested(const QRect& geom) {
+ void slotNewWindowRequested(QWebEngineNewWindowRequest &request)
+ {
+ TestPage *page = new TestPage(this);
+ createdWindows.append(page);
+ emit windowCreated();
+ page->acceptAsNewWindow(request);
+ }
+
+ void slotGeometryChangeRequested(const QRect &geom)
+ {
requestedGeometry = geom;
}
};
@@ -3418,15 +3423,13 @@ void tst_QWebEnginePage::devTools()
void tst_QWebEnginePage::openLinkInDifferentProfile()
{
- class Page : public QWebEnginePage {
- public:
- QWebEnginePage *targetPage = nullptr;
- Page(QWebEngineProfile *profile) : QWebEnginePage(profile) {}
- private:
- QWebEnginePage *createWindow(WebWindowType) override { return targetPage; }
- };
+ QWebEnginePage *targetPage = nullptr;
QWebEngineProfile profile1, profile2;
- Page page1(&profile1), page2(&profile2);
+ QWebEnginePage page1(&profile1), page2(&profile2);
+ connect(&page1, &QWebEnginePage::newWindowRequested, [&](QWebEngineNewWindowRequest &request) {
+ if (targetPage)
+ targetPage->acceptAsNewWindow(request);
+ });
QWebEngineView view;
view.resize(500, 500);
view.setPage(&page1);
@@ -3438,7 +3441,7 @@ void tst_QWebEnginePage::openLinkInDifferentProfile()
"</body></html>");
QTRY_COMPARE(spy1.count(), 1);
QVERIFY(spy1.takeFirst().value(0).toBool());
- page1.targetPage = &page2;
+ targetPage = &page2;
QTest::mouseClick(view.focusProxy(), Qt::MiddleButton, {}, elementCenter(&page1, "link"));
QTRY_COMPARE(spy2.count(), 1);
QVERIFY(spy2.takeFirst().value(0).toBool());
@@ -3500,11 +3503,7 @@ void tst_QWebEnginePage::openLinkInNewPage_data()
// the disposition and performing the navigation request normally.
QTest::newRow("BlockPopup") << Decision::ReturnNull << Cause::TargetBlank << Effect::Blocked;
-#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
QTest::newRow("IgnoreIntent") << Decision::ReturnNull << Cause::MiddleClick << Effect::Blocked;
-#else
- QTest::newRow("IgnoreIntent") << Decision::ReturnNull << Cause::MiddleClick << Effect::LoadInSelf;
-#endif
QTest::newRow("OverridePopup") << Decision::ReturnSelf << Cause::TargetBlank << Effect::LoadInSelf;
QTest::newRow("OverrideIntent") << Decision::ReturnSelf << Cause::MiddleClick << Effect::LoadInSelf;
QTest::newRow("AcceptPopup") << Decision::ReturnOther << Cause::TargetBlank << Effect::LoadInOther;