diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2022-03-15 15:00:15 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2022-04-09 09:46:01 +0000 |
commit | 8cc10f1d353bae0b25f6864054743d58225acc69 (patch) | |
tree | 13993836628fffd98da28330798732369de8b490 /tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp | |
parent | 61c32f966ffdc416e92fd3af3379bf7b65f5d8f3 (diff) |
Avoid crashing on context free web actions
If a web action that depends on a context is called, do nothing instead
of crashing.
Fixes: QTBUG-101724
Change-Id: I7a0040a58e9dc7fa14f0cae71cf1bcd086b61c54
Reviewed-by: Kirill Burtsev <kirill.burtsev@qt.io>
(cherry picked from commit e8e381119ca5b08add50d13ab9d275d9ab55471c)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp')
-rw-r--r-- | tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp b/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp index bbd1fbd16..e4df3f711 100644 --- a/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp +++ b/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp @@ -173,6 +173,7 @@ private Q_SLOTS: void setViewPreservesExplicitPage(); void closeDiscardsPage(); void loadAfterRendererCrashed(); + void inspectElement(); }; // This will be called before the first test function is executed. @@ -3481,5 +3482,36 @@ void tst_QWebEngineView::loadAfterRendererCrashed() QVERIFY(loadSpy.first().first().toBool()); } +void tst_QWebEngineView::inspectElement() +{ + QWebEngineView view; + view.resize(640, 480); + view.show(); + QVERIFY(QTest::qWaitForWindowExposed(&view)); + + auto page = view.page(); + // shouldn't do anything until page is set + page->triggerAction(QWebEnginePage::InspectElement); + QTest::qWait(100); + + QSignalSpy spy(&view, &QWebEngineView::loadFinished); + view.load(QUrl("data:text/plain,foobarbaz")); + QTRY_COMPARE_WITH_TIMEOUT(spy.count(), 1, 12000); + + // shouldn't do anything since inspector is not attached + page->triggerAction(QWebEnginePage::InspectElement); + QTest::qWait(100); + + QWebEngineView inspectorView; + inspectorView.resize(640, 480); + inspectorView.show(); + QVERIFY(QTest::qWaitForWindowExposed(&inspectorView)); + inspectorView.page()->setInspectedPage(page); + + page->triggerAction(QWebEnginePage::InspectElement); + // TODO verify somehow + QTest::qWait(100); +} + QTEST_MAIN(tst_QWebEngineView) #include "tst_qwebengineview.moc" |