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

Unified Diff: chrome/android/junit/src/org/chromium/chrome/browser/offlinepages/BackgroundOfflinerTaskTest.java

Issue 2094013003: Uses TriggerConditions in the BackgroundScheduler. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Some naming and improved documentation on the backup scheduling Created 4 years, 6 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: 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));
}
}

Powered by Google App Engine
This is Rietveld 408576698