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

Unified 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, 8 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 side-by-side diff with in-line comments
Download patch
Index: components/background_task_scheduler/android/junit/src/org/chromium/components/background_task_scheduler/BackgroundTaskGcmTaskServiceTest.java
diff --git a/components/background_task_scheduler/android/junit/src/org/chromium/components/background_task_scheduler/BackgroundTaskGcmTaskServiceTest.java b/components/background_task_scheduler/android/junit/src/org/chromium/components/background_task_scheduler/BackgroundTaskGcmTaskServiceTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..b40366c83f7ff1a2d1a062cbffcfeac629f60c3e
--- /dev/null
+++ b/components/background_task_scheduler/android/junit/src/org/chromium/components/background_task_scheduler/BackgroundTaskGcmTaskServiceTest.java
@@ -0,0 +1,121 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.components.background_task_scheduler;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import android.content.Context;
+import android.os.Bundle;
+
+import com.google.android.gms.gcm.GcmNetworkManager;
+import com.google.android.gms.gcm.TaskParams;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import org.chromium.base.ContextUtils;
+import org.chromium.base.test.util.Feature;
+import org.chromium.testing.local.LocalRobolectricTestRunner;
+
+/** Unit tests for {@link BackgroundTaskGcmTaskService}. */
+@RunWith(LocalRobolectricTestRunner.class)
+@Config(manifest = Config.NONE)
+public class BackgroundTaskGcmTaskServiceTest {
+ static TestBackgroundTaskWithParams sLastTask;
+ static boolean sReturnThroughCallback;
+ static boolean sNeedsRescheduling;
+
+ @Before
+ public void setUp() {
+ ContextUtils.initApplicationContextForTests(RuntimeEnvironment.application);
+ sReturnThroughCallback = false;
+ sNeedsRescheduling = false;
+ sLastTask = null;
+ }
+
+ private static class TestBackgroundTaskWithParams extends TestBackgroundTask {
+ private TaskParameters mTaskParameters;
+
+ public TestBackgroundTaskWithParams() {}
+
+ @Override
+ public boolean onStartTask(
+ Context context, TaskParameters taskParameters, TaskFinishedCallback callback) {
+ mTaskParameters = taskParameters;
+ callback.taskFinished(sNeedsRescheduling);
+ sLastTask = this;
+ return sReturnThroughCallback;
+ }
+
+ public TaskParameters getTaskParameters() {
+ return mTaskParameters;
+ }
+ }
+
+ private static class TestBackgroundTaskNoPublicConstructor extends TestBackgroundTask {}
+
+ @Test
+ @Feature({"BackgroundTaskScheduler"})
+ public void testOnRunTask() {
+ Bundle taskExtras = new Bundle();
+ taskExtras.putString("foo", "bar");
+ TaskParams taskParams = buildTaskParams(TestBackgroundTaskWithParams.class, taskExtras);
+
+ BackgroundTaskGcmTaskService taskService = new BackgroundTaskGcmTaskService();
+ assertEquals(taskService.onRunTask(taskParams), GcmNetworkManager.RESULT_SUCCESS);
+
+ assertNotNull(sLastTask);
+ TaskParameters parameters = sLastTask.getTaskParameters();
+
+ assertEquals(parameters.getTaskId(), TaskIds.TEST);
+ assertEquals(parameters.getExtras().getString("foo"), "bar");
+ }
+
+ @Test
+ @Feature({"BackgroundTaskScheduler"})
+ public void testOnRunTaskMissingConstructor() {
+ TaskParams taskParams =
+ buildTaskParams(TestBackgroundTaskNoPublicConstructor.class, new Bundle());
+
+ BackgroundTaskGcmTaskService taskService = new BackgroundTaskGcmTaskService();
+ assertEquals(taskService.onRunTask(taskParams), GcmNetworkManager.RESULT_FAILURE);
+ }
+
+ @Test
+ @Feature({"BackgroundTaskScheduler"})
+ public void testOnRuntaskNeedsReschedulingFromCallback() {
+ sReturnThroughCallback = true;
+ sNeedsRescheduling = true;
+ TaskParams taskParams = buildTaskParams(TestBackgroundTaskWithParams.class, new Bundle());
+
+ BackgroundTaskGcmTaskService taskService = new BackgroundTaskGcmTaskService();
+ assertEquals(taskService.onRunTask(taskParams), GcmNetworkManager.RESULT_RESCHEDULE);
+ }
+
+ @Test
+ @Feature({"BackgroundTaskScheduler"})
+ public void testOnRuntaskDontRescheduleFromCallback() {
+ sReturnThroughCallback = true;
+ sNeedsRescheduling = false;
+ TaskParams taskParams = buildTaskParams(TestBackgroundTaskWithParams.class, new Bundle());
+
+ BackgroundTaskGcmTaskService taskService = new BackgroundTaskGcmTaskService();
+ assertEquals(taskService.onRunTask(taskParams), GcmNetworkManager.RESULT_SUCCESS);
+ }
+
+ private TaskParams buildTaskParams(Class clazz, Bundle taskExtras) {
+ Bundle extras = new Bundle();
+ extras.putBundle(
+ BackgroundTaskSchedulerGcmNetworkManager.BACKGROUND_TASK_EXTRAS_KEY, taskExtras);
+ extras.putString(BackgroundTaskSchedulerGcmNetworkManager.BACKGROUND_TASK_CLASS_KEY,
+ clazz.getName());
+
+ return new TaskParams(Integer.toString(TaskIds.TEST), extras);
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698