Populate MetaData:Keys for compat plugins
authorKent Hansen <kent.hansen@nokia.com>
Mon, 21 May 2012 11:15:28 +0000 (13:15 +0200)
committerQt by Nokia <qt-info@nokia.com>
Thu, 24 May 2012 07:48:27 +0000 (09:48 +0200)
QFactoryLoader::indexOf() expects the meta-data to contain a Keys
entry, if there were any keys. For compat plugins, the result of
the plugin's keys() function should be stored here.

Change-Id: Ifd04f90cbfce2598d71548c469baa55ca6b0b338
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
src/corelib/plugin/qfactoryloader.cpp

index 67b59f9..1e70e34 100644 (file)
@@ -168,8 +168,12 @@ void QFactoryLoader::update()
                 if (instance && factory && instance->qt_metacast(d->iid))
                     keys = factory->keys();
 
-                if (!keys.isEmpty())
+                if (!keys.isEmpty()) {
                     metaDataOk = true;
+                    QJsonObject object = library->metaData.value(QLatin1String("MetaData")).toObject();
+                    object.insert(QLatin1String("Keys"), QJsonArray::fromStringList(keys));
+                    library->metaData[QLatin1String("MetaData")] = object;
+                }
 
             } else {
                 QString iid = library->metaData.value(QLatin1String("IID")).toString();