[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 4e36b4b..14521ab 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 9824d21..8331393 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 ffa669f..e3d32ed 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 0c3a5e9..c25c2e1 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