Skip to content
Snippets Groups Projects
Commit 63172ddf authored by Xavier Jouslin de Noray's avatar Xavier Jouslin de Noray
Browse files

PluginEnable: fix plugin load when first installation finish

Gitlab: #1382

Change-Id: Ie14258d453cb0f8c1e4c14a5ed473b57941c3b0e
parent feb2d02c
Branches
No related tags found
No related merge requests found
......@@ -2924,10 +2924,7 @@ Manager::loadAccountMap(const YAML::Node& node)
#ifdef ENABLE_PLUGIN
if (pluginPreferences.getPluginsEnabled()) {
std::vector<std::string> loadedPlugins = pluginPreferences.getLoadedPlugins();
for (const std::string& plugin : loadedPlugins) {
jami::Manager::instance().getJamiPluginManager().loadPlugin(plugin);
}
jami::Manager::instance().getJamiPluginManager().loadPlugins();
}
#endif
......
......
......@@ -24,7 +24,6 @@
#include "archiver.h"
#include "logger.h"
#include "manager.h"
#include "preferences.h"
#include "jami/plugin_manager_interface.h"
#include "store_ca_crt.cpp"
......@@ -274,6 +273,12 @@ JamiPluginManager::installPlugin(const std::string& jplPath, bool force)
destinationDir,
PluginUtils::uncompressJplFunction);
}
if (!libjami::getPluginsEnabled()) {
libjami::setPluginsEnabled(true);
Manager::instance().saveConfig();
loadPlugins();
return r;
}
libjami::loadPlugin(destinationDir);
} catch (const std::exception& e) {
JAMI_ERR() << e.what();
......@@ -328,6 +333,20 @@ JamiPluginManager::loadPlugin(const std::string& rootPath)
return false;
}
bool
JamiPluginManager::loadPlugins()
{
#ifdef ENABLE_PLUGIN
bool status = true;
auto loadedPlugins = getLoadedPlugins();
for (const auto& pluginPath : loadedPlugins) {
status &= loadPlugin(pluginPath);
}
return status;
#endif
return false;
}
bool
JamiPluginManager::unloadPlugin(const std::string& rootPath)
{
......
......
......@@ -137,6 +137,11 @@ public:
*/
bool loadPlugin(const std::string& rootPath);
/**
* @brief Returns True if success
*/
bool loadPlugins();
/**
* @brief Returns True if success
* @param rootPath of the plugin folder
......
......
......@@ -131,6 +131,7 @@ private:
void testEnable();
void testCertificateVerification();
void testSignatureVerification();
void testLoad();
void testInstallAndLoad();
void testHandlers();
void testDetailsAndPreferences();
......@@ -142,6 +143,7 @@ private:
CPPUNIT_TEST(testEnable);
CPPUNIT_TEST(testCertificateVerification);
CPPUNIT_TEST(testSignatureVerification);
CPPUNIT_TEST(testLoad);
CPPUNIT_TEST(testInstallAndLoad);
CPPUNIT_TEST(testHandlers);
CPPUNIT_TEST(testDetailsAndPreferences);
......@@ -349,6 +351,18 @@ PluginsTest::testCertificateVerification()
CPPUNIT_ASSERT(!Manager::instance().getJamiPluginManager().checkPluginCertificate(pluginNotSignByIssuer_, false));
}
void
PluginsTest::testLoad()
{
Manager::instance().pluginPreferences.setPluginsEnabled(true);
auto loadedPlugins = Manager::instance().getJamiPluginManager().getLoadedPlugins();
CPPUNIT_ASSERT(loadedPlugins.empty());
Manager::instance().getJamiPluginManager().installPlugin(jplPath_, true);
Manager::instance().getJamiPluginManager().loadPlugins();
loadedPlugins = Manager::instance().getJamiPluginManager().getLoadedPlugins();
CPPUNIT_ASSERT(!loadedPlugins.empty());
}
void
PluginsTest::testInstallAndLoad()
{
......
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment