| 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);
|
| + }
|
| +}
|
|
|