Merge "Random fix for Identity class."
diff --git a/packages/MtpDocumentsProvider/src/com/android/mtp/Identifier.java b/packages/MtpDocumentsProvider/src/com/android/mtp/Identifier.java
index 4649340..bd0c837 100644
--- a/packages/MtpDocumentsProvider/src/com/android/mtp/Identifier.java
+++ b/packages/MtpDocumentsProvider/src/com/android/mtp/Identifier.java
@@ -20,19 +20,19 @@
* Static utilities for ID.
*/
class Identifier {
- int mDeviceId;
- int mStorageId;
- int mObjectHandle;
+ final int mDeviceId;
+ final int mStorageId;
+ final int mObjectHandle;
static Identifier createFromRootId(String rootId) {
- final String[] components = rootId.split(":");
+ final String[] components = rootId.split("_");
return new Identifier(
Integer.parseInt(components[0]),
Integer.parseInt(components[1]));
}
static Identifier createFromDocumentId(String documentId) {
- final String[] components = documentId.split(":");
+ final String[] components = documentId.split("_");
return new Identifier(
Integer.parseInt(components[0]),
Integer.parseInt(components[1]),
@@ -52,11 +52,25 @@
// TODO: Make the ID persistent.
String toRootId() {
- return String.format("%d:%d", mDeviceId, mStorageId);
+ return String.format("%d_%d", mDeviceId, mStorageId);
}
// TODO: Make the ID persistent.
String toDocumentId() {
- return String.format("%d:%d:%d", mDeviceId, mStorageId, mObjectHandle);
+ return String.format("%d_%d_%d", mDeviceId, mStorageId, mObjectHandle);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (!(obj instanceof Identifier))
+ return false;
+ final Identifier other = (Identifier)obj;
+ return mDeviceId == other.mDeviceId && mStorageId == other.mStorageId &&
+ mObjectHandle == other.mObjectHandle;
+ }
+
+ @Override
+ public int hashCode() {
+ return (mDeviceId << 16) ^ (mStorageId << 8) ^ mObjectHandle;
}
}
diff --git a/packages/MtpDocumentsProvider/tests/src/com/android/mtp/MtpDocumentsProviderTest.java b/packages/MtpDocumentsProvider/tests/src/com/android/mtp/MtpDocumentsProviderTest.java
index 81fff21..2a612cb 100644
--- a/packages/MtpDocumentsProvider/tests/src/com/android/mtp/MtpDocumentsProviderTest.java
+++ b/packages/MtpDocumentsProvider/tests/src/com/android/mtp/MtpDocumentsProviderTest.java
@@ -70,7 +70,6 @@
public void testCloseAllDevices() throws IOException {
mMtpManager.addValidDevice(0);
- mProvider.onCreateForTesting(mMtpManager, mResolver);
mProvider.closeAllDevices();
assertEquals(0, mResolver.changeCount);
@@ -101,7 +100,6 @@
4096 /* total space */,
"Identifier B" /* no volume identifier */)
});
- mProvider.onCreateForTesting(mMtpManager, mResolver);
assertEquals(0, mProvider.queryRoots(null).getCount());
{
@@ -109,12 +107,12 @@
final Cursor cursor = mProvider.queryRoots(null);
assertEquals(1, cursor.getCount());
cursor.moveToNext();
- assertEquals("0:1", cursor.getString(0));
+ assertEquals("0_1", cursor.getString(0));
assertEquals(Root.FLAG_SUPPORTS_IS_CHILD, cursor.getInt(1));
// TODO: Add storage icon for MTP devices.
assertTrue(cursor.isNull(2) /* icon */);
assertEquals("Storage A", cursor.getString(3));
- assertEquals("0:1:0", cursor.getString(4));
+ assertEquals("0_1_0", cursor.getString(4));
assertEquals(1024, cursor.getInt(5));
}
@@ -124,12 +122,12 @@
assertEquals(2, cursor.getCount());
cursor.moveToNext();
cursor.moveToNext();
- assertEquals("1:1", cursor.getString(0));
+ assertEquals("1_1", cursor.getString(0));
assertEquals(Root.FLAG_SUPPORTS_IS_CHILD, cursor.getInt(1));
// TODO: Add storage icon for MTP devices.
assertTrue(cursor.isNull(2) /* icon */);
assertEquals("Storage B", cursor.getString(3));
- assertEquals("1:1:0", cursor.getString(4));
+ assertEquals("1_1_0", cursor.getString(4));
assertEquals(2048, cursor.getInt(5));
}
@@ -152,19 +150,18 @@
4096 /* total space */,
"Identifier B" /* no volume identifier */)
});
- mProvider.onCreateForTesting(mMtpManager, mResolver);
{
mProvider.openDevice(0);
mProvider.openDevice(1);
final Cursor cursor = mProvider.queryRoots(null);
assertEquals(1, cursor.getCount());
cursor.moveToNext();
- assertEquals("1:1", cursor.getString(0));
+ assertEquals("1_1", cursor.getString(0));
assertEquals(Root.FLAG_SUPPORTS_IS_CHILD, cursor.getInt(1));
// TODO: Add storage icon for MTP devices.
assertTrue(cursor.isNull(2) /* icon */);
assertEquals("Storage B", cursor.getString(3));
- assertEquals("1:1:0", cursor.getString(4));
+ assertEquals("1_1_0", cursor.getString(4));
assertEquals(2048, cursor.getInt(5));
}
}
@@ -177,11 +174,11 @@
new Date(1422716400000L) /* modified date */,
1024 * 1024 * 5 /* file size */,
1024 * 50 /* thumbnail size */));
- final Cursor cursor = mProvider.queryDocument("0:1:2", null);
+ final Cursor cursor = mProvider.queryDocument("0_1_2", null);
assertEquals(1, cursor.getCount());
cursor.moveToNext();
- assertEquals("0:1:2", cursor.getString(0));
+ assertEquals("0_1_2", cursor.getString(0));
assertEquals("image/jpeg", cursor.getString(1));
assertEquals("image.jpg", cursor.getString(2));
assertEquals(1422716400000L, cursor.getLong(3));
@@ -201,11 +198,11 @@
4096 /* total space */,
"" /* no volume identifier */)
});
- final Cursor cursor = mProvider.queryDocument("0:1:0", null);
+ final Cursor cursor = mProvider.queryDocument("0_1_0", null);
assertEquals(1, cursor.getCount());
cursor.moveToNext();
- assertEquals("0:1:0", cursor.getString(0));
+ assertEquals("0_1_0", cursor.getString(0));
assertEquals(DocumentsContract.Document.MIME_TYPE_DIR, cursor.getString(1));
assertEquals("Storage A", cursor.getString(2));
assertTrue(cursor.isNull(3));