diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp index 55e888abf..d7361d9f0 100644 --- a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp +++ b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp @@ -174,6 +174,7 @@ private Q_SLOTS: void setUrlUsingStateObject(); void setUrlThenLoads_data(); void setUrlThenLoads(); + void loadFinishedAfterNotFoundError_data(); void loadFinishedAfterNotFoundError(); void loadInSignalHandlers_data(); void loadInSignalHandlers(); @@ -2820,18 +2821,49 @@ void tst_QWebEnginePage::setUrlThenLoads() QCOMPARE(baseUrlSync(m_page), extractBaseUrl(urlToLoad2)); } +void tst_QWebEnginePage::loadFinishedAfterNotFoundError_data() +{ + QTest::addColumn<bool>("rfcInvalid"); + QTest::addColumn<bool>("withServer"); + QTest::addRow("rfc_invalid") << true << false; + QTest::addRow("non_existent") << false << false; + QTest::addRow("server_404") << false << true; +} + void tst_QWebEnginePage::loadFinishedAfterNotFoundError() { + QFETCH(bool, withServer); + QFETCH(bool, rfcInvalid); + + QScopedPointer<HttpServer> server; + if (withServer) { + server.reset(new HttpServer); + QVERIFY(server->start()); + } + QWebEnginePage page; QSignalSpy spy(&page, SIGNAL(loadFinished(bool))); page.settings()->setAttribute(QWebEngineSettings::ErrorPageEnabled, false); - page.setUrl(QUrl("http://non.existent/url")); + auto url = server + ? server->url("/not-found-page.html") + : QUrl(rfcInvalid ? "http://some.invalid" : "http://non.existent/url"); + page.setUrl(url); QTRY_COMPARE_WITH_TIMEOUT(spy.count(), 1, 20000); + QVERIFY(!spy.at(0).at(0).toBool()); + QCOMPARE(toPlainTextSync(&page), QString()); + QCOMPARE(spy.count(), 1); page.settings()->setAttribute(QWebEngineSettings::ErrorPageEnabled, true); - page.setUrl(QUrl("http://another.non.existent/url")); + url = server + ? server->url("/another-missing-one.html") + : QUrl(rfcInvalid ? "http://some.other.invalid" : "http://another.non.existent/url"); + page.setUrl(url); QTRY_COMPARE_WITH_TIMEOUT(spy.count(), 2, 20000); + QVERIFY(!spy.at(1).at(0).toBool()); + + QEXPECT_FAIL("", "No more loads (like separate load for error pages) are expected", Continue); + QTRY_COMPARE_WITH_TIMEOUT(spy.count(), 3, 1000); } class URLSetter : public QObject { |