Fix plugin manager 77/296277/3
authorSangyoon Jang <jeremy.jang@samsung.com>
Tue, 25 Jul 2023 01:17:39 +0000 (10:17 +0900)
committerSangyoon Jang <jeremy.jang@samsung.com>
Tue, 25 Jul 2023 06:16:41 +0000 (15:16 +0900)
- Parse metadata of package.
- Add some logs.

Change-Id: Id2598b65fa0aac2b346e7b5eff8d1940258513c4
Signed-off-by: Sangyoon Jang <jeremy.jang@samsung.com>
src/common/plugins/plugin_manager.cc

index f914ca4..7d01590 100644 (file)
@@ -145,6 +145,17 @@ bool PluginManager::LoadPlugins(Plugin::ActionType action_type) {
         if (done)
           break;
       }
+      /* metadata of package, since Tizen 7.5 */
+      for (metadata_x* meta : GListRange<metadata_x*>(manifest_->metadata)) {
+        if (IsSubKey(meta->key, plugin_info->name())) {
+          plugin = factory.CreatePluginByPluginInfo(*plugin_info);
+          if (!plugin)
+            LOG(WARNING) << "Failed to load plugin: "
+                         << plugin_info->path()
+                         << " Plugin has been skipped.";
+          break;
+        }
+      }
       if (!done && action_type == Plugin::ActionType::Upgrade &&
           IsDataRemoved(MetadataPlugin::kType, plugin_info->name())) {
         plugin = factory.CreatePluginByPluginInfo(*plugin_info,
@@ -195,13 +206,18 @@ bool PluginManager::LoadPlugins(Plugin::ActionType action_type) {
 bool PluginManager::RunPlugins(Plugin::ActionType action_type) {
   LOG(DEBUG) << "Running pkgmgr plugins...";
   for (auto& plugin : loaded_plugins_) {
+    auto& plugin_info = plugin->plugin_info();
+    LOG(INFO) << "Running plugin: " << plugin_info.path();
     bool success = plugin->Run(xml_parser_.doc_ptr(), manifest_, action_type);
     if (!success) {
-      bool vitalness = plugin->plugin_info().vitalness();
-      if (vitalness)
+      bool vitalness = plugin_info.vitalness();
+      if (vitalness) {
+        LOG(ERROR) << plugin_info.path() << " fails";
         return false;
-      else
-        LOG(ERROR) << "plugin Run fail but installation is ongoing";
+      } else {
+        LOG(ERROR) << plugin_info.path()
+                   << " fails but installation is ongoing";
+      }
     }
   }
   return true;