| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package org.chromium.chrome.browser.precache; | 5 package org.chromium.chrome.browser.precache; |
| 6 | 6 |
| 7 import android.content.BroadcastReceiver; | 7 import android.content.BroadcastReceiver; |
| 8 import android.content.Context; | 8 import android.content.Context; |
| 9 import android.content.Intent; | 9 import android.content.Intent; |
| 10 import android.content.IntentFilter; | 10 import android.content.IntentFilter; |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 69 public static final String CONTINUATION_TASK_TAG = "precache-continuation"; | 69 public static final String CONTINUATION_TASK_TAG = "precache-continuation"; |
| 70 | 70 |
| 71 static final int WAIT_UNTIL_NEXT_PRECACHE_SECONDS = 6 * 60 * 60; // 6 hours
. | 71 static final int WAIT_UNTIL_NEXT_PRECACHE_SECONDS = 6 * 60 * 60; // 6 hours
. |
| 72 static final int COMPLETION_TASK_MIN_DELAY_SECONDS = 5 * 60; // 5 minutes. | 72 static final int COMPLETION_TASK_MIN_DELAY_SECONDS = 5 * 60; // 5 minutes. |
| 73 static final int COMPLETION_TASK_MAX_DELAY_SECONDS = 60 * 60; // 1 hour. | 73 static final int COMPLETION_TASK_MAX_DELAY_SECONDS = 60 * 60; // 1 hour. |
| 74 static final int MAX_SYNC_SERVICE_INIT_TIMOUT_MS = 5 * 60 * 1000; // 5 minut
es | 74 static final int MAX_SYNC_SERVICE_INIT_TIMOUT_MS = 5 * 60 * 1000; // 5 minut
es |
| 75 static final int MAX_PRECACHE_DURATION_SECONDS = 30 * 60; // 30 minutes. | 75 static final int MAX_PRECACHE_DURATION_SECONDS = 30 * 60; // 30 minutes. |
| 76 static final Set<Integer> SYNC_SERVICE_CONFIGURED_DATATYPES = | 76 static final Set<Integer> SYNC_SERVICE_CONFIGURED_DATATYPES = |
| 77 Collections.unmodifiableSet(new HashSet<Integer>(Arrays.asList(Model
Type.SESSIONS))); | 77 Collections.unmodifiableSet(new HashSet<Integer>(Arrays.asList(Model
Type.SESSIONS))); |
| 78 | 78 |
| 79 private static final String PREF_PRECACHE_PERIODIC_TASK_START_TIME_MS = |
| 80 "precache.periodic_task_start_time_ms"; |
| 81 |
| 79 /** | 82 /** |
| 80 * Singleton instance of the PrecacheController. PrecacheController is a | 83 * Singleton instance of the PrecacheController. PrecacheController is a |
| 81 * singleton so that there is a single handle by which to determine if | 84 * singleton so that there is a single handle by which to determine if |
| 82 * precaching is underway, and to cancel it if necessary. | 85 * precaching is underway, and to cancel it if necessary. |
| 83 */ | 86 */ |
| 84 private static PrecacheController sInstance; | 87 private static PrecacheController sInstance; |
| 85 | 88 |
| 86 /** | 89 /** |
| 87 * The default task scheduler. Overridden for tests. | 90 * The default task scheduler. Overridden for tests. |
| 88 */ | 91 */ |
| (...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 348 assert mNonThreadSafe.calledOnValidThread(); | 351 assert mNonThreadSafe.calledOnValidThread(); |
| 349 Log.v(TAG, "precache task (%s) started", tag); | 352 Log.v(TAG, "precache task (%s) started", tag); |
| 350 if (!isPrecachingEnabled()) { | 353 if (!isPrecachingEnabled()) { |
| 351 Log.v(TAG, "precaching isn't enabled"); | 354 Log.v(TAG, "precaching isn't enabled"); |
| 352 cancelPeriodicPrecacheTask(mAppContext); | 355 cancelPeriodicPrecacheTask(mAppContext); |
| 353 cancelPrecacheCompletionTask(mAppContext); | 356 cancelPrecacheCompletionTask(mAppContext); |
| 354 return GcmNetworkManager.RESULT_SUCCESS; | 357 return GcmNetworkManager.RESULT_SUCCESS; |
| 355 } | 358 } |
| 356 if (setIsPrecaching(true)) { | 359 if (setIsPrecaching(true)) { |
| 357 if (PERIODIC_TASK_TAG.equals(tag)) { | 360 if (PERIODIC_TASK_TAG.equals(tag)) { |
| 361 recordPeriodicTaskIntervalHistogram(); |
| 358 cancelPrecacheCompletionTask(mAppContext); | 362 cancelPrecacheCompletionTask(mAppContext); |
| 359 } | 363 } |
| 360 startPrecachingAfterSyncInit(); | 364 startPrecachingAfterSyncInit(); |
| 361 return GcmNetworkManager.RESULT_SUCCESS; | 365 return GcmNetworkManager.RESULT_SUCCESS; |
| 362 } | 366 } |
| 363 Log.v(TAG, "precache session was already running"); | 367 Log.v(TAG, "precache session was already running"); |
| 364 return GcmNetworkManager.RESULT_FAILURE; | 368 return GcmNetworkManager.RESULT_FAILURE; |
| 365 } | 369 } |
| 366 | 370 |
| 367 @VisibleForTesting | 371 @VisibleForTesting |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 497 @VisibleForTesting | 501 @VisibleForTesting |
| 498 void setPrecacheLauncher(PrecacheLauncher precacheLauncher) { | 502 void setPrecacheLauncher(PrecacheLauncher precacheLauncher) { |
| 499 assert mNonThreadSafe.calledOnValidThread(); | 503 assert mNonThreadSafe.calledOnValidThread(); |
| 500 mPrecacheLauncher = precacheLauncher; | 504 mPrecacheLauncher = precacheLauncher; |
| 501 } | 505 } |
| 502 | 506 |
| 503 @VisibleForTesting | 507 @VisibleForTesting |
| 504 static void setTaskScheduler(PrecacheTaskScheduler taskScheduler) { | 508 static void setTaskScheduler(PrecacheTaskScheduler taskScheduler) { |
| 505 PrecacheController.sTaskScheduler = taskScheduler; | 509 PrecacheController.sTaskScheduler = taskScheduler; |
| 506 } | 510 } |
| 511 |
| 512 private static void recordPeriodicTaskIntervalHistogram() { |
| 513 SharedPreferences prefs = ContextUtils.getAppSharedPreferences(); |
| 514 long previous_start_time_ms = prefs.getLong(PREF_PRECACHE_PERIODIC_TASK_
START_TIME_MS, 0); |
| 515 long current_start_time_ms = System.currentTimeMillis(); |
| 516 if (previous_start_time_ms > 0 && current_start_time_ms > previous_start
_time_ms) { |
| 517 int interval_mins = |
| 518 (int) ((current_start_time_ms - previous_start_time_ms) / (1
000 * 60)); |
| 519 RecordHistogram.recordCustomCountHistogram( |
| 520 "Precache.PeriodicTaskInterval", interval_mins, 1, 10000, 50
); |
| 521 } |
| 522 prefs.edit() |
| 523 .putLong(PREF_PRECACHE_PERIODIC_TASK_START_TIME_MS, current_star
t_time_ms) |
| 524 .apply(); |
| 525 } |
| 507 } | 526 } |
| OLD | NEW |