#include "common/step/filesystem/step_remove_per_user_storage_directories.h"
+#include <memory>
#include <string>
#include <vector>
+#include "common/step/step.h"
+#include "common/step/filesystem/step_create_storage_directories.h"
+#include "common/step/filesystem/step_create_globalapp_symlinks.h"
#include "common/installer_context.h"
#include "common/shared_dirs.h"
+#include "common/utils/pkgmgr_query.h"
namespace common_installer {
namespace filesystem {
return Step::Status::OK;
}
+Step::Status StepRemovePerUserStorageDirectories::undo() {
+ std::string author_id =
+ QueryCertificateAuthorCertificate(
+ context_->pkgid.get(), context_->uid.get());
+ context_->certificate_info.get().author_id.set(author_id);
+ std::vector<std::unique_ptr<Step>> steps;
+ steps.emplace_back(new StepCreateStorageDirectories(context_));
+ steps.emplace_back(new StepCreateGlobalAppSymlinks(context_));
+
+ for (auto& it : steps) {
+ Step::Status result;
+ result = it->precheck();
+ if (result != Step::Status::OK) {
+ LOG(ERROR) << "Fail to execute precheck of " << it->name();
+ return result;
+ }
+
+ result = it->process();
+ if (result != Step::Status::OK) {
+ LOG(ERROR) << "Fail to execute process of " << it->name();
+ return result;
+ }
+ }
+ return Step::Status::OK;
+}
+
} // namespace filesystem
} // namespace common_installer