Split MOUNT_FLAG_VISIBLE into MOUNT_FLAG_VISIBLE_FOR_{READ, WRITE}
IVold.MOUNT_FLAG_VISIBLE is split into MOUNT_FLAG_VISIBLE_FOR_READ and MOUNT_FLAG_VISIBLE_FOR_WRITE. Accordingly, VolumeBase::MountFlags::kVisible is split into kVisibleForRead and kVisibleForWrite. Bug: 206019156 Test: m Change-Id: Ia55673400d9f713f221650e1335a46ba11f6f027 Merged-In: Ia55673400d9f713f221650e1335a46ba11f6f027
This commit is contained in:
parent
660f052858
commit
2991cbe49f
5 changed files with 19 additions and 9 deletions
|
@ -1002,8 +1002,8 @@ int VolumeManager::setupAppDir(const std::string& path, int32_t appUid, bool fix
|
||||||
// The volume must be mounted
|
// The volume must be mounted
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if ((vol.getMountFlags() & VolumeBase::MountFlags::kVisible) == 0) {
|
if (!vol.isVisibleForWrite()) {
|
||||||
// and visible
|
// App dirs should only be created for writable volumes.
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (vol.getInternalPath().empty()) {
|
if (vol.getInternalPath().empty()) {
|
||||||
|
@ -1077,8 +1077,8 @@ int VolumeManager::createObb(const std::string& sourcePath, const std::string& s
|
||||||
// The volume must be mounted
|
// The volume must be mounted
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if ((vol.getMountFlags() & VolumeBase::MountFlags::kVisible) == 0) {
|
if (!vol.isVisibleForWrite()) {
|
||||||
// and visible
|
// Obb volume should only be created for writable volumes.
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (vol.getInternalPath().empty()) {
|
if (vol.getInternalPath().empty()) {
|
||||||
|
|
|
@ -159,7 +159,8 @@ interface IVold {
|
||||||
const int FSTRIM_FLAG_DEEP_TRIM = 1;
|
const int FSTRIM_FLAG_DEEP_TRIM = 1;
|
||||||
|
|
||||||
const int MOUNT_FLAG_PRIMARY = 1;
|
const int MOUNT_FLAG_PRIMARY = 1;
|
||||||
const int MOUNT_FLAG_VISIBLE = 2;
|
const int MOUNT_FLAG_VISIBLE_FOR_READ = 2;
|
||||||
|
const int MOUNT_FLAG_VISIBLE_FOR_WRITE = 4;
|
||||||
|
|
||||||
const int PARTITION_TYPE_PUBLIC = 0;
|
const int PARTITION_TYPE_PUBLIC = 0;
|
||||||
const int PARTITION_TYPE_PRIVATE = 1;
|
const int PARTITION_TYPE_PRIVATE = 1;
|
||||||
|
|
|
@ -246,7 +246,7 @@ status_t EmulatedVolume::unmountSdcardFs() {
|
||||||
|
|
||||||
status_t EmulatedVolume::doMount() {
|
status_t EmulatedVolume::doMount() {
|
||||||
std::string label = getLabel();
|
std::string label = getLabel();
|
||||||
bool isVisible = getMountFlags() & MountFlags::kVisible;
|
bool isVisible = isVisibleForWrite();
|
||||||
|
|
||||||
mSdcardFsDefault = StringPrintf("/mnt/runtime/default/%s", label.c_str());
|
mSdcardFsDefault = StringPrintf("/mnt/runtime/default/%s", label.c_str());
|
||||||
mSdcardFsRead = StringPrintf("/mnt/runtime/read/%s", label.c_str());
|
mSdcardFsRead = StringPrintf("/mnt/runtime/read/%s", label.c_str());
|
||||||
|
|
|
@ -97,7 +97,7 @@ status_t PublicVolume::doDestroy() {
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t PublicVolume::doMount() {
|
status_t PublicVolume::doMount() {
|
||||||
bool isVisible = getMountFlags() & MountFlags::kVisible;
|
bool isVisible = isVisibleForWrite();
|
||||||
readMetadata();
|
readMetadata();
|
||||||
|
|
||||||
if (mFsType == "vfat" && vfat::IsSupported()) {
|
if (mFsType == "vfat" && vfat::IsSupported()) {
|
||||||
|
|
|
@ -63,8 +63,14 @@ class VolumeBase {
|
||||||
enum MountFlags {
|
enum MountFlags {
|
||||||
/* Flag that volume is primary external storage */
|
/* Flag that volume is primary external storage */
|
||||||
kPrimary = 1 << 0,
|
kPrimary = 1 << 0,
|
||||||
/* Flag that volume is visible to normal apps */
|
/*
|
||||||
kVisible = 1 << 1,
|
* Flags indicating that volume is visible to normal apps.
|
||||||
|
* kVisibleForRead and kVisibleForWrite correspond to
|
||||||
|
* VolumeInfo.MOUNT_FLAG_VISIBLE_FOR_READ and
|
||||||
|
* VolumeInfo.MOUNT_FLAG_VISIBLE_FOR_WRITE, respectively.
|
||||||
|
*/
|
||||||
|
kVisibleForRead = 1 << 1,
|
||||||
|
kVisibleForWrite = 1 << 2,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class State {
|
enum class State {
|
||||||
|
@ -103,6 +109,9 @@ class VolumeBase {
|
||||||
std::shared_ptr<VolumeBase> findVolume(const std::string& id);
|
std::shared_ptr<VolumeBase> findVolume(const std::string& id);
|
||||||
|
|
||||||
bool isEmulated() { return mType == Type::kEmulated; }
|
bool isEmulated() { return mType == Type::kEmulated; }
|
||||||
|
bool isVisibleForRead() const { return (mMountFlags & MountFlags::kVisibleForRead) != 0; }
|
||||||
|
bool isVisibleForWrite() const { return (mMountFlags & MountFlags::kVisibleForWrite) != 0; }
|
||||||
|
bool isVisible() const { return isVisibleForRead() || isVisibleForWrite(); }
|
||||||
|
|
||||||
status_t create();
|
status_t create();
|
||||||
status_t destroy();
|
status_t destroy();
|
||||||
|
|
Loading…
Reference in a new issue