[Refactor] AppInstaller logic export 00/94000/5
authorPiotr Ganicz <p.ganicz@samsung.com>
Fri, 21 Oct 2016 14:30:51 +0000 (16:30 +0200)
committerjaekuk lee <juku1999@samsung.com>
Fri, 3 Mar 2017 01:17:22 +0000 (17:17 -0800)
This commit gather the logic of choosing proper steps sequence
to app-installer repository. All backends have to prepare their
own sequences for each pkgmgr request. The default implementation
of such methods is provided and there is no need for overriding
each function in backends.

    Submit together:
     - https://review.tizen.org/gerrit/#/c/93999/
     - https://review.tizen.org/gerrit/#/c/93998/

Change-Id: I1f049c28908408a20db057bd36e246ba789c999b

src/hybrid/hybrid_installer.cc
src/hybrid/hybrid_installer.h
src/wgt/wgt_installer.cc
src/wgt/wgt_installer.h

index 4e36b4b164ebdecf3fcd3e9d59af34e0fc627768..14521abc3da1472ed11a66afe8f9fe8a207953ed 100644 (file)
@@ -103,9 +103,9 @@ 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:
+void HybridInstaller::InstallSteps() {
       AddStep<ci::configuration::StepConfigure>(pkgmgr_);
       AddStep<ci::filesystem::StepUnzip>();
       AddStep<ci::configuration::StepParseManifest>(
@@ -152,8 +152,9 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr)
           wgt::filesystem::HybridAdditionalSharedDirs);
       AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
       AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
-      break;
-    case ci::RequestType::Update:
+}
+
+void HybridInstaller::UpdateSteps() {
       AddStep<ci::configuration::StepConfigure>(pkgmgr_);
       AddStep<ci::filesystem::StepUnzip>();
       AddStep<ci::configuration::StepParseManifest>(
@@ -202,8 +203,9 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr)
           ci::Plugin::ActionType::Upgrade);
       AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
       AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
-      break;
-    case ci::RequestType::Uninstall:
+}
+
+void HybridInstaller::UninstallSteps() {
       AddStep<ci::configuration::StepConfigure>(pkgmgr_);
       AddStep<ci::pkgmgr::StepCheckRestriction>();
       AddStep<ci::pkgmgr::StepCheckRemovable>();
@@ -227,12 +229,14 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr)
       AddStep<ci::security::StepRevokeSecurity>();
       AddStep<ci::pkgmgr::StepRemoveManifest>();
       AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
-      break;
-    case ci::RequestType::Reinstall:
+}
+
+void HybridInstaller::ReinstallSteps() {
       // RDS is not supported for hybrid apps
       AddStep<ci::configuration::StepFail>();
-      break;
-    case ci::RequestType::Delta:
+}
+
+void HybridInstaller::DeltaSteps() {
       AddStep<ci::configuration::StepConfigure>(pkgmgr_);
       AddStep<ci::filesystem::StepUnzip>();
       AddStep<ci::configuration::StepParseManifest>(
@@ -284,8 +288,9 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr)
           ci::Plugin::ActionType::Upgrade);
       AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
       AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
-      break;
-    case ci::RequestType::Recovery:
+}
+
+void HybridInstaller::RecoverySteps() {
       AddStep<ci::configuration::StepConfigure>(pkgmgr_);
       AddStep<ci::recovery::StepOpenRecoveryFile>();
       AddStep<ci::configuration::StepParseManifest>(
@@ -302,8 +307,9 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr)
       AddStep<ci::pkgmgr::StepRecoverApplication>();
       AddStep<ci::filesystem::StepRecoverChangeOwner>();
       AddStep<ci::security::StepRecoverSecurity>();
-      break;
-    case ci::RequestType::MountInstall:
+}
+
+void HybridInstaller::MountInstallSteps() {
       AddStep<ci::configuration::StepConfigure>(pkgmgr_);
       AddStep<ci::mount::StepMountUnpacked>();
       AddStep<ci::configuration::StepParseManifest>(
@@ -350,8 +356,9 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr)
           wgt::filesystem::HybridAdditionalSharedDirs);
       AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
       AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
-      break;
-    case ci::RequestType::MountUpdate:
+}
+
+void HybridInstaller::MountUpdateSteps() {
       AddStep<ci::configuration::StepConfigure>(pkgmgr_);
       AddStep<ci::mount::StepMountUnpacked>();
       AddStep<ci::configuration::StepParseManifest>(
@@ -399,8 +406,9 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr)
           ci::Plugin::ActionType::Upgrade);
       AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
       AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
-      break;
-    case ci::RequestType::ManifestDirectInstall:
+}
+
+void HybridInstaller::ManifestDirectInstallSteps() {
       AddStep<ci::configuration::StepConfigure>(pkgmgr_);
       AddStep<ci::configuration::StepParseManifest>(
           ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
@@ -431,8 +439,9 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr)
           wgt::filesystem::HybridAdditionalSharedDirs);
       AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
       AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
-      break;
-    case ci::RequestType::ManifestDirectUpdate:
+}
+
+void HybridInstaller::ManifestDirectUpdateSteps() {
       AddStep<ci::configuration::StepConfigure>(pkgmgr_);
       AddStep<ci::configuration::StepParseManifest>(
           ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
@@ -463,8 +472,9 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr)
           ci::Plugin::ActionType::Upgrade);
       AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
       AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
-      break;
-    case ci::RequestType::ManifestPartialInstall: {
+}
+
+void HybridInstaller::ManifestPartialInstallSteps() {
       AddStep<ci::configuration::StepConfigure>(pkgmgr_);
       AddStep<ci::configuration::StepParseManifest>(
           ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
@@ -483,9 +493,9 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr)
       AddStep<ci::filesystem::StepCreatePerUserStorageDirectories>(
           wgt::filesystem::HybridAdditionalSharedDirs);
       AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
-      break;
-    }
-    case ci::RequestType::ManifestPartialUpdate: {
+}
+
+void HybridInstaller::ManifestPartialUpdateSteps() {
       AddStep<ci::configuration::StepConfigure>(pkgmgr_);
       AddStep<ci::configuration::StepParseManifest>(
           ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
@@ -506,9 +516,9 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr)
       AddStep<ci::pkgmgr::StepRunParserPlugin>(
           ci::Plugin::ActionType::Upgrade);
       AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
-      break;
-    }
-    case ci::RequestType::PartialUninstall: {
+}
+
+void HybridInstaller::PartialUninstallSteps() {
       AddStep<ci::configuration::StepConfigure>(pkgmgr_);
       AddStep<ci::pkgmgr::StepCheckRestriction>();
       AddStep<ci::pkgmgr::StepCheckRemovable>();
@@ -524,9 +534,9 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr)
       AddStep<ci::pkgmgr::StepUnregisterApplication>();
       AddStep<wgt::encryption::StepRemoveEncryptionData>();
       AddStep<ci::security::StepRevokeSecurity>();
-      break;
-    }
-    case ci::RequestType::EnablePkg:
+}
+
+void HybridInstaller::EnablePkgSteps() {
       AddStep<ci::configuration::StepConfigure>(pkgmgr_);
       AddStep<ci::configuration::StepParseManifest>(
           ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
@@ -536,8 +546,9 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr)
         ci::pkgmgr::StepUpdatePkgDisableInfo::ActionType::Enable);
       AddStep<ci::pkgmgr::StepRunParserPlugin>(
         ci::Plugin::ActionType::Uninstall);
-      break;
-    case ci::RequestType::DisablePkg:
+}
+
+void HybridInstaller::DisablePkgSteps() {
       AddStep<ci::configuration::StepConfigure>(pkgmgr_);
       AddStep<ci::configuration::StepParseManifest>(
           ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
@@ -547,17 +558,12 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr)
         ci::pkgmgr::StepUpdatePkgDisableInfo::ActionType::Disable);
       AddStep<ci::pkgmgr::StepRunParserPlugin>(
         ci::Plugin::ActionType::Uninstall);
-      break;
-    case ci::RequestType::MigrateExtImg: {
+}
+
+void HybridInstaller::MigrateExtImgSteps() {
       AddStep<ci::configuration::StepConfigure>(pkgmgr_);
       AddStep<ci::security::StepMigrateLegacyExtImage>();
       AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
-      break;
-    }
-    default:
-      AddStep<ci::configuration::StepFail>();
-      break;
-  }
 }
 
 }  // namespace hybrid
index 9824d21f6be6efaf9696566f999a78e1afad82ba..8331393d6af124a9db73f18f4735e28ff3b34536 100644 (file)
@@ -8,6 +8,8 @@
 #include "common/app_installer.h"
 #include "common/pkgmgr_interface.h"
 
+namespace ci = common_installer;
+
 namespace hybrid {
 
 /**
@@ -24,6 +26,24 @@ class HybridInstaller : public common_installer::AppInstaller {
   explicit HybridInstaller(common_installer::PkgMgrPtr pkgmgr);
 
   SCOPE_LOG_TAG(HybridInstaller)
+
+ private:
+  void InstallSteps() override;
+  void UpdateSteps() override;
+  void UninstallSteps() override;
+  void ReinstallSteps() override;
+  void DeltaSteps() override;
+  void RecoverySteps() override;
+  void MountInstallSteps() override;
+  void MountUpdateSteps() override;
+  void ManifestDirectInstallSteps() override;
+  void ManifestDirectUpdateSteps() override;
+  void DisablePkgSteps() override;
+  void EnablePkgSteps() override;
+  void ManifestPartialInstallSteps() override;
+  void ManifestPartialUpdateSteps() override;
+  void PartialUninstallSteps() override;
+  void MigrateExtImgSteps() override;
 };
 
 }  // namespace hybrid
index ffa669fe5543a2fa2c8c3afec60ae451cf212fd9..e3d32ed7513ad5eb202fefef5c66e545cb429eb8 100755 (executable)
@@ -110,89 +110,6 @@ namespace wgt {
 WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr)
     : AppInstaller("wgt", pkgrmgr) {
   context_->backend_data.set(new WgtBackendData());
-
-  /* treat the request */
-  switch (pkgmgr_->GetRequestType()) {
-    case ci::RequestType::Install : {
-      InstallSteps();
-      break;
-    }
-    case ci::RequestType::Update: {
-      UpdateSteps();
-      break;
-    }
-    case ci::RequestType::Uninstall: {
-      UninstallSteps();
-      break;
-    }
-    case ci::RequestType::Reinstall: {
-      ReinstallSteps();
-      break;
-    }
-    case ci::RequestType::Delta: {
-      DeltaSteps();
-      break;
-    }
-    case ci::RequestType::Recovery: {
-      RecoverySteps();
-      break;
-    }
-    case ci::RequestType::MountInstall: {
-      MountInstallSteps();
-      break;
-    }
-    case ci::RequestType::MountUpdate: {
-      MountUpdateSteps();
-      break;
-    }
-    case ci::RequestType::ManifestDirectInstall: {
-      ManifestDirectInstallSteps();
-      break;
-    }
-    case ci::RequestType::ManifestDirectUpdate: {
-      ManifestDirectUpdateSteps();
-      break;
-    }
-    case ci::RequestType::ReadonlyUpdateInstall: {
-      ReadonlyUpdateInstallSteps();
-      break;
-    }
-    case ci::RequestType::ReadonlyUpdateUninstall: {
-      ReadonlyUpdateUninstallSteps();
-      break;
-    }
-    case ci::RequestType::ManifestPartialInstall: {
-      ManifestPartialInstallSteps();
-      break;
-    }
-    case ci::RequestType::ManifestPartialUpdate: {
-      ManifestPartialUpdateSteps();
-      break;
-    }
-    case ci::RequestType::PartialUninstall: {
-      ManifestPartialUninstallSteps();
-      break;
-    }
-    case ci::RequestType::Move: {
-      MoveSteps();
-      break;
-    }
-    case ci::RequestType::EnablePkg: {
-      EnablePkgSteps();
-      break;
-    }
-    case ci::RequestType::DisablePkg: {
-      DisablePkgSteps();
-      break;
-    }
-    case ci::RequestType::MigrateExtImg: {
-      MigrateExtImgSteps();
-      break;
-    }
-    default: {
-      DefaultSteps();
-    }
-  }
 }
   void WgtInstaller::InstallSteps() {
       AddStep<ci::configuration::StepConfigure>(pkgmgr_);
@@ -638,7 +555,7 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr)
       AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
   }
 
-  void WgtInstaller::ManifestPartialUninstallSteps() {
+  void WgtInstaller::PartialUninstallSteps() {
       AddStep<ci::configuration::StepConfigure>(pkgmgr_);
       AddStep<ci::pkgmgr::StepCheckRestriction>();
       AddStep<ci::pkgmgr::StepCheckRemovable>();
@@ -696,8 +613,4 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr)
       AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
   }
 
-  void WgtInstaller::DefaultSteps() {
-      AddStep<ci::configuration::StepFail>();
-  }
-
 }  // namespace wgt
index 0c3a5e9f0d1d2404a7a1614fec8c2adc6a36d679..c25c2e1cf34389016bcba837f9f72d521227fc4d 100644 (file)
@@ -26,26 +26,25 @@ class WgtInstaller : public common_installer::AppInstaller {
   explicit WgtInstaller(common_installer::PkgMgrPtr pkgrmgr);
 
  private:
-  void InstallSteps();
-  void UpdateSteps();
-  void UninstallSteps();
-  void ReinstallSteps();
-  void DeltaSteps();
-  void RecoverySteps();
-  void MountInstallSteps();
-  void MountUpdateSteps();
-  void ManifestDirectInstallSteps();
-  void ManifestDirectUpdateSteps();
-  void ReadonlyUpdateInstallSteps();
-  void ReadonlyUpdateUninstallSteps();
-  void ManifestPartialInstallSteps();
-  void ManifestPartialUpdateSteps();
-  void ManifestPartialUninstallSteps();
-  void MoveSteps();
-  void EnablePkgSteps();
-  void DisablePkgSteps();
-  void MigrateExtImgSteps();
-  void DefaultSteps();
+  void InstallSteps() override;
+  void UpdateSteps() override;
+  void UninstallSteps() override;
+  void ReinstallSteps() override;
+  void DeltaSteps() override;
+  void MoveSteps() override;
+  void RecoverySteps() override;
+  void MountInstallSteps() override;
+  void MountUpdateSteps() override;
+  void ManifestDirectInstallSteps() override;
+  void ManifestDirectUpdateSteps() override;
+  void ManifestPartialInstallSteps() override;
+  void ManifestPartialUpdateSteps() override;
+  void PartialUninstallSteps() override;
+  void ReadonlyUpdateInstallSteps() override;
+  void ReadonlyUpdateUninstallSteps() override;
+  void DisablePkgSteps() override;
+  void EnablePkgSteps() override;
+  void MigrateExtImgSteps() override;
 };
 
 }  // namespace wgt