Remove boost dependency
[platform/core/appfw/app-installers.git] / src / common / external_mount.cc
index 8762629..332b514 100644 (file)
@@ -7,8 +7,17 @@
 #include <app2ext_interface.h>
 #include <manifest_parser/utils/logging.h>
 
+#include <filesystem>
+
+#include "common/utils/pkgmgr_query.h"
+#include "common/utils/paths.h"
+
+namespace fs = std::filesystem;
+
 namespace common_installer {
 
+const char kInstalledExternally[] = "installed_external";
+
 ExternalMount::ExternalMount(const std::string& pkgid, uid_t uid)
     : pkgid_(pkgid),
       uid_(uid),
@@ -17,25 +26,31 @@ ExternalMount::ExternalMount(const std::string& pkgid, uid_t uid)
 
 ExternalMount::~ExternalMount() {
   if (mounted_) {
-    int ret = app2ext_usr_disable_external_pkg(pkgid_.c_str(), uid_);
-    if (ret < 0) {
-      LOG(ERROR) << "app2ext_usr_disable_external_pkg failed with error code: "
-                 << ret;
+    if (service.DisableExternalPkgForUsr(pkgid_.c_str(), uid_)) {
+      LOG(ERROR) << "app2ext_usr_disable_external_pkg failed";
     }
   }
 }
 
 bool ExternalMount::IsAvailable() const {
-  return app2ext_usr_get_app_location(pkgid_.c_str(), uid_) == APP2EXT_SD_CARD;
+  fs::path storage_path = GetExternalCardPath();
+  if (!fs::exists(storage_path)) {
+    LOG(WARNING) << "External storage (SD Card) is not mounted.";
+    return false;
+  }
+  PkgQueryInterface pkg_query(pkgid_, uid_);
+  std::string storage = pkg_query.StorageForPkgId();
+  if (storage != kInstalledExternally)
+    return false;
+
+  return true;
 }
 
 bool ExternalMount::Mount() {
   if (mounted_)
     return true;
-  int ret = app2ext_usr_enable_external_pkg(pkgid_.c_str(), uid_);
-  if (ret < 0) {
-    LOG(ERROR) << "app2ext_usr_enable_external_pkg failed with error code: "
-               << ret;
+  if (service.EnableExternalPkgForUsr(pkgid_.c_str(), uid_)) {
+    LOG(ERROR) << "app2ext_usr_enable_external_pkg failed";
     return false;
   }
   mounted_ = true;
@@ -45,10 +60,8 @@ bool ExternalMount::Mount() {
 bool ExternalMount::Umount() {
   if (!mounted_)
     return true;
-  int ret = app2ext_usr_disable_external_pkg(pkgid_.c_str(), uid_);
-  if (ret < 0) {
-    LOG(ERROR) << "app2ext_usr_disable_external_pkg failed with error code: "
-               << ret;
+  if (service.DisableExternalPkgForUsr(pkgid_.c_str(), uid_)) {
+    LOG(ERROR) << "app2ext_usr_disable_external_pkg failed";
     return false;
   }
   mounted_ = false;