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

Side by Side Diff: chrome/browser/precache/precache_util.cc

Issue 2562573003: 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 #include "chrome/browser/precache/precache_util.h" 5 #include "chrome/browser/precache/precache_util.h"
6 6
7 #include "base/time/time.h" 7 #include "base/metrics/field_trial.h"
8 #include "base/strings/string_util.h"
8 #include "chrome/browser/browser_process.h" 9 #include "chrome/browser/browser_process.h"
10 #include "chrome/browser/metrics/chrome_metrics_service_accessor.h"
9 #include "chrome/browser/precache/precache_manager_factory.h" 11 #include "chrome/browser/precache/precache_manager_factory.h"
10 #include "chrome/browser/profiles/profile.h" 12 #include "chrome/browser/profiles/profile.h"
11 #include "chrome/browser/profiles/profile_manager.h" 13 #include "chrome/browser/profiles/profile_manager.h"
12 #include "components/data_use_measurement/content/content_url_request_classifier .h" 14 #include "components/data_use_measurement/content/content_url_request_classifier .h"
13 #include "components/precache/content/precache_manager.h" 15 #include "components/precache/content/precache_manager.h"
14 #include "content/public/browser/browser_thread.h" 16 #include "content/public/browser/browser_thread.h"
15 #include "net/url_request/url_request.h" 17 #include "net/url_request/url_request.h"
16 #include "url/gurl.h" 18 #include "url/gurl.h"
17 19
18 namespace net { 20 namespace net {
19 class HttpResponseInfo; 21 class HttpResponseInfo;
20 } 22 }
21 23
22 namespace { 24 namespace {
23 25
26 const char kPrecacheFieldTrialName[] = "Precache";
27 const char kPrecacheSyntheticFieldTrialName[] = "PrecacheSynthetic";
28
29 // Users who precached in the last |kDaysForPrecacheCandidates| days will be
30 // treated as precache candidates.
31 const size_t kDaysForPrecacheCandidates = 15;
32
24 void UpdatePrecacheMetricsAndStateOnUIThread(const GURL& url, 33 void UpdatePrecacheMetricsAndStateOnUIThread(const GURL& url,
25 const GURL& referrer, 34 const GURL& referrer,
26 base::TimeDelta latency, 35 base::TimeDelta latency,
27 const base::Time& fetch_time, 36 const base::Time& fetch_time,
28 const net::HttpResponseInfo& info, 37 const net::HttpResponseInfo& info,
29 int64_t size, 38 int64_t size,
30 bool is_user_traffic, 39 bool is_user_traffic,
31 void* profile_id) { 40 void* profile_id) {
32 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 41 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
33 42
(...skipping 29 matching lines...) Expand all
63 // Record precache metrics when a fetch is completed successfully, if 72 // Record precache metrics when a fetch is completed successfully, if
64 // precaching is allowed. 73 // precaching is allowed.
65 content::BrowserThread::PostTask( 74 content::BrowserThread::PostTask(
66 content::BrowserThread::UI, FROM_HERE, 75 content::BrowserThread::UI, FROM_HERE,
67 base::Bind(&UpdatePrecacheMetricsAndStateOnUIThread, request->url(), 76 base::Bind(&UpdatePrecacheMetricsAndStateOnUIThread, request->url(),
68 GURL(request->referrer()), latency, base::Time::Now(), 77 GURL(request->referrer()), latency, base::Time::Now(),
69 request->response_info(), received_content_length, 78 request->response_info(), received_content_length,
70 data_use_measurement::IsUserRequest(*request), profile_id)); 79 data_use_measurement::IsUserRequest(*request), profile_id));
71 } 80 }
72 81
82 void RegisterPrecacheSyntheticFieldTrial(const base::Time& last_precache_time) {
83 if (base::Time::Now() - last_precache_time <=
84 base::TimeDelta::FromDays(kDaysForPrecacheCandidates)) {
85 const auto& group_name =
86 base::FieldTrialList::FindFullName(kPrecacheFieldTrialName);
87 if (!group_name.empty()) {
88 ChromeMetricsServiceAccessor::RegisterSyntheticFieldTrial(
twifkak 2016/12/08 21:49:22 Ooh, how about a multi-group field trial? Just lea
89 kPrecacheSyntheticFieldTrialName, group_name);
90 }
91 }
92 }
93
73 } // namespace precache 94 } // namespace precache
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698