diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2022-03-15 15:00:15 +0100 |
---|---|---|
committer | Kirill Burtsev <kirill.burtsev@qt.io> | 2022-03-24 22:03:53 +0100 |
commit | e8e381119ca5b08add50d13ab9d275d9ab55471c (patch) | |
tree | 2368fdc56a2032da866cad1f2b9a4e34bd0cdbe4 /tests/auto/widgets/qwebengineview | |
parent | 67a59057b107ed8bea4db818538f4d30b793a90e (diff) |
Avoid crashing on context free web actions
If a web action that depends on a context is called, do nothing instead
of crashing.
Pick-to: 6.3 6.2
Fixes: QTBUG-101724
Change-Id: I7a0040a58e9dc7fa14f0cae71cf1bcd086b61c54
Reviewed-by: Kirill Burtsev <kirill.burtsev@qt.io>
Diffstat (limited to 'tests/auto/widgets/qwebengineview')
-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" |