Merge "MTP: Add support of ObjectInfoChanged Event"

This commit is contained in:
TreeHugger Robot
2018-08-23 01:38:39 +00:00
committed by Android (Google) Code Review
5 changed files with 194 additions and 57 deletions

View File

@@ -266,6 +266,12 @@ public class MtpDatabase implements AutoCloseable {
if (MtpDatabase.this.mServer != null)
MtpDatabase.this.mServer.sendObjectRemoved(id);
}
@Override
public void sendObjectInfoChanged(int id) {
if (MtpDatabase.this.mServer != null)
MtpDatabase.this.mServer.sendObjectInfoChanged(id);
}
}, subDirectories == null ? null : Sets.newHashSet(subDirectories));
initDeviceProperties(context);

View File

@@ -77,6 +77,10 @@ public class MtpServer implements Runnable {
native_send_object_removed(handle);
}
public void sendObjectInfoChanged(int handle) {
native_send_object_info_changed(handle);
}
public void sendDevicePropertyChanged(int property) {
native_send_device_property_changed(property);
}
@@ -106,6 +110,7 @@ public class MtpServer implements Runnable {
private native final void native_cleanup();
private native final void native_send_object_added(int handle);
private native final void native_send_object_removed(int handle);
private native final void native_send_object_info_changed(int handle);
private native final void native_send_device_property_changed(int property);
private native final void native_add_storage(MtpStorage storage);
private native final void native_remove_storage(int storageId);

View File

@@ -55,7 +55,8 @@ public class MtpStorageManager {
MtpObjectObserver(MtpObject object) {
super(object.getPath().toString(),
MOVED_FROM | MOVED_TO | DELETE | CREATE | IN_ONLYDIR);
MOVED_FROM | MOVED_TO | DELETE | CREATE | IN_ONLYDIR
| CLOSE_WRITE);
mObject = object;
}
@@ -85,6 +86,10 @@ public class MtpStorageManager {
if (mObject.mObserver != null)
mObject.mObserver.stopWatching();
mObject.mObserver = null;
} else if ((event & CLOSE_WRITE) != 0) {
if (sDebug)
Log.i(TAG, "inotify for " + mObject.getPath() + " CLOSE_WRITE: " + path);
handleChangedObject(mObject, path);
} else {
Log.w(TAG, "Got unrecognized event " + path + " " + event);
}
@@ -302,6 +307,11 @@ public class MtpStorageManager {
* Called when an object is deleted.
*/
public abstract void sendObjectRemoved(int id);
/**
* Called when an object info is changed.
*/
public abstract void sendObjectInfoChanged(int id);
}
private MtpNotifier mMtpNotifier;
@@ -733,6 +743,25 @@ public class MtpStorageManager {
Log.i(TAG, state + " transitioned to " + obj.getState() + " in op " + op);
}
private synchronized void handleChangedObject(MtpObject parent, String path) {
MtpOperation op = MtpOperation.NONE;
MtpObject obj = parent.getChild(path);
if (obj != null) {
// Only handle files for size change notification event
if ((!obj.isDir()) && (obj.getSize() > 0))
{
MtpObjectState state = obj.getState();
op = obj.getOperation();
MtpStorageManager.this.mMtpNotifier.sendObjectInfoChanged(obj.getId());
if (sDebug)
Log.d(TAG, "sendObjectInfoChanged: id=" + obj.getId() + ",size=" + obj.getSize());
}
} else {
if (sDebug)
Log.w(TAG, "object " + path + " null");
}
}
/**
* Block the caller until all events currently in the event queue have been
* read and processed. Used for testing purposes.

View File

@@ -134,6 +134,18 @@ android_mtp_MtpServer_send_object_removed(JNIEnv *env, jobject thiz, jint handle
ALOGE("server is null in send_object_removed");
}
static void
android_mtp_MtpServer_send_object_info_changed(JNIEnv *env, jobject thiz, jint handle)
{
Mutex::Autolock autoLock(sMutex);
MtpServer* server = getMtpServer(env, thiz);
if (server)
server->sendObjectInfoChanged(handle);
else
ALOGE("server is null in send_object_info_changed");
}
static void
android_mtp_MtpServer_send_device_property_changed(JNIEnv *env, jobject thiz, jint property)
{
@@ -202,6 +214,7 @@ static const JNINativeMethod gMethods[] = {
{"native_cleanup", "()V", (void *)android_mtp_MtpServer_cleanup},
{"native_send_object_added", "(I)V", (void *)android_mtp_MtpServer_send_object_added},
{"native_send_object_removed", "(I)V", (void *)android_mtp_MtpServer_send_object_removed},
{"native_send_object_info_changed", "(I)V", (void *)android_mtp_MtpServer_send_object_info_changed},
{"native_send_device_property_changed", "(I)V",
(void *)android_mtp_MtpServer_send_device_property_changed},
{"native_add_storage", "(Landroid/mtp/MtpStorage;)V",

View File

@@ -58,6 +58,7 @@ public class MtpStorageManagerTest {
private ArrayList<Integer> objectsAdded;
private ArrayList<Integer> objectsRemoved;
private ArrayList<Integer> objectsInfoChanged;
private File mainStorageDir;
private File secondaryStorageDir;
@@ -73,15 +74,42 @@ public class MtpStorageManagerTest {
Log.d(TAG, Thread.currentThread().getStackTrace()[3].getMethodName());
}
private static void logMethodValue(String szVar, int iValue)
{
Log.d(TAG, szVar + "=" + iValue + ": " + Thread.currentThread().getStackTrace()[3].getMethodName());
}
private static void vWriteNewFile(File newFile) {
try {
new FileOutputStream(newFile).write(new byte[] {0, 0, 0});
} catch (IOException e) {
Assert.fail();
}
}
private static File createNewFile(File parent) {
return createNewFile(parent, UUID.randomUUID().toString());
return createNewFile(parent, "file-" + UUID.randomUUID().toString());
}
private static File createNewFileNonZero(File parent) {
return createNewFileNonZero(parent, "file-" + UUID.randomUUID().toString());
}
private static File createNewFile(File parent, String name) {
return createNewFile(parent, name, false);
}
private static File createNewFileNonZero(File parent, String name) {
return createNewFile(parent, name, true);
}
private static File createNewFile(File parent, String name, boolean fgNonZero) {
try {
File ret = new File(parent, name);
if (!ret.createNewFile())
throw new AssertionError("Failed to create file");
if (fgNonZero)
vWriteNewFile(ret); // create non-zero size file
return ret;
} catch (IOException e) {
throw new AssertionError(e.getMessage());
@@ -96,11 +124,12 @@ public class MtpStorageManagerTest {
}
private static File createNewDir(File parent) {
return createNewDir(parent, UUID.randomUUID().toString());
return createNewDir(parent, "dir-" + UUID.randomUUID().toString());
}
@Before
public void before() {
FileUtils.deleteContentsAndDir(TEMP_DIR_FILE);
Assert.assertTrue(TEMP_DIR_FILE.mkdir());
mainStorageDir = createNewDir(TEMP_DIR_FILE);
secondaryStorageDir = createNewDir(TEMP_DIR_FILE);
@@ -112,17 +141,26 @@ public class MtpStorageManagerTest {
objectsAdded = new ArrayList<>();
objectsRemoved = new ArrayList<>();
objectsInfoChanged = new ArrayList<>();
manager = new MtpStorageManager(new MtpStorageManager.MtpNotifier() {
@Override
public void sendObjectAdded(int id) {
Log.d(TAG, "sendObjectAdded " + id);
objectsAdded.add(id);
}
@Override
public void sendObjectRemoved(int id) {
Log.d(TAG, "sendObjectRemoved " + id);
objectsRemoved.add(id);
}
@Override
public void sendObjectInfoChanged(int id) {
Log.d(TAG, "sendObjectInfoChanged: " + id);
objectsInfoChanged.add(id);
}
}, null);
mainMtpStorage = manager.addMtpStorage(mainStorage);
@@ -469,11 +507,16 @@ public class MtpStorageManagerTest {
mainMtpStorage.getStorageId());
Assert.assertEquals(stream.size(), 0);
File newFile = createNewFile(mainStorageDir);
File newFile = createNewFileNonZero(mainStorageDir);
manager.flushEvents();
Assert.assertEquals(objectsAdded.size(), 1);
Assert.assertEquals(manager.getObject(objectsAdded.get(0)).getPath().toString(),
newFile.getPath());
logMethodValue("objectsInfoChanged.size", objectsInfoChanged.size());
if (objectsInfoChanged.size() > 0)
Assert.assertEquals(objectsAdded.get(0).intValue(), objectsInfoChanged.get(0).intValue());
Assert.assertTrue(manager.checkConsistency());
}
@@ -491,6 +534,7 @@ public class MtpStorageManagerTest {
Assert.assertEquals(manager.getObject(objectsAdded.get(0)).getPath().toString(),
newDir.getPath());
Assert.assertTrue(manager.getObject(objectsAdded.get(0)).isDir());
Assert.assertEquals(objectsInfoChanged.size(), 0);
Assert.assertTrue(manager.checkConsistency());
}
@@ -508,6 +552,7 @@ public class MtpStorageManagerTest {
Assert.assertEquals(manager.getObject(objectsAdded.get(2)).getPath().toString(),
newDir.getPath());
Assert.assertTrue(manager.getObject(objectsAdded.get(2)).isDir());
Assert.assertEquals(objectsInfoChanged.size(), 0);
Assert.assertTrue(manager.checkConsistency());
}
@@ -531,7 +576,7 @@ public class MtpStorageManagerTest {
@SmallTest
public void testObjectMoved() {
logMethodName();
File newFile = createNewFile(mainStorageDir);
File newFile = createNewFileNonZero(mainStorageDir);
List<MtpStorageManager.MtpObject> stream = manager.getObjects(0xFFFFFFFF, 0,
mainMtpStorage.getStorageId());
Assert.assertEquals(stream.size(), 1);
@@ -544,6 +589,7 @@ public class MtpStorageManagerTest {
Assert.assertEquals(manager.getObject(objectsAdded.get(0)).getPath().toString(),
toFile.getPath());
Assert.assertNull(manager.getObject(objectsRemoved.get(0)));
Assert.assertEquals(objectsInfoChanged.size(), 0);
Assert.assertTrue(manager.checkConsistency());
}
@@ -561,7 +607,7 @@ public class MtpStorageManagerTest {
"newFile", MtpConstants.FORMAT_UNDEFINED);
Assert.assertEquals(id, 1);
File newFile = createNewFile(mainStorageDir, "newFile");
File newFile = createNewFileNonZero(mainStorageDir, "newFile");
manager.flushEvents();
MtpStorageManager.MtpObject obj = manager.getObject(id);
Assert.assertTrue(manager.endSendObject(obj, true));
@@ -586,11 +632,12 @@ public class MtpStorageManagerTest {
Assert.assertTrue(manager.endSendObject(obj, true));
Assert.assertEquals(obj.getPath().toString(), newFile.getPath());
Assert.assertEquals(objectsAdded.size(), 0);
Assert.assertEquals(objectsInfoChanged.size(), 0);
Assert.assertEquals(obj.getFormat(), MtpConstants.FORMAT_ASSOCIATION);
Assert.assertTrue(manager.checkConsistency());
// Check that new dir receives events
File newerFile = createNewFile(newFile);
File newerFile = createNewFileNonZero(newFile);
manager.flushEvents();
Assert.assertEquals(objectsAdded.size(), 1);
Assert.assertEquals(manager.getObject(objectsAdded.get(0)).getPath().toString(),
@@ -609,7 +656,7 @@ public class MtpStorageManagerTest {
MtpStorageManager.MtpObject obj = manager.getObject(id);
Assert.assertTrue(manager.endSendObject(obj, true));
File newFile = createNewFile(mainStorageDir, "newFile");
File newFile = createNewFileNonZero(mainStorageDir, "newFile");
manager.flushEvents();
Assert.assertEquals(obj.getPath().toString(), newFile.getPath());
Assert.assertEquals(objectsAdded.size(), 0);
@@ -632,11 +679,12 @@ public class MtpStorageManagerTest {
manager.flushEvents();
Assert.assertEquals(obj.getPath().toString(), newFile.getPath());
Assert.assertEquals(objectsAdded.size(), 0);
Assert.assertEquals(objectsInfoChanged.size(), 0);
Assert.assertEquals(obj.getFormat(), MtpConstants.FORMAT_ASSOCIATION);
Assert.assertTrue(manager.checkConsistency());
// Check that new dir receives events
File newerFile = createNewFile(newFile);
File newerFile = createNewFileNonZero(newFile);
manager.flushEvents();
Assert.assertEquals(objectsAdded.size(), 1);
Assert.assertEquals(manager.getObject(objectsAdded.get(0)).getPath().toString(),
@@ -689,12 +737,13 @@ public class MtpStorageManagerTest {
Assert.assertEquals(id, 1);
MtpStorageManager.MtpObject obj = manager.getObject(id);
File newFile = createNewFile(mainStorageDir, "newFile");
File newFile = createNewFileNonZero(mainStorageDir, "newFile");
Assert.assertTrue(newFile.delete());
manager.flushEvents();
Assert.assertTrue(manager.endSendObject(obj, false));
Assert.assertEquals(objectsRemoved.size(), 0);
Assert.assertEquals(objectsAdded.size(), 0);
Assert.assertEquals(objectsInfoChanged.size(), 0);
Assert.assertTrue(manager.checkConsistency());
}
@@ -713,15 +762,21 @@ public class MtpStorageManagerTest {
manager.flushEvents();
Assert.assertTrue(manager.endSendObject(obj, false));
Assert.assertNotEquals(objectsAdded.get(0).intValue(), id);
logMethodValue("objectsInfoChanged.size", objectsInfoChanged.size());
if (objectsInfoChanged.size() > 0)
Assert.assertNotEquals(objectsInfoChanged.get(0).intValue(), id);
Assert.assertNull(manager.getObject(id));
Assert.assertEquals(manager.getObject(objectsAdded.get(0)).getPath().toString(),
newDir.getPath());
Assert.assertTrue(manager.checkConsistency());
// Expect events in new dir
createNewFile(newDir);
createNewFileNonZero(newDir);
manager.flushEvents();
Assert.assertEquals(objectsAdded.size(), 2);
logMethodValue("objectsInfoChanged.size", objectsInfoChanged.size());
if (objectsInfoChanged.size() == 1)
Assert.assertEquals(objectsAdded.get(1).intValue(), objectsInfoChanged.get(0).intValue());
Assert.assertTrue(manager.checkConsistency());
}
@@ -764,13 +819,13 @@ public class MtpStorageManagerTest {
public void testRemoveObjectDir() {
logMethodName();
File newDir = createNewDir(mainStorageDir);
createNewFile(createNewDir(newDir));
createNewFileNonZero(createNewDir(newDir));
MtpStorageManager.MtpObject obj = manager.getObjects(0xFFFFFFFF, 0,
mainMtpStorage.getStorageId()).get(0);
manager.getObjects(obj.getId(), 0, mainMtpStorage.getStorageId());
Assert.assertTrue(manager.beginRemoveObject(obj));
createNewFile(newDir);
createNewFileNonZero(newDir);
Assert.assertTrue(FileUtils.deleteContentsAndDir(newDir));
manager.flushEvents();
Assert.assertTrue(manager.endRemoveObject(obj, true));
@@ -811,13 +866,16 @@ public class MtpStorageManagerTest {
Assert.assertTrue(manager.beginRemoveObject(obj));
Assert.assertTrue(newFile.delete());
createNewFile(mainStorageDir, newFile.getName());
createNewFileNonZero(mainStorageDir, newFile.getName());
manager.flushEvents();
Assert.assertTrue(manager.endRemoveObject(obj, true));
Assert.assertEquals(objectsRemoved.size(), 0);
Assert.assertEquals(objectsAdded.size(), 1);
Assert.assertNull(manager.getObject(id));
Assert.assertNotEquals(objectsAdded.get(0).intValue(), id);
logMethodValue("objectsInfoChanged.size", objectsInfoChanged.size());
if (objectsInfoChanged.size() > 0)
Assert.assertNotEquals(objectsInfoChanged.get(0).intValue(), objectsAdded.get(0).intValue());
Assert.assertTrue(manager.checkConsistency());
}
@@ -850,6 +908,7 @@ public class MtpStorageManagerTest {
Assert.assertTrue(manager.endRemoveObject(obj, false));
Assert.assertEquals(manager.getObject(obj.getId()), obj);
Assert.assertEquals(objectsAdded.size(), 1);
Assert.assertEquals(objectsInfoChanged.size(), 0);
Assert.assertTrue(manager.checkConsistency());
}
@@ -875,7 +934,7 @@ public class MtpStorageManagerTest {
@SmallTest
public void testCopyObjectSuccess() {
logMethodName();
File newFile = createNewFile(mainStorageDir);
File newFile = createNewFileNonZero(mainStorageDir);
File newDir = createNewDir(mainStorageDir);
MtpStorageManager.MtpObject dirObj = manager.getObjects(0xFFFFFFFF, 0,
mainMtpStorage.getStorageId())
@@ -886,7 +945,7 @@ public class MtpStorageManagerTest {
int id = manager.beginCopyObject(fileObj, dirObj);
Assert.assertNotEquals(id, -1);
createNewFile(newDir, newFile.getName());
createNewFileNonZero(newDir, newFile.getName());
manager.flushEvents();
MtpStorageManager.MtpObject obj = manager.getObject(id);
Assert.assertTrue(manager.endCopyObject(obj, true));
@@ -900,9 +959,9 @@ public class MtpStorageManagerTest {
logMethodName();
File newDirFrom = createNewDir(mainStorageDir);
File newDirFrom1 = createNewDir(newDirFrom);
File newDirFrom2 = createNewFile(newDirFrom1);
File delayedFile = createNewFile(newDirFrom);
File deletedFile = createNewFile(newDirFrom);
File newDirFrom2 = createNewFileNonZero(newDirFrom1);
File delayedFile = createNewFileNonZero(newDirFrom);
File deletedFile = createNewFileNonZero(newDirFrom);
File newDirTo = createNewDir(mainStorageDir);
MtpStorageManager.MtpObject toObj = manager.getObjects(0xFFFFFFFF, 0,
mainMtpStorage.getStorageId()).stream()
@@ -916,9 +975,9 @@ public class MtpStorageManagerTest {
Assert.assertNotEquals(id, -1);
File copiedDir = createNewDir(newDirTo, newDirFrom.getName());
File copiedDir1 = createNewDir(copiedDir, newDirFrom1.getName());
createNewFile(copiedDir1, newDirFrom2.getName());
createNewFile(copiedDir, "extraFile");
File toDelete = createNewFile(copiedDir, deletedFile.getName());
createNewFileNonZero(copiedDir1, newDirFrom2.getName());
createNewFileNonZero(copiedDir, "extraFile");
File toDelete = createNewFileNonZero(copiedDir, deletedFile.getName());
manager.flushEvents();
Assert.assertTrue(toDelete.delete());
manager.flushEvents();
@@ -927,13 +986,13 @@ public class MtpStorageManagerTest {
Assert.assertEquals(objectsAdded.size(), 1);
Assert.assertEquals(objectsRemoved.size(), 1);
createNewFile(copiedDir, delayedFile.getName());
createNewFileNonZero(copiedDir, delayedFile.getName());
manager.flushEvents();
Assert.assertTrue(manager.checkConsistency());
// Expect events in the visited dir, but not the unvisited dir.
createNewFile(copiedDir);
createNewFile(copiedDir1);
createNewFileNonZero(copiedDir);
createNewFileNonZero(copiedDir1);
manager.flushEvents();
Assert.assertEquals(objectsAdded.size(), 2);
Assert.assertEquals(objectsAdded.size(), 2);
@@ -947,7 +1006,7 @@ public class MtpStorageManagerTest {
@SmallTest
public void testCopyObjectFailed() {
logMethodName();
File newFile = createNewFile(mainStorageDir);
File newFile = createNewFileNonZero(mainStorageDir);
File newDir = createNewDir(mainStorageDir);
MtpStorageManager.MtpObject dirObj = manager.getObjects(0xFFFFFFFF, 0,
mainMtpStorage.getStorageId()).stream()
@@ -962,6 +1021,7 @@ public class MtpStorageManagerTest {
MtpStorageManager.MtpObject obj = manager.getObject(id);
Assert.assertTrue(manager.endCopyObject(obj, false));
Assert.assertEquals(objectsAdded.size(), 0);
Assert.assertEquals(objectsInfoChanged.size(), 0);
Assert.assertTrue(manager.checkConsistency());
}
@@ -969,7 +1029,7 @@ public class MtpStorageManagerTest {
@SmallTest
public void testCopyObjectFailedAdded() {
logMethodName();
File newFile = createNewFile(mainStorageDir);
File newFile = createNewFileNonZero(mainStorageDir);
File newDir = createNewDir(mainStorageDir);
MtpStorageManager.MtpObject dirObj = manager.getObjects(0xFFFFFFFF, 0,
mainMtpStorage.getStorageId()).stream()
@@ -989,7 +1049,7 @@ public class MtpStorageManagerTest {
Assert.assertTrue(manager.checkConsistency());
// Expect events in new dir
createNewFile(addedDir);
createNewFileNonZero(addedDir);
manager.flushEvents();
Assert.assertEquals(objectsAdded.size(), 2);
Assert.assertTrue(manager.checkConsistency());
@@ -999,7 +1059,7 @@ public class MtpStorageManagerTest {
@SmallTest
public void testCopyObjectFailedDeleted() {
logMethodName();
File newFile = createNewFile(mainStorageDir);
File newFile = createNewFileNonZero(mainStorageDir);
File newDir = createNewDir(mainStorageDir);
MtpStorageManager.MtpObject dirObj = manager.getObjects(0xFFFFFFFF, 0,
mainMtpStorage.getStorageId()).stream()
@@ -1010,7 +1070,7 @@ public class MtpStorageManagerTest {
int id = manager.beginCopyObject(fileObj, dirObj);
Assert.assertNotEquals(id, -1);
Assert.assertTrue(createNewFile(newDir, newFile.getName()).delete());
Assert.assertTrue(createNewFileNonZero(newDir, newFile.getName()).delete());
manager.flushEvents();
MtpStorageManager.MtpObject obj = manager.getObject(id);
Assert.assertTrue(manager.endCopyObject(obj, false));
@@ -1022,7 +1082,7 @@ public class MtpStorageManagerTest {
@SmallTest
public void testRenameObjectSuccess() {
logMethodName();
File newFile = createNewFile(mainStorageDir);
File newFile = createNewFileNonZero(mainStorageDir);
MtpStorageManager.MtpObject obj = manager.getObjects(0xFFFFFFFF, 0,
mainMtpStorage.getStorageId()).get(0);
Assert.assertTrue(manager.beginRenameObject(obj, "renamed"));
@@ -1033,6 +1093,7 @@ public class MtpStorageManagerTest {
Assert.assertTrue(manager.endRenameObject(obj, newFile.getName(), true));
Assert.assertEquals(objectsAdded.size(), 0);
Assert.assertEquals(objectsInfoChanged.size(), 0);
Assert.assertEquals(objectsRemoved.size(), 0);
Assert.assertEquals(obj.getPath().toString(), renamed.getPath());
@@ -1054,6 +1115,7 @@ public class MtpStorageManagerTest {
Assert.assertTrue(manager.endRenameObject(obj, newDir.getName(), true));
Assert.assertEquals(objectsAdded.size(), 0);
Assert.assertEquals(objectsInfoChanged.size(), 0);
Assert.assertEquals(objectsRemoved.size(), 0);
Assert.assertEquals(obj.getPath().toString(), renamed.getPath());
@@ -1063,6 +1125,7 @@ public class MtpStorageManagerTest {
createNewFile(renamed);
manager.flushEvents();
Assert.assertEquals(objectsAdded.size(), 0);
Assert.assertEquals(objectsInfoChanged.size(), 0);
Assert.assertTrue(manager.checkConsistency());
}
@@ -1082,13 +1145,14 @@ public class MtpStorageManagerTest {
Assert.assertTrue(manager.endRenameObject(obj, newDir.getName(), true));
Assert.assertEquals(objectsAdded.size(), 0);
Assert.assertEquals(objectsInfoChanged.size(), 0);
Assert.assertEquals(objectsRemoved.size(), 0);
Assert.assertEquals(obj.getPath().toString(), renamed.getPath());
Assert.assertTrue(manager.checkConsistency());
// Expect events since the dir was visited
createNewFile(renamed);
createNewFileNonZero(renamed);
manager.flushEvents();
Assert.assertEquals(objectsAdded.size(), 1);
Assert.assertTrue(manager.checkConsistency());
@@ -1098,7 +1162,7 @@ public class MtpStorageManagerTest {
@SmallTest
public void testRenameObjectDelayed() {
logMethodName();
File newFile = createNewFile(mainStorageDir);
File newFile = createNewFileNonZero(mainStorageDir);
MtpStorageManager.MtpObject obj = manager.getObjects(0xFFFFFFFF, 0,
mainMtpStorage.getStorageId()).get(0);
Assert.assertTrue(manager.beginRenameObject(obj, "renamed"));
@@ -1109,6 +1173,7 @@ public class MtpStorageManagerTest {
manager.flushEvents();
Assert.assertEquals(objectsAdded.size(), 0);
Assert.assertEquals(objectsInfoChanged.size(), 0);
Assert.assertEquals(objectsRemoved.size(), 0);
Assert.assertEquals(obj.getPath().toString(), renamed.getPath());
@@ -1131,13 +1196,14 @@ public class MtpStorageManagerTest {
manager.flushEvents();
Assert.assertEquals(objectsAdded.size(), 0);
Assert.assertEquals(objectsInfoChanged.size(), 0);
Assert.assertEquals(objectsRemoved.size(), 0);
Assert.assertEquals(obj.getPath().toString(), renamed.getPath());
Assert.assertTrue(manager.checkConsistency());
// Expect events since the dir was visited
createNewFile(renamed);
createNewFileNonZero(renamed);
manager.flushEvents();
Assert.assertEquals(objectsAdded.size(), 1);
Assert.assertTrue(manager.checkConsistency());
@@ -1147,7 +1213,7 @@ public class MtpStorageManagerTest {
@SmallTest
public void testRenameObjectFailed() {
logMethodName();
File newFile = createNewFile(mainStorageDir);
File newFile = createNewFileNonZero(mainStorageDir);
MtpStorageManager.MtpObject obj = manager.getObjects(0xFFFFFFFF, 0,
mainMtpStorage.getStorageId()).get(0);
Assert.assertTrue(manager.beginRenameObject(obj, "renamed"));
@@ -1155,6 +1221,7 @@ public class MtpStorageManagerTest {
Assert.assertTrue(manager.endRenameObject(obj, newFile.getName(), false));
Assert.assertEquals(objectsAdded.size(), 0);
Assert.assertEquals(objectsInfoChanged.size(), 0);
Assert.assertEquals(objectsRemoved.size(), 0);
Assert.assertTrue(manager.checkConsistency());
@@ -1164,7 +1231,7 @@ public class MtpStorageManagerTest {
@SmallTest
public void testRenameObjectFailedOldRemoved() {
logMethodName();
File newFile = createNewFile(mainStorageDir);
File newFile = createNewFileNonZero(mainStorageDir);
MtpStorageManager.MtpObject obj = manager.getObjects(0xFFFFFFFF, 0,
mainMtpStorage.getStorageId()).get(0);
Assert.assertTrue(manager.beginRenameObject(obj, "renamed"));
@@ -1174,6 +1241,7 @@ public class MtpStorageManagerTest {
Assert.assertTrue(manager.endRenameObject(obj, newFile.getName(), false));
Assert.assertEquals(objectsAdded.size(), 0);
Assert.assertEquals(objectsInfoChanged.size(), 0);
Assert.assertEquals(objectsRemoved.size(), 1);
Assert.assertTrue(manager.checkConsistency());
@@ -1183,16 +1251,19 @@ public class MtpStorageManagerTest {
@SmallTest
public void testRenameObjectFailedNewAdded() {
logMethodName();
File newFile = createNewFile(mainStorageDir);
File newFile = createNewFileNonZero(mainStorageDir);
MtpStorageManager.MtpObject obj = manager.getObjects(0xFFFFFFFF, 0,
mainMtpStorage.getStorageId()).get(0);
Assert.assertTrue(manager.beginRenameObject(obj, "renamed"));
createNewFile(mainStorageDir, "renamed");
createNewFileNonZero(mainStorageDir, "renamed");
manager.flushEvents();
Assert.assertTrue(manager.endRenameObject(obj, newFile.getName(), false));
Assert.assertEquals(objectsAdded.size(), 1);
logMethodValue("objectsInfoChanged.size", objectsInfoChanged.size());
if (objectsInfoChanged.size() > 0)
Assert.assertNotEquals(objectsAdded.get(0).intValue(), objectsInfoChanged.get(0).intValue());
Assert.assertEquals(objectsRemoved.size(), 0);
Assert.assertTrue(manager.checkConsistency());
@@ -1202,7 +1273,7 @@ public class MtpStorageManagerTest {
@SmallTest
public void testMoveObjectSuccess() {
logMethodName();
File newFile = createNewFile(mainStorageDir);
File newFile = createNewFileNonZero(mainStorageDir);
File dir = createNewDir(mainStorageDir);
MtpStorageManager.MtpObject dirObj = manager.getObjects(0xFFFFFFFF, 0,
mainMtpStorage.getStorageId()).stream()
@@ -1220,6 +1291,7 @@ public class MtpStorageManagerTest {
dirObj, newFile.getName(), true));
Assert.assertEquals(objectsAdded.size(), 0);
Assert.assertEquals(objectsInfoChanged.size(), 0);
Assert.assertEquals(objectsRemoved.size(), 0);
Assert.assertEquals(fileObj.getPath().toString(), moved.getPath());
@@ -1248,6 +1320,7 @@ public class MtpStorageManagerTest {
dirObj, movedDir.getName(), true));
Assert.assertEquals(objectsAdded.size(), 0);
Assert.assertEquals(objectsInfoChanged.size(), 0);
Assert.assertEquals(objectsRemoved.size(), 0);
Assert.assertEquals(movedObj.getPath().toString(), renamed.getPath());
@@ -1257,6 +1330,7 @@ public class MtpStorageManagerTest {
createNewFile(renamed);
manager.flushEvents();
Assert.assertEquals(objectsAdded.size(), 0);
Assert.assertEquals(objectsInfoChanged.size(), 0);
Assert.assertTrue(manager.checkConsistency());
}
@@ -1283,13 +1357,14 @@ public class MtpStorageManagerTest {
dirObj, movedDir.getName(), true));
Assert.assertEquals(objectsAdded.size(), 0);
Assert.assertEquals(objectsInfoChanged.size(), 0);
Assert.assertEquals(objectsRemoved.size(), 0);
Assert.assertEquals(movedObj.getPath().toString(), renamed.getPath());
Assert.assertTrue(manager.checkConsistency());
// Expect events since the dir was visited
createNewFile(renamed);
createNewFileNonZero(renamed);
manager.flushEvents();
Assert.assertEquals(objectsAdded.size(), 1);
Assert.assertTrue(manager.checkConsistency());
@@ -1299,7 +1374,7 @@ public class MtpStorageManagerTest {
@SmallTest
public void testMoveObjectDelayed() {
logMethodName();
File newFile = createNewFile(mainStorageDir);
File newFile = createNewFileNonZero(mainStorageDir);
File dir = createNewDir(mainStorageDir);
MtpStorageManager.MtpObject dirObj = manager.getObjects(0xFFFFFFFF, 0,
mainMtpStorage.getStorageId()).stream()
@@ -1348,13 +1423,14 @@ public class MtpStorageManagerTest {
manager.flushEvents();
Assert.assertEquals(objectsAdded.size(), 0);
Assert.assertEquals(objectsInfoChanged.size(), 0);
Assert.assertEquals(objectsRemoved.size(), 0);
Assert.assertEquals(movedObj.getPath().toString(), renamed.getPath());
Assert.assertTrue(manager.checkConsistency());
// Expect events since the dir was visited
createNewFile(renamed);
createNewFileNonZero(renamed);
manager.flushEvents();
Assert.assertEquals(objectsAdded.size(), 1);
Assert.assertTrue(manager.checkConsistency());
@@ -1364,7 +1440,7 @@ public class MtpStorageManagerTest {
@SmallTest
public void testMoveObjectFailed() {
logMethodName();
File newFile = createNewFile(mainStorageDir);
File newFile = createNewFileNonZero(mainStorageDir);
File dir = createNewDir(mainStorageDir);
MtpStorageManager.MtpObject dirObj = manager.getObjects(0xFFFFFFFF, 0,
mainMtpStorage.getStorageId()).stream()
@@ -1379,6 +1455,7 @@ public class MtpStorageManagerTest {
dirObj, newFile.getName(), false));
Assert.assertEquals(objectsAdded.size(), 0);
Assert.assertEquals(objectsInfoChanged.size(), 0);
Assert.assertEquals(objectsRemoved.size(), 0);
Assert.assertTrue(manager.checkConsistency());
@@ -1388,7 +1465,7 @@ public class MtpStorageManagerTest {
@SmallTest
public void testMoveObjectFailedOldRemoved() {
logMethodName();
File newFile = createNewFile(mainStorageDir);
File newFile = createNewFileNonZero(mainStorageDir);
File dir = createNewDir(mainStorageDir);
MtpStorageManager.MtpObject dirObj = manager.getObjects(0xFFFFFFFF, 0,
mainMtpStorage.getStorageId()).stream()
@@ -1405,6 +1482,7 @@ public class MtpStorageManagerTest {
dirObj, newFile.getName(), false));
Assert.assertEquals(objectsAdded.size(), 0);
Assert.assertEquals(objectsInfoChanged.size(), 0);
Assert.assertEquals(objectsRemoved.size(), 1);
Assert.assertTrue(manager.checkConsistency());
@@ -1414,7 +1492,7 @@ public class MtpStorageManagerTest {
@SmallTest
public void testMoveObjectFailedNewAdded() {
logMethodName();
File newFile = createNewFile(mainStorageDir);
File newFile = createNewFileNonZero(mainStorageDir);
File dir = createNewDir(mainStorageDir);
MtpStorageManager.MtpObject dirObj = manager.getObjects(0xFFFFFFFF, 0,
mainMtpStorage.getStorageId()).stream()
@@ -1424,7 +1502,7 @@ public class MtpStorageManagerTest {
.filter(o -> !o.isDir()).findFirst().get();
Assert.assertTrue(manager.beginMoveObject(fileObj, dirObj));
createNewFile(dir, newFile.getName());
createNewFileNonZero(dir, newFile.getName());
manager.flushEvents();
Assert.assertTrue(manager.endMoveObject(
manager.getStorageRoot(mainMtpStorage.getStorageId()),
@@ -1440,14 +1518,14 @@ public class MtpStorageManagerTest {
@SmallTest
public void testMoveObjectXStorageSuccess() {
logMethodName();
File newFile = createNewFile(mainStorageDir);
File newFile = createNewFileNonZero(mainStorageDir);
MtpStorageManager.MtpObject fileObj = manager.getObjects(0xFFFFFFFF, 0,
mainMtpStorage.getStorageId()).get(0);
Assert.assertTrue(manager.beginMoveObject(fileObj,
manager.getStorageRoot(secondaryMtpStorage.getStorageId())));
Assert.assertTrue(newFile.delete());
File moved = createNewFile(secondaryStorageDir, newFile.getName());
File moved = createNewFileNonZero(secondaryStorageDir, newFile.getName());
manager.flushEvents();
Assert.assertTrue(manager.endMoveObject(
manager.getStorageRoot(mainMtpStorage.getStorageId()),
@@ -1481,6 +1559,7 @@ public class MtpStorageManagerTest {
movedDir.getName(), true));
Assert.assertEquals(objectsAdded.size(), 0);
Assert.assertEquals(objectsInfoChanged.size(), 0);
Assert.assertEquals(objectsRemoved.size(), 0);
Assert.assertEquals(manager.getObject(movedObj.getId()).getPath().toString(),
moved.getPath());
@@ -1491,6 +1570,7 @@ public class MtpStorageManagerTest {
createNewFile(moved);
manager.flushEvents();
Assert.assertEquals(objectsAdded.size(), 0);
Assert.assertEquals(objectsInfoChanged.size(), 0);
Assert.assertTrue(manager.checkConsistency());
}
@@ -1514,6 +1594,7 @@ public class MtpStorageManagerTest {
movedDir.getName(), true));
Assert.assertEquals(objectsAdded.size(), 0);
Assert.assertEquals(objectsInfoChanged.size(), 0);
Assert.assertEquals(objectsRemoved.size(), 0);
Assert.assertEquals(manager.getObject(movedObj.getId()).getPath().toString(),
moved.getPath());
@@ -1521,7 +1602,7 @@ public class MtpStorageManagerTest {
Assert.assertTrue(manager.checkConsistency());
// Expect events since the dir was visited
createNewFile(moved);
createNewFileNonZero(moved);
manager.flushEvents();
Assert.assertEquals(objectsAdded.size(), 1);
Assert.assertTrue(manager.checkConsistency());
@@ -1531,7 +1612,7 @@ public class MtpStorageManagerTest {
@SmallTest
public void testMoveObjectXStorageDelayed() {
logMethodName();
File movedFile = createNewFile(mainStorageDir);
File movedFile = createNewFileNonZero(mainStorageDir);
MtpStorageManager.MtpObject movedObj = manager.getObjects(0xFFFFFFFF, 0,
mainMtpStorage.getStorageId()).get(0);
Assert.assertTrue(manager.beginMoveObject(movedObj,
@@ -1543,7 +1624,7 @@ public class MtpStorageManagerTest {
movedFile.getName(), true));
Assert.assertTrue(movedFile.delete());
File moved = createNewFile(secondaryStorageDir, movedFile.getName());
File moved = createNewFileNonZero(secondaryStorageDir, movedFile.getName());
manager.flushEvents();
Assert.assertEquals(objectsAdded.size(), 0);
@@ -1575,6 +1656,7 @@ public class MtpStorageManagerTest {
manager.flushEvents();
Assert.assertEquals(objectsAdded.size(), 0);
Assert.assertEquals(objectsInfoChanged.size(), 0);
Assert.assertEquals(objectsRemoved.size(), 0);
Assert.assertEquals(manager.getObject(movedObj.getId()).getPath().toString(),
moved.getPath());
@@ -1582,7 +1664,7 @@ public class MtpStorageManagerTest {
Assert.assertTrue(manager.checkConsistency());
// Expect events since the dir was visited
createNewFile(moved);
createNewFileNonZero(moved);
manager.flushEvents();
Assert.assertEquals(objectsAdded.size(), 1);
Assert.assertTrue(manager.checkConsistency());
@@ -1592,7 +1674,7 @@ public class MtpStorageManagerTest {
@SmallTest
public void testMoveObjectXStorageFailed() {
logMethodName();
File newFile = createNewFile(mainStorageDir);
File newFile = createNewFileNonZero(mainStorageDir);
MtpStorageManager.MtpObject fileObj = manager.getObjects(0xFFFFFFFF, 0,
mainMtpStorage.getStorageId()).get(0);
Assert.assertTrue(manager.beginMoveObject(fileObj,
@@ -1604,6 +1686,7 @@ public class MtpStorageManagerTest {
newFile.getName(), false));
Assert.assertEquals(objectsAdded.size(), 0);
Assert.assertEquals(objectsInfoChanged.size(), 0);
Assert.assertEquals(objectsRemoved.size(), 0);
Assert.assertTrue(manager.checkConsistency());
@@ -1613,7 +1696,7 @@ public class MtpStorageManagerTest {
@SmallTest
public void testMoveObjectXStorageFailedOldRemoved() {
logMethodName();
File newFile = createNewFile(mainStorageDir);
File newFile = createNewFileNonZero(mainStorageDir);
MtpStorageManager.MtpObject fileObj = manager.getObjects(0xFFFFFFFF, 0,
mainMtpStorage.getStorageId()).get(0);
Assert.assertTrue(manager.beginMoveObject(fileObj,
@@ -1627,6 +1710,7 @@ public class MtpStorageManagerTest {
newFile.getName(), false));
Assert.assertEquals(objectsAdded.size(), 0);
Assert.assertEquals(objectsInfoChanged.size(), 0);
Assert.assertEquals(objectsRemoved.size(), 1);
Assert.assertTrue(manager.checkConsistency());
@@ -1636,13 +1720,13 @@ public class MtpStorageManagerTest {
@SmallTest
public void testMoveObjectXStorageFailedNewAdded() {
logMethodName();
File newFile = createNewFile(mainStorageDir);
File newFile = createNewFileNonZero(mainStorageDir);
MtpStorageManager.MtpObject fileObj = manager.getObjects(0xFFFFFFFF, 0,
mainMtpStorage.getStorageId()).get(0);
Assert.assertTrue(manager.beginMoveObject(fileObj,
manager.getStorageRoot(secondaryMtpStorage.getStorageId())));
createNewFile(secondaryStorageDir, newFile.getName());
createNewFileNonZero(secondaryStorageDir, newFile.getName());
manager.flushEvents();
Assert.assertTrue(manager.endMoveObject(
manager.getStorageRoot(mainMtpStorage.getStorageId()),
@@ -1654,4 +1738,4 @@ public class MtpStorageManagerTest {
Assert.assertTrue(manager.checkConsistency());
}
}
}