#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),
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;
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;