Index: components/precache/content/precache_manager.cc |
diff --git a/components/precache/content/precache_manager.cc b/components/precache/content/precache_manager.cc |
index 1bb682005b2131774772dff5e16e7320198e4508..7732807e8f8e6af204265c69fd075a3f9a0c9bc7 100644 |
--- a/components/precache/content/precache_manager.cc |
+++ b/components/precache/content/precache_manager.cc |
@@ -356,22 +356,35 @@ void PrecacheManager::UpdatePrecacheMetricsAndState( |
const base::Time& fetch_time, |
const net::HttpResponseInfo& info, |
int64_t size, |
- bool is_user_traffic) { |
+ bool is_user_traffic, |
+ const base::Callback<void(base::Time)>& register_synthetic_trial) { |
DCHECK_CURRENTLY_ON(BrowserThread::UI); |
- RecordStatsForFetch(url, referrer, latency, fetch_time, info, size); |
+ BrowserThread::PostTaskAndReplyWithResult( |
+ BrowserThread::DB, FROM_HERE, |
+ base::Bind(&PrecacheDatabase::GetLastPrecacheTimestamp, |
+ base::Unretained(precache_database_.get())), |
+ base::Bind(&PrecacheManager::RecordStatsForFetch, AsWeakPtr(), url, |
+ referrer, latency, fetch_time, info, size, |
+ register_synthetic_trial)); |
+ |
if (is_user_traffic && IsPrecaching()) |
CancelPrecaching(); |
} |
-void PrecacheManager::RecordStatsForFetch(const GURL& url, |
- const GURL& referrer, |
- const base::TimeDelta& latency, |
- const base::Time& fetch_time, |
- const net::HttpResponseInfo& info, |
- int64_t size) { |
+void PrecacheManager::RecordStatsForFetch( |
+ const GURL& url, |
+ const GURL& referrer, |
+ const base::TimeDelta& latency, |
+ const base::Time& fetch_time, |
+ const net::HttpResponseInfo& info, |
+ int64_t size, |
+ const base::Callback<void(base::Time)>& register_synthetic_trial, |
+ base::Time last_precache_time) { |
DCHECK_CURRENTLY_ON(BrowserThread::UI); |
+ register_synthetic_trial.Run(last_precache_time); |
+ |
if (size == 0 || url.is_empty() || !url.SchemeIsHTTPOrHTTPS()) { |
// Ignore empty responses, empty URLs, or URLs that aren't HTTP or HTTPS. |
return; |