Commit 321bc9c2 by eguven Committed by Oliver Woodman

Simplify DownloadService by removing broadcasting

Client can add this functionality by extending DownloadService.

Also made DownloadManager accept multiple listeners. So instead of
broadcast event, client can listen to DownloadManager directly.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=174335820
parent 4cb2be2a
...@@ -42,8 +42,7 @@ public class DownloadManagerTest extends InstrumentationTestCase { ...@@ -42,8 +42,7 @@ public class DownloadManagerTest extends InstrumentationTestCase {
private DownloadManager downloadManager; private DownloadManager downloadManager;
private File actionFile; private File actionFile;
private ConditionVariable downloadFinishedCondition; private TestDownloadListener testDownloadListener;
private Throwable downloadError;
@Override @Override
public void setUp() throws Exception { public void setUp() throws Exception {
...@@ -55,8 +54,8 @@ public class DownloadManagerTest extends InstrumentationTestCase { ...@@ -55,8 +54,8 @@ public class DownloadManagerTest extends InstrumentationTestCase {
new DownloaderConstructorHelper(Mockito.mock(Cache.class), DummyDataSource.FACTORY), new DownloaderConstructorHelper(Mockito.mock(Cache.class), DummyDataSource.FACTORY),
100, actionFile.getAbsolutePath()); 100, actionFile.getAbsolutePath());
downloadFinishedCondition = new ConditionVariable(); testDownloadListener = new TestDownloadListener();
downloadManager.setListener(new TestDownloadListener()); downloadManager.addListener(testDownloadListener);
} }
@Override @Override
...@@ -133,7 +132,7 @@ public class DownloadManagerTest extends InstrumentationTestCase { ...@@ -133,7 +132,7 @@ public class DownloadManagerTest extends InstrumentationTestCase {
// removeAction2 is posted. removeAction1 and downloadAction3 is canceled so removeAction2 // removeAction2 is posted. removeAction1 and downloadAction3 is canceled so removeAction2
// starts immediately. // starts immediately.
removeAction2.post().assertStarted().finish().assertEnded(); removeAction2.post().assertStarted().finish().assertEnded();
blockUntilTasksCompleteAndThrowAnyDownloadError(); testDownloadListener.blockUntilTasksCompleteAndThrowAnyDownloadError();
} }
public void testMultipleRemoveActionWaitsLastCancelsAllOther() throws Throwable { public void testMultipleRemoveActionWaitsLastCancelsAllOther() throws Throwable {
...@@ -150,7 +149,7 @@ public class DownloadManagerTest extends InstrumentationTestCase { ...@@ -150,7 +149,7 @@ public class DownloadManagerTest extends InstrumentationTestCase {
removeAction1.finish().assertCancelled(); removeAction1.finish().assertCancelled();
removeAction3.assertStarted().finish().assertEnded(); removeAction3.assertStarted().finish().assertEnded();
blockUntilTasksCompleteAndThrowAnyDownloadError(); testDownloadListener.blockUntilTasksCompleteAndThrowAnyDownloadError();
} }
public void testMultipleWaitingDownloadActionStartsInParallel() throws Throwable { public void testMultipleWaitingDownloadActionStartsInParallel() throws Throwable {
...@@ -168,7 +167,7 @@ public class DownloadManagerTest extends InstrumentationTestCase { ...@@ -168,7 +167,7 @@ public class DownloadManagerTest extends InstrumentationTestCase {
downloadAction1.finish().assertEnded(); downloadAction1.finish().assertEnded();
downloadAction2.finish().assertEnded(); downloadAction2.finish().assertEnded();
blockUntilTasksCompleteAndThrowAnyDownloadError(); testDownloadListener.blockUntilTasksCompleteAndThrowAnyDownloadError();
} }
public void testDifferentMediaDownloadActionsPreserveOrder() throws Throwable { public void testDifferentMediaDownloadActionsPreserveOrder() throws Throwable {
...@@ -186,7 +185,7 @@ public class DownloadManagerTest extends InstrumentationTestCase { ...@@ -186,7 +185,7 @@ public class DownloadManagerTest extends InstrumentationTestCase {
downloadAction1.finish().assertEnded(); downloadAction1.finish().assertEnded();
downloadAction2.finish().assertEnded(); downloadAction2.finish().assertEnded();
blockUntilTasksCompleteAndThrowAnyDownloadError(); testDownloadListener.blockUntilTasksCompleteAndThrowAnyDownloadError();
} }
public void testDifferentMediaRemoveActionsDoNotPreserveOrder() throws Throwable { public void testDifferentMediaRemoveActionsDoNotPreserveOrder() throws Throwable {
...@@ -204,12 +203,12 @@ public class DownloadManagerTest extends InstrumentationTestCase { ...@@ -204,12 +203,12 @@ public class DownloadManagerTest extends InstrumentationTestCase {
removeAction1.assertStarted(); removeAction1.assertStarted();
removeAction1.finish().assertEnded(); removeAction1.finish().assertEnded();
blockUntilTasksCompleteAndThrowAnyDownloadError(); testDownloadListener.blockUntilTasksCompleteAndThrowAnyDownloadError();
} }
private void doTestActionRuns(FakeDownloadAction action) throws Throwable { private void doTestActionRuns(FakeDownloadAction action) throws Throwable {
action.post().assertStarted().finish().assertEnded(); action.post().assertStarted().finish().assertEnded();
blockUntilTasksCompleteAndThrowAnyDownloadError(); testDownloadListener.blockUntilTasksCompleteAndThrowAnyDownloadError();
} }
private void doTestActionsRunSequentially(FakeDownloadAction action1, private void doTestActionsRunSequentially(FakeDownloadAction action1,
...@@ -221,7 +220,7 @@ public class DownloadManagerTest extends InstrumentationTestCase { ...@@ -221,7 +220,7 @@ public class DownloadManagerTest extends InstrumentationTestCase {
action2.assertStarted(); action2.assertStarted();
action2.finish().assertEnded(); action2.finish().assertEnded();
blockUntilTasksCompleteAndThrowAnyDownloadError(); testDownloadListener.blockUntilTasksCompleteAndThrowAnyDownloadError();
} }
private void doTestActionsRunInParallel(FakeDownloadAction action1, private void doTestActionsRunInParallel(FakeDownloadAction action1,
...@@ -230,7 +229,7 @@ public class DownloadManagerTest extends InstrumentationTestCase { ...@@ -230,7 +229,7 @@ public class DownloadManagerTest extends InstrumentationTestCase {
action2.post().assertStarted(); action2.post().assertStarted();
action1.finish().assertEnded(); action1.finish().assertEnded();
action2.finish().assertEnded(); action2.finish().assertEnded();
blockUntilTasksCompleteAndThrowAnyDownloadError(); testDownloadListener.blockUntilTasksCompleteAndThrowAnyDownloadError();
} }
private FakeDownloadAction createDownloadAction(String mediaId) { private FakeDownloadAction createDownloadAction(String mediaId) {
...@@ -241,15 +240,15 @@ public class DownloadManagerTest extends InstrumentationTestCase { ...@@ -241,15 +240,15 @@ public class DownloadManagerTest extends InstrumentationTestCase {
return new FakeDownloadAction(downloadManager, mediaId, true); return new FakeDownloadAction(downloadManager, mediaId, true);
} }
private void blockUntilTasksCompleteAndThrowAnyDownloadError() throws Throwable { private static class TestDownloadListener implements DownloadListener {
assertTrue(downloadFinishedCondition.block(ASSERT_TRUE_TIMEOUT));
downloadFinishedCondition.close(); private ConditionVariable downloadFinishedCondition;
if (downloadError != null) { private Throwable downloadError;
throw downloadError;
private TestDownloadListener() {
downloadFinishedCondition = new ConditionVariable();
} }
}
private class TestDownloadListener implements DownloadListener {
@Override @Override
public void onStateChange(DownloadManager downloadManager, DownloadTask downloadTask, int state, public void onStateChange(DownloadManager downloadManager, DownloadTask downloadTask, int state,
Throwable error) { Throwable error) {
...@@ -263,6 +262,15 @@ public class DownloadManagerTest extends InstrumentationTestCase { ...@@ -263,6 +262,15 @@ public class DownloadManagerTest extends InstrumentationTestCase {
public void onTasksFinished(DownloadManager downloadManager) { public void onTasksFinished(DownloadManager downloadManager) {
downloadFinishedCondition.open(); downloadFinishedCondition.open();
} }
private void blockUntilTasksCompleteAndThrowAnyDownloadError() throws Throwable {
assertTrue(downloadFinishedCondition.block(ASSERT_TRUE_TIMEOUT));
downloadFinishedCondition.close();
if (downloadError != null) {
throw downloadError;
}
}
} }
/** /**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment