forked from qt-creator/qt-creator
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>
This commit is contained in:
@@ -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()) {
|
||||
|
||||
Reference in New Issue
Block a user