2a2242f601201353e252f2c6699f2ef6fa713a0c
[platform/core/appfw/app-installers.git] / src / common / step / mount / step_mount_install.h
1 // Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
2 // Use of this source code is governed by an apache-2.0 license that can be
3 // found in the LICENSE file.
4
5 #ifndef COMMON_STEP_MOUNT_STEP_MOUNT_INSTALL_H_
6 #define COMMON_STEP_MOUNT_STEP_MOUNT_INSTALL_H_
7
8 #include <manifest_parser/utils/logging.h>
9
10 #include "common/installer_context.h"
11 #include "common/mount_base.h"
12 #include "common/step/step.h"
13
14 namespace common_installer {
15 namespace mount {
16
17 /**
18  * \brief Responsible for mounting package zip in package installation directory
19  *        in process of new installation request.
20  *
21  * Mounts package zip in installation location to enable step to access package
22  * content for security applying and others. This step copies package zip into
23  * $HOME/$PKGID/.image. This location will be used in runtime to mount package
24  * when applcation from package is about being started.
25  *
26  * Resources to following directory:
27  * * TZ_SYS_RW/$PKGID (/usr/apps/$PKGID)
28  * * TZ_SER_APPS/$PKGID  (/{HOME}/apps_rw/$PKGID)
29  */
30 class StepMountInstall : public MountBase, public Step {
31  public:
32   using Step::Step;
33   using MountBase::MountBase;
34
35   Status process() override;
36   Status clean() override { return Status::OK; }
37   Status undo() override;
38   Status precheck() override;
39
40  protected:
41   std::unique_ptr<IZipInterface> CreateZipInterface(
42       const boost::filesystem::path& mount_path) override;
43   Status UmountPackagePath();
44
45   STEP_NAME(MountInstall);
46 };
47
48 }  // namespace mount
49 }  // namespace common_installer
50
51 #endif  // COMMON_STEP_MOUNT_STEP_MOUNT_INSTALL_H_