summaryrefslogtreecommitdiff
path: root/src/libs/extensionsystem
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2017-02-08 14:31:55 +0100
committerEike Ziller <eike.ziller@qt.io>2017-02-27 13:54:59 +0000
commitd64e17ad55f155951fc76e4c2f04299aa9c7a912 (patch)
tree16890479318c917c88392035a461e9edbcf76621 /src/libs/extensionsystem
parentca1d1dfbe2c2b046b5661de20da9e20d4b511680 (diff)
downloadqt-creator-d64e17ad55f155951fc76e4c2f04299aa9c7a912.tar.gz
Move mimetype definitions to plugin specs
- Avoids the hassle of QRC files and manually registering mime types - Avoids performance regressions because of mime types that are registered after mime database has been used - Makes it technically possible to detect that a disabled plugin could handle a mime type if it was enabled Change-Id: I373008b1b56e9c6b4853055f20b3eeb112a6eff9 Reviewed-by: Christian Stenger <christian.stenger@qt.io> Reviewed-by: hjk <hjk@qt.io>
Diffstat (limited to 'src/libs/extensionsystem')
-rw-r--r--src/libs/extensionsystem/pluginspec.cpp48
-rw-r--r--src/libs/extensionsystem/pluginspec.h1
-rw-r--r--src/libs/extensionsystem/pluginspec_p.h3
3 files changed, 30 insertions, 22 deletions
diff --git a/src/libs/extensionsystem/pluginspec.cpp b/src/libs/extensionsystem/pluginspec.cpp
index c839b8ea3f..19be010c4d 100644
--- a/src/libs/extensionsystem/pluginspec.cpp
+++ b/src/libs/extensionsystem/pluginspec.cpp
@@ -360,6 +360,11 @@ QVector<PluginDependency> PluginSpec::dependencies() const
return d->dependencies;
}
+QJsonObject PluginSpec::metaData() const
+{
+ return d->metaData;
+}
+
/*!
Returns a list of descriptions of command line arguments the plugin processes.
*/
@@ -539,6 +544,7 @@ bool PluginSpecPrivate::read(const QString &fileName)
hasError = false;
errorString.clear();
dependencies.clear();
+ metaData = QJsonObject();
QFileInfo fileInfo(fileName);
location = fileInfo.absolutePath();
filePath = fileInfo.absoluteFilePath();
@@ -650,11 +656,11 @@ static inline bool readMultiLineString(const QJsonValue &value, QString *out)
/*!
\internal
*/
-bool PluginSpecPrivate::readMetaData(const QJsonObject &metaData)
+bool PluginSpecPrivate::readMetaData(const QJsonObject &pluginMetaData)
{
- qCDebug(pluginLog) << "MetaData:" << QJsonDocument(metaData).toJson();
+ qCDebug(pluginLog) << "MetaData:" << QJsonDocument(pluginMetaData).toJson();
QJsonValue value;
- value = metaData.value(QLatin1String("IID"));
+ value = pluginMetaData.value(QLatin1String("IID"));
if (!value.isString()) {
qCDebug(pluginLog) << "Not a plugin (no string IID found)";
return false;
@@ -664,19 +670,19 @@ bool PluginSpecPrivate::readMetaData(const QJsonObject &metaData)
return false;
}
- value = metaData.value(QLatin1String(PLUGIN_METADATA));
+ value = pluginMetaData.value(QLatin1String(PLUGIN_METADATA));
if (!value.isObject())
return reportError(tr("Plugin meta data not found"));
- QJsonObject pluginInfo = value.toObject();
+ metaData = value.toObject();
- value = pluginInfo.value(QLatin1String(PLUGIN_NAME));
+ value = metaData.value(QLatin1String(PLUGIN_NAME));
if (value.isUndefined())
return reportError(msgValueMissing(PLUGIN_NAME));
if (!value.isString())
return reportError(msgValueIsNotAString(PLUGIN_NAME));
name = value.toString();
- value = pluginInfo.value(QLatin1String(PLUGIN_VERSION));
+ value = metaData.value(QLatin1String(PLUGIN_VERSION));
if (value.isUndefined())
return reportError(msgValueMissing(PLUGIN_VERSION));
if (!value.isString())
@@ -685,32 +691,32 @@ bool PluginSpecPrivate::readMetaData(const QJsonObject &metaData)
if (!isValidVersion(version))
return reportError(msgInvalidFormat(PLUGIN_VERSION, version));
- value = pluginInfo.value(QLatin1String(PLUGIN_COMPATVERSION));
+ value = metaData.value(QLatin1String(PLUGIN_COMPATVERSION));
if (!value.isUndefined() && !value.isString())
return reportError(msgValueIsNotAString(PLUGIN_COMPATVERSION));
compatVersion = value.toString(version);
if (!value.isUndefined() && !isValidVersion(compatVersion))
return reportError(msgInvalidFormat(PLUGIN_COMPATVERSION, compatVersion));
- value = pluginInfo.value(QLatin1String(PLUGIN_REQUIRED));
+ value = metaData.value(QLatin1String(PLUGIN_REQUIRED));
if (!value.isUndefined() && !value.isBool())
return reportError(msgValueIsNotABool(PLUGIN_REQUIRED));
required = value.toBool(false);
qCDebug(pluginLog) << "required =" << required;
- value = pluginInfo.value(QLatin1String(PLUGIN_HIDDEN_BY_DEFAULT));
+ value = metaData.value(QLatin1String(PLUGIN_HIDDEN_BY_DEFAULT));
if (!value.isUndefined() && !value.isBool())
return reportError(msgValueIsNotABool(PLUGIN_HIDDEN_BY_DEFAULT));
hiddenByDefault = value.toBool(false);
qCDebug(pluginLog) << "hiddenByDefault =" << hiddenByDefault;
- value = pluginInfo.value(QLatin1String(PLUGIN_EXPERIMENTAL));
+ value = metaData.value(QLatin1String(PLUGIN_EXPERIMENTAL));
if (!value.isUndefined() && !value.isBool())
return reportError(msgValueIsNotABool(PLUGIN_EXPERIMENTAL));
experimental = value.toBool(false);
qCDebug(pluginLog) << "experimental =" << experimental;
- value = pluginInfo.value(QLatin1String(PLUGIN_DISABLED_BY_DEFAULT));
+ value = metaData.value(QLatin1String(PLUGIN_DISABLED_BY_DEFAULT));
if (!value.isUndefined() && !value.isBool())
return reportError(msgValueIsNotABool(PLUGIN_DISABLED_BY_DEFAULT));
enabledByDefault = !value.toBool(false);
@@ -720,35 +726,35 @@ bool PluginSpecPrivate::readMetaData(const QJsonObject &metaData)
enabledByDefault = false;
enabledBySettings = enabledByDefault;
- value = pluginInfo.value(QLatin1String(VENDOR));
+ value = metaData.value(QLatin1String(VENDOR));
if (!value.isUndefined() && !value.isString())
return reportError(msgValueIsNotAString(VENDOR));
vendor = value.toString();
- value = pluginInfo.value(QLatin1String(COPYRIGHT));
+ value = metaData.value(QLatin1String(COPYRIGHT));
if (!value.isUndefined() && !value.isString())
return reportError(msgValueIsNotAString(COPYRIGHT));
copyright = value.toString();
- value = pluginInfo.value(QLatin1String(DESCRIPTION));
+ value = metaData.value(QLatin1String(DESCRIPTION));
if (!value.isUndefined() && !readMultiLineString(value, &description))
return reportError(msgValueIsNotAString(DESCRIPTION));
- value = pluginInfo.value(QLatin1String(URL));
+ value = metaData.value(QLatin1String(URL));
if (!value.isUndefined() && !value.isString())
return reportError(msgValueIsNotAString(URL));
url = value.toString();
- value = pluginInfo.value(QLatin1String(CATEGORY));
+ value = metaData.value(QLatin1String(CATEGORY));
if (!value.isUndefined() && !value.isString())
return reportError(msgValueIsNotAString(CATEGORY));
category = value.toString();
- value = pluginInfo.value(QLatin1String(LICENSE));
+ value = metaData.value(QLatin1String(LICENSE));
if (!value.isUndefined() && !readMultiLineString(value, &license))
return reportError(msgValueIsNotAMultilineString(LICENSE));
- value = pluginInfo.value(QLatin1String(PLATFORM));
+ value = metaData.value(QLatin1String(PLATFORM));
if (!value.isUndefined() && !value.isString())
return reportError(msgValueIsNotAString(PLATFORM));
const QString platformSpec = value.toString().trimmed();
@@ -759,7 +765,7 @@ bool PluginSpecPrivate::readMetaData(const QJsonObject &metaData)
.arg(platformSpec, platformSpecification.errorString()));
}
- value = pluginInfo.value(QLatin1String(DEPENDENCIES));
+ value = metaData.value(QLatin1String(DEPENDENCIES));
if (!value.isUndefined() && !value.isArray())
return reportError(msgValueIsNotAObjectArray(DEPENDENCIES));
if (!value.isUndefined()) {
@@ -806,7 +812,7 @@ bool PluginSpecPrivate::readMetaData(const QJsonObject &metaData)
}
}
- value = pluginInfo.value(QLatin1String(ARGUMENTS));
+ value = metaData.value(QLatin1String(ARGUMENTS));
if (!value.isUndefined() && !value.isArray())
return reportError(msgValueIsNotAObjectArray(ARGUMENTS));
if (!value.isUndefined()) {
diff --git a/src/libs/extensionsystem/pluginspec.h b/src/libs/extensionsystem/pluginspec.h
index 64725c8e9f..0462acddef 100644
--- a/src/libs/extensionsystem/pluginspec.h
+++ b/src/libs/extensionsystem/pluginspec.h
@@ -104,6 +104,7 @@ public:
bool isForceEnabled() const;
bool isForceDisabled() const;
QVector<PluginDependency> dependencies() const;
+ QJsonObject metaData() const;
typedef QVector<PluginArgumentDescription> PluginArgumentDescriptions;
PluginArgumentDescriptions argumentDescriptions() const;
diff --git a/src/libs/extensionsystem/pluginspec_p.h b/src/libs/extensionsystem/pluginspec_p.h
index 86790da8ec..e0ac647d14 100644
--- a/src/libs/extensionsystem/pluginspec_p.h
+++ b/src/libs/extensionsystem/pluginspec_p.h
@@ -82,6 +82,7 @@ public:
QString category;
QRegExp platformSpecification;
QVector<PluginDependency> dependencies;
+ QJsonObject metaData;
bool enabledBySettings = true;
bool enabledIndirectly = false;
bool forceEnabled = false;
@@ -104,7 +105,7 @@ public:
void enableDependenciesIndirectly();
- bool readMetaData(const QJsonObject &metaData);
+ bool readMetaData(const QJsonObject &pluginMetaData);
private:
PluginSpec *q;