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

Unified Diff: components/background_task_scheduler/android/junit/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerTest.java

Issue 2819703002: [Android] Implements OS upgrade check and rescheduling (Closed)
Patch Set: Calling upgrade task from DeferredStartupHandler 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/BackgroundTaskSchedulerTest.java
diff --git a/components/background_task_scheduler/android/junit/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerTest.java b/components/background_task_scheduler/android/junit/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerTest.java
index 69ad03edb3a01f8cc367dacabc5874e0299db4c5..525caef821a838a95e55bfb58d3989551624e157 100644
--- a/components/background_task_scheduler/android/junit/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerTest.java
+++ b/components/background_task_scheduler/android/junit/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerTest.java
@@ -4,6 +4,12 @@
package org.chromium.components.background_task_scheduler;
+import android.os.Build;
+
+import com.google.android.gms.common.ConnectionResult;
+import com.google.android.gms.common.GoogleApiAvailability;
+import com.google.android.gms.gcm.GcmNetworkManager;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -20,6 +26,10 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
+import org.robolectric.internal.ShadowExtractor;
+import org.robolectric.shadows.gms.Shadows;
+import org.robolectric.shadows.gms.common.ShadowGoogleApiAvailability;
+import org.robolectric.util.ReflectionHelpers;
import org.chromium.base.ContextUtils;
import org.chromium.base.test.util.Feature;
@@ -29,7 +39,8 @@ import java.util.concurrent.TimeUnit;
/** Unit tests for {@link BackgroundTaskScheduler}. */
@RunWith(LocalRobolectricTestRunner.class)
-@Config(manifest = Config.NONE)
+@Config(manifest = Config.NONE,
+ shadows = {ShadowGcmNetworkManager.class, ShadowGoogleApiAvailability.class})
public class BackgroundTaskSchedulerTest {
private static final TaskInfo TASK =
TaskInfo.createOneOffTask(
@@ -38,6 +49,7 @@ public class BackgroundTaskSchedulerTest {
@Mock
private BackgroundTaskSchedulerDelegate mDelegate;
+ private ShadowGcmNetworkManager mGcmNetworkManager;
@Before
public void setUp() {
@@ -46,6 +58,12 @@ public class BackgroundTaskSchedulerTest {
BackgroundTaskSchedulerFactory.setSchedulerForTesting(
new BackgroundTaskScheduler(mDelegate));
TestBackgroundTask.reset();
+
+ // Initialize Google Play Services and GCM Network Manager for upgrade testing.
+ Shadows.shadowOf(GoogleApiAvailability.getInstance())
+ .setIsGooglePlayServicesAvailable(ConnectionResult.SUCCESS);
+ mGcmNetworkManager = (ShadowGcmNetworkManager) ShadowExtractor.extract(
+ GcmNetworkManager.getInstance(ContextUtils.getApplicationContext()));
}
@Test
@@ -84,4 +102,52 @@ public class BackgroundTaskSchedulerTest {
assertEquals(1, TestBackgroundTask.getRescheduleCalls());
assertTrue(BackgroundTaskSchedulerPrefs.getScheduledTasks().isEmpty());
}
+
+ @Test
+ @Feature({"BackgroundTaskScheduler"})
+ public void testCheckForOSUpgrade_PreMToMPlus() {
+ BackgroundTaskSchedulerPrefs.setLastSdkVersion(Build.VERSION_CODES.LOLLIPOP);
+ BackgroundTaskSchedulerPrefs.addScheduledTask(TASK);
+ ReflectionHelpers.setStaticField(Build.VERSION.class, "SDK_INT", Build.VERSION_CODES.M);
+
+ BackgroundTaskSchedulerFactory.getScheduler().checkForOSUpgrade(
+ RuntimeEnvironment.application);
+
+ assertEquals(Build.VERSION_CODES.M, BackgroundTaskSchedulerPrefs.getLastSdkVersion());
+ assertTrue(mGcmNetworkManager.getCanceledTaskTags().contains(
+ Integer.toString(TASK.getTaskId())));
+ assertEquals(1, TestBackgroundTask.getRescheduleCalls());
+ }
+
+ /** This scenario tests upgrade from M+ to M+ OS, which requires no rescheduling. */
nyquist 2017/04/18 22:41:08 Could you update this comment to match the test?
fgorski 2017/04/20 22:36:07 Done.
+ @Test
+ @Feature({"BackgroundTaskScheduler"})
+ public void testCheckForOSUpgrade_PreMToPreM() {
+ BackgroundTaskSchedulerPrefs.setLastSdkVersion(Build.VERSION_CODES.KITKAT);
+ BackgroundTaskSchedulerPrefs.addScheduledTask(TASK);
+ ReflectionHelpers.setStaticField(
+ Build.VERSION.class, "SDK_INT", Build.VERSION_CODES.LOLLIPOP);
+
+ BackgroundTaskSchedulerFactory.getScheduler().checkForOSUpgrade(
+ RuntimeEnvironment.application);
+
+ assertEquals(
+ Build.VERSION_CODES.LOLLIPOP, BackgroundTaskSchedulerPrefs.getLastSdkVersion());
+ assertEquals(0, TestBackgroundTask.getRescheduleCalls());
+ }
+
+ /** This scenario tests upgrade from M+ to M+ OS, which requires no rescheduling. */
+ @Test
+ @Feature({"BackgroundTaskScheduler"})
+ public void testCheckForOSUpgrade_MPlusToMPlus() {
+ BackgroundTaskSchedulerPrefs.setLastSdkVersion(Build.VERSION_CODES.M);
+ BackgroundTaskSchedulerPrefs.addScheduledTask(TASK);
+ ReflectionHelpers.setStaticField(Build.VERSION.class, "SDK_INT", Build.VERSION_CODES.N);
+
+ BackgroundTaskSchedulerFactory.getScheduler().checkForOSUpgrade(
+ RuntimeEnvironment.application);
+
+ assertEquals(Build.VERSION_CODES.N, BackgroundTaskSchedulerPrefs.getLastSdkVersion());
+ assertEquals(0, TestBackgroundTask.getRescheduleCalls());
+ }
}

Powered by Google App Engine
This is Rietveld 408576698