| Index: chrome/android/javatests/src/org/chromium/chrome/browser/precache/PrecacheControllerTest.java
|
| diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/precache/PrecacheControllerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/precache/PrecacheControllerTest.java
|
| index bc94723a2084af99756bc43ccfa5769baa17691d..2d37fe68978e6f1b6ec89e56104547aea8c0314a 100644
|
| --- a/chrome/android/javatests/src/org/chromium/chrome/browser/precache/PrecacheControllerTest.java
|
| +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/precache/PrecacheControllerTest.java
|
| @@ -7,28 +7,42 @@ package org.chromium.chrome.browser.precache;
|
| import android.content.Context;
|
| import android.content.Intent;
|
| import android.content.SharedPreferences.Editor;
|
| +import android.support.test.InstrumentationRegistry;
|
| +import android.support.test.annotation.UiThreadTest;
|
| import android.support.test.filters.SmallTest;
|
| -import android.test.InstrumentationTestCase;
|
| +import android.support.test.rule.UiThreadTestRule;
|
|
|
| import com.google.android.gms.gcm.GcmNetworkManager;
|
| import com.google.android.gms.gcm.Task;
|
|
|
| +import org.junit.After;
|
| +import org.junit.Assert;
|
| +import org.junit.Before;
|
| +import org.junit.Rule;
|
| +import org.junit.Test;
|
| +import org.junit.runner.RunWith;
|
| +
|
| import org.chromium.base.ContextUtils;
|
| import org.chromium.base.metrics.RecordHistogram;
|
| import org.chromium.base.test.util.AdvancedMockContext;
|
| import org.chromium.base.test.util.Feature;
|
| import org.chromium.base.test.util.RetryOnFailure;
|
| +import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
|
| import org.chromium.components.precache.MockDeviceState;
|
|
|
| /**
|
| * Tests of {@link PrecacheController}.
|
| */
|
| -public class PrecacheControllerTest extends InstrumentationTestCase {
|
| +@RunWith(ChromeJUnit4ClassRunner.class)
|
| +public class PrecacheControllerTest {
|
| private Context mContext;
|
| private MockPrecacheLauncher mPrecacheLauncher;
|
| private MockPrecacheController mPrecacheController;
|
| private MockPrecacheTaskScheduler mPrecacheTaskScheduler;
|
|
|
| + @Rule
|
| + public UiThreadTestRule mRule = new UiThreadTestRule();
|
| +
|
| /**
|
| * Mock of the {@link PrecacheLauncher}.
|
| */
|
| @@ -98,10 +112,10 @@ public class PrecacheControllerTest extends InstrumentationTestCase {
|
| }
|
| }
|
|
|
| - @Override
|
| - protected void setUp() throws Exception {
|
| - super.setUp();
|
| - mContext = new AdvancedMockContext(getInstrumentation().getTargetContext());
|
| + @Before
|
| + public void setUp() throws Exception {
|
| + mContext = new AdvancedMockContext(
|
| + InstrumentationRegistry.getInstrumentation().getTargetContext());
|
| mPrecacheLauncher = new MockPrecacheLauncher();
|
| mPrecacheController = new MockPrecacheController(mContext);
|
| mPrecacheTaskScheduler = new MockPrecacheTaskScheduler();
|
| @@ -114,9 +128,8 @@ public class PrecacheControllerTest extends InstrumentationTestCase {
|
| editor.apply();
|
| }
|
|
|
| - @Override
|
| + @After
|
| public void tearDown() throws Exception {
|
| - super.tearDown();
|
| RecordHistogram.setDisabledForTests(false);
|
| }
|
|
|
| @@ -127,149 +140,169 @@ public class PrecacheControllerTest extends InstrumentationTestCase {
|
| expectedPeriodicScheduled = 0;
|
| expectedContinuationScheduled = 0;
|
| }
|
| - assertEquals(expectedPeriodicScheduled, mPrecacheTaskScheduler.schedulePeriodicCnt);
|
| - assertEquals(expectedContinuationScheduled, mPrecacheTaskScheduler.scheduleContinuationCnt);
|
| - assertEquals(expectedPeriodicCanceled, mPrecacheTaskScheduler.cancelPeriodicCnt);
|
| - assertEquals(expectedContinuationCanceled, mPrecacheTaskScheduler.cancelContinuationCnt);
|
| + Assert.assertEquals(expectedPeriodicScheduled, mPrecacheTaskScheduler.schedulePeriodicCnt);
|
| + Assert.assertEquals(
|
| + expectedContinuationScheduled, mPrecacheTaskScheduler.scheduleContinuationCnt);
|
| + Assert.assertEquals(expectedPeriodicCanceled, mPrecacheTaskScheduler.cancelPeriodicCnt);
|
| + Assert.assertEquals(
|
| + expectedContinuationCanceled, mPrecacheTaskScheduler.cancelContinuationCnt);
|
| }
|
|
|
| protected void verifyLockCounts(int expectedAcquired, int expectedReleased) {
|
| - assertEquals(expectedAcquired, mPrecacheController.acquiredLockCnt);
|
| - assertEquals(expectedReleased, mPrecacheController.releasedLockCnt);
|
| + Assert.assertEquals(expectedAcquired, mPrecacheController.acquiredLockCnt);
|
| + Assert.assertEquals(expectedReleased, mPrecacheController.releasedLockCnt);
|
| }
|
|
|
| protected void verifyBeginPrecaching() {
|
| PrecacheController.setIsPrecachingEnabled(mContext, true);
|
| - assertEquals(GcmNetworkManager.RESULT_SUCCESS,
|
| + Assert.assertEquals(GcmNetworkManager.RESULT_SUCCESS,
|
| mPrecacheController.precache(PrecacheController.PERIODIC_TASK_TAG));
|
| - assertTrue(mPrecacheController.isPrecaching());
|
| + Assert.assertTrue(mPrecacheController.isPrecaching());
|
| verifyLockCounts(1, 0);
|
| // Any existing completion tasks are canceled.
|
| verifyScheduledAndCanceledCounts(1, 0, 0, 1);
|
| - assertEquals(1, mPrecacheLauncher.startCnt);
|
| + Assert.assertEquals(1, mPrecacheLauncher.startCnt);
|
| }
|
|
|
| protected void verifyContinuationGetsPreemptedByPeriodicTask() {
|
| PrecacheController.setIsPrecachingEnabled(mContext, true);
|
| - assertEquals(GcmNetworkManager.RESULT_SUCCESS,
|
| + Assert.assertEquals(GcmNetworkManager.RESULT_SUCCESS,
|
| mPrecacheController.precache(PrecacheController.CONTINUATION_TASK_TAG));
|
| - assertTrue(mPrecacheController.isPrecaching());
|
| + Assert.assertTrue(mPrecacheController.isPrecaching());
|
| verifyLockCounts(1, 0);
|
| // Any existing completion tasks are canceled.
|
| verifyScheduledAndCanceledCounts(1, 0, 0, 1);
|
| - assertEquals(1, mPrecacheLauncher.startCnt);
|
| + Assert.assertEquals(1, mPrecacheLauncher.startCnt);
|
| }
|
|
|
| + @Test
|
| @SmallTest
|
| @Feature({"Precache"})
|
| + @UiThreadTest
|
| public void testStartPrecachingNotEnabled() {
|
| PrecacheController.setIsPrecachingEnabled(mContext, false);
|
| verifyScheduledAndCanceledCounts(0, 0, 0, 0);
|
| - assertEquals(0, mPrecacheLauncher.startCnt);
|
| - assertTrue(mPrecacheController.precache(PrecacheController.PERIODIC_TASK_TAG)
|
| - == GcmNetworkManager.RESULT_SUCCESS);
|
| - assertFalse(mPrecacheController.isPrecaching());
|
| + Assert.assertEquals(0, mPrecacheLauncher.startCnt);
|
| + Assert.assertTrue(mPrecacheController.precache(PrecacheController.PERIODIC_TASK_TAG)
|
| + == GcmNetworkManager.RESULT_SUCCESS);
|
| + Assert.assertFalse(mPrecacheController.isPrecaching());
|
| verifyLockCounts(0, 0);
|
| // All tasks are canceled.
|
| verifyScheduledAndCanceledCounts(0, 0, 1, 1);
|
| - assertEquals(0, mPrecacheLauncher.startCnt);
|
| + Assert.assertEquals(0, mPrecacheLauncher.startCnt);
|
| }
|
|
|
| + @Test
|
| @SmallTest
|
| @Feature({"Precache"})
|
| + @UiThreadTest
|
| public void testStartPrecachingEnabled() {
|
| verifyBeginPrecaching();
|
|
|
| mPrecacheLauncher.onPrecacheCompleted(true);
|
| - assertFalse(mPrecacheController.isPrecaching());
|
| + Assert.assertFalse(mPrecacheController.isPrecaching());
|
| // A continuation task is scheduled.
|
| verifyScheduledAndCanceledCounts(1, 1, 0, 1);
|
| verifyLockCounts(1, 1);
|
| }
|
|
|
| + @Test
|
| @SmallTest
|
| @Feature({"Precache"})
|
| + @UiThreadTest
|
| @RetryOnFailure
|
| public void testStartWhenAlreadyStarted() {
|
| verifyBeginPrecaching();
|
|
|
| - assertEquals(GcmNetworkManager.RESULT_FAILURE,
|
| + Assert.assertEquals(GcmNetworkManager.RESULT_FAILURE,
|
| mPrecacheController.precache(PrecacheController.PERIODIC_TASK_TAG));
|
| - assertTrue(mPrecacheController.isPrecaching());
|
| + Assert.assertTrue(mPrecacheController.isPrecaching());
|
| // No additional tasks are scheduled or canceled.
|
| verifyScheduledAndCanceledCounts(1, 0, 0, 1);
|
| verifyLockCounts(1, 0);
|
| }
|
|
|
| + @Test
|
| @SmallTest
|
| @Feature({"Precache"})
|
| + @UiThreadTest
|
| @RetryOnFailure
|
| public void testDeviceStateChangeCancels() {
|
| verifyBeginPrecaching();
|
|
|
| mPrecacheController.setDeviceState(new MockDeviceState(0, true, false));
|
| mPrecacheController.getDeviceStateReceiver().onReceive(mContext, new Intent());
|
| - assertFalse(mPrecacheController.isPrecaching());
|
| + Assert.assertFalse(mPrecacheController.isPrecaching());
|
| // A continuation task is scheduled.
|
| verifyScheduledAndCanceledCounts(1, 1, 0, 1);
|
| verifyLockCounts(1, 1);
|
| }
|
|
|
| + @Test
|
| @SmallTest
|
| @Feature({"Precache"})
|
| + @UiThreadTest
|
| public void testDeviceStateChangeDoesNotCancel() {
|
| verifyBeginPrecaching();
|
|
|
| mPrecacheController.setDeviceState(new MockDeviceState(0, true, true));
|
| mPrecacheController.getDeviceStateReceiver().onReceive(mContext, new Intent());
|
| - assertTrue(mPrecacheController.isPrecaching());
|
| + Assert.assertTrue(mPrecacheController.isPrecaching());
|
| // No additional tasks are scheduled or canceled.
|
| verifyScheduledAndCanceledCounts(1, 0, 0, 1);
|
| verifyLockCounts(1, 0);
|
| }
|
|
|
| + @Test
|
| @SmallTest
|
| @Feature({"Precache"})
|
| + @UiThreadTest
|
| @RetryOnFailure
|
| public void testDeviceStateChangeWhenNotPrecaching() {
|
| - assertFalse(mPrecacheController.isPrecaching());
|
| + Assert.assertFalse(mPrecacheController.isPrecaching());
|
| mPrecacheController.setDeviceState(new MockDeviceState(0, false, true));
|
| mPrecacheController.getDeviceStateReceiver().onReceive(mContext, new Intent());
|
| - assertFalse(mPrecacheController.isPrecaching());
|
| + Assert.assertFalse(mPrecacheController.isPrecaching());
|
| // No tasks are scheduled or canceled.
|
| verifyScheduledAndCanceledCounts(0, 0, 0, 0);
|
| verifyLockCounts(0, 0);
|
| // device state change when not running has no effect (maybe unregisters)
|
| }
|
|
|
| + @Test
|
| @SmallTest
|
| @Feature({"Precache"})
|
| + @UiThreadTest
|
| @RetryOnFailure
|
| public void testTimeoutCancelsPrecaching() {
|
| verifyBeginPrecaching();
|
|
|
| mPrecacheController.getTimeoutRunnable().run();
|
| - assertFalse(mPrecacheController.isPrecaching());
|
| + Assert.assertFalse(mPrecacheController.isPrecaching());
|
| // A continuation task is scheduled.
|
| verifyScheduledAndCanceledCounts(1, 1, 0, 1);
|
| verifyLockCounts(1, 1);
|
| }
|
|
|
| + @Test
|
| @SmallTest
|
| @Feature({"Precache"})
|
| + @UiThreadTest
|
| @RetryOnFailure
|
| public void testTimeoutDoesNotCancelIfNotPrecaching() {
|
| - assertFalse(mPrecacheController.isPrecaching());
|
| + Assert.assertFalse(mPrecacheController.isPrecaching());
|
|
|
| mPrecacheController.getTimeoutRunnable().run();
|
| - assertFalse(mPrecacheController.isPrecaching());
|
| + Assert.assertFalse(mPrecacheController.isPrecaching());
|
| // No tasks are scheduled or canceled.
|
| verifyScheduledAndCanceledCounts(0, 0, 0, 0);
|
| verifyLockCounts(0, 0);
|
| }
|
|
|
| + @Test
|
| @SmallTest
|
| @Feature({"Precache"})
|
| + @UiThreadTest
|
| @RetryOnFailure
|
| public void testPrecachingEnabledPreferences() {
|
| // Initial enable will schedule a periodic task.
|
|
|