diff options
author | Ivan Solovev <ivan.solovev@qt.io> | 2021-01-22 17:35:40 +0100 |
---|---|---|
committer | Ivan Solovev <ivan.solovev@qt.io> | 2021-01-26 20:40:42 +0100 |
commit | a8496e8d52e261a5a9206c4963adf43f6083de9e (patch) | |
tree | 1b536d1320d43747f9e90f54b8ba6a82a327262b | |
parent | 237998e30b4180fa4de86ef89a5cb7d5e802a57d (diff) | |
download | qtlocation-a8496e8d52e261a5a9206c4963adf43f6083de9e.tar.gz |
QtPositioning: remove QGeoSatelliteInfoSource::requestTimeout signal
A new Error::UpdateTimeoutError enum value is introduced instead.
An errorOccurred() signal with this value is used to notify about update
timeouts.
[ChangeLog][QtPositioning][Important Behavior Changes] Removed
QGeoSatelliteInfoSource::requestTimeout() signal.
Use QGeoSatelliteInfoSource::errorOccurred() with a new
Error::UpdateTimeoutError value instead.
Task-number: QTBUG-90491
Change-Id: I1ab8277896035234cb65a8ece9426b9fa9896f7b
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
10 files changed, 98 insertions, 88 deletions
diff --git a/src/plugins/position/android/src/qgeosatelliteinfosource_android.cpp b/src/plugins/position/android/src/qgeosatelliteinfosource_android.cpp index 92ad0df4..65821bd8 100644 --- a/src/plugins/position/android/src/qgeosatelliteinfosource_android.cpp +++ b/src/plugins/position/android/src/qgeosatelliteinfosource_android.cpp @@ -109,8 +109,7 @@ void QGeoSatelliteInfoSourceAndroid::startUpdates() androidClassKeyForUpdate, false, updateInterval()); if (error != QGeoSatelliteInfoSource::NoError) { updatesRunning = false; - m_error = error; - emit QGeoSatelliteInfoSource::errorOccurred(m_error); + setError(error); } } @@ -129,7 +128,7 @@ void QGeoSatelliteInfoSourceAndroid::requestUpdate(int timeout) return; if (timeout != 0 && timeout < minimumUpdateInterval()) { - emit requestTimeout(); + setError(QGeoSatelliteInfoSource::UpdateTimeoutError); return; } @@ -148,8 +147,7 @@ void QGeoSatelliteInfoSourceAndroid::requestUpdate(int timeout) androidClassKeyForSingleRequest, true, timeout); if (error != QGeoSatelliteInfoSource::NoError) { requestTimer.stop(); - m_error = error; - emit QGeoSatelliteInfoSource::errorOccurred(m_error); + setError(error); } } @@ -185,7 +183,7 @@ void QGeoSatelliteInfoSourceAndroid::requestTimeout() const int count = m_satsInView.count(); if (!count) { - emit requestTimeout(); + setError(QGeoSatelliteInfoSource::UpdateTimeoutError); return; } @@ -209,8 +207,14 @@ void QGeoSatelliteInfoSourceAndroid::reconfigureRunningSystem() startUpdates(); } +void QGeoSatelliteInfoSourceAndroid::setError(QGeoSatelliteInfoSource::Error error) +{ + m_error = error; + if (m_error != QGeoSatelliteInfoSource::NoError) + emit QGeoSatelliteInfoSource::errorOccurred(m_error); +} + void QGeoSatelliteInfoSourceAndroid::locationProviderDisabled() { - m_error = QGeoSatelliteInfoSource::ClosedError; - emit QGeoSatelliteInfoSource::errorOccurred(m_error); + setError(QGeoSatelliteInfoSource::ClosedError); } diff --git a/src/plugins/position/android/src/qgeosatelliteinfosource_android_p.h b/src/plugins/position/android/src/qgeosatelliteinfosource_android_p.h index 150009a2..19b7b577 100644 --- a/src/plugins/position/android/src/qgeosatelliteinfosource_android_p.h +++ b/src/plugins/position/android/src/qgeosatelliteinfosource_android_p.h @@ -82,6 +82,7 @@ private Q_SLOTS: private: void reconfigureRunningSystem(); + void setError(QGeoSatelliteInfoSource::Error error); Error m_error; int androidClassKeyForUpdate; diff --git a/src/plugins/position/geoclue/qgeosatelliteinfosource_geocluemaster.cpp b/src/plugins/position/geoclue/qgeosatelliteinfosource_geocluemaster.cpp index a54a51a5..9986dd3b 100644 --- a/src/plugins/position/geoclue/qgeosatelliteinfosource_geocluemaster.cpp +++ b/src/plugins/position/geoclue/qgeosatelliteinfosource_geocluemaster.cpp @@ -121,7 +121,7 @@ void QGeoSatelliteInfoSourceGeoclueMaster::stopUpdates() void QGeoSatelliteInfoSourceGeoclueMaster::requestUpdate(int timeout) { if (timeout < minimumUpdateInterval() && timeout != 0) { - emit requestTimeout(); + setError(QGeoSatelliteInfoSource::UpdateTimeoutError); return; } @@ -176,6 +176,13 @@ void QGeoSatelliteInfoSourceGeoclueMaster::updateSatelliteInfo(int timestamp, in m_requestTimer.start(qMax(updateInterval(), minimumUpdateInterval())); } +void QGeoSatelliteInfoSourceGeoclueMaster::setError(QGeoSatelliteInfoSource::Error error) +{ + m_error = error; + if (m_error != QGeoSatelliteInfoSource::NoError) + emit QGeoSatelliteInfoSource::errorOccurred(m_error); +} + void QGeoSatelliteInfoSourceGeoclueMaster::requestUpdateTimeout() { // If we end up here, there has not been a valid satellite info update. @@ -185,7 +192,7 @@ void QGeoSatelliteInfoSourceGeoclueMaster::requestUpdateTimeout() emit satellitesInViewUpdated(m_inView); emit satellitesInUseUpdated(m_inUse); } else { - emit requestTimeout(); + setError(QGeoSatelliteInfoSource::UpdateTimeoutError); // Only stop satellite info if regular updates not active. cleanupSatelliteSource(); @@ -250,8 +257,7 @@ void QGeoSatelliteInfoSourceGeoclueMaster::positionProviderChanged(const QString } if (providerService.isEmpty() || providerPath.isEmpty()) { - m_error = AccessError; - emit QGeoSatelliteInfoSource::errorOccurred(m_error); + setError(QGeoSatelliteInfoSource::AccessError); return; } @@ -291,10 +297,8 @@ void QGeoSatelliteInfoSourceGeoclueMaster::satelliteChanged(const QDBusMessage & void QGeoSatelliteInfoSourceGeoclueMaster::configureSatelliteSource() { - if (!m_master->createMasterClient(Accuracy::Detailed, QGeoclueMaster::ResourceGps)) { - m_error = UnknownSourceError; - emit QGeoSatelliteInfoSource::errorOccurred(m_error); - } + if (!m_master->createMasterClient(Accuracy::Detailed, QGeoclueMaster::ResourceGps)) + setError(QGeoSatelliteInfoSource::UnknownSourceError); } void QGeoSatelliteInfoSourceGeoclueMaster::cleanupSatelliteSource() diff --git a/src/plugins/position/geoclue/qgeosatelliteinfosource_geocluemaster.h b/src/plugins/position/geoclue/qgeosatelliteinfosource_geocluemaster.h index 254a17ac..98da091d 100644 --- a/src/plugins/position/geoclue/qgeosatelliteinfosource_geocluemaster.h +++ b/src/plugins/position/geoclue/qgeosatelliteinfosource_geocluemaster.h @@ -87,6 +87,8 @@ private: void updateSatelliteInfo(int timestamp, int satellitesUsed, int satellitesVisible, const QList<int> &usedPrn, const QList<QGeoSatelliteInfo> &satInfos); + void setError(QGeoSatelliteInfoSource::Error error); + QGeoclueMaster *m_master; OrgFreedesktopGeoclueInterface *m_provider; diff --git a/src/plugins/position/gypsy/qgeosatelliteinfosource_gypsy.cpp b/src/plugins/position/gypsy/qgeosatelliteinfosource_gypsy.cpp index 2a3f31dc..6b1b430a 100644 --- a/src/plugins/position/gypsy/qgeosatelliteinfosource_gypsy.cpp +++ b/src/plugins/position/gypsy/qgeosatelliteinfosource_gypsy.cpp @@ -140,8 +140,9 @@ gchar *SatelliteGypsyEngine::eng_gconf_client_get_string(GConfClient *client, co return ::gconf_client_get_string(client, key, err); } -QGeoSatelliteInfoSourceGypsy::QGeoSatelliteInfoSourceGypsy(QObject *parent) : QGeoSatelliteInfoSource(parent), - m_engine(0), m_satellite(0), m_device(0), m_requestTimer(this), m_updatesOngoing(false), m_requestOngoing(false) +QGeoSatelliteInfoSourceGypsy::QGeoSatelliteInfoSourceGypsy(QObject *parent) + : QGeoSatelliteInfoSource(parent), m_engine(0), m_satellite(0), m_device(0), + m_requestTimer(this), m_updatesOngoing(false), m_requestOngoing(false) { m_requestTimer.setSingleShot(true); QObject::connect(&m_requestTimer, SIGNAL(timeout()), this, SLOT(requestUpdateTimeout())); @@ -290,7 +291,7 @@ int QGeoSatelliteInfoSourceGypsy::minimumUpdateInterval() const QGeoSatelliteInfoSource::Error QGeoSatelliteInfoSourceGypsy::error() const { - return NoError; + return m_error; } void QGeoSatelliteInfoSourceGypsy::startUpdates() @@ -322,7 +323,7 @@ void QGeoSatelliteInfoSourceGypsy::requestUpdate(int timeout) if (m_requestOngoing) return; if (timeout < 0) { - emit requestTimeout(); + setError(QGeoSatelliteInfoSource::UpdateTimeoutError); return; } m_requestOngoing = true; @@ -369,7 +370,14 @@ void QGeoSatelliteInfoSourceGypsy::requestUpdateTimeout() m_engine->eng_g_signal_handlers_disconnect_by_func(G_OBJECT(m_satellite), (void *)satellites_changed, this); } m_requestOngoing = false; - emit requestTimeout(); + setError(QGeoSatelliteInfoSource::UpdateTimeoutError); +} + +void QGeoSatelliteInfoSourceGypsy::setError(QGeoSatelliteInfoSource::Error error) +{ + m_error = error; + if (m_error != QGeoSatelliteInfoSource::NoError) + emit QGeoSatelliteInfoSource::errorOccurred(m_error); } QT_END_NAMESPACE diff --git a/src/plugins/position/gypsy/qgeosatelliteinfosource_gypsy_p.h b/src/plugins/position/gypsy/qgeosatelliteinfosource_gypsy_p.h index c28ca3a1..b393ce3f 100644 --- a/src/plugins/position/gypsy/qgeosatelliteinfosource_gypsy_p.h +++ b/src/plugins/position/gypsy/qgeosatelliteinfosource_gypsy_p.h @@ -121,6 +121,9 @@ signals: private slots: void requestUpdateTimeout(); +private: + void setError(QGeoSatelliteInfoSource::Error error); + protected: // Creates an engine which encapsulates all used symbols // that we want to be also able to mock. @@ -134,6 +137,7 @@ private: QTimer m_requestTimer; bool m_updatesOngoing; bool m_requestOngoing; + QGeoSatelliteInfoSource::Error m_error = QGeoSatelliteInfoSource::NoError; }; QT_END_NAMESPACE diff --git a/src/plugins/position/serialnmea/qnmeasatelliteinfosource.cpp b/src/plugins/position/serialnmea/qnmeasatelliteinfosource.cpp index d0a4d3b5..cb127218 100644 --- a/src/plugins/position/serialnmea/qnmeasatelliteinfosource.cpp +++ b/src/plugins/position/serialnmea/qnmeasatelliteinfosource.cpp @@ -108,7 +108,7 @@ public slots: public: - QGeoSatelliteInfoSource *m_source = nullptr; + QNmeaSatelliteInfoSource *m_source = nullptr; QGeoSatelliteInfoSource::Error m_satelliteError = QGeoSatelliteInfoSource::NoError; QPointer<QIODevice> m_device; struct Update { @@ -321,7 +321,7 @@ void QNmeaSatelliteInfoSourcePrivate::requestUpdate(int msec) return; if (msec <= 0 || msec < m_source->minimumUpdateInterval()) { - emit m_source->requestTimeout(); + m_source->setError(QGeoSatelliteInfoSource::UpdateTimeoutError); return; } @@ -332,7 +332,7 @@ void QNmeaSatelliteInfoSourcePrivate::requestUpdate(int msec) bool initialized = initialize(); if (!initialized) { - emit m_source->requestTimeout(); + m_source->setError(QGeoSatelliteInfoSource::UpdateTimeoutError); return; } @@ -356,7 +356,7 @@ void QNmeaSatelliteInfoSourcePrivate::emitPendingUpdate() } else { // invalid or not fresh update if (m_noUpdateLastInterval && !m_updateTimeoutSent) { m_updateTimeoutSent = true; - emit m_source->requestTimeout(); + m_source->setError(QGeoSatelliteInfoSource::UpdateTimeoutError); } m_noUpdateLastInterval = true; } @@ -371,7 +371,7 @@ void QNmeaSatelliteInfoSourcePrivate::sourceDataClosed() void QNmeaSatelliteInfoSourcePrivate::updateRequestTimeout() { m_requestTimer->stop(); - emit m_source->requestTimeout(); + m_source->setError(QGeoSatelliteInfoSource::UpdateTimeoutError); } void QNmeaSatelliteInfoSourcePrivate::readAvailableData() diff --git a/src/positioning/qgeosatelliteinfosource.cpp b/src/positioning/qgeosatelliteinfosource.cpp index d271cbf2..02c81361 100644 --- a/src/positioning/qgeosatelliteinfosource.cpp +++ b/src/positioning/qgeosatelliteinfosource.cpp @@ -329,9 +329,10 @@ QStringList QGeoSatelliteInfoSource::availableSources() Attempts to get the current satellite information and emit satellitesInViewUpdated() and satellitesInUseUpdated() with this information. If the current satellite information cannot be found - within the given \a timeout (in milliseconds) or if \a timeout is less than the value returned by - minimumUpdateInterval(), requestTimeout() is - emitted. + within the given \a timeout (in milliseconds) or if \a timeout is less than + the value returned by minimumUpdateInterval(), an errorOccurred() signal + with \l {QGeoSatelliteInfoSource::Error::UpdateTimeoutError} + {UpdateTimeoutError} is emitted. If the timeout is zero, the timeout defaults to a reasonable timeout period as appropriate for the source. @@ -342,17 +343,6 @@ QStringList QGeoSatelliteInfoSource::availableSources() */ /*! - \fn void QGeoSatelliteInfoSource::requestTimeout(); - - Emitted if requestUpdate() was called and the current satellite - information could not be retrieved within the specified timeout. - - While the triggering of this signal may be considered an error condition, - it does not imply the emission of the \c error() signal. Only the emission of - \c requestTimeout() is required to indicate a timeout. -*/ - -/*! \fn QGeoSatelliteInfoSource::Error QGeoSatelliteInfoSource::error() const = 0 Returns the last error that occurred. @@ -363,8 +353,6 @@ QStringList QGeoSatelliteInfoSource::availableSources() This signal is emitted after an error occurred. The \a satelliteError parameter describes the type of error that occurred. - - This signal is not emitted when a requestTimeout() has occurred. */ /*! @@ -379,6 +367,8 @@ QStringList QGeoSatelliteInfoSource::availableSources() A new satellite source can be created by calling createDefaultSource() later on. \value NoError No error has occurred. \value UnknownSourceError An unidentified error occurred. + \value UpdateTimeoutError The current satellite information could not be + retrieved within the specified timeout. */ diff --git a/src/positioning/qgeosatelliteinfosource.h b/src/positioning/qgeosatelliteinfosource.h index e588a60e..a073db03 100644 --- a/src/positioning/qgeosatelliteinfosource.h +++ b/src/positioning/qgeosatelliteinfosource.h @@ -58,9 +58,10 @@ public: AccessError = 0, ClosedError = 1, NoError = 2, - UnknownSourceError = -1 + UnknownSourceError = -1, + UpdateTimeoutError = 3, }; - Q_ENUMS(Error) + Q_ENUM(Error) explicit QGeoSatelliteInfoSource(QObject *parent); virtual ~QGeoSatelliteInfoSource(); @@ -87,7 +88,6 @@ public Q_SLOTS: Q_SIGNALS: void satellitesInViewUpdated(const QList<QGeoSatelliteInfo> &satellites); void satellitesInUseUpdated(const QList<QGeoSatelliteInfo> &satellites); - void requestTimeout(); void errorOccurred(QGeoSatelliteInfoSource::Error); protected: diff --git a/tests/auto/qgeosatelliteinfosource/testqgeosatelliteinfosource.cpp b/tests/auto/qgeosatelliteinfosource/testqgeosatelliteinfosource.cpp index 50b963ff..905b74a4 100644 --- a/tests/auto/qgeosatelliteinfosource/testqgeosatelliteinfosource.cpp +++ b/tests/auto/qgeosatelliteinfosource/testqgeosatelliteinfosource.cpp @@ -246,7 +246,6 @@ void TestQGeoSatelliteInfoSource::startUpdates_testIntervals() SIGNAL(satellitesInViewUpdated(QList<QGeoSatelliteInfo>))); QSignalSpy spyUse(m_source, SIGNAL(satellitesInUseUpdated(QList<QGeoSatelliteInfo>))); - QSignalSpy timeout(m_source, SIGNAL(requestTimeout())); QSignalSpy errorSpy(m_source, SIGNAL(errorOccurred(QGeoSatelliteInfoSource::Error))); m_source->setUpdateInterval(7000); @@ -259,7 +258,7 @@ void TestQGeoSatelliteInfoSource::startUpdates_testIntervals() QTRY_VERIFY_WITH_TIMEOUT((spyView.count() == 1) && (spyUse.count() == 1), 9500); for (int i = 0; i < 6; i++) { - QTRY_VERIFY_WITH_TIMEOUT((spyView.count() == 1) && (spyUse.count() == 1) && (timeout.count() == 0), (interval*2)); + QTRY_VERIFY_WITH_TIMEOUT((spyView.count() == 1) && (spyUse.count() == 1) && (errorSpy.count() == 0), (interval*2)); spyView.clear(); spyUse.clear(); } @@ -281,7 +280,6 @@ void TestQGeoSatelliteInfoSource::startUpdates_testIntervalChangesWhileRunning() SIGNAL(satellitesInViewUpdated(QList<QGeoSatelliteInfo>))); QSignalSpy spyUse(m_source, SIGNAL(satellitesInUseUpdated(QList<QGeoSatelliteInfo>))); - QSignalSpy timeout(m_source, SIGNAL(requestTimeout())); QSignalSpy errorSpy(m_source, SIGNAL(errorOccurred(QGeoSatelliteInfoSource::Error))); m_source->setUpdateInterval(0); @@ -292,43 +290,43 @@ void TestQGeoSatelliteInfoSource::startUpdates_testIntervalChangesWhileRunning() QSKIP("Error starting satellite updates."); QTRY_VERIFY_WITH_TIMEOUT((spyView.count() > 0) && (spyUse.count() > 0), 7000); - QCOMPARE(timeout.count(), 0); + QCOMPARE(errorSpy.count(), 0); spyView.clear(); spyUse.clear(); m_source->setUpdateInterval(5000); - QTRY_VERIFY_WITH_TIMEOUT((spyView.count() == 2) && (spyUse.count() == 2) && (timeout.count() == 0), 15000); + QTRY_VERIFY_WITH_TIMEOUT((spyView.count() == 2) && (spyUse.count() == 2) && (errorSpy.count() == 0), 15000); spyView.clear(); spyUse.clear(); m_source->setUpdateInterval(10000); - QTRY_VERIFY_WITH_TIMEOUT((spyView.count() == 2) && (spyUse.count() == 2) && (timeout.count() == 0), 30000); + QTRY_VERIFY_WITH_TIMEOUT((spyView.count() == 2) && (spyUse.count() == 2) && (errorSpy.count() == 0), 30000); spyView.clear(); spyUse.clear(); m_source->setUpdateInterval(5000); - QTRY_VERIFY_WITH_TIMEOUT((spyView.count() == 2) && (spyUse.count() == 2) && (timeout.count() == 0), 15000); + QTRY_VERIFY_WITH_TIMEOUT((spyView.count() == 2) && (spyUse.count() == 2) && (errorSpy.count() == 0), 15000); spyView.clear(); spyUse.clear(); m_source->setUpdateInterval(5000); - QTRY_VERIFY_WITH_TIMEOUT( (spyView.count() == 2) && (spyUse.count() == 2) && (timeout.count() == 0), 15000); + QTRY_VERIFY_WITH_TIMEOUT( (spyView.count() == 2) && (spyUse.count() == 2) && (errorSpy.count() == 0), 15000); spyView.clear(); spyUse.clear(); m_source->setUpdateInterval(0); - QTRY_VERIFY_WITH_TIMEOUT( (spyView.count() > 0 ) && (spyUse.count() > 0) && (timeout.count() == 0), 7000); + QTRY_VERIFY_WITH_TIMEOUT( (spyView.count() > 0 ) && (spyUse.count() > 0) && (errorSpy.count() == 0), 7000); spyView.clear(); spyUse.clear(); m_source->setUpdateInterval(0); - QTRY_VERIFY_WITH_TIMEOUT( (spyView.count() > 0 ) && (spyUse.count() > 0) && (timeout.count() == 0), 7000); + QTRY_VERIFY_WITH_TIMEOUT( (spyView.count() > 0 ) && (spyUse.count() > 0) && (errorSpy.count() == 0), 7000); spyView.clear(); spyUse.clear(); m_source->stopUpdates(); @@ -341,7 +339,6 @@ void TestQGeoSatelliteInfoSource::startUpdates_testDefaultInterval() SIGNAL(satellitesInViewUpdated(QList<QGeoSatelliteInfo>))); QSignalSpy spyUse(m_source, SIGNAL(satellitesInUseUpdated(QList<QGeoSatelliteInfo>))); - QSignalSpy timeout(m_source, SIGNAL(requestTimeout())); QSignalSpy errorSpy(m_source, SIGNAL(errorOccurred(QGeoSatelliteInfoSource::Error))); m_source->startUpdates(); @@ -350,7 +347,7 @@ void TestQGeoSatelliteInfoSource::startUpdates_testDefaultInterval() QSKIP("Error starting satellite updates."); for (int i = 0; i < 3; i++) { - QTRY_VERIFY_WITH_TIMEOUT( (spyView.count() > 0 ) && (spyUse.count() > 0) && (timeout.count() == 0), 7000); + QTRY_VERIFY_WITH_TIMEOUT( (spyView.count() > 0 ) && (spyUse.count() > 0) && (errorSpy.count() == 0), 7000); spyView.clear(); spyUse.clear(); } @@ -364,7 +361,6 @@ void TestQGeoSatelliteInfoSource::startUpdates_testZeroInterval() SIGNAL(satellitesInViewUpdated(QList<QGeoSatelliteInfo>))); QSignalSpy spyUse(m_source, SIGNAL(satellitesInUseUpdated(QList<QGeoSatelliteInfo>))); - QSignalSpy timeout(m_source, SIGNAL(requestTimeout())); QSignalSpy errorSpy(m_source, SIGNAL(errorOccurred(QGeoSatelliteInfoSource::Error))); m_source->setUpdateInterval(0); @@ -374,7 +370,7 @@ void TestQGeoSatelliteInfoSource::startUpdates_testZeroInterval() QSKIP("Error starting satellite updates."); for (int i = 0; i < 3; i++) { - QTRY_VERIFY_WITH_TIMEOUT( (spyView.count() > 0 ) && (spyUse.count() > 0) && (timeout.count() == 0), 7000); + QTRY_VERIFY_WITH_TIMEOUT( (spyView.count() > 0 ) && (spyUse.count() > 0) && (errorSpy.count() == 0), 7000); spyView.clear(); spyUse.clear(); } @@ -444,18 +440,26 @@ void TestQGeoSatelliteInfoSource::requestUpdate() CHECK_SOURCE_VALID; QFETCH(int, timeout); - QSignalSpy spy(m_source, SIGNAL(requestTimeout())); QSignalSpy spyView(m_source, SIGNAL(satellitesInViewUpdated(QList<QGeoSatelliteInfo>))); QSignalSpy errorSpy(m_source, SIGNAL(errorOccurred(QGeoSatelliteInfoSource::Error))); m_source->requestUpdate(timeout); - if (!errorSpy.isEmpty()) - QSKIP("Error starting satellite updates."); + if (!errorSpy.isEmpty()) { + // make sure that it's the UpdateTimeoutError + const auto error = errorSpy[0][0].value<QGeoSatelliteInfoSource::Error>(); + QCOMPARE(error, QGeoSatelliteInfoSource::UpdateTimeoutError); + errorSpy.clear(); + } // Geoclue may deliver update instantly if there is a satellite fix - QTRY_VERIFY_WITH_TIMEOUT(!spy.isEmpty() || !spyView.isEmpty(), 10); + QTRY_VERIFY_WITH_TIMEOUT(!errorSpy.isEmpty() || !spyView.isEmpty(), 10); + if (!errorSpy.isEmpty()) { + // make sure that it's the UpdateTimeoutError + const auto error = errorSpy[0][0].value<QGeoSatelliteInfoSource::Error>(); + QCOMPARE(error, QGeoSatelliteInfoSource::UpdateTimeoutError); + } } void TestQGeoSatelliteInfoSource::requestUpdate_data() @@ -473,7 +477,6 @@ void TestQGeoSatelliteInfoSource::requestUpdate_validTimeout() SIGNAL(satellitesInViewUpdated(QList<QGeoSatelliteInfo>))); QSignalSpy spyUse(m_source, SIGNAL(satellitesInUseUpdated(QList<QGeoSatelliteInfo>))); - QSignalSpy spyTimeout(m_source, SIGNAL(requestTimeout())); QSignalSpy errorSpy(m_source, SIGNAL(errorOccurred(QGeoSatelliteInfoSource::Error))); m_source->requestUpdate(7000); @@ -482,7 +485,7 @@ void TestQGeoSatelliteInfoSource::requestUpdate_validTimeout() QSKIP("Error starting satellite updates."); QTRY_VERIFY_WITH_TIMEOUT( - (spyView.count() == 1) && (spyUse.count() == 1 && (spyTimeout.count()) == 0), 7000); + (spyView.count() == 1) && (spyUse.count() == 1 && (errorSpy.count()) == 0), 7000); } void TestQGeoSatelliteInfoSource::requestUpdate_defaultTimeout() @@ -493,7 +496,6 @@ void TestQGeoSatelliteInfoSource::requestUpdate_defaultTimeout() SIGNAL(satellitesInViewUpdated(QList<QGeoSatelliteInfo>))); QSignalSpy spyUse(m_source, SIGNAL(satellitesInUseUpdated(QList<QGeoSatelliteInfo>))); - QSignalSpy spyTimeout(m_source, SIGNAL(requestTimeout())); QSignalSpy errorSpy(m_source, SIGNAL(errorOccurred(QGeoSatelliteInfoSource::Error))); m_source->requestUpdate(0); @@ -502,7 +504,7 @@ void TestQGeoSatelliteInfoSource::requestUpdate_defaultTimeout() QSKIP("Error starting satellite updates."); QTRY_VERIFY_WITH_TIMEOUT( - (spyView.count() == 1) && (spyUse.count() == 1 && (spyTimeout.count()) == 0), + (spyView.count() == 1) && (spyUse.count() == 1 && (errorSpy.count()) == 0), MAX_WAITING_TIME); } @@ -510,15 +512,13 @@ void TestQGeoSatelliteInfoSource::requestUpdate_timeoutLessThanMinimumInterval() { CHECK_SOURCE_VALID; - QSignalSpy spyTimeout(m_source, SIGNAL(requestTimeout())); QSignalSpy errorSpy(m_source, SIGNAL(errorOccurred(QGeoSatelliteInfoSource::Error))); m_source->requestUpdate(1); - if (!errorSpy.isEmpty()) - QSKIP("Error starting satellite updates."); - - QTRY_COMPARE_WITH_TIMEOUT(spyTimeout.count(), 1, 1000); + QTRY_COMPARE_WITH_TIMEOUT(errorSpy.count(), 1, 1000); + const auto error = errorSpy[0][0].value<QGeoSatelliteInfoSource::Error>(); + QCOMPARE(error, QGeoSatelliteInfoSource::UpdateTimeoutError); } void TestQGeoSatelliteInfoSource::requestUpdate_repeatedCalls() @@ -573,8 +573,6 @@ void TestQGeoSatelliteInfoSource::requestUpdate_overlappingCallsWithTimeout() SIGNAL(satellitesInViewUpdated(QList<QGeoSatelliteInfo>))); QSignalSpy spyUse(m_source, SIGNAL(satellitesInUseUpdated(QList<QGeoSatelliteInfo>))); - QSignalSpy spyTimeout(m_source, - SIGNAL(requestTimeout())); QSignalSpy errorSpy(m_source, SIGNAL(errorOccurred(QGeoSatelliteInfoSource::Error))); m_source->requestUpdate(0); @@ -584,7 +582,7 @@ void TestQGeoSatelliteInfoSource::requestUpdate_overlappingCallsWithTimeout() m_source->requestUpdate(1); - QTRY_COMPARE_WITH_TIMEOUT(spyTimeout.count(), 0, 7000); + QTRY_COMPARE_WITH_TIMEOUT(errorSpy.count(), 0, 7000); QTRY_VERIFY_WITH_TIMEOUT((spyView.count() == 1) && (spyUse.count() == 1), 7000); } @@ -597,7 +595,6 @@ void TestQGeoSatelliteInfoSource::requestUpdateAfterStartUpdates_ZeroInterval() SIGNAL(satellitesInViewUpdated(QList<QGeoSatelliteInfo>))); QSignalSpy spyUse(m_source, SIGNAL(satellitesInUseUpdated(QList<QGeoSatelliteInfo>))); - QSignalSpy spyTimeout(m_source, SIGNAL(requestTimeout())); QSignalSpy errorSpy(m_source, SIGNAL(errorOccurred(QGeoSatelliteInfoSource::Error))); m_source->setUpdateInterval(0); @@ -613,7 +610,7 @@ void TestQGeoSatelliteInfoSource::requestUpdateAfterStartUpdates_ZeroInterval() m_source->requestUpdate(7000); QTRY_VERIFY_WITH_TIMEOUT((spyView.count() == 1) && (spyUse.count() == 1) - && (spyTimeout.count() == 0), 7000); + && (errorSpy.count() == 0), 7000); spyView.clear(); spyUse.clear(); @@ -631,7 +628,6 @@ void TestQGeoSatelliteInfoSource::requestUpdateAfterStartUpdates_SmallInterval() SIGNAL(satellitesInViewUpdated(QList<QGeoSatelliteInfo>))); QSignalSpy spyUse(m_source, SIGNAL(satellitesInUseUpdated(QList<QGeoSatelliteInfo>))); - QSignalSpy spyTimeout(m_source, SIGNAL(requestTimeout())); QSignalSpy errorSpy(m_source, SIGNAL(errorOccurred(QGeoSatelliteInfoSource::Error))); m_source->setUpdateInterval(10000); @@ -643,7 +639,7 @@ void TestQGeoSatelliteInfoSource::requestUpdateAfterStartUpdates_SmallInterval() m_source->startUpdates(); QTRY_VERIFY_WITH_TIMEOUT((spyView.count() > 0) && (spyUse.count() > 0) - && (spyTimeout.count() == 0), 7000); + && (errorSpy.count() == 0), 7000); spyView.clear(); spyUse.clear(); @@ -660,7 +656,6 @@ void TestQGeoSatelliteInfoSource::requestUpdateBeforeStartUpdates_ZeroInterval() SIGNAL(satellitesInViewUpdated(QList<QGeoSatelliteInfo>))); QSignalSpy spyUse(m_source, SIGNAL(satellitesInUseUpdated(QList<QGeoSatelliteInfo>))); - QSignalSpy timeout(m_source, SIGNAL(requestTimeout())); QSignalSpy errorSpy(m_source, SIGNAL(errorOccurred(QGeoSatelliteInfoSource::Error))); m_source->requestUpdate(7000); @@ -671,13 +666,13 @@ void TestQGeoSatelliteInfoSource::requestUpdateBeforeStartUpdates_ZeroInterval() m_source->setUpdateInterval(0); m_source->startUpdates(); - QTRY_VERIFY_WITH_TIMEOUT((spyView.count() >= 2) && (spyUse.count() >= 2) && (timeout.count() == 0), 14000); + QTRY_VERIFY_WITH_TIMEOUT((spyView.count() >= 2) && (spyUse.count() >= 2) && (errorSpy.count() == 0), 14000); spyView.clear(); spyUse.clear(); QTest::qWait(7000); - QCOMPARE(timeout.count(), 0); + QCOMPARE(errorSpy.count(), 0); m_source->stopUpdates(); } @@ -689,7 +684,6 @@ void TestQGeoSatelliteInfoSource::requestUpdateBeforeStartUpdates_SmallInterval( SIGNAL(satellitesInViewUpdated(QList<QGeoSatelliteInfo>))); QSignalSpy spyUse(m_source, SIGNAL(satellitesInUseUpdated(QList<QGeoSatelliteInfo>))); - QSignalSpy timeout(m_source, SIGNAL(requestTimeout())); QSignalSpy errorSpy(m_source, SIGNAL(errorOccurred(QGeoSatelliteInfoSource::Error))); m_source->requestUpdate(7000); @@ -700,11 +694,11 @@ void TestQGeoSatelliteInfoSource::requestUpdateBeforeStartUpdates_SmallInterval( m_source->setUpdateInterval(10000); m_source->startUpdates(); - QTRY_VERIFY_WITH_TIMEOUT((spyView.count() > 0) && (spyUse.count() > 0) && (timeout.count() == 0), 7000); + QTRY_VERIFY_WITH_TIMEOUT((spyView.count() > 0) && (spyUse.count() > 0) && (errorSpy.count() == 0), 7000); spyView.clear(); spyUse.clear(); - QTRY_VERIFY_WITH_TIMEOUT((spyView.count() > 0) && (spyUse.count() > 0) && (timeout.count() == 0), 20000); + QTRY_VERIFY_WITH_TIMEOUT((spyView.count() > 0) && (spyUse.count() > 0) && (errorSpy.count() == 0), 20000); m_source->stopUpdates(); } @@ -715,11 +709,14 @@ void TestQGeoSatelliteInfoSource::removeSlotForRequestTimeout() { CHECK_SOURCE_VALID; - bool i = connect(m_source, SIGNAL(requestTimeout()), this, SLOT(test_slot1())); + bool i = connect(m_source, SIGNAL(errorOccurred(QGeoSatelliteInfoSource::Error)), + this, SLOT(test_slot1())); QVERIFY(i==true); - i = connect(m_source, SIGNAL(requestTimeout()), this, SLOT(test_slot2())); + i = connect(m_source, SIGNAL(errorOccurred(QGeoSatelliteInfoSource::Error)), \ + this, SLOT(test_slot2())); QVERIFY(i==true); - i = disconnect(m_source, SIGNAL(requestTimeout()), this, SLOT(test_slot1())); + i = disconnect(m_source, SIGNAL(errorOccurred(QGeoSatelliteInfoSource::Error)), + this, SLOT(test_slot1())); QVERIFY(i==true); m_source->requestUpdate(-1); |