Fix RecoverStorageDirectories
[platform/core/appfw/app-installers.git] / src / common / installer / app_installer.cc
index 0f767c3..27de74d 100644 (file)
@@ -124,7 +124,7 @@ AppInstaller::AppInstaller(const char* package_type, PkgMgrPtr pkgmgr)
   // pkgmgr signal should work only for online mode
   // there is no one to receive it in offline mode
   if (context_->installation_mode.get() == InstallationMode::ONLINE) {
-    pi_ = pkgmgr->CreatePkgmgrSignal();
+    ps_ = pkgmgr->CreatePkgmgrSignal();
   }
 }
 
@@ -207,10 +207,8 @@ AppInstaller::Result AppInstaller::Run() {
   Process();
   if (it_ != steps_.end() && result_ == Result::ERROR) {
     LOG(ERROR) << "Failure occurs in step: " << (*it_)->name();
-    pkgmgr_parser_clear_cache_memory_db();
     Undo();
   } else {
-    pkgmgr_parser_clear_cache_memory_db();
     Clean();
   }
   sync();
@@ -514,7 +512,6 @@ void AppInstaller::RecoverySteps() {
   AddStep<ci::pkgmgr::StepRecoverParserPlugin>();
   AddStep<ci::filesystem::StepRecoverManifest>();
   AddStep<ci::filesystem::StepRecoverExternalStorage>();
-  AddStep<ci::filesystem::StepRecoverStorageDirectories>();
   AddStep<ci::filesystem::StepRecoverGlobalAppSymlinks>();
   AddStep<ci::filesystem::StepRecoverFiles>();
   AddStep<ci::pkgmgr::StepRecoverPrivSharedres>();
@@ -523,6 +520,7 @@ void AppInstaller::RecoverySteps() {
   AddStep<ci::pkgmgr::StepRecoverApplication>();
   AddStep<ci::security::StepRecoverTrustAnchor>();
   AddStep<ci::security::StepRecoverSecurity>();
+  AddStep<ci::filesystem::StepRecoverStorageDirectories>();
 }
 
 void AppInstaller::MountInstallSteps() {
@@ -745,6 +743,7 @@ void AppInstaller::ReadonlyUpdateInstallSteps() {
 
 void AppInstaller::ReadonlyUpdateUninstallSteps() {
   AddStep<ci::configuration::StepConfigure>(pkgmgr_);
+  AddStep<ci::recovery::StepCreateRecoveryFile>();
   AddStep<ci::configuration::StepParseManifest>(
       ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
       ci::configuration::StepParseManifest::StoreLocation::BACKUP);
@@ -825,10 +824,10 @@ void AppInstaller::UnknownSteps() {
 
 void AppInstaller::HandleStepError(Step::Status result,
                                    const std::string& error) {
-  if (!pi_)
+  if (!ps_)
     return;
 
-  pi_->SendError(result, error, context_->pkg_type.get(),
+  ps_->SendError(result, error, context_->pkg_type.get(),
                  context_->pkgid.get());
 }
 
@@ -845,18 +844,18 @@ std::string AppInstaller::GetPackageVersion() {
 }
 
 bool AppInstaller::SendStartIfNotSent(bool is_skippable) {
-  if (!pi_)
+  if (!ps_)
     return false;
 
-  if (pi_->state() != PkgmgrSignal::State::NOT_SENT)
+  if (ps_->state() != PkgmgrSignal::State::NOT_SENT)
     return true;
 
   if (context_->pkgid.get().empty() && is_skippable)
     return true;
 
   // set request type before sending start signal
-  pi_->SetRequestType(context_->request_type.get());
-  pi_->SendStarted(context_->pkg_type.get(), context_->pkgid.get());
+  ps_->SetRequestType(context_->request_type.get());
+  ps_->SendStarted(context_->pkg_type.get(), context_->pkgid.get());
 
   return true;
 }
@@ -867,15 +866,17 @@ void AppInstaller::SendProgress(int progress) {
     return;
 
   // send installation progress
-  pi_->SendProgress(progress,
+  ps_->SendProgress(progress,
       context_->pkg_type.get(), context_->pkgid.get());
 }
 
 void AppInstaller::SendFinished(Step::Status process_status) {
+  pkgmgr_parser_clear_cache_memory_db();
+
   if (!SendStartIfNotSent(false))
     return;
 
-  pi_->SendFinished(process_status,
+  ps_->SendFinished(process_status,
                     context_->pkg_type.get(),
                     context_->pkgid.get());
 }