From: Ilho Kim Date: Tue, 13 Sep 2022 12:51:59 +0000 (+0900) Subject: Implement recovery of ReadonlyUpdateUninstall X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fheads%2Ftizen_5.0;p=platform%2Fcore%2Fappfw%2Fapp-installers.git Implement recovery of ReadonlyUpdateUninstall Change-Id: Ibf742a8003f5d0148d98845360b15e84c0fcd1f7 Signed-off-by: Ilho Kim (cherry picked from commit 68f6baaeec21416aeecbbbbb0fc2b4c8695cc975) --- diff --git a/src/common/recovery_file.cc b/src/common/recovery_file.cc index c923b462..aca033ff 100644 --- a/src/common/recovery_file.cc +++ b/src/common/recovery_file.cc @@ -31,6 +31,7 @@ const char kRecoveryDeltaString[] = "DELTA"; const char kRecoveryMountInstallString[] = "MOUNTINSTALL"; const char kRecoveryMountUpdateString[] = "MOUNTUPDATE"; const char kRecoveryReadonlyUpdateInstallString[] = "READONLYUPDATEINSTALL"; +const char kRecoveryReadonlyUpdateUninstallString[] = "READONLYUPDATEUNINSTALL"; const char kRecoveryUnknownString[] = "UNKNOWN"; const std::map kStringToRequestMap = { @@ -43,6 +44,8 @@ const std::map kStringToRequestMap = { {kRecoveryMountUpdateString, ci::RequestType::MountUpdate}, {kRecoveryReadonlyUpdateInstallString, ci::RequestType::ReadonlyUpdateInstall}, + {kRecoveryReadonlyUpdateUninstallString, + ci::RequestType::ReadonlyUpdateUninstall}, }; std::string TruncateNewLine(const char* data) { @@ -222,6 +225,9 @@ bool RecoveryFile::WriteAndCommitFileContent() { case RequestType::ReadonlyUpdateInstall: fputs(kRecoveryReadonlyUpdateInstallString, handle); break; + case RequestType::ReadonlyUpdateUninstall: + fputs(kRecoveryReadonlyUpdateUninstallString, handle); + break; default: fputs(kRecoveryUnknownString, handle); break; diff --git a/src/common/step/pkgmgr/step_recover_parser_plugins.cc b/src/common/step/pkgmgr/step_recover_parser_plugins.cc index 5cbd53f3..9bb62a32 100644 --- a/src/common/step/pkgmgr/step_recover_parser_plugins.cc +++ b/src/common/step/pkgmgr/step_recover_parser_plugins.cc @@ -26,6 +26,7 @@ ci::Plugin::ActionType GetActionType(ci::InstallerContext* context) { case ci::RequestType::Delta: case ci::RequestType::MountUpdate: case ci::RequestType::ReadonlyUpdateInstall: + case ci::RequestType::ReadonlyUpdateUninstall: return ci::Plugin::ActionType::RecoverUpgrade; default: LOG(ERROR) << "Invalid request type : " << static_cast(type); diff --git a/src/common/step/recovery/step_open_recovery_file.cc b/src/common/step/recovery/step_open_recovery_file.cc index 4f36c7de..e54cc1fc 100644 --- a/src/common/step/recovery/step_open_recovery_file.cc +++ b/src/common/step/recovery/step_open_recovery_file.cc @@ -51,6 +51,13 @@ Step::Status StepOpenRecoveryFile::process() { context_->root_application_path.set( GetRootAppPath(true, context_->uid.get())); break; + case RequestType::ReadonlyUpdateUninstall: + LOG(INFO) << "Running recovery for readonly update uninstallation"; + context_->request_type.set(RequestType::RecoveryUpdate); + context_->is_readonly_package.set(true); + context_->root_application_path.set( + GetRootAppPath(true, context_->uid.get())); + break; default: LOG(ERROR) << context_->file_path.get() << " is unknown recovery type (" << static_cast(recovery_file->type()) << ")"; diff --git a/src/common/step/recovery/step_recovery.cc b/src/common/step/recovery/step_recovery.cc index 41b14005..f0b77d61 100644 --- a/src/common/step/recovery/step_recovery.cc +++ b/src/common/step/recovery/step_recovery.cc @@ -25,6 +25,8 @@ Step::Status StepRecovery::process() { return RecoveryMountUpdate(); case RequestType::ReadonlyUpdateInstall: return RecoveryReadonlyUpdateInstall(); + case RequestType::ReadonlyUpdateUninstall: + return RecoveryReadonlyUpdateUninstall(); default: LOG(ERROR) << "Recovery is not supported for given type of installation"; return Status::RECOVERY_ERROR; @@ -47,5 +49,9 @@ Step::Status StepRecovery::RecoveryReadonlyUpdateInstall() { return RecoveryUpdate(); } +Step::Status StepRecovery::RecoveryReadonlyUpdateUninstall() { + return RecoveryReadonlyUpdateInstall(); +} + } // namespace recovery } // namespace common_installer diff --git a/src/common/step/recovery/step_recovery.h b/src/common/step/recovery/step_recovery.h index f4653d3f..baede36c 100644 --- a/src/common/step/recovery/step_recovery.h +++ b/src/common/step/recovery/step_recovery.h @@ -38,6 +38,7 @@ class StepRecovery : public Step { virtual Status RecoveryMountNew(); virtual Status RecoveryMountUpdate(); virtual Status RecoveryReadonlyUpdateInstall(); + virtual Status RecoveryReadonlyUpdateUninstall(); }; } // namespace recovery