diff options
author | Kirill Burtsev <kirill.burtsev@qt.io> | 2021-03-11 20:12:43 +0100 |
---|---|---|
committer | Kirill Burtsev <kirill.burtsev@qt.io> | 2021-03-23 19:50:24 +0100 |
commit | ade417a06a8d9c984971ecf6d8ab1ee81c1226fa (patch) | |
tree | c30dd1b7e022c19e9599bd2dce760674fd5ea0c2 /tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp | |
parent | 99cdb9380ee249ae26b8f3b30fa89ce258217260 (diff) |
View: test signal for deletion of external page set to view
Verify that view still gets notification about external page deletion
through basic QObject::destroyed
Task-number: QTBUG-90509
Change-Id: I5ae19f4184d6bbbfd94efe28a3f00fbb8f6d8a01
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
Diffstat (limited to 'tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp')
-rw-r--r-- | tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp b/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp index 046423605..d86810713 100644 --- a/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp +++ b/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp @@ -41,6 +41,7 @@ #include <QQuickItem> #include <QQuickWidget> #include <QtWebEngineCore/qwebenginehttprequest.h> +#include <QScopeGuard> #include <QTcpServer> #include <QTcpSocket> #include <QStyle> @@ -161,6 +162,7 @@ private Q_SLOTS: void jsKeyboardEvent_data(); void jsKeyboardEvent(); void deletePage(); + void autoDeleteOnExternalPageDelete(); void closeOpenerTab(); void switchPage(); void setPageDeletesImplicitPage(); @@ -3288,6 +3290,26 @@ void tst_QWebEngineView::deletePage() QTRY_VERIFY(spy.count()); } +void tst_QWebEngineView::autoDeleteOnExternalPageDelete() +{ + QPointer<QWebEngineView> view = new QWebEngineView; + QPointer<QWebEnginePage> page = new QWebEnginePage; + auto sg = qScopeGuard([&] () { delete view; delete page; }); + + QSignalSpy spy(page, &QWebEnginePage::loadFinished); + view->setPage(page); + view->show(); + view->resize(320, 240); + page->load(QUrl("about:blank")); + QTRY_VERIFY(spy.count()); + QVERIFY(page->parent() != view); + + auto sc = QObject::connect(page, &QWebEnginePage::destroyed, view, &QWebEngineView::deleteLater); + QTimer::singleShot(0, page, &QObject::deleteLater); + QTRY_VERIFY(!page); + QTRY_VERIFY(!view); +} + class TestView : public QWebEngineView { Q_OBJECT public: |