OLD | NEW |
(Empty) | |
| 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 |
| 3 // found in the LICENSE file. |
| 4 |
| 5 package org.chromium.components.background_task_scheduler; |
| 6 |
| 7 import static org.junit.Assert.assertEquals; |
| 8 import static org.junit.Assert.assertNotNull; |
| 9 |
| 10 import android.content.Context; |
| 11 import android.os.Bundle; |
| 12 |
| 13 import com.google.android.gms.gcm.GcmNetworkManager; |
| 14 import com.google.android.gms.gcm.TaskParams; |
| 15 |
| 16 import org.junit.Before; |
| 17 import org.junit.Test; |
| 18 import org.junit.runner.RunWith; |
| 19 import org.robolectric.RuntimeEnvironment; |
| 20 import org.robolectric.annotation.Config; |
| 21 |
| 22 import org.chromium.base.ContextUtils; |
| 23 import org.chromium.base.test.util.Feature; |
| 24 import org.chromium.testing.local.LocalRobolectricTestRunner; |
| 25 |
| 26 /** Unit tests for {@link BackgroundTaskGcmTaskService}. */ |
| 27 @RunWith(LocalRobolectricTestRunner.class) |
| 28 @Config(manifest = Config.NONE) |
| 29 public class BackgroundTaskGcmTaskServiceTest { |
| 30 static TestBackgroundTaskWithParams sLastTask; |
| 31 static boolean sReturnThroughCallback; |
| 32 static boolean sNeedsRescheduling; |
| 33 |
| 34 @Before |
| 35 public void setUp() { |
| 36 ContextUtils.initApplicationContextForTests(RuntimeEnvironment.applicati
on); |
| 37 sReturnThroughCallback = false; |
| 38 sNeedsRescheduling = false; |
| 39 sLastTask = null; |
| 40 } |
| 41 |
| 42 private static class TestBackgroundTaskWithParams extends TestBackgroundTask
{ |
| 43 private TaskParameters mTaskParameters; |
| 44 |
| 45 public TestBackgroundTaskWithParams() {} |
| 46 |
| 47 @Override |
| 48 public boolean onStartTask( |
| 49 Context context, TaskParameters taskParameters, TaskFinishedCall
back callback) { |
| 50 mTaskParameters = taskParameters; |
| 51 callback.taskFinished(sNeedsRescheduling); |
| 52 sLastTask = this; |
| 53 return sReturnThroughCallback; |
| 54 } |
| 55 |
| 56 public TaskParameters getTaskParameters() { |
| 57 return mTaskParameters; |
| 58 } |
| 59 } |
| 60 |
| 61 private static class TestBackgroundTaskNoPublicConstructor extends TestBackg
roundTask {} |
| 62 |
| 63 @Test |
| 64 @Feature({"BackgroundTaskScheduler"}) |
| 65 public void testOnRunTask() { |
| 66 Bundle taskExtras = new Bundle(); |
| 67 taskExtras.putString("foo", "bar"); |
| 68 TaskParams taskParams = buildTaskParams(TestBackgroundTaskWithParams.cla
ss, taskExtras); |
| 69 |
| 70 BackgroundTaskGcmTaskService taskService = new BackgroundTaskGcmTaskServ
ice(); |
| 71 assertEquals(taskService.onRunTask(taskParams), GcmNetworkManager.RESULT
_SUCCESS); |
| 72 |
| 73 assertNotNull(sLastTask); |
| 74 TaskParameters parameters = sLastTask.getTaskParameters(); |
| 75 |
| 76 assertEquals(parameters.getTaskId(), TaskIds.TEST); |
| 77 assertEquals(parameters.getExtras().getString("foo"), "bar"); |
| 78 } |
| 79 |
| 80 @Test |
| 81 @Feature({"BackgroundTaskScheduler"}) |
| 82 public void testOnRunTaskMissingConstructor() { |
| 83 TaskParams taskParams = |
| 84 buildTaskParams(TestBackgroundTaskNoPublicConstructor.class, new
Bundle()); |
| 85 |
| 86 BackgroundTaskGcmTaskService taskService = new BackgroundTaskGcmTaskServ
ice(); |
| 87 assertEquals(taskService.onRunTask(taskParams), GcmNetworkManager.RESULT
_FAILURE); |
| 88 } |
| 89 |
| 90 @Test |
| 91 @Feature({"BackgroundTaskScheduler"}) |
| 92 public void testOnRuntaskNeedsReschedulingFromCallback() { |
| 93 sReturnThroughCallback = true; |
| 94 sNeedsRescheduling = true; |
| 95 TaskParams taskParams = buildTaskParams(TestBackgroundTaskWithParams.cla
ss, new Bundle()); |
| 96 |
| 97 BackgroundTaskGcmTaskService taskService = new BackgroundTaskGcmTaskServ
ice(); |
| 98 assertEquals(taskService.onRunTask(taskParams), GcmNetworkManager.RESULT
_RESCHEDULE); |
| 99 } |
| 100 |
| 101 @Test |
| 102 @Feature({"BackgroundTaskScheduler"}) |
| 103 public void testOnRuntaskDontRescheduleFromCallback() { |
| 104 sReturnThroughCallback = true; |
| 105 sNeedsRescheduling = false; |
| 106 TaskParams taskParams = buildTaskParams(TestBackgroundTaskWithParams.cla
ss, new Bundle()); |
| 107 |
| 108 BackgroundTaskGcmTaskService taskService = new BackgroundTaskGcmTaskServ
ice(); |
| 109 assertEquals(taskService.onRunTask(taskParams), GcmNetworkManager.RESULT
_SUCCESS); |
| 110 } |
| 111 |
| 112 private TaskParams buildTaskParams(Class clazz, Bundle taskExtras) { |
| 113 Bundle extras = new Bundle(); |
| 114 extras.putBundle( |
| 115 BackgroundTaskSchedulerGcmNetworkManager.BACKGROUND_TASK_EXTRAS_
KEY, taskExtras); |
| 116 extras.putString(BackgroundTaskSchedulerGcmNetworkManager.BACKGROUND_TAS
K_CLASS_KEY, |
| 117 clazz.getName()); |
| 118 |
| 119 return new TaskParams(Integer.toString(TaskIds.TEST), extras); |
| 120 } |
| 121 } |
OLD | NEW |