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

Unified Diff: components/precache/content/precache_manager.cc

Issue 2596093002: Create a synthetic field trial for precache. (Closed)
Patch Set: Created 4 years 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: components/precache/content/precache_manager.cc
diff --git a/components/precache/content/precache_manager.cc b/components/precache/content/precache_manager.cc
index 204ab492392722db4e52799aebea116da60f1305..4ab90fd75a0d0ffadeb262907cc19014cdbf1f59 100644
--- a/components/precache/content/precache_manager.cc
+++ b/components/precache/content/precache_manager.cc
@@ -63,17 +63,26 @@ PrecacheManager::PrecacheManager(
const data_reduction_proxy::DataReductionProxySettings*
data_reduction_proxy_settings,
const base::FilePath& db_path,
- std::unique_ptr<PrecacheDatabase> precache_database)
+ std::unique_ptr<PrecacheDatabase> precache_database,
+ const base::Callback<void(const base::Time&)>&
+ register_synthetic_field_trial_callback)
: browser_context_(browser_context),
sync_service_(sync_service),
history_service_(history_service),
data_reduction_proxy_settings_(data_reduction_proxy_settings),
- is_precaching_(false) {
+ is_precaching_(false),
+ register_synthetic_field_trial_callback_(
+ register_synthetic_field_trial_callback) {
precache_database_ = std::move(precache_database);
BrowserThread::PostTask(
BrowserThread::DB, FROM_HERE,
base::Bind(base::IgnoreResult(&PrecacheDatabase::Init),
base::Unretained(precache_database_.get()), db_path));
+ BrowserThread::PostTaskAndReplyWithResult(
jamartin 2016/12/21 23:54:33 There are no race conditions between these two tas
twifkak 2017/01/05 23:53:14 Assuming you mean the potential race between Init
+ BrowserThread::DB, FROM_HERE,
+ base::Bind(&PrecacheDatabase::GetLastPrecacheTimestamp,
+ base::Unretained(precache_database_.get())),
+ base::Bind(&PrecacheManager::RegisterSyntheticFieldTrial, AsWeakPtr()));
}
PrecacheManager::~PrecacheManager() {
@@ -84,6 +93,11 @@ PrecacheManager::~PrecacheManager() {
precache_database_.release());
}
+void PrecacheManager::RegisterSyntheticFieldTrial(
+ const base::Time& last_precache_time) {
+ register_synthetic_field_trial_callback_.Run(last_precache_time);
+}
+
bool PrecacheManager::IsInExperimentGroup() const {
// Verify IsPrecachingAllowed() before calling FieldTrialList::FindFullName().
// This is because field trials are only assigned when requested. This allows

Powered by Google App Engine
This is Rietveld 408576698