OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package org.chromium.components.background_task_scheduler; | 5 package org.chromium.components.background_task_scheduler; |
6 | 6 |
7 import static org.junit.Assert.assertEquals; | 7 import static org.junit.Assert.assertEquals; |
8 import static org.junit.Assert.assertNotNull; | 8 import static org.junit.Assert.assertNotNull; |
9 | 9 |
10 import android.content.Context; | 10 import android.content.Context; |
11 import android.os.Bundle; | 11 import android.os.Bundle; |
12 | 12 |
13 import com.google.android.gms.gcm.GcmNetworkManager; | 13 import com.google.android.gms.gcm.GcmNetworkManager; |
14 import com.google.android.gms.gcm.TaskParams; | 14 import com.google.android.gms.gcm.TaskParams; |
15 | 15 |
16 import org.junit.Before; | 16 import org.junit.Before; |
17 import org.junit.Test; | 17 import org.junit.Test; |
18 import org.junit.runner.RunWith; | 18 import org.junit.runner.RunWith; |
| 19 import org.mockito.Mock; |
| 20 import org.mockito.MockitoAnnotations; |
19 import org.robolectric.RuntimeEnvironment; | 21 import org.robolectric.RuntimeEnvironment; |
20 import org.robolectric.annotation.Config; | 22 import org.robolectric.annotation.Config; |
21 | 23 |
22 import org.chromium.base.ContextUtils; | 24 import org.chromium.base.ContextUtils; |
23 import org.chromium.base.test.util.Feature; | 25 import org.chromium.base.test.util.Feature; |
24 import org.chromium.testing.local.LocalRobolectricTestRunner; | 26 import org.chromium.testing.local.LocalRobolectricTestRunner; |
25 | 27 |
| 28 import java.util.concurrent.TimeUnit; |
| 29 |
26 /** Unit tests for {@link BackgroundTaskGcmTaskService}. */ | 30 /** Unit tests for {@link BackgroundTaskGcmTaskService}. */ |
27 @RunWith(LocalRobolectricTestRunner.class) | 31 @RunWith(LocalRobolectricTestRunner.class) |
28 @Config(manifest = Config.NONE) | 32 @Config(manifest = Config.NONE) |
29 public class BackgroundTaskGcmTaskServiceTest { | 33 public class BackgroundTaskGcmTaskServiceTest { |
30 static TestBackgroundTaskWithParams sLastTask; | 34 static TestBackgroundTaskWithParams sLastTask; |
31 static boolean sReturnThroughCallback; | 35 static boolean sReturnThroughCallback; |
32 static boolean sNeedsRescheduling; | 36 static boolean sNeedsRescheduling; |
| 37 @Mock |
| 38 private BackgroundTaskSchedulerDelegate mDelegate; |
33 | 39 |
34 @Before | 40 @Before |
35 public void setUp() { | 41 public void setUp() { |
| 42 MockitoAnnotations.initMocks(this); |
36 ContextUtils.initApplicationContextForTests(RuntimeEnvironment.applicati
on); | 43 ContextUtils.initApplicationContextForTests(RuntimeEnvironment.applicati
on); |
| 44 BackgroundTaskSchedulerFactory.setSchedulerForTesting( |
| 45 new BackgroundTaskScheduler(mDelegate)); |
37 sReturnThroughCallback = false; | 46 sReturnThroughCallback = false; |
38 sNeedsRescheduling = false; | 47 sNeedsRescheduling = false; |
39 sLastTask = null; | 48 sLastTask = null; |
| 49 TestBackgroundTask.reset(); |
40 } | 50 } |
41 | 51 |
42 private static class TestBackgroundTaskWithParams extends TestBackgroundTask
{ | 52 private static class TestBackgroundTaskWithParams extends TestBackgroundTask
{ |
43 private TaskParameters mTaskParameters; | 53 private TaskParameters mTaskParameters; |
44 | 54 |
45 public TestBackgroundTaskWithParams() {} | 55 public TestBackgroundTaskWithParams() {} |
46 | 56 |
47 @Override | 57 @Override |
48 public boolean onStartTask( | 58 public boolean onStartTask( |
49 Context context, TaskParameters taskParameters, TaskFinishedCall
back callback) { | 59 Context context, TaskParameters taskParameters, TaskFinishedCall
back callback) { |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
102 @Feature({"BackgroundTaskScheduler"}) | 112 @Feature({"BackgroundTaskScheduler"}) |
103 public void testOnRuntaskDontRescheduleFromCallback() { | 113 public void testOnRuntaskDontRescheduleFromCallback() { |
104 sReturnThroughCallback = true; | 114 sReturnThroughCallback = true; |
105 sNeedsRescheduling = false; | 115 sNeedsRescheduling = false; |
106 TaskParams taskParams = buildTaskParams(TestBackgroundTaskWithParams.cla
ss, new Bundle()); | 116 TaskParams taskParams = buildTaskParams(TestBackgroundTaskWithParams.cla
ss, new Bundle()); |
107 | 117 |
108 BackgroundTaskGcmTaskService taskService = new BackgroundTaskGcmTaskServ
ice(); | 118 BackgroundTaskGcmTaskService taskService = new BackgroundTaskGcmTaskServ
ice(); |
109 assertEquals(taskService.onRunTask(taskParams), GcmNetworkManager.RESULT
_SUCCESS); | 119 assertEquals(taskService.onRunTask(taskParams), GcmNetworkManager.RESULT
_SUCCESS); |
110 } | 120 } |
111 | 121 |
| 122 @Test |
| 123 @Feature({"BackgroundTaskScheduler"}) |
| 124 public void testOnInitializeTasks() { |
| 125 TaskInfo task = TaskInfo.createOneOffTask(TaskIds.TEST, TestBackgroundTa
sk.class, |
| 126 TimeUnit.DAYS.toMillis(1)) |
| 127 .build(); |
| 128 BackgroundTaskSchedulerPrefs.addScheduledTask(task); |
| 129 assertEquals(0, TestBackgroundTask.getRescheduleCalls()); |
| 130 |
| 131 BackgroundTaskGcmTaskService taskService = new BackgroundTaskGcmTaskServ
ice(); |
| 132 taskService.onInitializeTasks(); |
| 133 assertEquals(1, TestBackgroundTask.getRescheduleCalls()); |
| 134 } |
| 135 |
112 private TaskParams buildTaskParams(Class clazz, Bundle taskExtras) { | 136 private TaskParams buildTaskParams(Class clazz, Bundle taskExtras) { |
113 Bundle extras = new Bundle(); | 137 Bundle extras = new Bundle(); |
114 extras.putBundle( | 138 extras.putBundle( |
115 BackgroundTaskSchedulerGcmNetworkManager.BACKGROUND_TASK_EXTRAS_
KEY, taskExtras); | 139 BackgroundTaskSchedulerGcmNetworkManager.BACKGROUND_TASK_EXTRAS_
KEY, taskExtras); |
116 extras.putString(BackgroundTaskSchedulerGcmNetworkManager.BACKGROUND_TAS
K_CLASS_KEY, | 140 extras.putString(BackgroundTaskSchedulerGcmNetworkManager.BACKGROUND_TAS
K_CLASS_KEY, |
117 clazz.getName()); | 141 clazz.getName()); |
118 | 142 |
119 return new TaskParams(Integer.toString(TaskIds.TEST), extras); | 143 return new TaskParams(Integer.toString(TaskIds.TEST), extras); |
120 } | 144 } |
121 } | 145 } |
OLD | NEW |