Fix StepMergeTpkConfig for application attribute
[platform/core/appfw/wgt-backend.git] / src / hybrid / step / configuration / step_merge_tpk_config.cc
index d63d003..eb2619f 100644 (file)
@@ -6,6 +6,8 @@
 
 #include <pkgmgrinfo_basic.h>
 
+#include <common/utils/glist_range.h>
+
 #include "hybrid/hybrid_backend_data.h"
 
 namespace hybrid {
@@ -22,11 +24,27 @@ common_installer::Step::Status StepMergeTpkConfig::process() {
   manifest_x* tpk_data = data->tpk_manifest_data.get();
   manifest_x* wgt_data = context_->manifest_data.get();
 
-  if (merge_type_ == MergeType::CONCAT)
+  if (merge_type_ == MergeType::CONCAT) {
     wgt_data->application =
         g_list_concat(wgt_data->application, tpk_data->application);
-  else
+  } else {
+    // mainappid should be webapp for hybrid pkg
+    for (application_x* app :
+        GListRange<application_x*>(tpk_data->application)) {
+      if (app->type && strcmp(app->type, "webapp") != 0)
+        continue;
+
+      if (app->mainapp)
+        free(app->mainapp);
+      app->mainapp = strdup("true");
+      if (!app->mainapp) {
+        LOG(ERROR) << "Out of memoery";
+        return Status::ERROR;
+      }
+      break;
+    }
     wgt_data->application = tpk_data->application;
+  }
 
   tpk_data->application = nullptr;
   return Status::OK;