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

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

Issue 2243353002: (Reland) Update all Robolectric tests to Robolectric 3.0 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 4 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser.offlinepages; 5 package org.chromium.chrome.browser.offlinepages;
6 6
7 import static org.junit.Assert.assertEquals; 7 import static org.junit.Assert.assertEquals;
8 import static org.junit.Assert.assertFalse; 8 import static org.junit.Assert.assertFalse;
9 import static org.junit.Assert.assertNotNull; 9 import static org.junit.Assert.assertNotNull;
10 import static org.junit.Assert.assertNull; 10 import static org.junit.Assert.assertNull;
11 import static org.junit.Assert.assertSame; 11 import static org.junit.Assert.assertSame;
12 import static org.junit.Assert.assertTrue; 12 import static org.junit.Assert.assertTrue;
13 import static org.mockito.Mockito.any; 13 import static org.mockito.Mockito.any;
14 import static org.mockito.Mockito.when; 14 import static org.mockito.Mockito.when;
15 15
16 import android.app.Activity; 16 import android.app.Activity;
17 import android.content.Context; 17 import android.content.Context;
18 import android.os.Bundle; 18 import android.os.Bundle;
19 19
20 import com.google.android.gms.gcm.GcmNetworkManager;
20 import com.google.android.gms.gcm.Task; 21 import com.google.android.gms.gcm.Task;
21 22
22 import org.chromium.base.ActivityState; 23 import org.chromium.base.ActivityState;
23 import org.chromium.base.ApplicationStatus; 24 import org.chromium.base.ApplicationStatus;
24 import org.chromium.base.BaseChromiumApplication; 25 import org.chromium.base.BaseChromiumApplication;
25 import org.chromium.base.BaseSwitches; 26 import org.chromium.base.BaseSwitches;
26 import org.chromium.base.CommandLine; 27 import org.chromium.base.CommandLine;
27 import org.chromium.base.SysUtils; 28 import org.chromium.base.SysUtils;
28 import org.chromium.base.metrics.RecordHistogram; 29 import org.chromium.base.metrics.RecordHistogram;
29 import org.chromium.base.test.util.Feature; 30 import org.chromium.base.test.util.Feature;
30 import org.chromium.chrome.browser.ChromeBackgroundServiceWaiter; 31 import org.chromium.chrome.browser.ChromeBackgroundServiceWaiter;
31 import org.chromium.net.ConnectionType; 32 import org.chromium.net.ConnectionType;
32 import org.chromium.testing.local.LocalRobolectricTestRunner;
33 import org.junit.After; 33 import org.junit.After;
34 import org.junit.Before; 34 import org.junit.Before;
35 import org.junit.Test; 35 import org.junit.Test;
36 import org.junit.runner.RunWith; 36 import org.junit.runner.RunWith;
37 import org.mockito.Mock; 37 import org.mockito.Mock;
38 import org.mockito.MockitoAnnotations; 38 import org.mockito.MockitoAnnotations;
39 import org.robolectric.Robolectric; 39 import org.robolectric.RuntimeEnvironment;
40 import org.robolectric.annotation.Config; 40 import org.robolectric.annotation.Config;
41 import org.robolectric.internal.ShadowExtractor;
41 42
42 /** 43 /**
43 * Unit tests for BackgroundOfflinerTask. 44 * Unit tests for BackgroundOfflinerTask.
44 */ 45 */
45 @RunWith(LocalRobolectricTestRunner.class) 46 @RunWith(OfflinePageTestRunner.class)
46 @Config(manifest = Config.NONE, 47 @Config(manifest = Config.NONE,
47 application = BaseChromiumApplication.class, 48 application = BaseChromiumApplication.class,
48 shadows = { ShadowGcmNetworkManager.class }) 49 shadows = { ShadowGcmNetworkManager.class })
49 public class BackgroundOfflinerTaskTest { 50 public class BackgroundOfflinerTaskTest {
50 private static final boolean REQUIRE_POWER = true; 51 private static final boolean REQUIRE_POWER = true;
51 private static final boolean REQUIRE_UNMETERED = true; 52 private static final boolean REQUIRE_UNMETERED = true;
52 private static final boolean POWER_CONNECTED = true; 53 private static final boolean POWER_CONNECTED = true;
53 private static final int MINIMUM_BATTERY_LEVEL = 33; 54 private static final int MINIMUM_BATTERY_LEVEL = 33;
54 private static final String IS_LOW_END_DEVICE_SWITCH = 55 private static final String IS_LOW_END_DEVICE_SWITCH =
55 "--" + BaseSwitches.ENABLE_LOW_END_DEVICE_MODE; 56 "--" + BaseSwitches.ENABLE_LOW_END_DEVICE_MODE;
56 57
57 @Mock 58 @Mock
58 private OfflinePageUtils mOfflinePageUtils; 59 private OfflinePageUtils mOfflinePageUtils;
59 60
60 private Bundle mTaskExtras; 61 private Bundle mTaskExtras;
61 private long mTestTime; 62 private long mTestTime;
62 private StubBackgroundSchedulerProcessor mStubBackgroundSchedulerProcessor; 63 private StubBackgroundSchedulerProcessor mStubBackgroundSchedulerProcessor;
63 private TriggerConditions mTriggerConditions = 64 private TriggerConditions mTriggerConditions =
64 new TriggerConditions(!REQUIRE_POWER, MINIMUM_BATTERY_LEVEL, REQUIRE _UNMETERED); 65 new TriggerConditions(!REQUIRE_POWER, MINIMUM_BATTERY_LEVEL, REQUIRE _UNMETERED);
65 private DeviceConditions mDeviceConditions = new DeviceConditions( 66 private DeviceConditions mDeviceConditions = new DeviceConditions(
66 !POWER_CONNECTED, MINIMUM_BATTERY_LEVEL + 5, ConnectionType.CONNECTI ON_3G); 67 !POWER_CONNECTED, MINIMUM_BATTERY_LEVEL + 5, ConnectionType.CONNECTI ON_3G);
67 private Activity mTestActivity; 68 private Activity mTestActivity;
68 69
70 private Context mContext;
71 private ShadowGcmNetworkManager mGcmNetworkManager;
72
69 @Before 73 @Before
70 public void setUp() throws Exception { 74 public void setUp() throws Exception {
71 MockitoAnnotations.initMocks(this); 75 MockitoAnnotations.initMocks(this);
72 when(mOfflinePageUtils.getDeviceConditionsImpl(any(Context.class))) 76 when(mOfflinePageUtils.getDeviceConditionsImpl(any(Context.class)))
73 .thenReturn(mDeviceConditions); 77 .thenReturn(mDeviceConditions);
74 78
75 // Build a bundle with trigger conditions. 79 // Build a bundle with trigger conditions.
76 mTaskExtras = new Bundle(); 80 mTaskExtras = new Bundle();
77 TaskExtrasPacker.packTimeInBundle(mTaskExtras); 81 TaskExtrasPacker.packTimeInBundle(mTaskExtras);
78 TaskExtrasPacker.packTriggerConditionsInBundle(mTaskExtras, mTriggerCond itions); 82 TaskExtrasPacker.packTriggerConditionsInBundle(mTaskExtras, mTriggerCond itions);
79 83
80 OfflinePageUtils.setInstanceForTesting(mOfflinePageUtils); 84 OfflinePageUtils.setInstanceForTesting(mOfflinePageUtils);
81 mStubBackgroundSchedulerProcessor = new StubBackgroundSchedulerProcessor (); 85 mStubBackgroundSchedulerProcessor = new StubBackgroundSchedulerProcessor ();
82 RecordHistogram.disableForTests(); 86 RecordHistogram.disableForTests();
83 ShadowGcmNetworkManager.clear(); 87 mContext = RuntimeEnvironment.application;
88 mGcmNetworkManager = (ShadowGcmNetworkManager) ShadowExtractor.extract(
89 GcmNetworkManager.getInstance(mContext));
90 mGcmNetworkManager.clear();
84 91
85 // Run tests as a low-end device. 92 // Run tests as a low-end device.
86 CommandLine.init(new String[] {"testcommand", IS_LOW_END_DEVICE_SWITCH}) ; 93 CommandLine.init(new String[] {"testcommand", IS_LOW_END_DEVICE_SWITCH}) ;
87 94
88 // Set up single, stopped Activity. 95 // Set up single, stopped Activity.
89 ApplicationStatus.destroyForJUnitTests(); 96 ApplicationStatus.destroyForJUnitTests();
90 mTestActivity = new Activity(); 97 mTestActivity = new Activity();
91 ApplicationStatus.onStateChangeForTesting(mTestActivity, ActivityState.C REATED); 98 ApplicationStatus.onStateChangeForTesting(mTestActivity, ActivityState.C REATED);
92 ApplicationStatus.onStateChangeForTesting(mTestActivity, ActivityState.S TOPPED); 99 ApplicationStatus.onStateChangeForTesting(mTestActivity, ActivityState.S TOPPED);
93 } 100 }
(...skipping 19 matching lines...) Expand all
113 assertSame(mDeviceConditions, mStubBackgroundSchedulerProcessor.getDevic eConditions()); 120 assertSame(mDeviceConditions, mStubBackgroundSchedulerProcessor.getDevic eConditions());
114 121
115 // TODO(dougarnett): Call processor callback and verify waiter signaled. 122 // TODO(dougarnett): Call processor callback and verify waiter signaled.
116 } 123 }
117 124
118 @Test 125 @Test
119 @Feature({"OfflinePages"}) 126 @Feature({"OfflinePages"})
120 public void testStartBackgroundRequests() { 127 public void testStartBackgroundRequests() {
121 BackgroundOfflinerTask task = new BackgroundOfflinerTask(mStubBackground SchedulerProcessor); 128 BackgroundOfflinerTask task = new BackgroundOfflinerTask(mStubBackground SchedulerProcessor);
122 ChromeBackgroundServiceWaiter waiter = new ChromeBackgroundServiceWaiter (1); 129 ChromeBackgroundServiceWaiter waiter = new ChromeBackgroundServiceWaiter (1);
123 assertNull("Nothing scheduled", ShadowGcmNetworkManager.getScheduledTask ()); 130 assertNull("Nothing scheduled", mGcmNetworkManager.getScheduledTask());
124 assertTrue(task.startBackgroundRequests(Robolectric.application, mTaskEx tras, waiter)); 131 assertTrue(task.startBackgroundRequests(
132 RuntimeEnvironment.application, mTaskExtras, waiter));
125 133
126 // Check that the backup task was scheduled. 134 // Check that the backup task was scheduled.
127 Task gcmTask = ShadowGcmNetworkManager.getScheduledTask(); 135 Task gcmTask = mGcmNetworkManager.getScheduledTask();
128 assertNotNull("Backup task scheduled", gcmTask); 136 assertNotNull("Backup task scheduled", gcmTask);
129 assertEquals(mTriggerConditions, 137 assertEquals(mTriggerConditions,
130 TaskExtrasPacker.unpackTriggerConditionsFromBundle(gcmTask.getEx tras())); 138 TaskExtrasPacker.unpackTriggerConditionsFromBundle(gcmTask.getEx tras()));
131 139
132 // Check with ShadowBackgroundBackgroundSchedulerProcessor that startPro cessing got called. 140 // Check with ShadowBackgroundBackgroundSchedulerProcessor that startPro cessing got called.
133 assertTrue(mStubBackgroundSchedulerProcessor.getStartProcessingCalled()) ; 141 assertTrue(mStubBackgroundSchedulerProcessor.getStartProcessingCalled()) ;
134 assertSame(mDeviceConditions, mStubBackgroundSchedulerProcessor.getDevic eConditions()); 142 assertSame(mDeviceConditions, mStubBackgroundSchedulerProcessor.getDevic eConditions());
135 } 143 }
136 144
137 @Test 145 @Test
138 @Feature({"OfflinePages"}) 146 @Feature({"OfflinePages"})
139 public void testStartBackgroundRequestsForLowBatteryLevel() { 147 public void testStartBackgroundRequestsForLowBatteryLevel() {
140 DeviceConditions deviceConditionsLowBattery = new DeviceConditions( 148 DeviceConditions deviceConditionsLowBattery = new DeviceConditions(
141 !POWER_CONNECTED, MINIMUM_BATTERY_LEVEL - 1, ConnectionType.CONN ECTION_WIFI); 149 !POWER_CONNECTED, MINIMUM_BATTERY_LEVEL - 1, ConnectionType.CONN ECTION_WIFI);
142 when(mOfflinePageUtils.getDeviceConditionsImpl(any(Context.class))) 150 when(mOfflinePageUtils.getDeviceConditionsImpl(any(Context.class)))
143 .thenReturn(deviceConditionsLowBattery); 151 .thenReturn(deviceConditionsLowBattery);
144 BackgroundOfflinerTask task = new BackgroundOfflinerTask(mStubBackground SchedulerProcessor); 152 BackgroundOfflinerTask task = new BackgroundOfflinerTask(mStubBackground SchedulerProcessor);
145 ChromeBackgroundServiceWaiter waiter = new ChromeBackgroundServiceWaiter (1); 153 ChromeBackgroundServiceWaiter waiter = new ChromeBackgroundServiceWaiter (1);
146 assertNull("Nothing scheduled", ShadowGcmNetworkManager.getScheduledTask ()); 154 assertNull("Nothing scheduled", mGcmNetworkManager.getScheduledTask());
147 assertFalse(task.startBackgroundRequests(Robolectric.application, mTaskE xtras, waiter)); 155 assertFalse(task.startBackgroundRequests(
156 RuntimeEnvironment.application, mTaskExtras, waiter));
148 157
149 // Check that the backup task was scheduled. 158 // Check that the backup task was scheduled.
150 Task gcmTask = ShadowGcmNetworkManager.getScheduledTask(); 159 Task gcmTask = mGcmNetworkManager.getScheduledTask();
151 assertNotNull("Backup task scheduled", gcmTask); 160 assertNotNull("Backup task scheduled", gcmTask);
152 assertEquals(mTriggerConditions, 161 assertEquals(mTriggerConditions,
153 TaskExtrasPacker.unpackTriggerConditionsFromBundle(gcmTask.getEx tras())); 162 TaskExtrasPacker.unpackTriggerConditionsFromBundle(gcmTask.getEx tras()));
154 163
155 // Check that startProcessing was NOT called. 164 // Check that startProcessing was NOT called.
156 assertFalse(mStubBackgroundSchedulerProcessor.getStartProcessingCalled() ); 165 assertFalse(mStubBackgroundSchedulerProcessor.getStartProcessingCalled() );
157 166
158 // Now verify low battery level but with power connected will start proc essing. 167 // Now verify low battery level but with power connected will start proc essing.
159 DeviceConditions deviceConditionsPowerConnected = new DeviceConditions( 168 DeviceConditions deviceConditionsPowerConnected = new DeviceConditions(
160 POWER_CONNECTED, MINIMUM_BATTERY_LEVEL - 1, ConnectionType.CONNE CTION_WIFI); 169 POWER_CONNECTED, MINIMUM_BATTERY_LEVEL - 1, ConnectionType.CONNE CTION_WIFI);
161 when(mOfflinePageUtils.getDeviceConditionsImpl(any(Context.class))) 170 when(mOfflinePageUtils.getDeviceConditionsImpl(any(Context.class)))
162 .thenReturn(deviceConditionsPowerConnected); 171 .thenReturn(deviceConditionsPowerConnected);
163 BackgroundOfflinerTask task2 = 172 BackgroundOfflinerTask task2 =
164 new BackgroundOfflinerTask(mStubBackgroundSchedulerProcessor); 173 new BackgroundOfflinerTask(mStubBackgroundSchedulerProcessor);
165 ChromeBackgroundServiceWaiter waiter2 = new ChromeBackgroundServiceWaite r(1); 174 ChromeBackgroundServiceWaiter waiter2 = new ChromeBackgroundServiceWaite r(1);
166 assertTrue(task2.startBackgroundRequests(Robolectric.application, mTaskE xtras, waiter2)); 175 assertTrue(task2.startBackgroundRequests(
176 RuntimeEnvironment.application, mTaskExtras, waiter2));
167 } 177 }
168 178
169 @Test 179 @Test
170 @Feature({"OfflinePages"}) 180 @Feature({"OfflinePages"})
171 public void testStartBackgroundRequestsForRunningActivityOnLowEndDevice() { 181 public void testStartBackgroundRequestsForRunningActivityOnLowEndDevice() {
172 BackgroundOfflinerTask task = new BackgroundOfflinerTask(mStubBackground SchedulerProcessor); 182 BackgroundOfflinerTask task = new BackgroundOfflinerTask(mStubBackground SchedulerProcessor);
173 ChromeBackgroundServiceWaiter waiter = new ChromeBackgroundServiceWaiter (1); 183 ChromeBackgroundServiceWaiter waiter = new ChromeBackgroundServiceWaiter (1);
174 assertNull("Nothing scheduled", ShadowGcmNetworkManager.getScheduledTask ()); 184 assertNull("Nothing scheduled", mGcmNetworkManager.getScheduledTask());
175 185
176 // Transition the test Activity to a running state. 186 // Transition the test Activity to a running state.
177 ApplicationStatus.onStateChangeForTesting(mTestActivity, ActivityState.S TARTED); 187 ApplicationStatus.onStateChangeForTesting(mTestActivity, ActivityState.S TARTED);
178 188
179 assertFalse(task.startBackgroundRequests(Robolectric.application, mTaskE xtras, waiter)); 189 assertFalse(task.startBackgroundRequests(
190 RuntimeEnvironment.application, mTaskExtras, waiter));
180 191
181 // Check that the backup task was scheduled. 192 // Check that the backup task was scheduled.
182 Task gcmTask = ShadowGcmNetworkManager.getScheduledTask(); 193 Task gcmTask = mGcmNetworkManager.getScheduledTask();
183 assertNotNull("Backup task scheduled", gcmTask); 194 assertNotNull("Backup task scheduled", gcmTask);
184 assertEquals(mTriggerConditions, 195 assertEquals(mTriggerConditions,
185 TaskExtrasPacker.unpackTriggerConditionsFromBundle(gcmTask.getEx tras())); 196 TaskExtrasPacker.unpackTriggerConditionsFromBundle(gcmTask.getEx tras()));
186 197
187 // Check that startProcessing was NOT called. 198 // Check that startProcessing was NOT called.
188 assertFalse(mStubBackgroundSchedulerProcessor.getStartProcessingCalled() ); 199 assertFalse(mStubBackgroundSchedulerProcessor.getStartProcessingCalled() );
189 200
190 // Now verify will start processing when Activity is stopped. 201 // Now verify will start processing when Activity is stopped.
191 ApplicationStatus.onStateChangeForTesting(mTestActivity, ActivityState.S TOPPED); 202 ApplicationStatus.onStateChangeForTesting(mTestActivity, ActivityState.S TOPPED);
192 BackgroundOfflinerTask task2 = 203 BackgroundOfflinerTask task2 =
193 new BackgroundOfflinerTask(mStubBackgroundSchedulerProcessor); 204 new BackgroundOfflinerTask(mStubBackgroundSchedulerProcessor);
194 ChromeBackgroundServiceWaiter waiter2 = new ChromeBackgroundServiceWaite r(1); 205 ChromeBackgroundServiceWaiter waiter2 = new ChromeBackgroundServiceWaite r(1);
195 assertTrue(task2.startBackgroundRequests(Robolectric.application, mTaskE xtras, waiter2)); 206 assertTrue(task2.startBackgroundRequests(
207 RuntimeEnvironment.application, mTaskExtras, waiter2));
196 } 208 }
197 } 209 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698