diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2021-04-30 17:15:57 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2021-06-03 02:40:25 +0200 |
commit | 82fe139dae5205a1683fb2b344c5dc867597c443 (patch) | |
tree | eeae61e1f34ebbc8536ebc2681d43de8dfb6e475 /tests | |
parent | 5a0b312214ac182749040dac7ca09610c2124fbd (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.cpp | 23 | ||||
-rw-r--r-- | tests/auto/quick/qmltests/data/tst_newViewRequest.qml | 16 | ||||
-rw-r--r-- | tests/auto/quick/qmltests/data/tst_viewSource.qml | 6 | ||||
-rw-r--r-- | tests/auto/util/testwindow.h | 2 | ||||
-rw-r--r-- | tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp | 45 |
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; |