| Index: chrome/android/junit/src/org/chromium/chrome/browser/offlinepages/BackgroundOfflinerTaskTest.java
|
| diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/offlinepages/BackgroundOfflinerTaskTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/offlinepages/BackgroundOfflinerTaskTest.java
|
| index c677f134fd70d5b86316b4041dd0b6e4e12dee55..e4d58c9bcd3321ec0209bdc81202f0171917463f 100644
|
| --- a/chrome/android/junit/src/org/chromium/chrome/browser/offlinepages/BackgroundOfflinerTaskTest.java
|
| +++ b/chrome/android/junit/src/org/chromium/chrome/browser/offlinepages/BackgroundOfflinerTaskTest.java
|
| @@ -4,14 +4,22 @@
|
|
|
| package org.chromium.chrome.browser.offlinepages;
|
|
|
| +import static org.junit.Assert.assertEquals;
|
| +import static org.junit.Assert.assertFalse;
|
| import static org.junit.Assert.assertNotNull;
|
| import static org.junit.Assert.assertNull;
|
| import static org.junit.Assert.assertSame;
|
| import static org.junit.Assert.assertTrue;
|
| +import static org.mockito.Mockito.any;
|
| +import static org.mockito.Mockito.when;
|
|
|
| +import android.content.Context;
|
| import android.os.Bundle;
|
|
|
| +import com.google.android.gms.gcm.Task;
|
| +
|
| import org.chromium.base.BaseChromiumApplication;
|
| +import org.chromium.base.metrics.RecordHistogram;
|
| import org.chromium.base.test.util.Feature;
|
| import org.chromium.chrome.browser.ChromeBackgroundServiceWaiter;
|
| import org.chromium.net.ConnectionType;
|
| @@ -19,6 +27,8 @@ import org.chromium.testing.local.LocalRobolectricTestRunner;
|
| import org.junit.Before;
|
| import org.junit.Test;
|
| import org.junit.runner.RunWith;
|
| +import org.mockito.Mock;
|
| +import org.mockito.MockitoAnnotations;
|
| import org.robolectric.Robolectric;
|
| import org.robolectric.annotation.Config;
|
|
|
| @@ -30,16 +40,37 @@ import org.robolectric.annotation.Config;
|
| application = BaseChromiumApplication.class,
|
| shadows = { ShadowGcmNetworkManager.class })
|
| public class BackgroundOfflinerTaskTest {
|
| + private static final boolean REQUIRE_POWER = true;
|
| + private static final boolean REQUIRE_UNMETERED = true;
|
| + private static final boolean POWER_CONNECTED = true;
|
| + private static final int MINIMUM_BATTERY_LEVEL = 33;
|
| +
|
| + @Mock
|
| + private OfflinePageUtils mOfflinePageUtils;
|
| +
|
| private Bundle mTaskExtras;
|
| private long mTestTime;
|
| private StubBackgroundSchedulerProcessor mStubBackgroundSchedulerProcessor;
|
| + private TriggerConditions mTriggerConditions =
|
| + new TriggerConditions(!REQUIRE_POWER, MINIMUM_BATTERY_LEVEL, REQUIRE_UNMETERED);
|
| + private DeviceConditions mDeviceConditions = new DeviceConditions(
|
| + !POWER_CONNECTED, MINIMUM_BATTERY_LEVEL + 5, ConnectionType.CONNECTION_3G);
|
|
|
| @Before
|
| public void setUp() throws Exception {
|
| - // Build a bundle
|
| + MockitoAnnotations.initMocks(this);
|
| + when(mOfflinePageUtils.getDeviceConditionsImpl(any(Context.class)))
|
| + .thenReturn(mDeviceConditions);
|
| +
|
| + // Build a bundle with trigger conditions.
|
| mTaskExtras = new Bundle();
|
| TaskExtrasPacker.packTimeInBundle(mTaskExtras);
|
| + TaskExtrasPacker.packTriggerConditionsInBundle(mTaskExtras, mTriggerConditions);
|
| +
|
| + OfflinePageUtils.setInstanceForTesting(mOfflinePageUtils);
|
| mStubBackgroundSchedulerProcessor = new StubBackgroundSchedulerProcessor();
|
| + RecordHistogram.disableForTests();
|
| + ShadowGcmNetworkManager.clear();
|
| }
|
|
|
| @Test
|
| @@ -48,13 +79,11 @@ public class BackgroundOfflinerTaskTest {
|
| BackgroundOfflinerTask task =
|
| new BackgroundOfflinerTask(mStubBackgroundSchedulerProcessor);
|
| ChromeBackgroundServiceWaiter waiter = new ChromeBackgroundServiceWaiter(1);
|
| - DeviceConditions deviceConditions =
|
| - new DeviceConditions(false, 51, ConnectionType.CONNECTION_WIFI);
|
| - task.processBackgroundRequests(mTaskExtras, deviceConditions, waiter);
|
| + task.processBackgroundRequests(mTaskExtras, mDeviceConditions, waiter);
|
|
|
| // Check with ShadowBackgroundBackgroundSchedulerProcessor that startProcessing got called.
|
| assertTrue(mStubBackgroundSchedulerProcessor.getStartProcessingCalled());
|
| - assertSame(deviceConditions, mStubBackgroundSchedulerProcessor.getDeviceConditions());
|
| + assertSame(mDeviceConditions, mStubBackgroundSchedulerProcessor.getDeviceConditions());
|
|
|
| // TODO(dougarnett): Call processor callback and verify waiter signaled.
|
| }
|
| @@ -68,15 +97,45 @@ public class BackgroundOfflinerTaskTest {
|
| assertTrue(task.startBackgroundRequests(Robolectric.application, mTaskExtras, waiter));
|
|
|
| // Check that the backup task was scheduled.
|
| - assertNotNull("Backup task scheduled", ShadowGcmNetworkManager.getScheduledTask());
|
| + Task gcmTask = ShadowGcmNetworkManager.getScheduledTask();
|
| + assertNotNull("Backup task scheduled", gcmTask);
|
| + assertEquals(mTriggerConditions,
|
| + TaskExtrasPacker.unpackTriggerConditionsFromBundle(gcmTask.getExtras()));
|
|
|
| // Check with ShadowBackgroundBackgroundSchedulerProcessor that startProcessing got called.
|
| assertTrue(mStubBackgroundSchedulerProcessor.getStartProcessingCalled());
|
| + assertSame(mDeviceConditions, mStubBackgroundSchedulerProcessor.getDeviceConditions());
|
| }
|
|
|
| @Test
|
| @Feature({"OfflinePages"})
|
| - public void testCallback() {
|
| - // TODO(petewil): Implement the test
|
| + public void testStartBackgroundRequestsForLowBatteryLevel() {
|
| + DeviceConditions deviceConditionsLowBattery = new DeviceConditions(
|
| + !POWER_CONNECTED, MINIMUM_BATTERY_LEVEL - 1, ConnectionType.CONNECTION_WIFI);
|
| + when(mOfflinePageUtils.getDeviceConditionsImpl(any(Context.class)))
|
| + .thenReturn(deviceConditionsLowBattery);
|
| + BackgroundOfflinerTask task = new BackgroundOfflinerTask(mStubBackgroundSchedulerProcessor);
|
| + ChromeBackgroundServiceWaiter waiter = new ChromeBackgroundServiceWaiter(1);
|
| + assertNull("Nothing scheduled", ShadowGcmNetworkManager.getScheduledTask());
|
| + assertFalse(task.startBackgroundRequests(Robolectric.application, mTaskExtras, waiter));
|
| +
|
| + // Check that the backup task was scheduled.
|
| + Task gcmTask = ShadowGcmNetworkManager.getScheduledTask();
|
| + assertNotNull("Backup task scheduled", gcmTask);
|
| + assertEquals(mTriggerConditions,
|
| + TaskExtrasPacker.unpackTriggerConditionsFromBundle(gcmTask.getExtras()));
|
| +
|
| + // Check that startProcessing was NOT called.
|
| + assertFalse(mStubBackgroundSchedulerProcessor.getStartProcessingCalled());
|
| +
|
| + // Now verify low battery level but with power connected will start processing.
|
| + DeviceConditions deviceConditionsPowerConnected = new DeviceConditions(
|
| + POWER_CONNECTED, MINIMUM_BATTERY_LEVEL - 1, ConnectionType.CONNECTION_WIFI);
|
| + when(mOfflinePageUtils.getDeviceConditionsImpl(any(Context.class)))
|
| + .thenReturn(deviceConditionsPowerConnected);
|
| + BackgroundOfflinerTask task2 =
|
| + new BackgroundOfflinerTask(mStubBackgroundSchedulerProcessor);
|
| + ChromeBackgroundServiceWaiter waiter2 = new ChromeBackgroundServiceWaiter(1);
|
| + assertTrue(task2.startBackgroundRequests(Robolectric.application, mTaskExtras, waiter2));
|
| }
|
| }
|
|
|