diff options
author | Tamas Zakor <ztamas@inf.u-szeged.hu> | 2020-11-09 16:28:04 +0100 |
---|---|---|
committer | Tamas Zakor <ztamas@inf.u-szeged.hu> | 2020-12-03 14:16:50 +0100 |
commit | b719da05c6429d72f4e0e0af44da0bf3f3e57984 (patch) | |
tree | 60b715db5557dfa60bd13c085e8284cab875005e /tests/auto/widgets/loadsignals | |
parent | 7adea5999b3eb1ac77adeb0580cb98ce35eb6ffd (diff) |
Stabilize load signals emitting
Make the WebContentsDelegateQt::EmitLoadStarted() and the
WebContentsDelegateQt::EmitLoadFinished() independent from
the WebContentsDelegateQt::LoadProgressChanged() by removing
m_lastLoadProgress.
Adapt the WebContentsDelegateQt::LoadProgressChanged() to send
signal only if load is in progress.
Add a new test based on the bugreport.
Fix qmltests::WebEngineViewSource::test_viewSourceURL() flaky tests.
Fixes: QTBUG-65223
Fixes: QTBUG-87089
Change-Id: I90af4d2e85105dba801beb8102991eb4ef14c6a3
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'tests/auto/widgets/loadsignals')
-rw-r--r-- | tests/auto/widgets/loadsignals/tst_loadsignals.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/auto/widgets/loadsignals/tst_loadsignals.cpp b/tests/auto/widgets/loadsignals/tst_loadsignals.cpp index 32bf53931..b4170587d 100644 --- a/tests/auto/widgets/loadsignals/tst_loadsignals.cpp +++ b/tests/auto/widgets/loadsignals/tst_loadsignals.cpp @@ -52,6 +52,7 @@ private Q_SLOTS: void secondLoadForError_WhenErrorPageEnabled(); void loadAfterInPageNavigation_qtbug66869(); void fileDownloadDoesNotTriggerLoadSignals_qtbug66661(); + void numberOfStartedAndFinishedSignalsIsSame(); private: QWebEngineProfile profile; @@ -243,5 +244,44 @@ void tst_LoadSignals::fileDownloadDoesNotTriggerLoadSignals_qtbug66661() QCOMPARE(loadFinishedSpy.size(), 1); } +void tst_LoadSignals::numberOfStartedAndFinishedSignalsIsSame() { + + HttpServer server; + server.setResourceDirs({ TESTS_SOURCE_DIR "/qwebengineprofile/resources" }); + connect(&server, &HttpServer::newRequest, [] (HttpReqRep *) { + QTest::qWait(250); // just add delay to trigger some progress for every sub resource + }); + QVERIFY(server.start()); + + view.load(server.url("/hedgehog.png")); + QTRY_COMPARE(loadFinishedSpy.size(), 1); + QVERIFY(loadFinishedSpy[0][0].toBool()); + + loadStartedSpy.clear(); + loadFinishedSpy.clear(); + loadProgressSpy.clear(); + + view.page()->setHtml("<html><body>" + "<img src=\"" + server.url("/hedgehog.png").toEncoded() + "\">" + "<form method='GET' name='hiddenform' action='qrc:///resources/page1.html' />" + "<script language='javascript'>document.forms[0].submit();</script>" + "</body></html>"); + + QTRY_COMPARE(loadStartedSpy.size(), 2); + QTRY_COMPARE(loadFinishedSpy.size(), 2); + + QTRY_VERIFY(!loadFinishedSpy[0][0].toBool()); + QTRY_VERIFY(loadFinishedSpy[1][0].toBool()); + + view.page()->setHtml("<html><body>" + "<form method='GET' name='hiddenform' action='qrc:///resources/page1.html' />" + "<script language='javascript'>document.forms[0].submit();</script>" + "</body></html>"); + QTRY_COMPARE(loadStartedSpy.size(), 4); + QTRY_COMPARE(loadFinishedSpy.size(), 4); + QVERIFY(loadFinishedSpy[2][0].toBool()); + QVERIFY(loadFinishedSpy[3][0].toBool()); +} + QTEST_MAIN(tst_LoadSignals) #include "tst_loadsignals.moc" |