summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp36
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 {