diff options
author | Sumir Kataria <sumir@google.com> | 2018-05-30 16:51:36 -0700 |
---|---|---|
committer | Sumir Kataria <sumir@google.com> | 2018-05-30 17:13:17 -0700 |
commit | 5d373d376edddb57cd822dd06ed54f97ef949586 (patch) | |
tree | 6821a0c7cc1c19073f26eae76d5ec60948426100 /work/workmanager/src/androidTest/java/androidx | |
parent | 1666a83dea6436af43f1ff53bff3bdfa3242d0cf (diff) | |
download | support-5d373d376edddb57cd822dd06ed54f97ef949586.tar.gz |
Breaking change: Tell Worker if it's been cancelled.
Currently, Worker#onStopped doesn't know if it's been
cancelled or merely pre-empted by the system. b/79632247
points out some reasons why an explicit signal for
cancellation may be useful. #onStopped now gets a
boolean argument indicating if the Worker has been
cancelled and will never run again. A new method,
Worker#isCancelled, is also provided.
Change-Id: I19424fe718c95e2fd374f40b0afc8a79194c6100
Fixes: 79632247
Test: Added and ran tests.
Diffstat (limited to 'work/workmanager/src/androidTest/java/androidx')
-rw-r--r-- | work/workmanager/src/androidTest/java/androidx/work/impl/WorkerWrapperTest.java | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/work/workmanager/src/androidTest/java/androidx/work/impl/WorkerWrapperTest.java b/work/workmanager/src/androidTest/java/androidx/work/impl/WorkerWrapperTest.java index 8636b99b36d..a8bbb1641df 100644 --- a/work/workmanager/src/androidTest/java/androidx/work/impl/WorkerWrapperTest.java +++ b/work/workmanager/src/androidTest/java/androidx/work/impl/WorkerWrapperTest.java @@ -695,14 +695,14 @@ public class WorkerWrapperTest extends DatabaseTest { .withListener(mMockListener) .build(); Executors.newSingleThreadExecutor().submit(workerWrapper); - workerWrapper.interrupt(); + workerWrapper.interrupt(false); Thread.sleep(6000L); verify(mMockListener).onExecuted(work.getStringId(), false, true); } @Test @SmallTest - public void testInterruption_isMarkedOnRunningWorker() { + public void testInterruptionWithoutCancellation_isMarkedOnRunningWorker() { OneTimeWorkRequest work = new OneTimeWorkRequest.Builder(InterruptionAwareWorker.class).build(); insertWork(work); @@ -722,8 +722,36 @@ public class WorkerWrapperTest extends DatabaseTest { .withWorker(worker) .build(); Executors.newSingleThreadExecutor().submit(workerWrapper); - workerWrapper.interrupt(); + workerWrapper.interrupt(false); assertThat(worker.isStopped(), is(true)); + assertThat(worker.isCancelled(), is(false)); + } + + @Test + @SmallTest + public void testInterruptionWithCancellation_isMarkedOnRunningWorker() { + OneTimeWorkRequest work = + new OneTimeWorkRequest.Builder(InterruptionAwareWorker.class).build(); + insertWork(work); + + Worker worker = WorkerWrapper.workerFromClassName( + mContext, + InterruptionAwareWorker.class.getName(), + work.getId(), + new Extras(Data.EMPTY, Collections.<String>emptyList(), null)); + assertThat(worker, is(notNullValue())); + assertThat(worker.isStopped(), is(false)); + + WorkerWrapper workerWrapper = + new WorkerWrapper.Builder(mContext, mDatabase, work.getStringId()) + .withSchedulers(Collections.singletonList(mMockScheduler)) + .withListener(mMockListener) + .withWorker(worker) + .build(); + Executors.newSingleThreadExecutor().submit(workerWrapper); + workerWrapper.interrupt(true); + assertThat(worker.isStopped(), is(true)); + assertThat(worker.isCancelled(), is(true)); } @Test |