From a40688a63d131bb024e46d817a388011ccab3ca2 Mon Sep 17 00:00:00 2001 From: Peter Varga <pvarga@inf.u-szeged.hu> Date: Tue, 29 Nov 2016 09:24:41 +0100 Subject: [PATCH] Wait for loadVisuallyCommitted signal with SignalSpy Change-Id: Ic200807246c5feb8e1f33215cbc6194b03765359 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> --- src/webengine/api/qquickwebengineview.cpp | 2 +- src/webengine/api/qquickwebengineview_p.h | 6 +- .../quick/qmltests/data/tst_linkHovered.qml | 56 +++++++++---------- 3 files changed, 31 insertions(+), 33 deletions(-) diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp index 3830a3ea2..547be2246 100644 --- a/src/webengine/api/qquickwebengineview.cpp +++ b/src/webengine/api/qquickwebengineview.cpp @@ -1066,8 +1066,8 @@ void QQuickWebEngineView::setTestSupport(QQuickWebEngineTestSupport *testSupport { Q_D(QQuickWebEngineView); d->m_testSupport = testSupport; + Q_EMIT testSupportChanged(); } - #endif bool QQuickWebEngineView::activeFocusOnPress() const diff --git a/src/webengine/api/qquickwebengineview_p.h b/src/webengine/api/qquickwebengineview_p.h index 16c4799b5..4f9e483bc 100644 --- a/src/webengine/api/qquickwebengineview_p.h +++ b/src/webengine/api/qquickwebengineview_p.h @@ -125,7 +125,7 @@ class Q_WEBENGINE_PRIVATE_EXPORT QQuickWebEngineView : public QQuickItem { Q_PROPERTY(uint webChannelWorld READ webChannelWorld WRITE setWebChannelWorld NOTIFY webChannelWorldChanged REVISION 3) #ifdef ENABLE_QML_TESTSUPPORT_API - Q_PROPERTY(QQuickWebEngineTestSupport *testSupport READ testSupport WRITE setTestSupport FINAL) + Q_PROPERTY(QQuickWebEngineTestSupport *testSupport READ testSupport WRITE setTestSupport NOTIFY testSupportChanged FINAL) #endif Q_FLAGS(FindFlags); @@ -513,6 +513,10 @@ Q_SIGNALS: Q_REVISION(4) void fileDialogRequested(QQuickWebEngineFileDialogRequest *request); Q_REVISION(4) void formValidationMessageRequested(QQuickWebEngineFormValidationMessageRequest *request); +#ifdef ENABLE_QML_TESTSUPPORT_API + void testSupportChanged(); +#endif + protected: void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) Q_DECL_OVERRIDE; void itemChange(ItemChange, const ItemChangeData &) Q_DECL_OVERRIDE; diff --git a/tests/auto/quick/qmltests/data/tst_linkHovered.qml b/tests/auto/quick/qmltests/data/tst_linkHovered.qml index 0b99ffa7f..362130bab 100644 --- a/tests/auto/quick/qmltests/data/tst_linkHovered.qml +++ b/tests/auto/quick/qmltests/data/tst_linkHovered.qml @@ -39,22 +39,16 @@ TestWebEngineView { property string lastUrl - testSupport: WebEngineTestSupport { - property bool loadVisuallyCommittedSignalEmitted: false + testSupport: WebEngineTestSupport { } - function waitForLoadVisuallyCommitted() { - return _waitFor(function() { - return testSupport.loadVisuallyCommittedSignalEmitted; - }); - } - - onLoadVisuallyCommitted: { - loadVisuallyCommittedSignalEmitted = true; - } + SignalSpy { + id: loadVisuallyCommittedSpy + target: webEngineView.testSupport + signalName: "loadVisuallyCommitted" } SignalSpy { - id: spy + id: linkHoveredSpy target: webEngineView signalName: "linkHovered" } @@ -76,60 +70,60 @@ TestWebEngineView { } function init() { - webEngineView.testSupport.loadVisuallyCommittedSignalEmitted = false; - webEngineView.lastUrl = "" - spy.clear() + webEngineView.lastUrl = ""; + loadVisuallyCommittedSpy.clear(); + linkHoveredSpy.clear(); } function test_linkHovered() { - compare(spy.count, 0) + compare(linkHoveredSpy.count, 0); mouseMove(webEngineView, 100, 300) webEngineView.url = Qt.resolvedUrl("test2.html") verify(webEngineView.waitForLoadSucceeded()) // We get a linkHovered signal with empty hoveredUrl after page load - spy.wait() - compare(spy.count, 1) + linkHoveredSpy.wait(); + compare(linkHoveredSpy.count, 1); compare(webEngineView.lastUrl, "") // Wait for the page to be rendered before trying to test based on input events - verify(webEngineView.testSupport.waitForLoadVisuallyCommitted()); + loadVisuallyCommittedSpy.wait(); mouseMove(webEngineView, 100, 100) - spy.wait() - compare(spy.count, 2) + linkHoveredSpy.wait(); + compare(linkHoveredSpy.count, 2); compare(webEngineView.lastUrl, Qt.resolvedUrl("test1.html")) mouseMove(webEngineView, 100, 300) - spy.wait() - compare(spy.count, 3) + linkHoveredSpy.wait(); + compare(linkHoveredSpy.count, 3); compare(webEngineView.lastUrl, "") } function test_linkHoveredDoesntEmitRepeated() { - compare(spy.count, 0) + compare(linkHoveredSpy.count, 0); webEngineView.url = Qt.resolvedUrl("test2.html") verify(webEngineView.waitForLoadSucceeded()) // We get a linkHovered signal with empty hoveredUrl after page load - spy.wait() - compare(spy.count, 1) + linkHoveredSpy.wait(); + compare(linkHoveredSpy.count, 1); compare(webEngineView.lastUrl, "") // Wait for the page to be rendered before trying to test based on input events - verify(webEngineView.testSupport.waitForLoadVisuallyCommitted()); + loadVisuallyCommittedSpy.wait(); for (var i = 0; i < 100; i += 10) mouseMove(webEngineView, 100, 100 + i) - spy.wait() - compare(spy.count, 2) + linkHoveredSpy.wait(); + compare(linkHoveredSpy.count, 2); compare(webEngineView.lastUrl, Qt.resolvedUrl("test1.html")) for (var i = 0; i < 100; i += 10) mouseMove(webEngineView, 100, 300 + i) - spy.wait() - compare(spy.count, 3) + linkHoveredSpy.wait(); + compare(linkHoveredSpy.count, 3); compare(webEngineView.lastUrl, "") } } -- GitLab