Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(920)

Side by Side Diff: components/background_task_scheduler/android/junit/src/org/chromium/components/background_task_scheduler/BackgroundTaskGcmTaskServiceTest.java

Issue 2779753002: [Android] Adding scheduling through GcmNetworkManager (Closed)
Patch Set: Ensuring task is called on UI thread Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698