fix case insensitive issue with image provider id
authorTasuku Suzuki <stasuku@gmail.com>
Sat, 8 Jun 2013 06:53:09 +0000 (15:53 +0900)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Tue, 18 Jun 2013 09:05:18 +0000 (11:05 +0200)
Task-number: QTBUG-31614

Change-Id: I866df6e3ed6226b443640a51f66a3dbb92b31249
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
src/qml/qml/qqmlengine.cpp
tests/auto/quick/qquickimageprovider/tst_qquickimageprovider.cpp

index 6466213..b36f35f 100644 (file)
@@ -1065,7 +1065,7 @@ QQmlImageProviderBase *QQmlEngine::imageProvider(const QString &providerId) cons
 {
     Q_D(const QQmlEngine);
     QMutexLocker locker(&d->mutex);
-    return d->imageProviders.value(providerId).data();
+    return d->imageProviders.value(providerId.toLower()).data();
 }
 
 /*!
@@ -1077,7 +1077,7 @@ void QQmlEngine::removeImageProvider(const QString &providerId)
 {
     Q_D(QQmlEngine);
     QMutexLocker locker(&d->mutex);
-    d->imageProviders.take(providerId);
+    d->imageProviders.take(providerId.toLower());
 }
 
 /*!
index a790c7b..3eea3c9 100644 (file)
@@ -71,6 +71,9 @@ private slots:
     void removeProvider_data();
     void removeProvider();
 
+    void imageProviderId_data();
+    void imageProviderId();
+
     void threadTest();
 
 private:
@@ -372,6 +375,31 @@ void tst_qquickimageprovider::removeProvider()
     delete obj;
 }
 
+void tst_qquickimageprovider::imageProviderId_data()
+{
+    QTest::addColumn<QString>("providerId");
+
+    QTest::newRow("lowercase") << QStringLiteral("imageprovider");
+    QTest::newRow("CamelCase") << QStringLiteral("ImageProvider");
+    QTest::newRow("UPPERCASE") << QStringLiteral("IMAGEPROVIDER");
+}
+
+void tst_qquickimageprovider::imageProviderId()
+{
+    QFETCH(QString, providerId);
+
+    QQmlEngine engine;
+
+    bool deleteWatch = false;
+    TestQImageProvider *provider = new TestQImageProvider(&deleteWatch);
+
+    engine.addImageProvider(providerId, provider);
+    QVERIFY(engine.imageProvider(providerId) != 0);
+
+    engine.removeImageProvider(providerId);
+    QVERIFY(deleteWatch);
+}
+
 class TestThreadProvider : public QQuickImageProvider
 {
     public: