SET(SRCS
step/configuration/step_merge_tpk_config.cc
- step/configuration/step_parse.cc
step/configuration/step_stash_tpk_config.cc
step/encryption/step_encrypt_resources.cc
hybrid_installer.cc
#include "hybrid/hybrid_backend_data.h"
#include "hybrid/step/configuration/step_merge_tpk_config.h"
-#include "hybrid/step/configuration/step_parse.h"
#include "hybrid/step/configuration/step_stash_tpk_config.h"
#include "hybrid/step/encryption/step_encrypt_resources.h"
+#include "wgt/step/configuration/step_parse.h"
#include "wgt/step/configuration/step_parse_recovery.h"
#include "wgt/step/encryption/step_remove_encryption_data.h"
#include "wgt/step/filesystem/step_create_symbolic_link.h"
ci::configuration::StepParseManifest::ManifestLocation::PACKAGE,
ci::configuration::StepParseManifest::StoreLocation::NORMAL);
AddStep<hybrid::configuration::StepStashTpkConfig>();
- AddStep<hybrid::configuration::StepParse>(true);
+ AddStep<wgt::configuration::StepParse>(
+ wgt::configuration::StepParse::ConfigLocation::RESOURCE_WGT, true);
AddStep<hybrid::configuration::StepMergeTpkConfig>();
AddStep<ci::security::StepCheckSignature>();
AddStep<ci::security::StepPrivilegeCompatibility>();
ci::configuration::StepParseManifest::ManifestLocation::PACKAGE,
ci::configuration::StepParseManifest::StoreLocation::NORMAL);
AddStep<hybrid::configuration::StepStashTpkConfig>();
- AddStep<hybrid::configuration::StepParse>(true);
+ AddStep<wgt::configuration::StepParse>(
+ wgt::configuration::StepParse::ConfigLocation::RESOURCE_WGT, true);
AddStep<hybrid::configuration::StepMergeTpkConfig>();
AddStep<ci::security::StepCheckSignature>();
AddStep<ci::security::StepPrivilegeCompatibility>();
ci::configuration::StepParseManifest::StoreLocation::NORMAL);
AddStep<ci::filesystem::StepDeltaPatch>();
AddStep<hybrid::configuration::StepStashTpkConfig>();
- AddStep<hybrid::configuration::StepParse>(true);
+ AddStep<wgt::configuration::StepParse>(
+ wgt::configuration::StepParse::ConfigLocation::RESOURCE_WGT, true);
AddStep<hybrid::configuration::StepMergeTpkConfig>();
AddStep<ci::security::StepCheckSignature>();
AddStep<ci::security::StepPrivilegeCompatibility>();
ci::configuration::StepParseManifest::ManifestLocation::PACKAGE,
ci::configuration::StepParseManifest::StoreLocation::NORMAL);
AddStep<hybrid::configuration::StepStashTpkConfig>();
- AddStep<hybrid::configuration::StepParse>(true);
+ AddStep<wgt::configuration::StepParse>(
+ wgt::configuration::StepParse::ConfigLocation::RESOURCE_WGT, true);
AddStep<hybrid::configuration::StepMergeTpkConfig>();
AddStep<ci::security::StepCheckSignature>();
AddStep<ci::security::StepPrivilegeCompatibility>();
ci::configuration::StepParseManifest::ManifestLocation::PACKAGE,
ci::configuration::StepParseManifest::StoreLocation::NORMAL);
AddStep<hybrid::configuration::StepStashTpkConfig>();
- AddStep<hybrid::configuration::StepParse>(true);
+ AddStep<wgt::configuration::StepParse>(
+ wgt::configuration::StepParse::ConfigLocation::RESOURCE_WGT, true);
AddStep<hybrid::configuration::StepMergeTpkConfig>();
AddStep<ci::security::StepCheckSignature>();
AddStep<ci::security::StepPrivilegeCompatibility>();
AddStep<ci::pkgmgr::StepRunParserPlugin>(
ci::Plugin::ActionType::Upgrade);
break;
+ case ci::RequestType::ManifestDirectInstall:
+ AddStep<ci::configuration::StepConfigure>(pkgmgr_);
+ AddStep<ci::configuration::StepParseManifest>(
+ ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
+ ci::configuration::StepParseManifest::StoreLocation::NORMAL);
+ AddStep<hybrid::configuration::StepStashTpkConfig>();
+ AddStep<wgt::configuration::StepParse>(
+ wgt::configuration::StepParse::ConfigLocation::INSTALLED, true);
+ AddStep<hybrid::configuration::StepMergeTpkConfig>();
+ AddStep<ci::security::StepCheckSignature>();
+ AddStep<ci::security::StepPrivilegeCompatibility>();
+ AddStep<wgt::security::StepCheckSettingsLevel>();
+ AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
+ AddStep<ci::security::StepRollbackInstallationSecurity>();
+ AddStep<wgt::pkgmgr::StepGenerateXml>();
+ AddStep<ci::pkgmgr::StepRunParserPlugin>(
+ ci::Plugin::ActionType::Install);
+ AddStep<ci::pkgmgr::StepRegisterApplication>();
+ AddStep<ci::security::StepRegisterSecurity>();
+ AddStep<ci::filesystem::StepCreatePerUserStorageDirectories>();
+ break;
+ case ci::RequestType::ManifestDirectUpdate:
+ AddStep<ci::configuration::StepConfigure>(pkgmgr_);
+ AddStep<ci::filesystem::StepUnzip>();
+ AddStep<ci::configuration::StepParseManifest>(
+ ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
+ ci::configuration::StepParseManifest::StoreLocation::NORMAL);
+ AddStep<hybrid::configuration::StepStashTpkConfig>();
+ AddStep<wgt::configuration::StepParse>(
+ wgt::configuration::StepParse::ConfigLocation::INSTALLED, true);
+ AddStep<hybrid::configuration::StepMergeTpkConfig>();
+ AddStep<ci::security::StepCheckSignature>();
+ AddStep<ci::security::StepPrivilegeCompatibility>();
+ AddStep<wgt::security::StepCheckSettingsLevel>();
+ AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
+ AddStep<ci::security::StepRollbackInstallationSecurity>();
+ AddStep<ci::configuration::StepParseManifest>(
+ ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
+ ci::configuration::StepParseManifest::StoreLocation::BACKUP);
+ AddStep<ci::pkgmgr::StepKillApps>();
+ AddStep<ci::security::StepUpdateSecurity>();
+ AddStep<wgt::pkgmgr::StepGenerateXml>();
+ AddStep<ci::pkgmgr::StepUpdateApplication>();
+ AddStep<ci::pkgmgr::StepRunParserPlugin>(
+ ci::Plugin::ActionType::Upgrade);
+ break;
default:
AddStep<ci::configuration::StepFail>();
break;
+++ /dev/null
-// Copyright (c) 2015 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_parse.h"
-
-namespace {
-
-const char kResWgtPath[] = "res/wgt";
-
-}
-
-namespace hybrid {
-namespace configuration {
-
-bool StepParse::LocateConfigFile() {
- return Check(context_->unpacked_dir_path.get() / kResWgtPath);
-}
-
-} // namespace configuration
-} // namespace hybrid
-
+++ /dev/null
-// Copyright (c) 2015 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_PARSE_H_
-#define HYBRID_STEP_CONFIGURATION_STEP_PARSE_H_
-
-#include <manifest_parser/utils/logging.h>
-
-#include "wgt/step/configuration/step_parse.h"
-
-namespace hybrid {
-namespace configuration {
-
-/**
- * \brief This step parse config.xml configuration file of widget
- *
- * This subclass overrides location of file and it is used when hybrid package
- * is installed.
- */
-class StepParse : public wgt::configuration::StepParse {
- public:
- using wgt::configuration::StepParse::StepParse;
-
- bool LocateConfigFile() override;
-
- SCOPE_LOG_TAG(Parse)
-};
-
-} // namespace configuration
-} // namespace hybrid
-
-#endif // HYBRID_STEP_CONFIGURATION_STEP_PARSE_H_
bool Run() {
PrepareContext();
- wgt::configuration::StepParse step(context_.get(), !ignore_start_files_);
+ wgt::configuration::StepParse step(context_.get(),
+ wgt::configuration::StepParse::ConfigLocation::PACKAGE,
+ !ignore_start_files_);
return step.process() == ci::Step::Status::OK;
}
step/security/step_check_wgt_background_category.cc
step/security/step_check_wgt_notification_category.cc
step/security/step_check_wgt_ime_privilege.cc
+ step/security/step_direct_manifest_check_signature.cc
wgt_app_query_interface.cc
wgt_installer.cc
)
#include <boost/filesystem/path.hpp>
#include <common/app_installer.h>
+#include <common/backup_paths.h>
#include <common/installer_context.h>
#include <common/step/step.h>
#include <common/utils/glist_range.h>
const std::string kManifestVersion = "1.0.0";
const char kTizenPackageXmlNamespace[] = "http://tizen.org/ns/packages";
+const char kResWgt[] = "res/wgt";
+
GList* GenerateMetadataListX(const wgt::parse::MetaDataInfo& meta_info) {
GList* list = nullptr;
for (auto& meta : meta_info.metadata()) {
namespace sc = std::chrono;
StepParse::StepParse(common_installer::InstallerContext* context,
+ ConfigLocation config_location,
bool check_start_file)
: Step(context),
+ config_location_(config_location),
check_start_file_(check_start_file) {
}
}
bool StepParse::LocateConfigFile() {
- return StepParse::Check(context_->unpacked_dir_path.get());
+ switch (config_location_) {
+ case ConfigLocation::PACKAGE:
+ return StepParse::Check(context_->unpacked_dir_path.get());
+ case ConfigLocation::INSTALLED:
+ return StepParse::Check(context_->pkg_path.get() / kResWgt);
+ case ConfigLocation::RECOVERY:
+ if (StepParse::Check(common_installer::GetBackupPathForPackagePath(
+ context_->root_application_path.get()
+ / context_->pkgid.get()) / kResWgt))
+ return true;
+ if (StepParse::Check(
+ context_->root_application_path.get()
+ / context_->pkgid.get() / kResWgt))
+ return true;
+ return false;
+ case ConfigLocation::RESOURCE_WGT:
+ return StepParse::Check(context_->unpacked_dir_path.get() / kResWgt);
+ default:
+ LOG(ERROR) << "Unknown config location";
+ return false;
+ }
}
common_installer::Step::Status StepParse::process() {
*/
class StepParse : public common_installer::Step {
public:
+ enum class ConfigLocation {
+ PACKAGE, // parse config file from unpacking diretory
+ INSTALLED, // parse config file from current package installation
+ RECOVERY, // parse config file from backup location or package location
+ RESOURCE_WGT // parse config file from unpacking subdiretory "res/wgt"
+ };
+
explicit StepParse(common_installer::InstallerContext* context,
- bool check_start_file);
+ ConfigLocation config_location, bool check_start_file);
Status process() override;
Status clean() override { return Status::OK; }
bool FillManifestX(manifest_x* manifest);
std::unique_ptr<wgt::parse::WidgetConfigParser> parser_;
+ ConfigLocation config_location_;
bool check_start_file_;
SCOPE_LOG_TAG(Parse)
StepParseRecovery::StepParseRecovery(
common_installer::InstallerContext* context)
- : StepParse(context, false) {
+ : StepParse(context, StepParse::ConfigLocation::RECOVERY, false) {
}
common_installer::Step::Status StepParseRecovery::process() {
(void) StepParse::process();
+ context_->pkg_path.set(
+ context_->root_application_path.get() / context_->pkgid.get());
return Status::OK;
}
return Status::OK;
}
-bool StepParseRecovery::LocateConfigFile() {
- context_->pkg_path.set(
- context_->root_application_path.get() / context_->pkgid.get());
-
- if (Check(common_installer::GetBackupPathForPackagePath(
- context_->pkg_path.get()) / kResWgtPath))
- return true;
-
- if (Check(context_->pkg_path.get() / kResWgtPath))
- return true;
-
- return false;
-}
-
} // namespace configuration
} // namespace wgt
*/
Status precheck() override;
- /**
- * \brief Locate config.xml file
- *
- * \return true if config.xml is found
- */
- bool LocateConfigFile() override;
-
SCOPE_LOG_TAG(ParseRecovery)
};
--- /dev/null
+// Copyright (c) 2016 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 "wgt/step/security/step_direct_manifest_check_signature.h"
+
+namespace bf = boost::filesystem;
+
+namespace {
+
+const char kResWgt[] = "res/wgt";
+
+} // namespace
+
+namespace wgt {
+namespace security {
+
+bf::path StepDirectManifestCheckSignature::GetSignatureRoot() const {
+ return StepCheckSignature::GetSignatureRoot() / kResWgt;
+}
+
+} // namespace security
+} // namespace wgt
--- /dev/null
+// Copyright (c) 2016 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 WGT_STEP_SECURITY_STEP_DIRECT_MANIFEST_CHECK_SIGNATURE_H_
+#define WGT_STEP_SECURITY_STEP_DIRECT_MANIFEST_CHECK_SIGNATURE_H_
+
+#include <common/step/security/step_check_signature.h>
+#include <manifest_parser/utils/logging.h>
+
+namespace wgt {
+namespace security {
+
+class StepDirectManifestCheckSignature
+ : public common_installer::security::StepCheckSignature {
+ public:
+ using StepCheckSignature::StepCheckSignature;
+
+ private:
+ boost::filesystem::path GetSignatureRoot() const override;
+
+ SCOPE_LOG_TAG(StepDirectManifestCheckSignature)
+};
+
+} // namespace security
+} // namespace wgt
+
+#endif // WGT_STEP_SECURITY_STEP_DIRECT_MANIFEST_CHECK_SIGNATURE_H_
for (int i = 0; i < argc; ++i) {
if (!strcmp(argv[i], "-i") || !strcmp(argv[i], "-r") ||
!strcmp(argv[i], "-d") || !strcmp(argv[i], "-b") ||
- !strcmp(argv[i], "-w")) {
+ !strcmp(argv[i], "-w") || !strcmp(argv[i], "-y")) {
if (i + 1 < argc) {
path = argv[i + 1];
break;
namespace wgt {
bool WgtAppQueryInterface::IsAppInstalledByArgv(int argc, char** argv) {
- std::string path = GetInstallationRequestInfo(argc, argv);
- if (path.empty())
+ std::string arg = GetInstallationRequestInfo(argc, argv);
+ if (arg.empty())
return false;
- std::string pkg_id = GetPkgIdFromPath(path);
+
+ // argument from commandline is package id
+ if (ci::IsPackageInstalled(arg, ci::GetRequestMode()))
+ return true;
+
+ // argument from commandline is path to file
+ std::string pkg_id = GetPkgIdFromPath(arg);
if (pkg_id.empty())
return false;
return ci::IsPackageInstalled(pkg_id, ci::GetRequestMode());
#include "wgt/step/security/step_check_wgt_background_category.h"
#include "wgt/step/security/step_check_wgt_notification_category.h"
#include "wgt/step/security/step_check_wgt_ime_privilege.h"
+#include "wgt/step/security/step_direct_manifest_check_signature.h"
namespace ci = common_installer;
case ci::RequestType::Install : {
AddStep<ci::configuration::StepConfigure>(pkgmgr_);
AddStep<ci::filesystem::StepUnzip>();
- AddStep<wgt::configuration::StepParse>(true);
+ AddStep<wgt::configuration::StepParse>(
+ wgt::configuration::StepParse::ConfigLocation::PACKAGE, true);
AddStep<ci::pkgmgr::StepCheckBlacklist>();
AddStep<ci::security::StepCheckSignature>();
AddStep<ci::security::StepPrivilegeCompatibility>();
case ci::RequestType::Update: {
AddStep<ci::configuration::StepConfigure>(pkgmgr_);
AddStep<ci::filesystem::StepUnzip>();
- AddStep<wgt::configuration::StepParse>(true);
+ AddStep<wgt::configuration::StepParse>(
+ wgt::configuration::StepParse::ConfigLocation::PACKAGE, true);
AddStep<ci::pkgmgr::StepCheckBlacklist>();
AddStep<ci::security::StepCheckSignature>();
AddStep<ci::security::StepPrivilegeCompatibility>();
}
case ci::RequestType::Reinstall: {
AddStep<ci::configuration::StepConfigure>(pkgmgr_);
- AddStep<wgt::configuration::StepParse>(false);
+ AddStep<wgt::configuration::StepParse>(
+ wgt::configuration::StepParse::ConfigLocation::PACKAGE, false);
AddStep<ci::pkgmgr::StepKillApps>();
AddStep<ci::configuration::StepParseManifest>(
ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
AddStep<ci::configuration::StepConfigure>(pkgmgr_);
AddStep<ci::filesystem::StepUnzip>();
// TODO(t.iwanek): manifest is parsed twice...
- AddStep<wgt::configuration::StepParse>(false);
+ AddStep<wgt::configuration::StepParse>(
+ wgt::configuration::StepParse::ConfigLocation::PACKAGE, false);
// start file may not have changed
AddStep<ci::filesystem::StepDeltaPatch>("res/wgt/");
- AddStep<wgt::configuration::StepParse>(true);
+ AddStep<wgt::configuration::StepParse>(
+ wgt::configuration::StepParse::ConfigLocation::PACKAGE, true);
AddStep<ci::pkgmgr::StepCheckBlacklist>();
AddStep<ci::security::StepCheckSignature>();
AddStep<ci::security::StepPrivilegeCompatibility>();
case ci::RequestType::MountInstall: {
AddStep<ci::configuration::StepConfigure>(pkgmgr_);
AddStep<ci::mount::StepMountUnpacked>();
- AddStep<wgt::configuration::StepParse>(true);
+ AddStep<wgt::configuration::StepParse>(
+ wgt::configuration::StepParse::ConfigLocation::PACKAGE, true);
AddStep<ci::pkgmgr::StepCheckBlacklist>();
AddStep<ci::security::StepCheckSignature>();
AddStep<ci::security::StepPrivilegeCompatibility>();
case ci::RequestType::MountUpdate: {
AddStep<ci::configuration::StepConfigure>(pkgmgr_);
AddStep<ci::mount::StepMountUnpacked>();
- AddStep<wgt::configuration::StepParse>(true);
+ AddStep<wgt::configuration::StepParse>(
+ wgt::configuration::StepParse::ConfigLocation::PACKAGE, true);
AddStep<ci::pkgmgr::StepCheckBlacklist>();
AddStep<ci::security::StepCheckSignature>();
AddStep<ci::security::StepPrivilegeCompatibility>();
AddStep<ci::pkgmgr::StepUpdateApplication>();
break;
}
+ case ci::RequestType::ManifestDirectInstall: {
+ AddStep<ci::configuration::StepConfigure>(pkgmgr_);
+ AddStep<wgt::configuration::StepParse>(
+ wgt::configuration::StepParse::ConfigLocation::INSTALLED, true);
+ AddStep<ci::pkgmgr::StepCheckBlacklist>();
+ AddStep<wgt::security::StepDirectManifestCheckSignature>();
+ AddStep<ci::security::StepPrivilegeCompatibility>();
+ AddStep<wgt::security::StepCheckWgtNotificationCategory>();
+ AddStep<wgt::security::StepCheckWgtImePrivilege>();
+ AddStep<wgt::security::StepCheckSettingsLevel>();
+ AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
+ AddStep<ci::security::StepRollbackInstallationSecurity>();
+ AddStep<wgt::pkgmgr::StepGenerateXml>();
+ AddStep<ci::pkgmgr::StepRegisterApplication>();
+ AddStep<ci::pkgmgr::StepRunParserPlugin>(ci::Plugin::ActionType::Install);
+ AddStep<ci::security::StepRegisterSecurity>();
+ break;
+ }
+ case ci::RequestType::ManifestDirectUpdate: {
+ AddStep<ci::configuration::StepConfigure>(pkgmgr_);
+ AddStep<wgt::configuration::StepParse>(
+ wgt::configuration::StepParse::ConfigLocation::INSTALLED, true);
+ AddStep<ci::pkgmgr::StepCheckBlacklist>();
+ AddStep<wgt::security::StepDirectManifestCheckSignature>();
+ AddStep<ci::security::StepPrivilegeCompatibility>();
+ AddStep<wgt::security::StepCheckWgtNotificationCategory>();
+ AddStep<wgt::security::StepCheckWgtImePrivilege>();
+ AddStep<wgt::security::StepCheckSettingsLevel>();
+ AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
+ AddStep<ci::configuration::StepParseManifest>(
+ ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
+ ci::configuration::StepParseManifest::StoreLocation::BACKUP);
+ AddStep<ci::pkgmgr::StepKillApps>();
+ AddStep<ci::filesystem::StepCopyTep>();
+ AddStep<ci::security::StepUpdateSecurity>();
+ AddStep<wgt::pkgmgr::StepGenerateXml>();
+ AddStep<ci::pkgmgr::StepRunParserPlugin>(
+ ci::Plugin::ActionType::Upgrade);
+ AddStep<ci::pkgmgr::StepUpdateApplication>();
+ break;
+ }
default: {
AddStep<ci::configuration::StepFail>();
}