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); |
+ } |
} |