From d25075fb681fa92fad1f9bdcb262a3e361e7659e Mon Sep 17 00:00:00 2001 From: Kirill Burtsev Date: Fri, 31 Jul 2020 16:02:36 +0200 Subject: Don't send duplicate load progress values MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Suppress duplicated progress values coming from chromium. Verify this behavior reliably (and not only 0 and 100 value) by loading html with subresources with minor delay through test http server. Change-Id: Id034dda9012212d54d12fc95d5939ba301577c1c Reviewed-by: Jüri Valdmann --- .../auto/quick/qmltests/data/tst_loadProgress.qml | 22 ++++++++++++++-------- tests/auto/quick/qmltests/qmltests.pro | 1 + tests/auto/quick/qmltests/tst_qmltests.cpp | 8 ++++++++ 3 files changed, 23 insertions(+), 8 deletions(-) (limited to 'tests/auto/quick/qmltests') diff --git a/tests/auto/quick/qmltests/data/tst_loadProgress.qml b/tests/auto/quick/qmltests/data/tst_loadProgress.qml index 15058cb8f..7bfe1d9e9 100644 --- a/tests/auto/quick/qmltests/data/tst_loadProgress.qml +++ b/tests/auto/quick/qmltests/data/tst_loadProgress.qml @@ -30,6 +30,8 @@ import QtQuick 2.0 import QtTest 1.0 import QtWebEngine 1.2 +import Test.Shared 1.0 as Shared + TestWebEngineView { id: webEngineView width: 400 @@ -55,10 +57,14 @@ TestWebEngineView { compare(spyProgress.count, 0) loadProgressArray = [] - webEngineView.url = Qt.resolvedUrl("test1.html") + verify(Shared.HttpServer.start()) + Shared.HttpServer.newRequest.connect(request => { + wait(250) // just add delay to trigger some progress for every sub resource + }) + webEngineView.url = Shared.HttpServer.url('/loadprogress/main.html') // Wait for the first loadProgressChanged signal, which have to be non-negative spyProgress.wait() - verify(loadProgressArray[0] >= 0) + compare(loadProgressArray[0], 0) verify(webEngineView.loadProgress >= 0) // Wait for the last loadProgressChanged signal, which have to be 100% @@ -67,13 +73,13 @@ TestWebEngineView { compare(loadProgressArray[loadProgressArray.length - 1], 100) compare(webEngineView.loadProgress, 100) - // Test whether the chromium emits progress numbers in ascending order - var loadProgressMin = 0 - for (var i in loadProgressArray) { - var loadProgress = loadProgressArray[i] - if (loadProgressMin > loadProgress) + // Test whether the chromium emits progress numbers in strict monotonic ascending order + let progress = 0 + for (let i = 1; i < loadProgressArray.length; ++i) { + let nextProgress = loadProgressArray[i] + if (nextProgress <= progress) fail("Invalid sequence of progress-values: " + loadProgressArray) - loadProgressMin = loadProgress + progress = nextProgress } } } diff --git a/tests/auto/quick/qmltests/qmltests.pro b/tests/auto/quick/qmltests/qmltests.pro index 5c57f7ad9..a50bfd7e6 100644 --- a/tests/auto/quick/qmltests/qmltests.pro +++ b/tests/auto/quick/qmltests/qmltests.pro @@ -1,4 +1,5 @@ include(../tests.pri) +include(../../shared/http.pri) QT += qmltest diff --git a/tests/auto/quick/qmltests/tst_qmltests.cpp b/tests/auto/quick/qmltests/tst_qmltests.cpp index 819f0b07c..5677f9047 100644 --- a/tests/auto/quick/qmltests/tst_qmltests.cpp +++ b/tests/auto/quick/qmltests/tst_qmltests.cpp @@ -26,6 +26,8 @@ ** ****************************************************************************/ +#include + #include #include #include @@ -143,6 +145,12 @@ int main(int argc, char **argv) qmlRegisterType("Test.util", 1, 0, "TempDir"); QTEST_SET_MAIN_SOURCE_PATH + qmlRegisterSingletonType("Test.Shared", 1, 0, "HttpServer", [&] (QQmlEngine *, QJSEngine *) { + auto server = new HttpServer; + server->setResourceDirs({ TESTS_SHARED_DATA_DIR, QUICK_TEST_SOURCE_DIR }); + return server; + }); + int i = quick_test_main(argc, argv, "qmltests", QUICK_TEST_SOURCE_DIR); return i; } -- cgit v1.2.3