diff options
| author | 2016-04-12 03:54:57 +0000 | |
|---|---|---|
| committer | 2016-04-12 03:54:59 +0000 | |
| commit | 6b34b31059fbe21ed947c0213df56e04f6098f59 (patch) | |
| tree | 8d5104288f4a286c7d4ad0fd5b9ffce1f725b283 | |
| parent | 5b6fd0fc1a3bf4ff964159080a6a21a534a52212 (diff) | |
| parent | 3edcde295326db07520ed5eedde087c24c16dfd0 (diff) | |
Merge "Fix flakiness DocumentLoader#testCancelTask." into nyc-dev
| -rw-r--r-- | packages/MtpDocumentsProvider/src/com/android/mtp/DocumentLoader.java | 7 | ||||
| -rw-r--r-- | packages/MtpDocumentsProvider/tests/src/com/android/mtp/DocumentLoaderTest.java | 17 |
2 files changed, 15 insertions, 9 deletions
diff --git a/packages/MtpDocumentsProvider/src/com/android/mtp/DocumentLoader.java b/packages/MtpDocumentsProvider/src/com/android/mtp/DocumentLoader.java index 329afdd4f17c..6ed4ea1db499 100644 --- a/packages/MtpDocumentsProvider/src/com/android/mtp/DocumentLoader.java +++ b/packages/MtpDocumentsProvider/src/com/android/mtp/DocumentLoader.java @@ -196,9 +196,10 @@ class DocumentLoader implements AutoCloseable { } task.loadObjectInfoList(NUM_LOADING_ENTRIES); final boolean shouldNotify = - task.mLastNotified.getTime() < - new Date().getTime() - NOTIFY_PERIOD_MS || - task.getState() != LoaderTask.STATE_LOADING; + task.getState() != LoaderTask.STATE_CANCELLED && + (task.mLastNotified.getTime() < + new Date().getTime() - NOTIFY_PERIOD_MS || + task.getState() != LoaderTask.STATE_LOADING); if (shouldNotify) { task.notify(mResolver); } diff --git a/packages/MtpDocumentsProvider/tests/src/com/android/mtp/DocumentLoaderTest.java b/packages/MtpDocumentsProvider/tests/src/com/android/mtp/DocumentLoaderTest.java index 60dd7e16a1d9..a3c6bd77cefb 100644 --- a/packages/MtpDocumentsProvider/tests/src/com/android/mtp/DocumentLoaderTest.java +++ b/packages/MtpDocumentsProvider/tests/src/com/android/mtp/DocumentLoaderTest.java @@ -143,9 +143,9 @@ public class DocumentLoaderTest extends AndroidTestCase { } } - public void testCancelTask() throws IOException, InterruptedException { + public void testCancelTask() throws IOException, InterruptedException, TimeoutException { setUpDocument(mManager, - DocumentLoader.NUM_INITIAL_ENTRIES + DocumentLoader.NUM_LOADING_ENTRIES + 1); + DocumentLoader.NUM_INITIAL_ENTRIES + 1); // Block the first iteration in the background thread. mManager.blockDocument( @@ -155,19 +155,24 @@ public class DocumentLoaderTest extends AndroidTestCase { MtpDocumentsProvider.DEFAULT_DOCUMENT_PROJECTION, mParentIdentifier)) { assertTrue(cursor.getExtras().getBoolean(DocumentsContract.EXTRA_LOADING)); } - Thread.sleep(DocumentLoader.NOTIFY_PERIOD_MS); + + final Uri uri = DocumentsContract.buildChildDocumentsUri( + MtpDocumentsProvider.AUTHORITY, mParentIdentifier.mDocumentId); + assertEquals(0, mResolver.getChangeCount(uri)); // Clear task while the first iteration is being blocked. + mLoader.cancelTask(mParentIdentifier); mManager.unblockDocument( 0, DocumentLoader.NUM_INITIAL_ENTRIES + 1); - mLoader.cancelTask(mParentIdentifier); - - Thread.sleep(DocumentLoader.NOTIFY_PERIOD_MS * 2); + Thread.sleep(DocumentLoader.NOTIFY_PERIOD_MS); + assertEquals(0, mResolver.getChangeCount(uri)); // Check if it's OK to query invalidated task. try (final Cursor cursor = mLoader.queryChildDocuments( MtpDocumentsProvider.DEFAULT_DOCUMENT_PROJECTION, mParentIdentifier)) { + assertTrue(cursor.getExtras().getBoolean(DocumentsContract.EXTRA_LOADING)); } + mResolver.waitForNotification(uri, 1); } private void setUpLoader() { |