am 15afd076: Merge "MTP: Have GetStorageInfo command return correct storage type for removable storage" into honeycomb-mr2

* commit '15afd076d6070374cbb4f9dcbe28dda67caa0718':
  MTP: Have GetStorageInfo command return correct storage type for removable storage
This commit is contained in:
Mike Lockwood
2011-05-16 12:38:18 -07:00
committed by Android Git Automerger
4 changed files with 30 additions and 7 deletions

View File

@@ -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;
}
}

View File

@@ -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);

View File

@@ -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 {

View File

@@ -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