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

Unified Diff: chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebApkUpdateManagerTest.java

Issue 2641973003: Implement server-suggested update check backoff (Closed)
Patch Set: Rebase. Created 3 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebApkUpdateManagerTest.java
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebApkUpdateManagerTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebApkUpdateManagerTest.java
index 3148d26f855dfda65c034995f8052e0f5cf2a742..20253ec12a79b6f1d670645b3cd3e895b0f01459 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebApkUpdateManagerTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebApkUpdateManagerTest.java
@@ -168,11 +168,6 @@ public class WebApkUpdateManagerTest {
mDestroyedFetcher = true;
}
- @Override
- protected long currentTimeMillis() {
- return mClock.currentTimeMillis();
- }
-
public void setIsWebApkForeground(boolean isForeground) {
mIsWebApkForeground = isForeground;
}
@@ -321,7 +316,7 @@ public class WebApkUpdateManagerTest {
private boolean checkUpdateNeededForFetchedManifest(
ManifestData androidManifestData, ManifestData fetchedManifestData) {
registerWebApk(androidManifestData, WebApkVersion.CURRENT_SHELL_APK_VERSION);
- mClock.advance(WebApkUpdateManager.FULL_CHECK_UPDATE_INTERVAL);
+ mClock.advance(WebappDataStorage.UPDATE_INTERVAL);
TestWebApkUpdateManager updateManager = new TestWebApkUpdateManager(mClock);
updateIfNeeded(updateManager);
@@ -365,14 +360,13 @@ public class WebApkUpdateManagerTest {
*/
@Test
public void testCheckUpdateMoreFrequentlyIfUpdateFails() {
- assertTrue(WebApkUpdateManager.FULL_CHECK_UPDATE_INTERVAL
- > WebApkUpdateManager.RETRY_UPDATE_DURATION);
+ assertTrue(WebappDataStorage.UPDATE_INTERVAL > WebappDataStorage.RETRY_UPDATE_DURATION);
WebappDataStorage storage = getStorage();
assertTrue(storage.getDidLastWebApkUpdateRequestSucceed());
assertFalse(updateIfNeededChecksForUpdatedWebManifest());
- mClock.advance(WebApkUpdateManager.RETRY_UPDATE_DURATION);
+ mClock.advance(WebappDataStorage.RETRY_UPDATE_DURATION);
assertFalse(updateIfNeededChecksForUpdatedWebManifest());
// Advance all of the time stamps.
@@ -381,7 +375,7 @@ public class WebApkUpdateManagerTest {
storage.updateDidLastWebApkUpdateRequestSucceed(false);
assertFalse(updateIfNeededChecksForUpdatedWebManifest());
- mClock.advance(WebApkUpdateManager.RETRY_UPDATE_DURATION);
+ mClock.advance(WebappDataStorage.RETRY_UPDATE_DURATION);
assertTrue(updateIfNeededChecksForUpdatedWebManifest());
}
@@ -392,8 +386,7 @@ public class WebApkUpdateManagerTest {
*/
@Test
public void testRegularCheckIntervalIfNoPriorWebApkUpdate() {
- assertTrue(WebApkUpdateManager.FULL_CHECK_UPDATE_INTERVAL
- > WebApkUpdateManager.RETRY_UPDATE_DURATION);
+ assertTrue(WebappDataStorage.UPDATE_INTERVAL > WebappDataStorage.RETRY_UPDATE_DURATION);
getStorage().delete();
WebappDataStorage storage = getStorage();
@@ -402,20 +395,38 @@ public class WebApkUpdateManagerTest {
storage.updateTimeOfLastCheckForUpdatedWebManifest();
assertFalse(updateIfNeededChecksForUpdatedWebManifest());
- mClock.advance(WebApkUpdateManager.RETRY_UPDATE_DURATION);
+ mClock.advance(WebappDataStorage.RETRY_UPDATE_DURATION);
assertFalse(updateIfNeededChecksForUpdatedWebManifest());
- mClock.advance(WebApkUpdateManager.FULL_CHECK_UPDATE_INTERVAL
- - WebApkUpdateManager.RETRY_UPDATE_DURATION);
+ mClock.advance(WebappDataStorage.UPDATE_INTERVAL - WebappDataStorage.RETRY_UPDATE_DURATION);
assertTrue(updateIfNeededChecksForUpdatedWebManifest());
}
/**
+ * Test that if a WebAPK is expected to check updates less frequently, the
+ * {@link WebappDataStorage#shouldUpdate()} returns true after an extended time interval (as
+ * opposed to the usual delay).
+ */
+ @Test
+ public void testRelaxedUpdateIntervalIfNoPriorWebApkUpdate() {
+ assertTrue(WebappDataStorage.RELAXED_UPDATE_INTERVAL > WebappDataStorage.UPDATE_INTERVAL);
+
+ WebappDataStorage storage = getStorage();
+ storage.setRelaxedUpdates(true);
+
+ mClock.advance(WebappDataStorage.UPDATE_INTERVAL);
+ assertFalse(storage.shouldUpdate());
+ mClock.advance(
+ WebappDataStorage.RELAXED_UPDATE_INTERVAL - WebappDataStorage.UPDATE_INTERVAL);
+ assertTrue(storage.shouldUpdate());
+ }
+
+ /**
* Test that the is-update-needed check is tried the next time that the WebAPK is launched if
* Chrome is killed prior to the initial URL finishing loading.
*/
@Test
public void testCheckOnNextLaunchIfClosePriorToFirstPageLoad() {
- mClock.advance(WebApkUpdateManager.FULL_CHECK_UPDATE_INTERVAL);
+ mClock.advance(WebappDataStorage.UPDATE_INTERVAL);
{
TestWebApkUpdateManager updateManager = new TestWebApkUpdateManager(mClock);
updateIfNeeded(updateManager);
@@ -451,7 +462,7 @@ public class WebApkUpdateManagerTest {
@Test
public void testUpdateNotNeeded() {
long initialTime = mClock.currentTimeMillis();
- mClock.advance(WebApkUpdateManager.FULL_CHECK_UPDATE_INTERVAL);
+ mClock.advance(WebappDataStorage.UPDATE_INTERVAL);
TestWebApkUpdateManager updateManager = new TestWebApkUpdateManager(mClock);
updateIfNeeded(updateManager);
@@ -474,7 +485,7 @@ public class WebApkUpdateManagerTest {
public void testMarkUpdateAsSucceededIfUpdateNoLongerNeeded() {
WebappDataStorage storage = getStorage();
storage.updateDidLastWebApkUpdateRequestSucceed(false);
- mClock.advance(WebApkUpdateManager.RETRY_UPDATE_DURATION);
+ mClock.advance(WebappDataStorage.RETRY_UPDATE_DURATION);
TestWebApkUpdateManager updateManager = new TestWebApkUpdateManager(mClock);
updateIfNeeded(updateManager);
@@ -493,7 +504,7 @@ public class WebApkUpdateManagerTest {
*/
@Test
public void testMarkUpdateAsFailedIfClosePriorToUpdateCompleting() {
- mClock.advance(WebApkUpdateManager.FULL_CHECK_UPDATE_INTERVAL);
+ mClock.advance(WebappDataStorage.UPDATE_INTERVAL);
TestWebApkUpdateManager updateManager = new TestWebApkUpdateManager(mClock);
updateIfNeeded(updateManager);
@@ -524,7 +535,7 @@ public class WebApkUpdateManagerTest {
@Test
public void testShellApkOutOfDateNoWebManifest() {
registerWebApk(defaultManifestData(), WebApkVersion.CURRENT_SHELL_APK_VERSION - 1);
- mClock.advance(WebApkUpdateManager.FULL_CHECK_UPDATE_INTERVAL);
+ mClock.advance(WebappDataStorage.UPDATE_INTERVAL);
TestWebApkUpdateManager updateManager = new TestWebApkUpdateManager(mClock);
updateIfNeeded(updateManager);
@@ -547,7 +558,7 @@ public class WebApkUpdateManagerTest {
@Test
public void testShellApkOutOfDateStillHasWebManifest() {
registerWebApk(defaultManifestData(), WebApkVersion.CURRENT_SHELL_APK_VERSION - 1);
- mClock.advance(WebApkUpdateManager.FULL_CHECK_UPDATE_INTERVAL);
+ mClock.advance(WebappDataStorage.UPDATE_INTERVAL);
TestWebApkUpdateManager updateManager = new TestWebApkUpdateManager(mClock);
updateIfNeeded(updateManager);
@@ -572,7 +583,7 @@ public class WebApkUpdateManagerTest {
*/
@Test
public void testStartUrlRedirectsToPageWithUpdatedWebManifest() {
- mClock.advance(WebApkUpdateManager.FULL_CHECK_UPDATE_INTERVAL);
+ mClock.advance(WebappDataStorage.UPDATE_INTERVAL);
TestWebApkUpdateManager updateManager = new TestWebApkUpdateManager(mClock);
updateIfNeeded(updateManager);
@@ -606,7 +617,7 @@ public class WebApkUpdateManagerTest {
*/
@Test
public void testStartUrlRedirectsToPageWithUnchangedWebManifest() {
- mClock.advance(WebApkUpdateManager.FULL_CHECK_UPDATE_INTERVAL);
+ mClock.advance(WebappDataStorage.UPDATE_INTERVAL);
TestWebApkUpdateManager updateManager = new TestWebApkUpdateManager(mClock);
updateIfNeeded(updateManager);
@@ -732,7 +743,7 @@ public class WebApkUpdateManagerTest {
@Test
public void testForceUpdateWhenUncompletedUpdateRequestRechesMaximumTimes() {
- mClock.advance(WebApkUpdateManager.FULL_CHECK_UPDATE_INTERVAL);
+ mClock.advance(WebappDataStorage.UPDATE_INTERVAL);
ManifestData differentManifestData = defaultManifestData();
differentManifestData.name = DIFFERENT_NAME;
WebappDataStorage storage = WebappRegistry.getInstance().getWebappDataStorage(WEBAPK_ID);
@@ -764,7 +775,7 @@ public class WebApkUpdateManagerTest {
differentManifestData.name = DIFFERENT_NAME;
WebappDataStorage storage = WebappRegistry.getInstance().getWebappDataStorage(WEBAPK_ID);
- mClock.advance(WebApkUpdateManager.FULL_CHECK_UPDATE_INTERVAL);
+ mClock.advance(WebappDataStorage.UPDATE_INTERVAL);
TestWebApkUpdateManager updateManager = new TestWebApkUpdateManager(mClock);
updateManager.setIsWebApkForeground(true);
updateIfNeeded(updateManager);

Powered by Google App Engine
This is Rietveld 408576698