| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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.precache; | 5 package org.chromium.chrome.browser.precache; |
| 6 | 6 |
| 7 import android.content.Context; | 7 import android.content.Context; |
| 8 import android.content.Intent; | 8 import android.content.Intent; |
| 9 import android.content.SharedPreferences.Editor; | 9 import android.content.SharedPreferences.Editor; |
| 10 import android.support.test.InstrumentationRegistry; |
| 11 import android.support.test.annotation.UiThreadTest; |
| 10 import android.support.test.filters.SmallTest; | 12 import android.support.test.filters.SmallTest; |
| 11 import android.test.InstrumentationTestCase; | 13 import android.support.test.rule.UiThreadTestRule; |
| 12 | 14 |
| 13 import com.google.android.gms.gcm.GcmNetworkManager; | 15 import com.google.android.gms.gcm.GcmNetworkManager; |
| 14 import com.google.android.gms.gcm.Task; | 16 import com.google.android.gms.gcm.Task; |
| 15 | 17 |
| 18 import org.junit.After; |
| 19 import org.junit.Assert; |
| 20 import org.junit.Before; |
| 21 import org.junit.Rule; |
| 22 import org.junit.Test; |
| 23 import org.junit.runner.RunWith; |
| 24 |
| 16 import org.chromium.base.ContextUtils; | 25 import org.chromium.base.ContextUtils; |
| 17 import org.chromium.base.metrics.RecordHistogram; | 26 import org.chromium.base.metrics.RecordHistogram; |
| 18 import org.chromium.base.test.util.AdvancedMockContext; | 27 import org.chromium.base.test.util.AdvancedMockContext; |
| 19 import org.chromium.base.test.util.Feature; | 28 import org.chromium.base.test.util.Feature; |
| 20 import org.chromium.base.test.util.RetryOnFailure; | 29 import org.chromium.base.test.util.RetryOnFailure; |
| 30 import org.chromium.chrome.test.ChromeJUnit4ClassRunner; |
| 21 import org.chromium.components.precache.MockDeviceState; | 31 import org.chromium.components.precache.MockDeviceState; |
| 22 | 32 |
| 23 /** | 33 /** |
| 24 * Tests of {@link PrecacheController}. | 34 * Tests of {@link PrecacheController}. |
| 25 */ | 35 */ |
| 26 public class PrecacheControllerTest extends InstrumentationTestCase { | 36 @RunWith(ChromeJUnit4ClassRunner.class) |
| 37 public class PrecacheControllerTest { |
| 27 private Context mContext; | 38 private Context mContext; |
| 28 private MockPrecacheLauncher mPrecacheLauncher; | 39 private MockPrecacheLauncher mPrecacheLauncher; |
| 29 private MockPrecacheController mPrecacheController; | 40 private MockPrecacheController mPrecacheController; |
| 30 private MockPrecacheTaskScheduler mPrecacheTaskScheduler; | 41 private MockPrecacheTaskScheduler mPrecacheTaskScheduler; |
| 31 | 42 |
| 43 @Rule |
| 44 public UiThreadTestRule mRule = new UiThreadTestRule(); |
| 45 |
| 32 /** | 46 /** |
| 33 * Mock of the {@link PrecacheLauncher}. | 47 * Mock of the {@link PrecacheLauncher}. |
| 34 */ | 48 */ |
| 35 static class MockPrecacheLauncher extends PrecacheLauncher { | 49 static class MockPrecacheLauncher extends PrecacheLauncher { |
| 36 | 50 |
| 37 private MockPrecacheController mController; | 51 private MockPrecacheController mController; |
| 38 | 52 |
| 39 public int destroyCnt = 0; | 53 public int destroyCnt = 0; |
| 40 public int startCnt = 0; | 54 public int startCnt = 0; |
| 41 public int cancelCnt = 0; | 55 public int cancelCnt = 0; |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 91 boolean cancelTask(Context context, String tag) { | 105 boolean cancelTask(Context context, String tag) { |
| 92 if (PrecacheController.PERIODIC_TASK_TAG.equals(tag)) { | 106 if (PrecacheController.PERIODIC_TASK_TAG.equals(tag)) { |
| 93 cancelPeriodicCnt++; | 107 cancelPeriodicCnt++; |
| 94 } else if (PrecacheController.CONTINUATION_TASK_TAG.equals(tag)) { | 108 } else if (PrecacheController.CONTINUATION_TASK_TAG.equals(tag)) { |
| 95 cancelContinuationCnt++; | 109 cancelContinuationCnt++; |
| 96 } | 110 } |
| 97 return true; | 111 return true; |
| 98 } | 112 } |
| 99 } | 113 } |
| 100 | 114 |
| 101 @Override | 115 @Before |
| 102 protected void setUp() throws Exception { | 116 public void setUp() throws Exception { |
| 103 super.setUp(); | 117 mContext = new AdvancedMockContext( |
| 104 mContext = new AdvancedMockContext(getInstrumentation().getTargetContext
()); | 118 InstrumentationRegistry.getInstrumentation().getTargetContext())
; |
| 105 mPrecacheLauncher = new MockPrecacheLauncher(); | 119 mPrecacheLauncher = new MockPrecacheLauncher(); |
| 106 mPrecacheController = new MockPrecacheController(mContext); | 120 mPrecacheController = new MockPrecacheController(mContext); |
| 107 mPrecacheTaskScheduler = new MockPrecacheTaskScheduler(); | 121 mPrecacheTaskScheduler = new MockPrecacheTaskScheduler(); |
| 108 mPrecacheLauncher.setController(mPrecacheController); | 122 mPrecacheLauncher.setController(mPrecacheController); |
| 109 mPrecacheController.setPrecacheLauncher(mPrecacheLauncher); | 123 mPrecacheController.setPrecacheLauncher(mPrecacheLauncher); |
| 110 PrecacheController.setTaskScheduler(mPrecacheTaskScheduler); | 124 PrecacheController.setTaskScheduler(mPrecacheTaskScheduler); |
| 111 RecordHistogram.setDisabledForTests(true); | 125 RecordHistogram.setDisabledForTests(true); |
| 112 Editor editor = ContextUtils.getAppSharedPreferences().edit(); | 126 Editor editor = ContextUtils.getAppSharedPreferences().edit(); |
| 113 editor.putBoolean(PrecacheController.PREF_IS_PRECACHING_ENABLED, false); | 127 editor.putBoolean(PrecacheController.PREF_IS_PRECACHING_ENABLED, false); |
| 114 editor.apply(); | 128 editor.apply(); |
| 115 } | 129 } |
| 116 | 130 |
| 117 @Override | 131 @After |
| 118 public void tearDown() throws Exception { | 132 public void tearDown() throws Exception { |
| 119 super.tearDown(); | |
| 120 RecordHistogram.setDisabledForTests(false); | 133 RecordHistogram.setDisabledForTests(false); |
| 121 } | 134 } |
| 122 | 135 |
| 123 protected void verifyScheduledAndCanceledCounts( | 136 protected void verifyScheduledAndCanceledCounts( |
| 124 int expectedPeriodicScheduled, int expectedContinuationScheduled, | 137 int expectedPeriodicScheduled, int expectedContinuationScheduled, |
| 125 int expectedPeriodicCanceled, int expectedContinuationCanceled) { | 138 int expectedPeriodicCanceled, int expectedContinuationCanceled) { |
| 126 if (!mPrecacheTaskScheduler.canScheduleTasks(mContext)) { | 139 if (!mPrecacheTaskScheduler.canScheduleTasks(mContext)) { |
| 127 expectedPeriodicScheduled = 0; | 140 expectedPeriodicScheduled = 0; |
| 128 expectedContinuationScheduled = 0; | 141 expectedContinuationScheduled = 0; |
| 129 } | 142 } |
| 130 assertEquals(expectedPeriodicScheduled, mPrecacheTaskScheduler.scheduleP
eriodicCnt); | 143 Assert.assertEquals(expectedPeriodicScheduled, mPrecacheTaskScheduler.sc
hedulePeriodicCnt); |
| 131 assertEquals(expectedContinuationScheduled, mPrecacheTaskScheduler.sched
uleContinuationCnt); | 144 Assert.assertEquals( |
| 132 assertEquals(expectedPeriodicCanceled, mPrecacheTaskScheduler.cancelPeri
odicCnt); | 145 expectedContinuationScheduled, mPrecacheTaskScheduler.scheduleCo
ntinuationCnt); |
| 133 assertEquals(expectedContinuationCanceled, mPrecacheTaskScheduler.cancel
ContinuationCnt); | 146 Assert.assertEquals(expectedPeriodicCanceled, mPrecacheTaskScheduler.can
celPeriodicCnt); |
| 147 Assert.assertEquals( |
| 148 expectedContinuationCanceled, mPrecacheTaskScheduler.cancelConti
nuationCnt); |
| 134 } | 149 } |
| 135 | 150 |
| 136 protected void verifyLockCounts(int expectedAcquired, int expectedReleased)
{ | 151 protected void verifyLockCounts(int expectedAcquired, int expectedReleased)
{ |
| 137 assertEquals(expectedAcquired, mPrecacheController.acquiredLockCnt); | 152 Assert.assertEquals(expectedAcquired, mPrecacheController.acquiredLockCn
t); |
| 138 assertEquals(expectedReleased, mPrecacheController.releasedLockCnt); | 153 Assert.assertEquals(expectedReleased, mPrecacheController.releasedLockCn
t); |
| 139 } | 154 } |
| 140 | 155 |
| 141 protected void verifyBeginPrecaching() { | 156 protected void verifyBeginPrecaching() { |
| 142 PrecacheController.setIsPrecachingEnabled(mContext, true); | 157 PrecacheController.setIsPrecachingEnabled(mContext, true); |
| 143 assertEquals(GcmNetworkManager.RESULT_SUCCESS, | 158 Assert.assertEquals(GcmNetworkManager.RESULT_SUCCESS, |
| 144 mPrecacheController.precache(PrecacheController.PERIODIC_TASK_TA
G)); | 159 mPrecacheController.precache(PrecacheController.PERIODIC_TASK_TA
G)); |
| 145 assertTrue(mPrecacheController.isPrecaching()); | 160 Assert.assertTrue(mPrecacheController.isPrecaching()); |
| 146 verifyLockCounts(1, 0); | 161 verifyLockCounts(1, 0); |
| 147 // Any existing completion tasks are canceled. | 162 // Any existing completion tasks are canceled. |
| 148 verifyScheduledAndCanceledCounts(1, 0, 0, 1); | 163 verifyScheduledAndCanceledCounts(1, 0, 0, 1); |
| 149 assertEquals(1, mPrecacheLauncher.startCnt); | 164 Assert.assertEquals(1, mPrecacheLauncher.startCnt); |
| 150 } | 165 } |
| 151 | 166 |
| 152 protected void verifyContinuationGetsPreemptedByPeriodicTask() { | 167 protected void verifyContinuationGetsPreemptedByPeriodicTask() { |
| 153 PrecacheController.setIsPrecachingEnabled(mContext, true); | 168 PrecacheController.setIsPrecachingEnabled(mContext, true); |
| 154 assertEquals(GcmNetworkManager.RESULT_SUCCESS, | 169 Assert.assertEquals(GcmNetworkManager.RESULT_SUCCESS, |
| 155 mPrecacheController.precache(PrecacheController.CONTINUATION_TAS
K_TAG)); | 170 mPrecacheController.precache(PrecacheController.CONTINUATION_TAS
K_TAG)); |
| 156 assertTrue(mPrecacheController.isPrecaching()); | 171 Assert.assertTrue(mPrecacheController.isPrecaching()); |
| 157 verifyLockCounts(1, 0); | 172 verifyLockCounts(1, 0); |
| 158 // Any existing completion tasks are canceled. | 173 // Any existing completion tasks are canceled. |
| 159 verifyScheduledAndCanceledCounts(1, 0, 0, 1); | 174 verifyScheduledAndCanceledCounts(1, 0, 0, 1); |
| 160 assertEquals(1, mPrecacheLauncher.startCnt); | 175 Assert.assertEquals(1, mPrecacheLauncher.startCnt); |
| 161 } | 176 } |
| 162 | 177 |
| 178 @Test |
| 163 @SmallTest | 179 @SmallTest |
| 164 @Feature({"Precache"}) | 180 @Feature({"Precache"}) |
| 181 @UiThreadTest |
| 165 public void testStartPrecachingNotEnabled() { | 182 public void testStartPrecachingNotEnabled() { |
| 166 PrecacheController.setIsPrecachingEnabled(mContext, false); | 183 PrecacheController.setIsPrecachingEnabled(mContext, false); |
| 167 verifyScheduledAndCanceledCounts(0, 0, 0, 0); | 184 verifyScheduledAndCanceledCounts(0, 0, 0, 0); |
| 168 assertEquals(0, mPrecacheLauncher.startCnt); | 185 Assert.assertEquals(0, mPrecacheLauncher.startCnt); |
| 169 assertTrue(mPrecacheController.precache(PrecacheController.PERIODIC_TASK
_TAG) | 186 Assert.assertTrue(mPrecacheController.precache(PrecacheController.PERIOD
IC_TASK_TAG) |
| 170 == GcmNetworkManager.RESULT_SUCCESS); | 187 == GcmNetworkManager.RESULT_SUCCESS); |
| 171 assertFalse(mPrecacheController.isPrecaching()); | 188 Assert.assertFalse(mPrecacheController.isPrecaching()); |
| 172 verifyLockCounts(0, 0); | 189 verifyLockCounts(0, 0); |
| 173 // All tasks are canceled. | 190 // All tasks are canceled. |
| 174 verifyScheduledAndCanceledCounts(0, 0, 1, 1); | 191 verifyScheduledAndCanceledCounts(0, 0, 1, 1); |
| 175 assertEquals(0, mPrecacheLauncher.startCnt); | 192 Assert.assertEquals(0, mPrecacheLauncher.startCnt); |
| 176 } | 193 } |
| 177 | 194 |
| 195 @Test |
| 178 @SmallTest | 196 @SmallTest |
| 179 @Feature({"Precache"}) | 197 @Feature({"Precache"}) |
| 198 @UiThreadTest |
| 180 public void testStartPrecachingEnabled() { | 199 public void testStartPrecachingEnabled() { |
| 181 verifyBeginPrecaching(); | 200 verifyBeginPrecaching(); |
| 182 | 201 |
| 183 mPrecacheLauncher.onPrecacheCompleted(true); | 202 mPrecacheLauncher.onPrecacheCompleted(true); |
| 184 assertFalse(mPrecacheController.isPrecaching()); | 203 Assert.assertFalse(mPrecacheController.isPrecaching()); |
| 185 // A continuation task is scheduled. | 204 // A continuation task is scheduled. |
| 186 verifyScheduledAndCanceledCounts(1, 1, 0, 1); | 205 verifyScheduledAndCanceledCounts(1, 1, 0, 1); |
| 187 verifyLockCounts(1, 1); | 206 verifyLockCounts(1, 1); |
| 188 } | 207 } |
| 189 | 208 |
| 209 @Test |
| 190 @SmallTest | 210 @SmallTest |
| 191 @Feature({"Precache"}) | 211 @Feature({"Precache"}) |
| 212 @UiThreadTest |
| 192 @RetryOnFailure | 213 @RetryOnFailure |
| 193 public void testStartWhenAlreadyStarted() { | 214 public void testStartWhenAlreadyStarted() { |
| 194 verifyBeginPrecaching(); | 215 verifyBeginPrecaching(); |
| 195 | 216 |
| 196 assertEquals(GcmNetworkManager.RESULT_FAILURE, | 217 Assert.assertEquals(GcmNetworkManager.RESULT_FAILURE, |
| 197 mPrecacheController.precache(PrecacheController.PERIODIC_TASK_TA
G)); | 218 mPrecacheController.precache(PrecacheController.PERIODIC_TASK_TA
G)); |
| 198 assertTrue(mPrecacheController.isPrecaching()); | 219 Assert.assertTrue(mPrecacheController.isPrecaching()); |
| 199 // No additional tasks are scheduled or canceled. | 220 // No additional tasks are scheduled or canceled. |
| 200 verifyScheduledAndCanceledCounts(1, 0, 0, 1); | 221 verifyScheduledAndCanceledCounts(1, 0, 0, 1); |
| 201 verifyLockCounts(1, 0); | 222 verifyLockCounts(1, 0); |
| 202 } | 223 } |
| 203 | 224 |
| 225 @Test |
| 204 @SmallTest | 226 @SmallTest |
| 205 @Feature({"Precache"}) | 227 @Feature({"Precache"}) |
| 228 @UiThreadTest |
| 206 @RetryOnFailure | 229 @RetryOnFailure |
| 207 public void testDeviceStateChangeCancels() { | 230 public void testDeviceStateChangeCancels() { |
| 208 verifyBeginPrecaching(); | 231 verifyBeginPrecaching(); |
| 209 | 232 |
| 210 mPrecacheController.setDeviceState(new MockDeviceState(0, true, false)); | 233 mPrecacheController.setDeviceState(new MockDeviceState(0, true, false)); |
| 211 mPrecacheController.getDeviceStateReceiver().onReceive(mContext, new Int
ent()); | 234 mPrecacheController.getDeviceStateReceiver().onReceive(mContext, new Int
ent()); |
| 212 assertFalse(mPrecacheController.isPrecaching()); | 235 Assert.assertFalse(mPrecacheController.isPrecaching()); |
| 213 // A continuation task is scheduled. | 236 // A continuation task is scheduled. |
| 214 verifyScheduledAndCanceledCounts(1, 1, 0, 1); | 237 verifyScheduledAndCanceledCounts(1, 1, 0, 1); |
| 215 verifyLockCounts(1, 1); | 238 verifyLockCounts(1, 1); |
| 216 } | 239 } |
| 217 | 240 |
| 241 @Test |
| 218 @SmallTest | 242 @SmallTest |
| 219 @Feature({"Precache"}) | 243 @Feature({"Precache"}) |
| 244 @UiThreadTest |
| 220 public void testDeviceStateChangeDoesNotCancel() { | 245 public void testDeviceStateChangeDoesNotCancel() { |
| 221 verifyBeginPrecaching(); | 246 verifyBeginPrecaching(); |
| 222 | 247 |
| 223 mPrecacheController.setDeviceState(new MockDeviceState(0, true, true)); | 248 mPrecacheController.setDeviceState(new MockDeviceState(0, true, true)); |
| 224 mPrecacheController.getDeviceStateReceiver().onReceive(mContext, new Int
ent()); | 249 mPrecacheController.getDeviceStateReceiver().onReceive(mContext, new Int
ent()); |
| 225 assertTrue(mPrecacheController.isPrecaching()); | 250 Assert.assertTrue(mPrecacheController.isPrecaching()); |
| 226 // No additional tasks are scheduled or canceled. | 251 // No additional tasks are scheduled or canceled. |
| 227 verifyScheduledAndCanceledCounts(1, 0, 0, 1); | 252 verifyScheduledAndCanceledCounts(1, 0, 0, 1); |
| 228 verifyLockCounts(1, 0); | 253 verifyLockCounts(1, 0); |
| 229 } | 254 } |
| 230 | 255 |
| 256 @Test |
| 231 @SmallTest | 257 @SmallTest |
| 232 @Feature({"Precache"}) | 258 @Feature({"Precache"}) |
| 259 @UiThreadTest |
| 233 @RetryOnFailure | 260 @RetryOnFailure |
| 234 public void testDeviceStateChangeWhenNotPrecaching() { | 261 public void testDeviceStateChangeWhenNotPrecaching() { |
| 235 assertFalse(mPrecacheController.isPrecaching()); | 262 Assert.assertFalse(mPrecacheController.isPrecaching()); |
| 236 mPrecacheController.setDeviceState(new MockDeviceState(0, false, true)); | 263 mPrecacheController.setDeviceState(new MockDeviceState(0, false, true)); |
| 237 mPrecacheController.getDeviceStateReceiver().onReceive(mContext, new Int
ent()); | 264 mPrecacheController.getDeviceStateReceiver().onReceive(mContext, new Int
ent()); |
| 238 assertFalse(mPrecacheController.isPrecaching()); | 265 Assert.assertFalse(mPrecacheController.isPrecaching()); |
| 239 // No tasks are scheduled or canceled. | 266 // No tasks are scheduled or canceled. |
| 240 verifyScheduledAndCanceledCounts(0, 0, 0, 0); | 267 verifyScheduledAndCanceledCounts(0, 0, 0, 0); |
| 241 verifyLockCounts(0, 0); | 268 verifyLockCounts(0, 0); |
| 242 // device state change when not running has no effect (maybe unregisters
) | 269 // device state change when not running has no effect (maybe unregisters
) |
| 243 } | 270 } |
| 244 | 271 |
| 272 @Test |
| 245 @SmallTest | 273 @SmallTest |
| 246 @Feature({"Precache"}) | 274 @Feature({"Precache"}) |
| 275 @UiThreadTest |
| 247 @RetryOnFailure | 276 @RetryOnFailure |
| 248 public void testTimeoutCancelsPrecaching() { | 277 public void testTimeoutCancelsPrecaching() { |
| 249 verifyBeginPrecaching(); | 278 verifyBeginPrecaching(); |
| 250 | 279 |
| 251 mPrecacheController.getTimeoutRunnable().run(); | 280 mPrecacheController.getTimeoutRunnable().run(); |
| 252 assertFalse(mPrecacheController.isPrecaching()); | 281 Assert.assertFalse(mPrecacheController.isPrecaching()); |
| 253 // A continuation task is scheduled. | 282 // A continuation task is scheduled. |
| 254 verifyScheduledAndCanceledCounts(1, 1, 0, 1); | 283 verifyScheduledAndCanceledCounts(1, 1, 0, 1); |
| 255 verifyLockCounts(1, 1); | 284 verifyLockCounts(1, 1); |
| 256 } | 285 } |
| 257 | 286 |
| 287 @Test |
| 258 @SmallTest | 288 @SmallTest |
| 259 @Feature({"Precache"}) | 289 @Feature({"Precache"}) |
| 290 @UiThreadTest |
| 260 @RetryOnFailure | 291 @RetryOnFailure |
| 261 public void testTimeoutDoesNotCancelIfNotPrecaching() { | 292 public void testTimeoutDoesNotCancelIfNotPrecaching() { |
| 262 assertFalse(mPrecacheController.isPrecaching()); | 293 Assert.assertFalse(mPrecacheController.isPrecaching()); |
| 263 | 294 |
| 264 mPrecacheController.getTimeoutRunnable().run(); | 295 mPrecacheController.getTimeoutRunnable().run(); |
| 265 assertFalse(mPrecacheController.isPrecaching()); | 296 Assert.assertFalse(mPrecacheController.isPrecaching()); |
| 266 // No tasks are scheduled or canceled. | 297 // No tasks are scheduled or canceled. |
| 267 verifyScheduledAndCanceledCounts(0, 0, 0, 0); | 298 verifyScheduledAndCanceledCounts(0, 0, 0, 0); |
| 268 verifyLockCounts(0, 0); | 299 verifyLockCounts(0, 0); |
| 269 } | 300 } |
| 270 | 301 |
| 302 @Test |
| 271 @SmallTest | 303 @SmallTest |
| 272 @Feature({"Precache"}) | 304 @Feature({"Precache"}) |
| 305 @UiThreadTest |
| 273 @RetryOnFailure | 306 @RetryOnFailure |
| 274 public void testPrecachingEnabledPreferences() { | 307 public void testPrecachingEnabledPreferences() { |
| 275 // Initial enable will schedule a periodic task. | 308 // Initial enable will schedule a periodic task. |
| 276 PrecacheController.setIsPrecachingEnabled(mContext, true); | 309 PrecacheController.setIsPrecachingEnabled(mContext, true); |
| 277 verifyScheduledAndCanceledCounts(1, 0, 0, 0); | 310 verifyScheduledAndCanceledCounts(1, 0, 0, 0); |
| 278 // Subsequent enable will not schedule or cancel tasks. | 311 // Subsequent enable will not schedule or cancel tasks. |
| 279 PrecacheController.setIsPrecachingEnabled(mContext, true); | 312 PrecacheController.setIsPrecachingEnabled(mContext, true); |
| 280 verifyScheduledAndCanceledCounts(1, 0, 0, 0); | 313 verifyScheduledAndCanceledCounts(1, 0, 0, 0); |
| 281 | 314 |
| 282 // Disabling will cancel periodic and one-off tasks. | 315 // Disabling will cancel periodic and one-off tasks. |
| 283 PrecacheController.setIsPrecachingEnabled(mContext, false); | 316 PrecacheController.setIsPrecachingEnabled(mContext, false); |
| 284 verifyScheduledAndCanceledCounts(1, 0, 1, 1); | 317 verifyScheduledAndCanceledCounts(1, 0, 1, 1); |
| 285 // Subsequent disable will not schedule or cancel tasks. | 318 // Subsequent disable will not schedule or cancel tasks. |
| 286 PrecacheController.setIsPrecachingEnabled(mContext, false); | 319 PrecacheController.setIsPrecachingEnabled(mContext, false); |
| 287 verifyScheduledAndCanceledCounts(1, 0, 1, 1); | 320 verifyScheduledAndCanceledCounts(1, 0, 1, 1); |
| 288 } | 321 } |
| 289 } | 322 } |
| OLD | NEW |