summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Wilson <alex.wilson@nokia.com>2012-04-17 15:25:03 +1000
committerQt by Nokia <qt-info@nokia.com>2012-04-19 10:10:09 +0200
commit50897540e9eb7d285ede714ce4f8482cae4b104d (patch)
tree5f79c0b023301d032af8e49872850eb09d07ba3c
parent75b9e531b922ff123fd85c6df238cb199e648e15 (diff)
downloadqtlocation-50897540e9eb7d285ede714ce4f8482cae4b104d.tar.gz
Remove plugins with no satellite info from SatInfoSource::availPlugins
Also adjusts unit tests to verify this behaviour in future. Task-number: QTBUG-25344 Change-Id: I37e318a2f49aefb078cec0e84a5ada42af680c81 Reviewed-by: Aaron McCarthy <aaron.mccarthy@nokia.com>
-rw-r--r--src/location/qgeopositioninfosource.cpp15
-rw-r--r--src/location/qgeosatelliteinfosource.cpp15
-rw-r--r--tests/auto/positionplugintest/tst_positionplugin.cpp9
3 files changed, 32 insertions, 7 deletions
diff --git a/src/location/qgeopositioninfosource.cpp b/src/location/qgeopositioninfosource.cpp
index 73f254b0..0434af8e 100644
--- a/src/location/qgeopositioninfosource.cpp
+++ b/src/location/qgeopositioninfosource.cpp
@@ -322,12 +322,21 @@ QGeoPositionInfoSource *QGeoPositionInfoSource::createSource(const QString &sour
/*!
- Returns a list of available source plugins. Note that this list does not
- include the default platform backend, if one is available.
+ Returns a list of available source plugins. This includes any default backend
+ plugin for the current platform.
*/
QStringList QGeoPositionInfoSource::availableSources()
{
- return QGeoPositionInfoSourcePrivate::plugins().keys();
+ QStringList plugins;
+ QHash<QString, QJsonObject> meta = QGeoPositionInfoSourcePrivate::plugins();
+ foreach (const QString &name, meta.keys()) {
+ if (meta.value(name).value(QStringLiteral("Position")).isBool()
+ && meta.value(name).value(QStringLiteral("Position")).toBool()) {
+ plugins << name;
+ }
+ }
+
+ return plugins;
}
/*!
diff --git a/src/location/qgeosatelliteinfosource.cpp b/src/location/qgeosatelliteinfosource.cpp
index 3c1d5d32..2dbb1068 100644
--- a/src/location/qgeosatelliteinfosource.cpp
+++ b/src/location/qgeosatelliteinfosource.cpp
@@ -202,12 +202,21 @@ QGeoSatelliteInfoSource *QGeoSatelliteInfoSource::createSource(const QString &so
}
/*!
- Returns a list of available source plugins. Note that this does not
- include the default system backend, if one is available.
+ Returns a list of available source plugins, including the default system
+ backend if one is available.
*/
QStringList QGeoSatelliteInfoSource::availableSources()
{
- return QGeoPositionInfoSourcePrivate::plugins().keys();
+ QStringList plugins;
+ QHash<QString, QJsonObject> meta = QGeoPositionInfoSourcePrivate::plugins();
+ foreach (const QString &name, meta.keys()) {
+ if (meta.value(name).value(QStringLiteral("Satellite")).isBool()
+ && meta.value(name).value(QStringLiteral("Satellite")).toBool()) {
+ plugins << name;
+ }
+ }
+
+ return plugins;
}
/*!
diff --git a/tests/auto/positionplugintest/tst_positionplugin.cpp b/tests/auto/positionplugintest/tst_positionplugin.cpp
index f4667e51..503e095f 100644
--- a/tests/auto/positionplugintest/tst_positionplugin.cpp
+++ b/tests/auto/positionplugintest/tst_positionplugin.cpp
@@ -71,7 +71,7 @@ void tst_PositionPlugin::initTestCase()
void tst_PositionPlugin::availableSources()
{
QVERIFY(QGeoPositionInfoSource::availableSources().contains("test.source"));
- QVERIFY(QGeoSatelliteInfoSource::availableSources().contains("test.source"));
+ QVERIFY(!QGeoSatelliteInfoSource::availableSources().contains("test.source"));
}
void tst_PositionPlugin::create()
@@ -81,6 +81,13 @@ void tst_PositionPlugin::create()
QVERIFY(src != 0);
QVERIFY(src->minimumUpdateInterval() == 1000);
+
+ src = QGeoPositionInfoSource::createSource("invalid source that will never exist", 0);
+ QVERIFY(src == 0);
+
+ QGeoSatelliteInfoSource *ssrc = 0;
+ ssrc = QGeoSatelliteInfoSource::createSource("test.source", 0);
+ QVERIFY(ssrc == 0);
}
void tst_PositionPlugin::getUpdates()