| Index: chrome/android/javatests/src/org/chromium/chrome/browser/ChromeBackgroundServiceTest.java
|
| diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/ChromeBackgroundServiceTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/ChromeBackgroundServiceTest.java
|
| index 67d2ec86c63e0109c9a3d63a05d2a9e464786238..b3e69b29472978f01df4bd0cce4573ae530df551 100644
|
| --- a/chrome/android/javatests/src/org/chromium/chrome/browser/ChromeBackgroundServiceTest.java
|
| +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/ChromeBackgroundServiceTest.java
|
| @@ -10,6 +10,7 @@ import android.test.suitebuilder.annotation.SmallTest;
|
|
|
| import com.google.android.gms.gcm.TaskParams;
|
|
|
| +import org.chromium.base.ContextUtils;
|
| import org.chromium.base.ThreadUtils;
|
| import org.chromium.base.metrics.RecordHistogram;
|
| import org.chromium.base.test.util.AdvancedMockContext;
|
| @@ -31,6 +32,7 @@ public class ChromeBackgroundServiceTest extends InstrumentationTestCase {
|
| static class MockTaskService extends ChromeBackgroundService {
|
| private boolean mDidLaunchBrowser = false;
|
| private boolean mDidFetchSnippets = false;
|
| + private boolean mDidRescheduleFetching = false;
|
| private boolean mHasPrecacheInstance = true;
|
| private boolean mPrecachingStarted = false;
|
|
|
| @@ -45,6 +47,11 @@ public class ChromeBackgroundServiceTest extends InstrumentationTestCase {
|
| }
|
|
|
| @Override
|
| + protected void rescheduleFetching() {
|
| + mDidRescheduleFetching = true;
|
| + }
|
| +
|
| + @Override
|
| protected boolean hasPrecacheInstance() {
|
| return mHasPrecacheInstance;
|
| }
|
| @@ -56,17 +63,26 @@ public class ChromeBackgroundServiceTest extends InstrumentationTestCase {
|
| }
|
| }
|
|
|
| + @Override
|
| + protected void rescheduleBackgroundSyncTasksOnUpgrade() {}
|
| +
|
| + @Override
|
| + protected void reschedulePrecacheTasksOnUpgrade() {}
|
| +
|
| // Posts an assertion task to the UI thread. Since this is only called after the call
|
| // to onRunTask, it will be enqueued after any possible call to launchBrowser, and we
|
| // can reliably check whether launchBrowser was called.
|
| protected void checkExpectations(final boolean expectedLaunchBrowser,
|
| - final boolean expectedPrecacheStarted, final boolean expectedFetchSnippets) {
|
| + final boolean expectedPrecacheStarted, final boolean expectedFetchSnippets,
|
| + final boolean expectedRescheduleFetching) {
|
| ThreadUtils.runOnUiThread(new Runnable() {
|
| @Override
|
| public void run() {
|
| assertEquals("StartedService", expectedLaunchBrowser, mDidLaunchBrowser);
|
| assertEquals("StartedPrecache", expectedPrecacheStarted, mPrecachingStarted);
|
| assertEquals("FetchedSnippets", expectedFetchSnippets, mDidFetchSnippets);
|
| + assertEquals("RescheduledFetching", expectedRescheduleFetching,
|
| + mDidRescheduleFetching);
|
| }
|
| });
|
| }
|
| @@ -99,7 +115,7 @@ public class ChromeBackgroundServiceTest extends InstrumentationTestCase {
|
| private void startOnRunTaskAndVerify(String taskTag, boolean shouldStart,
|
| boolean shouldPrecache, boolean shouldFetchSnippets) {
|
| mTaskService.onRunTask(new TaskParams(taskTag));
|
| - mTaskService.checkExpectations(shouldStart, shouldPrecache, shouldFetchSnippets);
|
| + mTaskService.checkExpectations(shouldStart, shouldPrecache, shouldFetchSnippets, false);
|
| }
|
|
|
| @SmallTest
|
| @@ -153,4 +169,47 @@ public class ChromeBackgroundServiceTest extends InstrumentationTestCase {
|
| mTaskService.deletePrecacheInstance();
|
| startOnRunTaskAndVerify(PrecacheController.PERIODIC_TASK_TAG, true, true, false);
|
| }
|
| +
|
| + private void startOnInitializeTasksAndVerify(boolean shouldStart, boolean shouldReschedule) {
|
| + mTaskService.onInitializeTasks();
|
| + mTaskService.checkExpectations(shouldStart, false, false, shouldReschedule);
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"NTPSnippets"})
|
| + public void testNTPSnippetsNoRescheduleWithoutPrefWhenInstanceExists() {
|
| + startOnInitializeTasksAndVerify(/*shouldStart=*/false, /*shouldReschedule=*/false);
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"NTPSnippets"})
|
| + public void testNTPSnippetsNoRescheduleWithoutPrefWhenInstanceDoesNotExist() {
|
| + deleteSnippetsLauncherInstance();
|
| + startOnInitializeTasksAndVerify(/*shouldStart=*/false, /*shouldReschedule=*/false);
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"NTPSnippets"})
|
| + public void testNTPSnippetsRescheduleWithPrefWhenInstanceExists() {
|
| + // Set the pref indicating that fetching was scheduled before.
|
| + ContextUtils.getAppSharedPreferences()
|
| + .edit()
|
| + .putBoolean(SnippetsLauncher.PREF_IS_SCHEDULED, true)
|
| + .apply();
|
| +
|
| + startOnInitializeTasksAndVerify(/*shouldStart=*/false, /*shouldReschedule=*/true);
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"NTPSnippets"})
|
| + public void testNTPSnippetsRescheduleAndLaunchBrowserWithPrefWhenInstanceDoesNotExist() {
|
| + deleteSnippetsLauncherInstance();
|
| + // Set the pref indicating that fetching was scheduled before.
|
| + ContextUtils.getAppSharedPreferences()
|
| + .edit()
|
| + .putBoolean(SnippetsLauncher.PREF_IS_SCHEDULED, true)
|
| + .apply();
|
| +
|
| + startOnInitializeTasksAndVerify(/*shouldStart=*/true, /*shouldReschedule=*/true);
|
| + }
|
| }
|
|
|