Plugins: Change a few usages of PluginSpec::name to ::id

First, PluginSpec had only field "name". QtC 15 added "id", which became
(a lowercase) copy of "name", and which is the future-proof field to use
when identifying a plugin.

This change turns usages of PluginSpec::name, which are not exclusively
used for user display into PluginSpec::id. In case of id string
comparisons, the plugin id string turns to lowercase.

Change-Id: Ibae3b06a932158cd6946e1b29192b1db0dd78a40
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
This commit is contained in:
Alessandro Portale
2024-11-14 13:41:00 +01:00
parent 46856f4869
commit 12d55a5636
17 changed files with 47 additions and 44 deletions

View File

@@ -404,8 +404,8 @@ QStringList lastSessionArgument()
{
// using insider information here is not particularly beautiful, anyhow
const bool hasProjectExplorer = Utils::anyOf(PluginManager::plugins(),
Utils::equal(&PluginSpec::name,
QString("ProjectExplorer")));
Utils::equal(&PluginSpec::id,
QString("projectexplorer")));
return hasProjectExplorer ? QStringList({"-lastsession"}) : QStringList();
}

View File

@@ -374,7 +374,7 @@ const QStringList PluginManager::allErrors()
return Utils::transform<QStringList>(Utils::filtered(plugins(), [](const PluginSpec *spec) {
return spec->hasError() && spec->isEffectivelyEnabled();
}), [](const PluginSpec *spec) {
return spec->name().append(": ").append(spec->errorString());
return spec->id().append(": ").append(spec->errorString());
});
}
@@ -444,11 +444,11 @@ QString PluginManager::systemInformation()
result += "Plugin information:\n\n";
PluginSpec * const longestSpec = Utils::maxElementOrDefault(
d->pluginSpecs, [](const PluginSpec *left, const PluginSpec *right) {
return left->name().size() < right->name().size();
return left->id().size() < right->id().size();
});
int size = longestSpec->name().size();
int size = longestSpec->id().size();
for (const PluginSpec *spec : plugins()) {
result += QLatin1String(spec->isEffectivelyEnabled() ? "+ " : " ") + filled(spec->name(), size) +
result += QLatin1String(spec->isEffectivelyEnabled() ? "+ " : " ") + filled(spec->id(), size) +
" " + spec->version() + "\n";
}
QString settingspath = QFileInfo(settings()->fileName()).path();
@@ -606,7 +606,7 @@ QString PluginManager::serializedArguments()
if (!rc.isEmpty())
rc += separator;
rc += QLatin1Char(':');
rc += ps->name();
rc += ps->id();
rc += separator;
rc += ps->arguments().join(separator);
}
@@ -660,7 +660,7 @@ void PluginManager::remoteArguments(const QString &serializedArgument, QObject *
const QStringList arguments = subList(serializedArguments, QLatin1String(argumentKeywordC));
for (const PluginSpec *ps : plugins()) {
if (ps->state() == PluginSpec::Running) {
const QStringList pluginOptions = subList(serializedArguments, QLatin1Char(':') + ps->name());
const QStringList pluginOptions = subList(serializedArguments, QLatin1Char(':') + ps->id());
if (IPlugin *plugin = ps->plugin()) {
QObject *socketParent
= plugin->remoteCommand(pluginOptions, workingDirectory, arguments);
@@ -815,7 +815,7 @@ void PluginManager::formatPluginOptions(QTextStream &str, int optionIndentation,
void PluginManager::formatPluginVersions(QTextStream &str)
{
for (PluginSpec *ps : std::as_const(d->pluginSpecs))
str << " " << ps->name() << ' ' << ps->version() << ' ' << ps->description() << '\n';
str << " " << ps->id() << ' ' << ps->version() << ' ' << ps->description() << '\n';
}
/*!
@@ -969,7 +969,7 @@ void PluginManagerPrivate::startDelayedInitialize()
NANOTRACE_SCOPE("ExtensionSystem", "DelayedInitialize");
while (!delayedInitializeQueue.empty()) {
PluginSpec *spec = delayedInitializeQueue.front();
const std::string specName = spec->name().toStdString();
const std::string specName = spec->id().toStdString();
delayedInitializeQueue.pop();
NANOTRACE_SCOPE(specName, specName + "::delayedInitialized");
profilingReport(">delayedInitialize", spec);
@@ -1622,7 +1622,7 @@ public:
QDir().mkpath(QFileInfo(m_filePath).absolutePath());
QFile f(m_filePath);
if (f.open(QIODevice::WriteOnly)) {
f.write(spec->name().toUtf8());
f.write(spec->id().toUtf8());
f.write("\n");
f.close();
} else {
@@ -1744,11 +1744,11 @@ void PluginManagerPrivate::loadPlugin(PluginSpec *spec, PluginSpec::State destSt
if (enableCrashCheck && destState < PluginSpec::Stopped)
lockFile.reset(new LockFile(this, spec));
const std::string specName = spec->name().toStdString();
const std::string specId = spec->id().toStdString();
switch (destState) {
case PluginSpec::Running: {
NANOTRACE_SCOPE(specName, specName + "::extensionsInitialized");
NANOTRACE_SCOPE(specId, specId + "::extensionsInitialized");
profilingReport(">initializeExtensions", spec);
spec->initializeExtensions();
profilingReport("<initializeExtensions",
@@ -1782,14 +1782,14 @@ void PluginManagerPrivate::loadPlugin(PluginSpec *spec, PluginSpec::State destSt
}
switch (destState) {
case PluginSpec::Loaded: {
NANOTRACE_SCOPE(specName, specName + "::load");
NANOTRACE_SCOPE(specId, specId + "::load");
profilingReport(">loadLibrary", spec);
spec->loadLibrary();
profilingReport("<loadLibrary", spec, &spec->performanceData().load);
break;
}
case PluginSpec::Initialized: {
NANOTRACE_SCOPE(specName, specName + "::initialize");
NANOTRACE_SCOPE(specId, specId + "::initialize");
profilingReport(">initializePlugin", spec);
spec->initializePlugin();
profilingReport("<initializePlugin", spec, &spec->performanceData().initialize);
@@ -1865,7 +1865,7 @@ void PluginManagerPrivate::addPlugins(const PluginSpecs &specs)
enableDependenciesIndirectly();
checkForDuplicatePlugins();
// ensure deterministic plugin load order by sorting
Utils::sort(pluginSpecs, &PluginSpec::name);
Utils::sort(pluginSpecs, &PluginSpec::id);
emit q->pluginsChanged();
}
@@ -1966,14 +1966,14 @@ void PluginManagerPrivate::profilingReport(const char *what, const PluginSpec *s
if (m_profilingVerbosity > 0) {
qDebug("%-22s %-40s %8lldms (%8lldms)",
what,
qPrintable(spec->name()),
qPrintable(spec->id()),
absoluteElapsedMS,
elapsedMS);
}
if (target) {
QString tc;
*target = elapsedMS;
tc = spec->name() + '_';
tc = spec->id() + '_';
tc += QString::fromUtf8(QByteArray(what + 1));
Utils::Benchmarker::report("loadPlugins", tc, elapsedMS);
}
@@ -1997,7 +1997,7 @@ QString PluginManagerPrivate::profilingSummary(qint64 *totalOut) const
continue;
const qint64 t = s->performanceData().total();
summary += QString("%1 %2ms ( %3% ) (%4)\n")
.arg(s->name(), -34)
.arg(s->id(), -34)
.arg(t, 8)
.arg(100.0 * t / total, 5, 'f', 2)
.arg(s->performanceData().summary());

View File

@@ -37,7 +37,7 @@ static bool isBeautifierPluginActivated()
return std::find_if(specs.begin(),
specs.end(),
[](ExtensionSystem::PluginSpec *spec) {
return spec->name() == "Beautifier" && spec->isEffectivelyEnabled();
return spec->id() == "beautifier" && spec->isEffectivelyEnabled();
})
!= specs.end();
}

View File

@@ -140,7 +140,7 @@ void CorePlugin::loadMimeFromPlugin(const ExtensionSystem::PluginSpec *plugin)
const QJsonValue mimetypes = metaData.value("Mimetypes");
QString mimetypeString;
if (Utils::readMultiLineString(mimetypes, &mimetypeString))
Utils::addMimeTypes(plugin->name() + ".mimetypes", mimetypeString.trimmed().toUtf8());
Utils::addMimeTypes(plugin->id() + ".mimetypes", mimetypeString.trimmed().toUtf8());
}
static void initProxyAuthDialog()

View File

@@ -46,7 +46,7 @@ bool isClangFormatPresent()
{
using namespace ExtensionSystem;
return Utils::contains(PluginManager::plugins(), [](const PluginSpec *plugin) {
return plugin->name() == "ClangFormat" && plugin->isEffectivelyEnabled();
return plugin->id() == "clangformat" && plugin->isEffectivelyEnabled();
});
};

View File

@@ -1761,7 +1761,7 @@ bool isEffectComposerActivated()
{
using namespace ExtensionSystem;
return Utils::anyOf(PluginManager::plugins(), [](PluginSpec *spec) {
return spec->name() == "EffectComposer" && spec->isEffectivelyEnabled();
return spec->id() == "effectcomposer" && spec->isEffectivelyEnabled();
});
}

View File

@@ -26,7 +26,7 @@ inline ExtensionSystem::IPlugin *licenseCheckerPlugin()
{
const ExtensionSystem::PluginSpec *pluginSpec = Utils::findOrDefault(
ExtensionSystem::PluginManager::plugins(),
Utils::equal(&ExtensionSystem::PluginSpec::name, QString("LicenseChecker")));
Utils::equal(&ExtensionSystem::PluginSpec::id, QString("licensechecker")));
if (pluginSpec)
return pluginSpec->plugin();
@@ -37,7 +37,7 @@ inline ExtensionSystem::IPlugin *dsLicenseCheckerPlugin()
{
const ExtensionSystem::PluginSpec *pluginSpec = Utils::findOrDefault(
ExtensionSystem::PluginManager::plugins(),
Utils::equal(&ExtensionSystem::PluginSpec::name, QString("DSLicense")));
Utils::equal(&ExtensionSystem::PluginSpec::id, QString("dslicense")));
if (pluginSpec)
return pluginSpec->plugin();
@@ -48,7 +48,7 @@ inline bool dsLicenseCheckerPluginExists()
{
const ExtensionSystem::PluginSpec *pluginSpec = Utils::findOrDefault(
ExtensionSystem::PluginManager::plugins(),
Utils::equal(&ExtensionSystem::PluginSpec::name, QString("DSLicense")));
Utils::equal(&ExtensionSystem::PluginSpec::id, QString("dslicense")));
return pluginSpec;
}

View File

@@ -324,7 +324,7 @@ bool QmlDesignerPlugin::initialize(const QStringList & /*arguments*/, QString *
// uses simplified Telemetry settings page in case of Qt Design Studio
ExtensionSystem::PluginSpec *usageStatistic = Utils::findOrDefault(ExtensionSystem::PluginManager::plugins(), [](ExtensionSystem::PluginSpec *p) {
return p->name() == "UsageStatistic";
return p->id() == "usagestatistic";
});
if (usageStatistic && usageStatistic->plugin())

View File

@@ -170,7 +170,7 @@ QObject *QmlPreviewWidgetPlugin::getPreviewPlugin()
const ExtensionSystem::PluginSpecs &specs = ExtensionSystem::PluginManager::plugins();
const auto pluginIt = std::find_if(specs.cbegin(), specs.cend(),
[](const ExtensionSystem::PluginSpec *p) {
return p->name() == "QmlPreview";
return p->id() == "qmlpreview";
});
if (pluginIt != specs.cend())

View File

@@ -31,7 +31,7 @@ static ExtensionSystem::IPlugin *getPlugin()
{
const ExtensionSystem::PluginSpecs plugins = ExtensionSystem::PluginManager::plugins();
auto it = std::find_if(plugins.begin(), plugins.end(), [](ExtensionSystem::PluginSpec *spec) {
return spec->name() == "QmlPreview";
return spec->id() == "qmlpreview";
});
return (it == plugins.end()) ? nullptr : (*it)->plugin();

View File

@@ -55,7 +55,7 @@ ExtensionSystem::IPlugin *findMcuSupportPlugin()
{
const ExtensionSystem::PluginSpec *pluginSpec = Utils::findOrDefault(
ExtensionSystem::PluginManager::plugins(),
Utils::equal(&ExtensionSystem::PluginSpec::name, QString("McuSupport")));
Utils::equal(&ExtensionSystem::PluginSpec::id, QString("mcusupport")));
if (pluginSpec)
return pluginSpec->plugin();

View File

@@ -24,17 +24,17 @@ static bool isMultilanguagePresent()
const ExtensionSystem::PluginSpecs &specs = ExtensionSystem::PluginManager::plugins();
return std::find_if(specs.cbegin(), specs.cend(),
[](ExtensionSystem::PluginSpec *spec) {
return spec->name() == "MultiLanguage";
return spec->id() == "multilanguage";
})
!= specs.cend();
}
static QObject *getPlugin(const QString &pluginName)
static QObject *getPlugin(const QString &pluginId)
{
const ExtensionSystem::PluginSpecs &specs = ExtensionSystem::PluginManager::plugins();
const auto pluginIt = std::find_if(
specs.cbegin(), specs.cend(), [pluginName](const ExtensionSystem::PluginSpec *p) {
return p->name() == pluginName;
specs.cbegin(), specs.cend(), [pluginId](const ExtensionSystem::PluginSpec *p) {
return p->id() == pluginId;
});
if (pluginIt != specs.cend())
@@ -81,7 +81,7 @@ void QmlMultiLanguageAspect::setCurrentLocale(const QString &locale)
if (m_currentLocale == locale)
return;
m_currentLocale = locale;
if (auto previewPlugin = getPlugin("QmlPreview"))
if (auto previewPlugin = getPlugin("qmlpreview"))
previewPlugin->setProperty("localeIsoCode", locale);
}
@@ -92,7 +92,7 @@ QString QmlMultiLanguageAspect::currentLocale() const
Utils::FilePath QmlMultiLanguageAspect::databaseFilePath() const
{
if (auto previewPlugin = getPlugin("MultiLanguage")) {
if (auto previewPlugin = getPlugin("multilanguage")) {
const auto multilanguageDatabaseFilePath = previewPlugin->property("multilanguageDatabaseFilePath");
return Utils::FilePath::fromString(multilanguageDatabaseFilePath.toString());
}

View File

@@ -74,7 +74,7 @@ static bool isQmlDesigner(const ExtensionSystem::PluginSpec *spec)
if (!spec)
return false;
return spec->name().contains("QmlDesigner");
return spec->id().contains("qmldesigner");
}
static bool qmlDesignerEnabled()

View File

@@ -92,8 +92,8 @@ DataModelDownloader::DataModelDownloader(QObject * /* parent */)
const ExtensionSystem::PluginSpec *pluginSpec
= Utils::findOrDefault(ExtensionSystem::PluginManager::plugins(),
Utils::equal(&ExtensionSystem::PluginSpec::name,
QString("StudioWelcome")));
Utils::equal(&ExtensionSystem::PluginSpec::id,
QString("studiowelcome")));
if (!pluginSpec)
return;

View File

@@ -143,14 +143,14 @@ void tst_PluginManager::circularPlugins()
const PluginSpecs plugins = PluginManager::plugins();
QCOMPARE(plugins.count(), 3);
for (PluginSpec *spec : plugins) {
if (spec->name() == "plugin1") {
if (spec->id() == "plugin1") {
QVERIFY(spec->hasError());
QCOMPARE(spec->state(), PluginSpec::Resolved);
QCOMPARE(spec->plugin(), static_cast<IPlugin *>(0));
} else if (spec->name() == "plugin2") {
} else if (spec->id() == "plugin2") {
QVERIFY2(!spec->hasError(), qPrintable(spec->errorString()));
QCOMPARE(spec->state(), PluginSpec::Running);
} else if (spec->name() == "plugin3") {
} else if (spec->id() == "plugin3") {
QVERIFY(spec->hasError());
QCOMPARE(spec->state(), PluginSpec::Resolved);
QCOMPARE(spec->plugin(), static_cast<IPlugin *>(0));

View File

@@ -2,7 +2,8 @@
"IID" : "plugin",
"MetaData" : {
"Id": "test",
"Name" : "test",
"Name" : "TestPlugin",
"DisplayName" : "Test Plugin",
"Version" : "1.0.1",
"CompatVersion" : "1.0.0",
"VendorId": "theqtcompanyltd",

View File

@@ -92,7 +92,9 @@ void tst_PluginSpec::read()
QVERIFY(spec.readMetaData(metaData("testspecs/spec1.json")));
QCOMPARE(spec.errorString(), QString());
QVERIFY(spec.errorString().isEmpty());
QCOMPARE(spec.name(), QString("test"));
QCOMPARE(spec.id(), QString("test"));
QCOMPARE(spec.name(), QString("TestPlugin"));
QCOMPARE(spec.displayName(), QString("Test Plugin"));
QCOMPARE(spec.version(), QString("1.0.1"));
QCOMPARE(spec.compatVersion(), QString("1.0.0"));
QCOMPARE(spec.isRequired(), false);