Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkUpdateManager.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkUpdateManager.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkUpdateManager.java |
| index 3c4bd649acc5159c4475ebd082fb6d99abd44b54..1d718ef7033e6bd91ba7db11121d8ddc49f35a9b 100644 |
| --- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkUpdateManager.java |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkUpdateManager.java |
| @@ -46,6 +46,12 @@ public class WebApkUpdateManager implements WebApkUpdateDataFetcher.Observer { |
| */ |
| private static final int MAX_UPDATE_ATTEMPTS = 3; |
| + /** |
| + * crbug.com/680128. Number of milliseconds between checks of updates for a WebAPK that is |
|
dominickn
2017/02/14 04:13:33
Nit: misaligned * at the start of the comment
Nit
Xi Han
2017/02/14 22:25:46
Done.
|
| + * expected to check updates less frequently. |
| + */ |
| + public static final long INFREQUENT_UPDATE_INTERVAL = TimeUnit.DAYS.toMillis(30L); |
| + |
| /** Data extracted from the WebAPK's launch intent and from the WebAPK's Android Manifest. */ |
| private WebApkInfo mInfo; |
| @@ -158,14 +164,14 @@ public class WebApkUpdateManager implements WebApkUpdateDataFetcher.Observer { |
| if (!needsUpgrade) { |
| if (!mPreviousUpdateSucceeded) { |
| - recordUpdate(storage, true); |
| + recordUpdate(storage, true, null); |
| } |
| return; |
| } |
| // Set WebAPK update as having failed in case that Chrome is killed prior to |
| // {@link onBuiltWebApk} being called. |
| - recordUpdate(storage, false); |
| + recordUpdate(storage, false, null); |
| if (fetchedInfo != null) { |
| scheduleUpdate(fetchedInfo, bestIconUrl, false /* isManifestStale */); |
| @@ -318,8 +324,11 @@ public class WebApkUpdateManager implements WebApkUpdateDataFetcher.Observer { |
| if (isShellApkVersionOutOfDate(info)) return true; |
| long now = currentTimeMillis(); |
| + boolean isInfrequentUpdates = storage.getInfrequentUpdates(); |
|
dominickn
2017/02/14 04:13:34
I feel like this computation should be pushed into
Xi Han
2017/02/14 22:25:46
Personally I would prefer to leave all these logic
dominickn
2017/02/15 05:58:32
I'm not sure why the tests would need to be rewrit
|
| + long checkUpdatesInterval = |
| + isInfrequentUpdates ? INFREQUENT_UPDATE_INTERVAL : FULL_CHECK_UPDATE_INTERVAL; |
| long sinceLastCheckDurationMs = now - storage.getLastCheckForWebManifestUpdateTime(); |
| - if (sinceLastCheckDurationMs >= FULL_CHECK_UPDATE_INTERVAL) return true; |
| + if (sinceLastCheckDurationMs >= checkUpdatesInterval) return true; |
| long sinceLastUpdateRequestDurationMs = |
| now - storage.getLastWebApkUpdateRequestCompletionTime(); |
| @@ -331,11 +340,15 @@ public class WebApkUpdateManager implements WebApkUpdateDataFetcher.Observer { |
| * Updates {@link WebappDataStorage} with the time of the latest WebAPK update and whether the |
| * WebAPK update succeeded. |
| */ |
| - private static void recordUpdate(WebappDataStorage storage, boolean success) { |
| + private static void recordUpdate( |
| + WebappDataStorage storage, boolean success, Boolean isInfrequentUpdates) { |
|
dominickn
2017/02/14 04:13:33
Why does this need to be a Boolean object that's n
Xi Han
2017/02/14 22:25:46
Hmmm, I guess a boolean works too. Updated.
|
| // Update the request time and result together. It prevents getting a correct request time |
| // but a result from the previous request. |
| storage.updateTimeOfLastWebApkUpdateRequestCompletion(); |
| storage.updateDidLastWebApkUpdateRequestSucceed(success); |
| + if (isInfrequentUpdates != null) { |
| + storage.updateInfrequentUpdates(isInfrequentUpdates); |
|
dominickn
2017/02/14 04:13:33
storage.shouldRelaxUpdates(shouldRelaxUpdates). Th
Xi Han
2017/02/14 22:25:46
I would prefer to keep the logic in here.
dominickn
2017/02/15 05:58:32
I think it makes much more sense for this logic to
|
| + } |
| } |
| /** |
| @@ -392,9 +405,9 @@ public class WebApkUpdateManager implements WebApkUpdateDataFetcher.Observer { |
| * fails. |
| */ |
| @CalledByNative |
| - private static void onBuiltWebApk(String id, boolean success) { |
| + private static void onBuiltWebApk(String id, boolean success, boolean isInfrequentUpdates) { |
|
pkotwicz
2017/02/14 00:15:12
Nit: isInfrequentUpdates -> lessUpdates
Xi Han
2017/02/14 22:25:46
Done.
|
| WebappDataStorage storage = WebappRegistry.getInstance().getWebappDataStorage(id); |
| - recordUpdate(storage, success); |
| + recordUpdate(storage, success, isInfrequentUpdates); |
| } |
| private static native void nativeUpdateAsync(String id, String startUrl, String scope, |