Merge "MTP: Have GetStorageInfo command return correct storage type for removable storage" into honeycomb-mr2
This commit is contained in:
committed by
Android (Google) Code Review
commit
15afd076d6
@@ -29,12 +29,15 @@ public class MtpStorage {
|
||||
private final String mPath;
|
||||
private final String mDescription;
|
||||
private final long mReserveSpace;
|
||||
private final boolean mRemovable;
|
||||
|
||||
public MtpStorage(int id, String path, String description, long reserveSpace) {
|
||||
public MtpStorage(int id, String path, String description,
|
||||
long reserveSpace, boolean removable) {
|
||||
mStorageId = id;
|
||||
mPath = path;
|
||||
mDescription = description;
|
||||
mReserveSpace = reserveSpace;
|
||||
mRemovable = removable;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -86,4 +89,12 @@ public class MtpStorage {
|
||||
return mReserveSpace;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the storage is removable.
|
||||
*
|
||||
* @return is removable
|
||||
*/
|
||||
public final boolean isRemovable() {
|
||||
return mRemovable;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,6 +47,7 @@ static jfieldID field_MtpStorage_storageId;
|
||||
static jfieldID field_MtpStorage_path;
|
||||
static jfieldID field_MtpStorage_description;
|
||||
static jfieldID field_MtpStorage_reserveSpace;
|
||||
static jfieldID field_MtpStorage_removable;
|
||||
|
||||
static Mutex sMutex;
|
||||
|
||||
@@ -245,11 +246,13 @@ android_mtp_MtpServer_add_storage(JNIEnv *env, jobject thiz, jobject jstorage)
|
||||
jstring path = (jstring)env->GetObjectField(jstorage, field_MtpStorage_path);
|
||||
jstring description = (jstring)env->GetObjectField(jstorage, field_MtpStorage_description);
|
||||
jlong reserveSpace = env->GetLongField(jstorage, field_MtpStorage_reserveSpace);
|
||||
jboolean removable = env->GetBooleanField(jstorage, field_MtpStorage_removable);
|
||||
|
||||
const char *pathStr = env->GetStringUTFChars(path, NULL);
|
||||
const char *descriptionStr = env->GetStringUTFChars(description, NULL);
|
||||
|
||||
MtpStorage* storage = new MtpStorage(storageID, pathStr, descriptionStr, reserveSpace);
|
||||
MtpStorage* storage = new MtpStorage(storageID, pathStr, descriptionStr,
|
||||
reserveSpace, removable);
|
||||
thread->addStorage(storage);
|
||||
|
||||
env->ReleaseStringUTFChars(path, pathStr);
|
||||
@@ -318,7 +321,12 @@ int register_android_mtp_MtpServer(JNIEnv *env)
|
||||
}
|
||||
field_MtpStorage_reserveSpace = env->GetFieldID(clazz, "mReserveSpace", "J");
|
||||
if (field_MtpStorage_reserveSpace == NULL) {
|
||||
LOGE("Can't find MtpStorage.mStorageId");
|
||||
LOGE("Can't find MtpStorage.mReserveSpace");
|
||||
return -1;
|
||||
}
|
||||
field_MtpStorage_removable = env->GetFieldID(clazz, "mRemovable", "Z");
|
||||
if (field_MtpStorage_removable == NULL) {
|
||||
LOGE("Can't find MtpStorage.mRemovable");
|
||||
return -1;
|
||||
}
|
||||
clazz_MtpStorage = (jclass)env->NewGlobalRef(clazz);
|
||||
|
||||
@@ -33,12 +33,13 @@
|
||||
namespace android {
|
||||
|
||||
MtpStorage::MtpStorage(MtpStorageID id, const char* filePath,
|
||||
const char* description, uint64_t reserveSpace)
|
||||
const char* description, uint64_t reserveSpace, bool removable)
|
||||
: mStorageID(id),
|
||||
mFilePath(filePath),
|
||||
mDescription(description),
|
||||
mMaxCapacity(0),
|
||||
mReserveSpace(reserveSpace)
|
||||
mReserveSpace(reserveSpace),
|
||||
mRemovable(removable)
|
||||
{
|
||||
LOGV("MtpStorage id: %d path: %s\n", id, filePath);
|
||||
}
|
||||
@@ -47,7 +48,7 @@ MtpStorage::~MtpStorage() {
|
||||
}
|
||||
|
||||
int MtpStorage::getType() const {
|
||||
return MTP_STORAGE_FIXED_RAM;
|
||||
return (mRemovable ? MTP_STORAGE_REMOVABLE_RAM : MTP_STORAGE_FIXED_RAM);
|
||||
}
|
||||
|
||||
int MtpStorage::getFileSystemType() const {
|
||||
|
||||
@@ -33,10 +33,12 @@ private:
|
||||
uint64_t mMaxCapacity;
|
||||
// amount of free space to leave unallocated
|
||||
uint64_t mReserveSpace;
|
||||
bool mRemovable;
|
||||
|
||||
public:
|
||||
MtpStorage(MtpStorageID id, const char* filePath,
|
||||
const char* description, uint64_t reserveSpace);
|
||||
const char* description, uint64_t reserveSpace,
|
||||
bool removable);
|
||||
virtual ~MtpStorage();
|
||||
|
||||
inline MtpStorageID getStorageID() const { return mStorageID; }
|
||||
@@ -47,6 +49,7 @@ public:
|
||||
uint64_t getFreeSpace();
|
||||
const char* getDescription() const;
|
||||
inline const char* getPath() const { return (const char *)mFilePath; }
|
||||
inline bool isRemovable() const { return mRemovable; }
|
||||
};
|
||||
|
||||
}; // namespace android
|
||||
|
||||
Reference in New Issue
Block a user