Chromium Code Reviews| 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 |