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 |