From 4c55c3cd441df99406e7c0a5a60e221ad43cdc46 Mon Sep 17 00:00:00 2001 From: Junghyun Yeon Date: Tue, 1 Oct 2019 15:54:24 +0900 Subject: [PATCH] Add StepSetMainapp Add StepSetMainapp for some request types to set mainapp attribute properly. Change-Id: I23717ba8edc9da81ce2c33ddfcd432dcfabcbc29 Signed-off-by: Junghyun Yeon --- src/hybrid/hybrid_installer.cc | 8 +++++ .../step/configuration/step_merge_tpk_config.cc | 22 ++----------- src/hybrid/step/configuration/step_set_mainapp.cc | 36 ++++++++++++++++++++++ src/hybrid/step/configuration/step_set_mainapp.h | 33 ++++++++++++++++++++ 4 files changed, 79 insertions(+), 20 deletions(-) create mode 100644 src/hybrid/step/configuration/step_set_mainapp.cc create mode 100644 src/hybrid/step/configuration/step_set_mainapp.h diff --git a/src/hybrid/hybrid_installer.cc b/src/hybrid/hybrid_installer.cc index 31028d0..079754f 100644 --- a/src/hybrid/hybrid_installer.cc +++ b/src/hybrid/hybrid_installer.cc @@ -90,6 +90,7 @@ #include "hybrid/shared_dirs.h" #include "hybrid/step/configuration/step_merge_tpk_config.h" #include "hybrid/step/configuration/step_merge_tpk_privileges.h" +#include "hybrid/step/configuration/step_set_mainapp.h" #include "hybrid/step/configuration/step_stash_tpk_config.h" #include "hybrid/step/encryption/step_encrypt_resources.h" #include "hybrid/step/pkgmgr/step_merge_xml.h" @@ -486,6 +487,7 @@ void HybridInstaller::ManifestDirectInstallSteps() { AddStep(); AddStep( ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH); + AddStep(); AddStep(); AddStep( ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE); @@ -529,6 +531,7 @@ void HybridInstaller::ManifestDirectUpdateSteps() { AddStep(); AddStep( ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH); + AddStep(); AddStep(); AddStep( ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE); @@ -552,6 +555,7 @@ void HybridInstaller::ManifestPartialInstallSteps() { wgt::configuration::StepParse::ConfigLocation::INSTALLED, true); AddStep( hybrid::configuration::StepMergeTpkConfig::MergeType::OVERWRITE); + AddStep(); AddStep(); AddStep(false); AddStep(); @@ -582,6 +586,7 @@ void HybridInstaller::ManifestPartialUpdateSteps() { wgt::configuration::StepParse::ConfigLocation::INSTALLED, true); AddStep( hybrid::configuration::StepMergeTpkConfig::MergeType::OVERWRITE); + AddStep(); AddStep(); AddStep(false); AddStep( @@ -706,6 +711,7 @@ void HybridInstaller::ReadonlyUpdateUninstallSteps() { AddStep(); AddStep(); AddStep(); + AddStep(); AddStep(); AddStep(); AddStep(); @@ -766,6 +772,8 @@ void HybridInstaller::RecoverDBSteps() { AddStep(); AddStep( ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH); + AddStep(); + AddStep(); AddStep(); } diff --git a/src/hybrid/step/configuration/step_merge_tpk_config.cc b/src/hybrid/step/configuration/step_merge_tpk_config.cc index eb2619f..d63d003 100644 --- a/src/hybrid/step/configuration/step_merge_tpk_config.cc +++ b/src/hybrid/step/configuration/step_merge_tpk_config.cc @@ -6,8 +6,6 @@ #include -#include - #include "hybrid/hybrid_backend_data.h" namespace hybrid { @@ -24,27 +22,11 @@ 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 { - // mainappid should be webapp for hybrid pkg - for (application_x* app : - GListRange(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; - } + else wgt_data->application = tpk_data->application; - } tpk_data->application = nullptr; return Status::OK; diff --git a/src/hybrid/step/configuration/step_set_mainapp.cc b/src/hybrid/step/configuration/step_set_mainapp.cc new file mode 100644 index 0000000..5d8958d --- /dev/null +++ b/src/hybrid/step/configuration/step_set_mainapp.cc @@ -0,0 +1,36 @@ +// Copyright (c) 2019 Samsung Electronics Co., Ltd All Rights Reserved +// Use of this source code is governed by an apache-2.0 license that can be +// found in the LICENSE file. + +#include "hybrid/step/configuration/step_set_mainapp.h" + +#include + +#include + +#include "hybrid/hybrid_backend_data.h" + +namespace hybrid { +namespace configuration { + +common_installer::Step::Status StepSetMainapp::process() { + manifest_x* manifest_data = context_->manifest_data.get(); + for (application_x* app : + GListRange(manifest_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; + } + return Status::OK; +} + +} // namespace configuration +} // namespace hybrid diff --git a/src/hybrid/step/configuration/step_set_mainapp.h b/src/hybrid/step/configuration/step_set_mainapp.h new file mode 100644 index 0000000..2b287fb --- /dev/null +++ b/src/hybrid/step/configuration/step_set_mainapp.h @@ -0,0 +1,33 @@ +// Copyright (c) 2019 Samsung Electronics Co., Ltd All Rights Reserved +// Use of this source code is governed by an apache-2.0 license that can be +// found in the LICENSE file. + +#ifndef HYBRID_STEP_CONFIGURATION_STEP_SET_MAINAPP_H_ +#define HYBRID_STEP_CONFIGURATION_STEP_SET_MAINAPP_H_ + +#include +#include + +namespace hybrid { +namespace configuration { + +/** + * \brief StepSetMainapp + * Sets main application information + */ +class StepSetMainapp : public common_installer::Step { + public: + using Step::Step; + + Status process() override; + Status clean() override { return Status::OK; } + Status undo() override { return Status::OK; } + Status precheck() override { return Status::OK; } + + STEP_NAME(SetMainapp) +}; + +} // namespace configuration +} // namespace hybrid + +#endif // HYBRID_STEP_CONFIGURATION_STEP_SET_MAINAPP_H_ -- 2.7.4