X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fhybrid%2Fhybrid_installer.cc;h=01266aa6c465dbaeb5041f1746c97849b2f7ddf2;hb=71f6fe2fbe94e8e883d1c6d044159ecb824a3445;hp=0a88baf816e664e3bff26614464d238368030dcf;hpb=56555d1509ea6e1ab49bdc33061c3a3913cd6336;p=platform%2Fcore%2Fappfw%2Fwgt-backend.git diff --git a/src/hybrid/hybrid_installer.cc b/src/hybrid/hybrid_installer.cc index 0a88baf..01266aa 100644 --- a/src/hybrid/hybrid_installer.cc +++ b/src/hybrid/hybrid_installer.cc @@ -4,58 +4,106 @@ #include "hybrid/hybrid_installer.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -#include -#include +#include +#include +#include +#include +#include +#include #include "hybrid/hybrid_backend_data.h" -#include "hybrid/step/step_encrypt_resources.h" -#include "hybrid/step/step_merge_tpk_config.h" -#include "hybrid/step/step_stash_tpk_config.h" -#include "hybrid/step/step_parse.h" -#include "wgt/step/step_check_settings_level.h" -#include "wgt/step/step_check_wgt_background_category.h" -#include "wgt/step/step_create_symbolic_link.h" -#include "wgt/step/step_generate_xml.h" -#include "wgt/step/step_parse_recovery.h" -#include "wgt/step/step_remove_encryption_data.h" -#include "wgt/step/step_wgt_patch_icons.h" -#include "wgt/step/step_wgt_patch_storage_directories.h" -#include "wgt/step/step_wgt_remove_manifest.h" +#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_stash_tpk_config.h" +#include "hybrid/step/encryption/step_encrypt_resources.h" +#include "hybrid/step/pkgmgr/step_generate_xml.h" +#include "wgt/step/configuration/step_parse.h" +#include "wgt/step/configuration/step_set_old_signature_files_location.h" +#include "wgt/step/encryption/step_remove_encryption_data.h" +#include "wgt/step/filesystem/step_copy_preview_icons.h" +#include "wgt/step/filesystem/step_create_symbolic_link.h" +#include "wgt/step/filesystem/step_wgt_patch_icons.h" +#include "wgt/step/filesystem/step_wgt_patch_storage_directories.h" +#include "wgt/step/filesystem/step_wgt_undo_patch_storage_directories.h" +#include "wgt/step/pkgmgr/step_generate_xml.h" +#include "wgt/step/security/step_check_settings_level.h" +#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" namespace ci = common_installer; @@ -63,85 +111,148 @@ namespace hybrid { HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr) : AppInstaller("wgt", pkgmgr) { + context_->cross_app_rules.set(true); context_->backend_data.set(new HybridBackendData()); switch (pkgmgr_->GetRequestType()) { case ci::RequestType::Install: AddStep(pkgmgr_); AddStep(); - AddStep( - ci::parse::StepParseManifest::ManifestLocation::PACKAGE, - ci::parse::StepParseManifest::StoreLocation::NORMAL); - AddStep(); - AddStep(true); - AddStep(); + AddStep( + ci::configuration::StepParseManifest::ManifestLocation::PACKAGE, + ci::configuration::StepParseManifest::StoreLocation::NORMAL); + AddStep(); + AddStep(); + AddStep( + wgt::configuration::StepParse::ConfigLocation::RESOURCE_WGT, true); + AddStep(); + AddStep(); + AddStep(); AddStep(); - AddStep(); + AddStep(); + AddStep(); + AddStep( + ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH); AddStep(); AddStep(); - AddStep(); + AddStep(); + AddStep(); + AddStep(); AddStep(); + AddStep(); + AddStep(false); AddStep(); + AddStep(); AddStep(); AddStep(); AddStep(); + AddStep(); AddStep(); AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep( + hybrid::configuration::StepMergeTpkConfig::MergeType::CONCAT); AddStep(); AddStep(); - AddStep(); AddStep(); + AddStep( + ci::security::StepRegisterTrustAnchor::RegisterType::INSTALL); + AddStep( + ci::security::StepPrivacyPrivilege::ActionType::Install); AddStep(); + AddStep( + ci::Plugin::ActionType::Install); + AddStep( + wgt::filesystem::HybridAdditionalSharedDirs); + AddStep(); + AddStep(); break; case ci::RequestType::Update: AddStep(pkgmgr_); AddStep(); - AddStep( - ci::parse::StepParseManifest::ManifestLocation::PACKAGE, - ci::parse::StepParseManifest::StoreLocation::NORMAL); - AddStep(); - AddStep(true); - AddStep(); + AddStep( + ci::configuration::StepParseManifest::ManifestLocation::PACKAGE, + ci::configuration::StepParseManifest::StoreLocation::NORMAL); + AddStep(); + AddStep( + wgt::configuration::StepParse::ConfigLocation::RESOURCE_WGT, true); + AddStep(); + AddStep(); AddStep(); - AddStep(); + AddStep(); + AddStep(); + AddStep( + ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH); AddStep(); AddStep(); - AddStep(); - AddStep(); - AddStep( - ci::parse::StepParseManifest::ManifestLocation::INSTALLED, - ci::parse::StepParseManifest::StoreLocation::BACKUP); + AddStep(); + AddStep(); + AddStep(); + AddStep( + ci::configuration::StepParseManifest::ManifestLocation::INSTALLED, + ci::configuration::StepParseManifest::StoreLocation::BACKUP); + AddStep(); AddStep(); AddStep(); AddStep(); + AddStep(); + AddStep(true); AddStep(); + AddStep(); + AddStep(); AddStep(); AddStep(); AddStep(); + AddStep(); AddStep(); AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep( + hybrid::configuration::StepMergeTpkConfig::MergeType::CONCAT); AddStep(); AddStep(); - AddStep(); - AddStep(); AddStep(); + AddStep( + ci::security::StepRegisterTrustAnchor::RegisterType::INSTALL); + AddStep( + ci::security::StepPrivacyPrivilege::ActionType::Update); + AddStep(); + AddStep( + ci::Plugin::ActionType::Upgrade); + AddStep(); + AddStep(); + AddStep(); break; case ci::RequestType::Uninstall: AddStep(pkgmgr_); - // TODO(t.iwanek): this parses both configuration files - // tpk and wgt, removing pkgmgr-parser should change this code - // that it will still support parsing both files - AddStep( - ci::parse::StepParseManifest::ManifestLocation::INSTALLED, - ci::parse::StepParseManifest::StoreLocation::NORMAL); + AddStep(); + AddStep(); + AddStep(); + AddStep( + ci::configuration::StepParseManifest::ManifestLocation::INSTALLED, + ci::configuration::StepParseManifest::StoreLocation::NORMAL); + AddStep( + ci::Plugin::ActionType::Uninstall); AddStep(); + AddStep(); + AddStep(); + AddStep(); AddStep(); - AddStep(); + AddStep(); AddStep(); + AddStep(); AddStep(); - AddStep(); + AddStep(); + AddStep(); + AddStep( + ci::security::StepPrivacyPrivilege::ActionType::Uninstall); AddStep(); - AddStep(); + AddStep(); + AddStep(); break; case ci::RequestType::Reinstall: // RDS is not supported for hybrid apps @@ -150,60 +261,477 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr) case ci::RequestType::Delta: AddStep(pkgmgr_); AddStep(); - AddStep( - ci::parse::StepParseManifest::ManifestLocation::PACKAGE, - ci::parse::StepParseManifest::StoreLocation::NORMAL); - AddStep(); - // TODO(t.iwanek): manifest is parsed twice... - AddStep(false); - AddStep(); + AddStep( + ci::configuration::StepParseManifest::ManifestLocation::PACKAGE, + ci::configuration::StepParseManifest::StoreLocation::NORMAL); + AddStep(); + AddStep(); + AddStep( + ci::configuration::StepParseManifest::ManifestLocation::INSTALLED, + ci::configuration::StepParseManifest::StoreLocation::BACKUP); + AddStep(); AddStep(); - AddStep(true); + AddStep(); + AddStep( + wgt::configuration::StepParse::ConfigLocation::RESOURCE_WGT, true); + AddStep(); + AddStep(); AddStep(); - AddStep(); + AddStep(); + AddStep(); + AddStep( + ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH); AddStep(); AddStep(); - AddStep(); - AddStep(); - AddStep( - ci::parse::StepParseManifest::ManifestLocation::INSTALLED, - ci::parse::StepParseManifest::StoreLocation::BACKUP); + AddStep(); + AddStep(); + AddStep(); + AddStep(); AddStep(); AddStep(); AddStep(); + AddStep(); + AddStep(true); AddStep(); + AddStep(); + AddStep(); AddStep(); AddStep(); AddStep(); + AddStep(); AddStep(); AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep( + hybrid::configuration::StepMergeTpkConfig::MergeType::CONCAT); AddStep(); AddStep(); - AddStep(); - AddStep(); + AddStep( + ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE); + AddStep( + ci::security::StepPrivacyPrivilege::ActionType::Update); AddStep(); + AddStep(); + AddStep( + ci::Plugin::ActionType::Upgrade); + AddStep(); + AddStep(); + AddStep(); break; case ci::RequestType::Recovery: AddStep(pkgmgr_); AddStep(); - AddStep( - ci::parse::StepParseManifest::ManifestLocation::RECOVERY, - ci::parse::StepParseManifest::StoreLocation::NORMAL); - AddStep(); - AddStep(); - AddStep(); - AddStep(); + AddStep( + ci::configuration::StepParseManifest::ManifestLocation::RECOVERY, + ci::configuration::StepParseManifest::StoreLocation::NORMAL); AddStep(); AddStep(); AddStep(); + AddStep(); AddStep(); + AddStep(); AddStep(); + AddStep(); + AddStep(); + AddStep( + ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH); + AddStep(); AddStep(); + AddStep(); + break; + case ci::RequestType::MountInstall: + AddStep(pkgmgr_); + AddStep(); + AddStep( + ci::configuration::StepParseManifest::ManifestLocation::PACKAGE, + ci::configuration::StepParseManifest::StoreLocation::NORMAL); + AddStep(); + AddStep(); + AddStep( + wgt::configuration::StepParse::ConfigLocation::RESOURCE_WGT, true); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep( + ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep( + hybrid::configuration::StepMergeTpkConfig::MergeType::CONCAT); + AddStep(); + AddStep(); + AddStep(); + AddStep( + ci::security::StepRegisterTrustAnchor::RegisterType::INSTALL); + AddStep( + ci::security::StepPrivacyPrivilege::ActionType::Install); + AddStep(); + AddStep( + ci::Plugin::ActionType::Install); + AddStep( + wgt::filesystem::HybridAdditionalSharedDirs); + AddStep(true); + AddStep(); + break; + case ci::RequestType::MountUpdate: + AddStep(pkgmgr_); + AddStep(); + AddStep( + ci::configuration::StepParseManifest::ManifestLocation::PACKAGE, + ci::configuration::StepParseManifest::StoreLocation::NORMAL); + AddStep(); + AddStep( + wgt::configuration::StepParse::ConfigLocation::RESOURCE_WGT, true); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep( + ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep( + ci::configuration::StepParseManifest::ManifestLocation::INSTALLED, + ci::configuration::StepParseManifest::StoreLocation::BACKUP); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep( + hybrid::configuration::StepMergeTpkConfig::MergeType::CONCAT); + AddStep(); + AddStep(); + AddStep(); + AddStep( + ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE); + AddStep( + ci::security::StepPrivacyPrivilege::ActionType::Update); + AddStep(); + AddStep( + ci::Plugin::ActionType::Upgrade); + AddStep(); + AddStep(true); + AddStep(); + break; + case ci::RequestType::ManifestDirectInstall: + AddStep(pkgmgr_); + AddStep( + ci::configuration::StepParseManifest::ManifestLocation::INSTALLED, + ci::configuration::StepParseManifest::StoreLocation::NORMAL); + AddStep(); + AddStep(); + AddStep( + wgt::configuration::StepParse::ConfigLocation::INSTALLED, true); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep( + ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep( + hybrid::configuration::StepMergeTpkConfig::MergeType::OVERWRITE); + AddStep(); + AddStep( + ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE); + AddStep( + ci::security::StepPrivacyPrivilege::ActionType::Install); + AddStep(); + AddStep( + ci::Plugin::ActionType::Install); + AddStep( + wgt::filesystem::HybridAdditionalSharedDirs); + AddStep(); + AddStep(); + break; + case ci::RequestType::ManifestDirectUpdate: + AddStep(pkgmgr_); + AddStep( + ci::configuration::StepParseManifest::ManifestLocation::PACKAGE, + ci::configuration::StepParseManifest::StoreLocation::NORMAL); + AddStep(); + AddStep( + wgt::configuration::StepParse::ConfigLocation::INSTALLED, true); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep( + ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH); + AddStep(); + AddStep(); + AddStep( + ci::configuration::StepParseManifest::ManifestLocation::PACKAGE, + ci::configuration::StepParseManifest::StoreLocation::BACKUP); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep( + hybrid::configuration::StepMergeTpkConfig::MergeType::OVERWRITE); + AddStep(); + AddStep( + ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE); + AddStep( + ci::security::StepPrivacyPrivilege::ActionType::Update); + AddStep(); + AddStep( + ci::Plugin::ActionType::Upgrade); + AddStep(); + AddStep(); + AddStep(); + break; + case ci::RequestType::ManifestPartialInstall: { + AddStep(pkgmgr_); + AddStep( + ci::configuration::StepParseManifest::ManifestLocation::INSTALLED, + ci::configuration::StepParseManifest::StoreLocation::NORMAL); + AddStep(); + AddStep( + wgt::configuration::StepParse::ConfigLocation::INSTALLED, true); + AddStep(); + AddStep( + hybrid::configuration::StepMergeTpkConfig::MergeType::OVERWRITE); + AddStep(); + AddStep(); + AddStep(); + AddStep( + ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH); + AddStep(); + AddStep(); + AddStep( + ci::security::StepRegisterTrustAnchor::RegisterType::INSTALL); + AddStep( + ci::security::StepPrivacyPrivilege::ActionType::Install); + AddStep(); + AddStep( + ci::Plugin::ActionType::Install); + AddStep( + wgt::filesystem::HybridAdditionalSharedDirs); + AddStep(); + break; + } + case ci::RequestType::ManifestPartialUpdate: { + AddStep(pkgmgr_); + AddStep( + ci::configuration::StepParseManifest::ManifestLocation::PACKAGE, + ci::configuration::StepParseManifest::StoreLocation::NORMAL); + AddStep(); + AddStep( + wgt::configuration::StepParse::ConfigLocation::INSTALLED, true); + AddStep(); + AddStep( + hybrid::configuration::StepMergeTpkConfig::MergeType::OVERWRITE); + AddStep(); + AddStep(); + AddStep(); + AddStep( + ci::configuration::StepParseManifest::ManifestLocation::INSTALLED, + ci::configuration::StepParseManifest::StoreLocation::BACKUP); + AddStep( + ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH); + AddStep(); + AddStep(); + AddStep(); + AddStep( + ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE); + AddStep( + ci::security::StepPrivacyPrivilege::ActionType::Update); + AddStep(); + AddStep( + ci::Plugin::ActionType::Upgrade); + AddStep(); + AddStep(); + break; + } + case ci::RequestType::PartialUninstall: { + AddStep(pkgmgr_); + AddStep(); + AddStep(); + AddStep(); + AddStep( + ci::configuration::StepParseManifest::ManifestLocation::INSTALLED, + ci::configuration::StepParseManifest::StoreLocation::NORMAL); + AddStep( + ci::Plugin::ActionType::Uninstall); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep( + ci::security::StepPrivacyPrivilege::ActionType::Uninstall); + AddStep(); + break; + } + case ci::RequestType::ReadonlyUpdateInstall: + AddStep(pkgmgr_); + AddStep(); + AddStep( + ci::configuration::StepParseManifest::ManifestLocation::PACKAGE, + ci::configuration::StepParseManifest::StoreLocation::NORMAL); + AddStep(); + AddStep( + wgt::configuration::StepParse::ConfigLocation::RESOURCE_WGT, true); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep( + ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep( + ci::configuration::StepParseManifest::ManifestLocation::INSTALLED, + ci::configuration::StepParseManifest::StoreLocation::BACKUP); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep( + hybrid::configuration::StepMergeTpkConfig::MergeType::CONCAT); + AddStep(); + AddStep(); + AddStep(); + AddStep( + ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE); + AddStep( + ci::security::StepPrivacyPrivilege::ActionType::Update); + AddStep(); + AddStep( + ci::Plugin::ActionType::Upgrade); + AddStep(); + AddStep(); + AddStep(); + break; + case ci::RequestType::ReadonlyUpdateUninstall: + AddStep(pkgmgr_); + AddStep(); + AddStep(); + AddStep( + ci::configuration::StepParseManifest::ManifestLocation::INSTALLED, + ci::configuration::StepParseManifest::StoreLocation::BACKUP); + AddStep(); + AddStep( + ci::configuration::StepParseManifest::ManifestLocation::INSTALLED, + ci::configuration::StepParseManifest::StoreLocation::NORMAL); + AddStep(); + AddStep(); + AddStep(); + AddStep( + ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep( + ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE); + AddStep( + ci::security::StepPrivacyPrivilege::ActionType::Update); + AddStep(); + AddStep(); + AddStep(ci::Plugin::ActionType::Upgrade); + break; + case ci::RequestType::EnablePkg: + AddStep(pkgmgr_); + AddStep( + ci::configuration::StepParseManifest::ManifestLocation::INSTALLED, + ci::configuration::StepParseManifest::StoreLocation::NORMAL); + AddStep(); + AddStep( + ci::pkgmgr::StepUpdatePkgDisableInfo::ActionType::Enable); + AddStep( + ci::Plugin::ActionType::Uninstall); + break; + case ci::RequestType::DisablePkg: + AddStep(pkgmgr_); + AddStep( + ci::configuration::StepParseManifest::ManifestLocation::INSTALLED, + ci::configuration::StepParseManifest::StoreLocation::NORMAL); + AddStep(); + AddStep( + ci::pkgmgr::StepUpdatePkgDisableInfo::ActionType::Disable); + AddStep( + ci::Plugin::ActionType::Uninstall); break; - case ci::RequestType::Clear: + case ci::RequestType::MigrateExtImg: { AddStep(pkgmgr_); - AddStep(); + AddStep(); + AddStep(); break; + } default: AddStep(); break;