summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKirill Burtsev <kirill.burtsev@qt.io>2021-03-11 20:12:43 +0100
committerKirill Burtsev <kirill.burtsev@qt.io>2021-03-23 19:50:24 +0100
commitade417a06a8d9c984971ecf6d8ab1ee81c1226fa (patch)
treec30dd1b7e022c19e9599bd2dce760674fd5ea0c2
parent99cdb9380ee249ae26b8f3b30fa89ce258217260 (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>
-rw-r--r--tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp22
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: