fix case insensitive issue with image provider id

Task-number: QTBUG-31614

Change-Id: I866df6e3ed6226b443640a51f66a3dbb92b31249
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
This commit is contained in:
Tasuku Suzuki 2013-06-08 15:53:09 +09:00 committed by The Qt Project
parent ad92ce206d
commit 5d4b006181
2 changed files with 30 additions and 2 deletions

View 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());
}
/*!

View 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: