diff options
author | Jüri Valdmann <juri.valdmann@qt.io> | 2019-04-12 11:33:16 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-04-17 17:05:18 +0000 |
commit | 96fb3a30457c8925431b67c0f35abb2833b7fb7c (patch) | |
tree | 0fa0f65a13b567136d1f5322d8f959209b881b76 /tests | |
parent | 9773111d686a96d694685fcb155a1965b0b6107f (diff) |
Fix QWebEngineView::setPage not deleting old page
Also fix QWebEnginePage::setView not deleting old page
Also fix wrong page being deleted if it's parented to the view.
Fixes: QTBUG-75131
Fixes: QTBUG-75175
Change-Id: Ie4dfb15b3182de7aa3a94cddcac54ea40a86121b
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp b/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp index 5f05f70ab..6ab63b54e 100644 --- a/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp +++ b/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp @@ -195,6 +195,10 @@ private Q_SLOTS: void deletePage(); void closeOpenerTab(); void switchPage(); + void setPageDeletesImplicitPage(); + void setViewDeletesImplicitPage(); + void setPagePreservesExplicitPage(); + void setViewPreservesExplicitPage(); }; // This will be called before the first test function is executed. @@ -3196,5 +3200,47 @@ void tst_QWebEngineView::switchPage() QTRY_COMPARE(webView.grab().toImage().pixelColor(QPoint(150,150)), Qt::black); } +void tst_QWebEngineView::setPageDeletesImplicitPage() +{ + QWebEngineView view; + QPointer<QWebEnginePage> implicitPage = view.page(); + QWebEnginePage explicitPage; + view.setPage(&explicitPage); + QCOMPARE(view.page(), &explicitPage); + QVERIFY(!implicitPage); // should be deleted +} + +void tst_QWebEngineView::setViewDeletesImplicitPage() +{ + QWebEngineView view; + QPointer<QWebEnginePage> implicitPage = view.page(); + QWebEnginePage explicitPage; + explicitPage.setView(&view); + QCOMPARE(view.page(), &explicitPage); + QVERIFY(!implicitPage); // should be deleted +} + +void tst_QWebEngineView::setPagePreservesExplicitPage() +{ + QWebEngineView view; + QPointer<QWebEnginePage> explicitPage1 = new QWebEnginePage(&view); + QPointer<QWebEnginePage> explicitPage2 = new QWebEnginePage(&view); + view.setPage(explicitPage1.data()); + view.setPage(explicitPage2.data()); + QCOMPARE(view.page(), explicitPage2.data()); + QVERIFY(explicitPage1); // should not be deleted +} + +void tst_QWebEngineView::setViewPreservesExplicitPage() +{ + QWebEngineView view; + QPointer<QWebEnginePage> explicitPage1 = new QWebEnginePage(&view); + QPointer<QWebEnginePage> explicitPage2 = new QWebEnginePage(&view); + explicitPage1->setView(&view); + explicitPage2->setView(&view); + QCOMPARE(view.page(), explicitPage2.data()); + QVERIFY(explicitPage1); // should not be deleted +} + QTEST_MAIN(tst_QWebEngineView) #include "tst_qwebengineview.moc" |