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

Side by Side Diff: chrome/browser/net/predictor.cc

Issue 2876153002: Support Using ScopedFeatureList in BrowserTest (Closed)
Patch Set: ilya comments addressed Created 3 years, 6 months 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/net/predictor.h" 5 #include "chrome/browser/net/predictor.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 #include <iterator> 9 #include <iterator>
10 #include <set> 10 #include <set>
(...skipping 13 matching lines...) Expand all
24 #include "base/single_thread_task_runner.h" 24 #include "base/single_thread_task_runner.h"
25 #include "base/stl_util.h" 25 #include "base/stl_util.h"
26 #include "base/strings/stringprintf.h" 26 #include "base/strings/stringprintf.h"
27 #include "base/threading/thread_restrictions.h" 27 #include "base/threading/thread_restrictions.h"
28 #include "base/threading/thread_task_runner_handle.h" 28 #include "base/threading/thread_task_runner_handle.h"
29 #include "base/time/time.h" 29 #include "base/time/time.h"
30 #include "base/values.h" 30 #include "base/values.h"
31 #include "chrome/browser/io_thread.h" 31 #include "chrome/browser/io_thread.h"
32 #include "chrome/browser/prefs/session_startup_pref.h" 32 #include "chrome/browser/prefs/session_startup_pref.h"
33 #include "chrome/browser/profiles/profile_io_data.h" 33 #include "chrome/browser/profiles/profile_io_data.h"
34 #include "chrome/common/chrome_features.h"
34 #include "chrome/common/chrome_switches.h" 35 #include "chrome/common/chrome_switches.h"
35 #include "chrome/common/pref_names.h" 36 #include "chrome/common/pref_names.h"
36 #include "components/pref_registry/pref_registry_syncable.h" 37 #include "components/pref_registry/pref_registry_syncable.h"
37 #include "components/prefs/pref_service.h" 38 #include "components/prefs/pref_service.h"
38 #include "components/prefs/scoped_user_pref_update.h" 39 #include "components/prefs/scoped_user_pref_update.h"
39 #include "content/public/browser/browser_thread.h" 40 #include "content/public/browser/browser_thread.h"
40 #include "content/public/browser/resource_hints.h" 41 #include "content/public/browser/resource_hints.h"
41 #include "net/base/address_list.h" 42 #include "net/base/address_list.h"
42 #include "net/base/completion_callback.h" 43 #include "net/base/completion_callback.h"
43 #include "net/base/host_port_pair.h" 44 #include "net/base/host_port_pair.h"
44 #include "net/base/net_errors.h" 45 #include "net/base/net_errors.h"
45 #include "net/http/transport_security_state.h" 46 #include "net/http/transport_security_state.h"
46 #include "net/log/net_log_with_source.h" 47 #include "net/log/net_log_with_source.h"
47 #include "net/proxy/proxy_info.h" 48 #include "net/proxy/proxy_info.h"
48 #include "net/proxy/proxy_service.h" 49 #include "net/proxy/proxy_service.h"
49 #include "net/ssl/ssl_config_service.h" 50 #include "net/ssl/ssl_config_service.h"
50 #include "net/url_request/url_request_context.h" 51 #include "net/url_request/url_request_context.h"
51 #include "net/url_request/url_request_context_getter.h" 52 #include "net/url_request/url_request_context_getter.h"
52 53
53 using base::TimeDelta; 54 using base::TimeDelta;
54 using content::BrowserThread; 55 using content::BrowserThread;
55 56
56 namespace chrome_browser_net { 57 namespace chrome_browser_net {
57 58
58 namespace {
59
60 const base::Feature kNetworkPrediction{"NetworkPrediction",
61 base::FEATURE_ENABLED_BY_DEFAULT};
62
63 } // namespace
64
65 // static 59 // static
66 const int Predictor::kPredictorReferrerVersion = 2; 60 const int Predictor::kPredictorReferrerVersion = 2;
67 const double Predictor::kPreconnectWorthyExpectedValue = 0.8; 61 const double Predictor::kPreconnectWorthyExpectedValue = 0.8;
68 const double Predictor::kDNSPreresolutionWorthyExpectedValue = 0.1; 62 const double Predictor::kDNSPreresolutionWorthyExpectedValue = 0.1;
69 const double Predictor::kDiscardableExpectedValue = 0.05; 63 const double Predictor::kDiscardableExpectedValue = 0.05;
70 const size_t Predictor::kMaxSpeculativeParallelResolves = 3; 64 const size_t Predictor::kMaxSpeculativeParallelResolves = 3;
71 const int Predictor::kMaxUnusedSocketLifetimeSecondsWithoutAGet = 10; 65 const int Predictor::kMaxUnusedSocketLifetimeSecondsWithoutAGet = 10;
72 66
73 // This number was obtained by the Net.Predictor.MRUIndex histogram on Canary 67 // This number was obtained by the Net.Predictor.MRUIndex histogram on Canary
74 // and Dev channel (M53). The database size was initialized to 1000, and the 68 // and Dev channel (M53). The database size was initialized to 1000, and the
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 DCHECK_CURRENTLY_ON(BrowserThread::UI); 115 DCHECK_CURRENTLY_ON(BrowserThread::UI);
122 } 116 }
123 117
124 Predictor::~Predictor() { 118 Predictor::~Predictor() {
125 DCHECK_CURRENTLY_ON(BrowserThread::IO); 119 DCHECK_CURRENTLY_ON(BrowserThread::IO);
126 DCHECK(shutdown_); 120 DCHECK(shutdown_);
127 } 121 }
128 122
129 // static 123 // static
130 Predictor* Predictor::CreatePredictor(bool simple_shutdown) { 124 Predictor* Predictor::CreatePredictor(bool simple_shutdown) {
131 bool predictor_enabled = base::FeatureList::IsEnabled(kNetworkPrediction); 125 bool predictor_enabled =
126 base::FeatureList::IsEnabled(features::kNetworkPrediction);
132 if (simple_shutdown) 127 if (simple_shutdown)
133 return new SimplePredictor(predictor_enabled); 128 return new SimplePredictor(predictor_enabled);
134 return new Predictor(predictor_enabled); 129 return new Predictor(predictor_enabled);
135 } 130 }
136 131
137 void Predictor::RegisterProfilePrefs( 132 void Predictor::RegisterProfilePrefs(
138 user_prefs::PrefRegistrySyncable* registry) { 133 user_prefs::PrefRegistrySyncable* registry) {
139 registry->RegisterListPref(prefs::kDnsPrefetchingStartupList, 134 registry->RegisterListPref(prefs::kDnsPrefetchingStartupList,
140 PrefRegistry::LOSSY_PREF); 135 PrefRegistry::LOSSY_PREF);
141 registry->RegisterListPref(prefs::kDnsPrefetchingHostReferralList, 136 registry->RegisterListPref(prefs::kDnsPrefetchingHostReferralList,
(...skipping 1055 matching lines...) Expand 10 before | Expand all | Expand 10 after
1197 } 1192 }
1198 1193
1199 void SimplePredictor::ShutdownOnUIThread() { 1194 void SimplePredictor::ShutdownOnUIThread() {
1200 SetShutdown(true); 1195 SetShutdown(true);
1201 } 1196 }
1202 1197
1203 bool SimplePredictor::CanPrefetchAndPrerender() const { return true; } 1198 bool SimplePredictor::CanPrefetchAndPrerender() const { return true; }
1204 bool SimplePredictor::CanPreresolveAndPreconnect() const { return true; } 1199 bool SimplePredictor::CanPreresolveAndPreconnect() const { return true; }
1205 1200
1206 } // namespace chrome_browser_net 1201 } // namespace chrome_browser_net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698