diff options
| author | Daichi Hirono <hirono@google.com> | 2016-03-18 15:05:53 +0900 |
|---|---|---|
| committer | Daichi Hirono <hirono@google.com> | 2016-03-22 13:41:05 +0900 |
| commit | adbd5e81aff9a2fece180c23af01a6cd7e138920 (patch) | |
| tree | 897ab1a7bd3263fa79ff3afa51a50f41bf4fa308 /tests | |
| parent | 2add391ed49f15666d76ac63110e641daaca0da9 (diff) | |
| download | platform_packages_services_Mtp-adbd5e81aff9a2fece180c23af01a6cd7e138920.tar.gz platform_packages_services_Mtp-adbd5e81aff9a2fece180c23af01a6cd7e138920.tar.bz2 platform_packages_services_Mtp-adbd5e81aff9a2fece180c23af01a6cd7e138920.zip | |
Count error document to complete adding documents to the database.
Previously DocumentLoader#LoaderTask had a counter to count loaded
documents and completes adding documents to the database. However it
does not count documents where a MTP device returns an error for
getObjectInfo. The CL fixes the problem to ensure we complete documents
loading.
BUG=27729653
Change-Id: I696eac790a6535f1bd7a1855dc2d6f932e32eae5
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/src/com/android/mtp/DocumentLoaderTest.java | 58 | ||||
| -rw-r--r-- | tests/src/com/android/mtp/MtpDocumentsProviderTest.java | 12 |
2 files changed, 55 insertions, 15 deletions
diff --git a/tests/src/com/android/mtp/DocumentLoaderTest.java b/tests/src/com/android/mtp/DocumentLoaderTest.java index db25421..45f89e4 100644 --- a/tests/src/com/android/mtp/DocumentLoaderTest.java +++ b/tests/src/com/android/mtp/DocumentLoaderTest.java @@ -55,13 +55,6 @@ public class DocumentLoaderTest extends AndroidTestCase { mManager = new BlockableTestMtpManager(getContext()); mResolver = new TestContentResolver(); - mLoader = new DocumentLoader( - new MtpDeviceRecord( - 0, "Device", "Key", true, new MtpRoot[0], - TestUtil.OPERATIONS_SUPPORTED, new int[0]), - mManager, - mResolver, - mDatabase); } @Override @@ -71,6 +64,8 @@ public class DocumentLoaderTest extends AndroidTestCase { } public void testBasic() throws Exception { + setUpLoader(); + final Uri uri = DocumentsContract.buildChildDocumentsUri( MtpDocumentsProvider.AUTHORITY, mParentIdentifier.mDocumentId); setUpDocument(mManager, 40); @@ -107,6 +102,55 @@ public class DocumentLoaderTest extends AndroidTestCase { assertEquals(2, mResolver.getChangeCount(uri)); } + public void testError_GetObjectHandles() throws Exception { + mManager = new BlockableTestMtpManager(getContext()) { + @Override + int[] getObjectHandles(int deviceId, int storageId, int parentObjectHandle) + throws IOException { + throw new IOException(); + } + }; + setUpLoader(); + mManager.setObjectHandles(0, 0, MtpManager.OBJECT_HANDLE_ROOT_CHILDREN, null); + try { + try (final Cursor cursor = mLoader.queryChildDocuments( + MtpDocumentsProvider.DEFAULT_DOCUMENT_PROJECTION, mParentIdentifier)) {} + fail(); + } catch (IOException exception) { + // Expect exception. + } + } + + public void testError_GetObjectInfo() throws Exception { + mManager = new BlockableTestMtpManager(getContext()) { + @Override + MtpObjectInfo getObjectInfo(int deviceId, int objectHandle) throws IOException { + if (objectHandle == DocumentLoader.NUM_INITIAL_ENTRIES) { + throw new IOException(); + } else { + return super.getObjectInfo(deviceId, objectHandle); + } + } + }; + setUpLoader(); + setUpDocument(mManager, DocumentLoader.NUM_INITIAL_ENTRIES); + try (final Cursor cursor = mLoader.queryChildDocuments( + MtpDocumentsProvider.DEFAULT_DOCUMENT_PROJECTION, mParentIdentifier)) { + // Even if MtpManager returns an error for a document, loading must complete. + assertFalse(cursor.getExtras().getBoolean(DocumentsContract.EXTRA_LOADING)); + } + } + + private void setUpLoader() { + mLoader = new DocumentLoader( + new MtpDeviceRecord( + 0, "Device", "Key", true, new MtpRoot[0], + TestUtil.OPERATIONS_SUPPORTED, new int[0]), + mManager, + mResolver, + mDatabase); + } + private void setUpDocument(TestMtpManager manager, int count) { int[] childDocuments = new int[count]; for (int i = 0; i < childDocuments.length; i++) { diff --git a/tests/src/com/android/mtp/MtpDocumentsProviderTest.java b/tests/src/com/android/mtp/MtpDocumentsProviderTest.java index 9c1880a..0cfe1e6 100644 --- a/tests/src/com/android/mtp/MtpDocumentsProviderTest.java +++ b/tests/src/com/android/mtp/MtpDocumentsProviderTest.java @@ -419,20 +419,16 @@ public class MtpDocumentsProviderTest extends AndroidTestCase { try { mProvider.queryChildDocuments("1", null, null); fail(); - } catch (Throwable error) { - assertTrue(error instanceof FileNotFoundException); - } + } catch (FileNotFoundException error) {} } public void testQueryChildDocuments_documentError() throws Exception { setupProvider(MtpDatabaseConstants.FLAG_DATABASE_IN_MEMORY); setupRoots(0, new MtpRoot[] { new MtpRoot(0, 0, "Storage", 1000, 1000, "") }); mMtpManager.setObjectHandles(0, 0, -1, new int[] { 1 }); - try { - mProvider.queryChildDocuments("1", null, null); - fail(); - } catch (Throwable error) { - assertTrue(error instanceof FileNotFoundException); + try (final Cursor cursor = mProvider.queryChildDocuments("1", null, null)) { + assertEquals(0, cursor.getCount()); + assertFalse(cursor.getExtras().getBoolean(DocumentsContract.EXTRA_LOADING)); } } |
