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

Side by Side Diff: net/http/http_server_properties_manager.cc

Issue 1139843002: HttpServerProperties - Track UpdatePrefs callers. In offical builds, on (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fixed comments Created 5 years, 7 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "net/http/http_server_properties_manager.h" 5 #include "net/http/http_server_properties_manager.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/metrics/histogram.h" 8 #include "base/metrics/histogram.h"
9 #include "base/prefs/pref_service.h" 9 #include "base/prefs/pref_service.h"
10 #include "base/single_thread_task_runner.h" 10 #include "base/single_thread_task_runner.h"
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 const char kAddressKey[] = "address"; 59 const char kAddressKey[] = "address";
60 const char kAlternateProtocolKey[] = "alternate_protocol"; 60 const char kAlternateProtocolKey[] = "alternate_protocol";
61 const char kAlternativeServiceKey[] = "alternative_service"; 61 const char kAlternativeServiceKey[] = "alternative_service";
62 const char kProtocolKey[] = "protocol_str"; 62 const char kProtocolKey[] = "protocol_str";
63 const char kHostKey[] = "host"; 63 const char kHostKey[] = "host";
64 const char kPortKey[] = "port"; 64 const char kPortKey[] = "port";
65 const char kProbabilityKey[] = "probability"; 65 const char kProbabilityKey[] = "probability";
66 const char kNetworkStatsKey[] = "network_stats"; 66 const char kNetworkStatsKey[] = "network_stats";
67 const char kSrttKey[] = "srtt"; 67 const char kSrttKey[] = "srtt";
68 68
69 // TODO(rtenneti): Delete the following histogram after collecting some data.
70 void RecordUpdatePrefs(HttpServerPropertiesManager::Location location) {
mmenke 2015/05/12 17:38:52 optional: Could inline this now, with the comment
ramant (doing other things) 2015/05/12 17:57:17 Done.
71 UMA_HISTOGRAM_ENUMERATION("Net.HttpServerProperties.UpdatePrefs", location,
72 HttpServerPropertiesManager::NUM_LOCATIONS);
73 }
74
69 } // namespace 75 } // namespace
70 76
71 //////////////////////////////////////////////////////////////////////////////// 77 ////////////////////////////////////////////////////////////////////////////////
72 // HttpServerPropertiesManager 78 // HttpServerPropertiesManager
73 79
74 HttpServerPropertiesManager::HttpServerPropertiesManager( 80 HttpServerPropertiesManager::HttpServerPropertiesManager(
75 PrefService* pref_service, 81 PrefService* pref_service,
76 const char* pref_path, 82 const char* pref_path,
77 scoped_refptr<base::SequencedTaskRunner> network_task_runner) 83 scoped_refptr<base::SequencedTaskRunner> network_task_runner)
78 : pref_task_runner_(base::ThreadTaskRunnerHandle::Get()), 84 : pref_task_runner_(base::ThreadTaskRunnerHandle::Get()),
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 const HostPortPair& server) { 159 const HostPortPair& server) {
154 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 160 DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
155 return http_server_properties_impl_->SupportsRequestPriority(server); 161 return http_server_properties_impl_->SupportsRequestPriority(server);
156 } 162 }
157 163
158 void HttpServerPropertiesManager::SetSupportsSpdy(const HostPortPair& server, 164 void HttpServerPropertiesManager::SetSupportsSpdy(const HostPortPair& server,
159 bool support_spdy) { 165 bool support_spdy) {
160 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 166 DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
161 167
162 http_server_properties_impl_->SetSupportsSpdy(server, support_spdy); 168 http_server_properties_impl_->SetSupportsSpdy(server, support_spdy);
163 ScheduleUpdatePrefsOnNetworkThread(); 169 ScheduleUpdatePrefsOnNetworkThread(SUPPORTS_SPDY);
164 } 170 }
165 171
166 bool HttpServerPropertiesManager::RequiresHTTP11(const HostPortPair& server) { 172 bool HttpServerPropertiesManager::RequiresHTTP11(const HostPortPair& server) {
167 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 173 DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
168 return http_server_properties_impl_->RequiresHTTP11(server); 174 return http_server_properties_impl_->RequiresHTTP11(server);
169 } 175 }
170 176
171 void HttpServerPropertiesManager::SetHTTP11Required( 177 void HttpServerPropertiesManager::SetHTTP11Required(
172 const HostPortPair& server) { 178 const HostPortPair& server) {
173 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 179 DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
174 180
175 http_server_properties_impl_->SetHTTP11Required(server); 181 http_server_properties_impl_->SetHTTP11Required(server);
176 ScheduleUpdatePrefsOnNetworkThread(); 182 ScheduleUpdatePrefsOnNetworkThread(HTTP_11_REQUIRED);
177 } 183 }
178 184
179 void HttpServerPropertiesManager::MaybeForceHTTP11(const HostPortPair& server, 185 void HttpServerPropertiesManager::MaybeForceHTTP11(const HostPortPair& server,
180 SSLConfig* ssl_config) { 186 SSLConfig* ssl_config) {
181 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 187 DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
182 http_server_properties_impl_->MaybeForceHTTP11(server, ssl_config); 188 http_server_properties_impl_->MaybeForceHTTP11(server, ssl_config);
183 } 189 }
184 190
185 AlternativeService HttpServerPropertiesManager::GetAlternativeService( 191 AlternativeService HttpServerPropertiesManager::GetAlternativeService(
186 const HostPortPair& origin) { 192 const HostPortPair& origin) {
187 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 193 DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
188 return http_server_properties_impl_->GetAlternativeService(origin); 194 return http_server_properties_impl_->GetAlternativeService(origin);
189 } 195 }
190 196
191 void HttpServerPropertiesManager::SetAlternativeService( 197 void HttpServerPropertiesManager::SetAlternativeService(
192 const HostPortPair& origin, 198 const HostPortPair& origin,
193 const AlternativeService& alternative_service, 199 const AlternativeService& alternative_service,
194 double alternative_probability) { 200 double alternative_probability) {
195 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 201 DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
196 http_server_properties_impl_->SetAlternativeService( 202 http_server_properties_impl_->SetAlternativeService(
197 origin, alternative_service, alternative_probability); 203 origin, alternative_service, alternative_probability);
198 ScheduleUpdatePrefsOnNetworkThread(); 204 ScheduleUpdatePrefsOnNetworkThread(SET_ALTERNATIVE_SERVICE);
199 } 205 }
200 206
201 void HttpServerPropertiesManager::MarkAlternativeServiceBroken( 207 void HttpServerPropertiesManager::MarkAlternativeServiceBroken(
202 const AlternativeService& alternative_service) { 208 const AlternativeService& alternative_service) {
203 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 209 DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
204 http_server_properties_impl_->MarkAlternativeServiceBroken( 210 http_server_properties_impl_->MarkAlternativeServiceBroken(
205 alternative_service); 211 alternative_service);
206 ScheduleUpdatePrefsOnNetworkThread(); 212 ScheduleUpdatePrefsOnNetworkThread(MARK_ALTERNATIVE_SERVICE_BROKEN);
207 } 213 }
208 214
209 void HttpServerPropertiesManager::MarkAlternativeServiceRecentlyBroken( 215 void HttpServerPropertiesManager::MarkAlternativeServiceRecentlyBroken(
210 const AlternativeService& alternative_service) { 216 const AlternativeService& alternative_service) {
211 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 217 DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
212 http_server_properties_impl_->MarkAlternativeServiceRecentlyBroken( 218 http_server_properties_impl_->MarkAlternativeServiceRecentlyBroken(
213 alternative_service); 219 alternative_service);
214 ScheduleUpdatePrefsOnNetworkThread(); 220 ScheduleUpdatePrefsOnNetworkThread(MARK_ALTERNATIVE_SERVICE_RECENTLY_BROKEN);
215 } 221 }
216 222
217 bool HttpServerPropertiesManager::IsAlternativeServiceBroken( 223 bool HttpServerPropertiesManager::IsAlternativeServiceBroken(
218 const AlternativeService& alternative_service) const { 224 const AlternativeService& alternative_service) const {
219 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 225 DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
220 return http_server_properties_impl_->IsAlternativeServiceBroken( 226 return http_server_properties_impl_->IsAlternativeServiceBroken(
221 alternative_service); 227 alternative_service);
222 } 228 }
223 229
224 bool HttpServerPropertiesManager::WasAlternativeServiceRecentlyBroken( 230 bool HttpServerPropertiesManager::WasAlternativeServiceRecentlyBroken(
225 const AlternativeService& alternative_service) { 231 const AlternativeService& alternative_service) {
226 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 232 DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
227 return http_server_properties_impl_->WasAlternativeServiceRecentlyBroken( 233 return http_server_properties_impl_->WasAlternativeServiceRecentlyBroken(
228 alternative_service); 234 alternative_service);
229 } 235 }
230 236
231 void HttpServerPropertiesManager::ConfirmAlternativeService( 237 void HttpServerPropertiesManager::ConfirmAlternativeService(
232 const AlternativeService& alternative_service) { 238 const AlternativeService& alternative_service) {
233 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 239 DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
234 http_server_properties_impl_->ConfirmAlternativeService(alternative_service); 240 http_server_properties_impl_->ConfirmAlternativeService(alternative_service);
235 ScheduleUpdatePrefsOnNetworkThread(); 241 ScheduleUpdatePrefsOnNetworkThread(CONFIRM_ALTERNATIVE_SERVICE);
236 } 242 }
237 243
238 void HttpServerPropertiesManager::ClearAlternativeService( 244 void HttpServerPropertiesManager::ClearAlternativeService(
239 const HostPortPair& origin) { 245 const HostPortPair& origin) {
240 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 246 DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
241 http_server_properties_impl_->ClearAlternativeService(origin); 247 http_server_properties_impl_->ClearAlternativeService(origin);
242 ScheduleUpdatePrefsOnNetworkThread(); 248 ScheduleUpdatePrefsOnNetworkThread(CLEAR_ALTERNATIVE_SERVICE);
243 } 249 }
244 250
245 const AlternativeServiceMap& 251 const AlternativeServiceMap&
246 HttpServerPropertiesManager::alternative_service_map() const { 252 HttpServerPropertiesManager::alternative_service_map() const {
247 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 253 DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
248 return http_server_properties_impl_->alternative_service_map(); 254 return http_server_properties_impl_->alternative_service_map();
249 } 255 }
250 256
251 base::Value* HttpServerPropertiesManager::GetAlternativeServiceInfoAsValue() 257 base::Value* HttpServerPropertiesManager::GetAlternativeServiceInfoAsValue()
252 const { 258 const {
(...skipping 16 matching lines...) Expand all
269 275
270 bool HttpServerPropertiesManager::SetSpdySetting( 276 bool HttpServerPropertiesManager::SetSpdySetting(
271 const HostPortPair& host_port_pair, 277 const HostPortPair& host_port_pair,
272 SpdySettingsIds id, 278 SpdySettingsIds id,
273 SpdySettingsFlags flags, 279 SpdySettingsFlags flags,
274 uint32 value) { 280 uint32 value) {
275 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 281 DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
276 bool persist = http_server_properties_impl_->SetSpdySetting( 282 bool persist = http_server_properties_impl_->SetSpdySetting(
277 host_port_pair, id, flags, value); 283 host_port_pair, id, flags, value);
278 if (persist) 284 if (persist)
279 ScheduleUpdatePrefsOnNetworkThread(); 285 ScheduleUpdatePrefsOnNetworkThread(SET_SPDY_SETTING);
280 return persist; 286 return persist;
281 } 287 }
282 288
283 void HttpServerPropertiesManager::ClearSpdySettings( 289 void HttpServerPropertiesManager::ClearSpdySettings(
284 const HostPortPair& host_port_pair) { 290 const HostPortPair& host_port_pair) {
285 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 291 DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
286 http_server_properties_impl_->ClearSpdySettings(host_port_pair); 292 http_server_properties_impl_->ClearSpdySettings(host_port_pair);
287 ScheduleUpdatePrefsOnNetworkThread(); 293 ScheduleUpdatePrefsOnNetworkThread(CLEAR_SPDY_SETTINGS);
288 } 294 }
289 295
290 void HttpServerPropertiesManager::ClearAllSpdySettings() { 296 void HttpServerPropertiesManager::ClearAllSpdySettings() {
291 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 297 DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
292 http_server_properties_impl_->ClearAllSpdySettings(); 298 http_server_properties_impl_->ClearAllSpdySettings();
293 ScheduleUpdatePrefsOnNetworkThread(); 299 ScheduleUpdatePrefsOnNetworkThread(CLEAR_ALL_SPDY_SETTINGS);
294 } 300 }
295 301
296 const SpdySettingsMap& HttpServerPropertiesManager::spdy_settings_map() 302 const SpdySettingsMap& HttpServerPropertiesManager::spdy_settings_map()
297 const { 303 const {
298 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 304 DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
299 return http_server_properties_impl_->spdy_settings_map(); 305 return http_server_properties_impl_->spdy_settings_map();
300 } 306 }
301 307
302 bool HttpServerPropertiesManager::GetSupportsQuic( 308 bool HttpServerPropertiesManager::GetSupportsQuic(
303 IPAddressNumber* last_address) const { 309 IPAddressNumber* last_address) const {
304 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 310 DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
305 return http_server_properties_impl_->GetSupportsQuic(last_address); 311 return http_server_properties_impl_->GetSupportsQuic(last_address);
306 } 312 }
307 313
308 void HttpServerPropertiesManager::SetSupportsQuic( 314 void HttpServerPropertiesManager::SetSupportsQuic(
309 bool used_quic, 315 bool used_quic,
310 const IPAddressNumber& address) { 316 const IPAddressNumber& address) {
311 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 317 DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
312 http_server_properties_impl_->SetSupportsQuic(used_quic, address); 318 http_server_properties_impl_->SetSupportsQuic(used_quic, address);
313 ScheduleUpdatePrefsOnNetworkThread(); 319 ScheduleUpdatePrefsOnNetworkThread(SET_SUPPORTS_QUIC);
314 } 320 }
315 321
316 void HttpServerPropertiesManager::SetServerNetworkStats( 322 void HttpServerPropertiesManager::SetServerNetworkStats(
317 const HostPortPair& host_port_pair, 323 const HostPortPair& host_port_pair,
318 ServerNetworkStats stats) { 324 ServerNetworkStats stats) {
319 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 325 DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
320 http_server_properties_impl_->SetServerNetworkStats(host_port_pair, stats); 326 http_server_properties_impl_->SetServerNetworkStats(host_port_pair, stats);
321 ScheduleUpdatePrefsOnNetworkThread(); 327 ScheduleUpdatePrefsOnNetworkThread(SET_SERVER_NETWORK_STATS);
322 } 328 }
323 329
324 const ServerNetworkStats* HttpServerPropertiesManager::GetServerNetworkStats( 330 const ServerNetworkStats* HttpServerPropertiesManager::GetServerNetworkStats(
325 const HostPortPair& host_port_pair) { 331 const HostPortPair& host_port_pair) {
326 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 332 DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
327 return http_server_properties_impl_->GetServerNetworkStats(host_port_pair); 333 return http_server_properties_impl_->GetServerNetworkStats(host_port_pair);
328 } 334 }
329 335
330 const ServerNetworkStatsMap& 336 const ServerNetworkStatsMap&
331 HttpServerPropertiesManager::server_network_stats_map() const { 337 HttpServerPropertiesManager::server_network_stats_map() const {
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
645 http_server_properties_impl_->InitializeAlternativeServiceServers( 651 http_server_properties_impl_->InitializeAlternativeServiceServers(
646 alternative_service_map); 652 alternative_service_map);
647 653
648 http_server_properties_impl_->InitializeSupportsQuic(last_quic_address); 654 http_server_properties_impl_->InitializeSupportsQuic(last_quic_address);
649 655
650 http_server_properties_impl_->InitializeServerNetworkStats( 656 http_server_properties_impl_->InitializeServerNetworkStats(
651 server_network_stats_map); 657 server_network_stats_map);
652 658
653 // Update the prefs with what we have read (delete all corrupted prefs). 659 // Update the prefs with what we have read (delete all corrupted prefs).
654 if (detected_corrupted_prefs) 660 if (detected_corrupted_prefs)
655 ScheduleUpdatePrefsOnNetworkThread(); 661 ScheduleUpdatePrefsOnNetworkThread(DETECTED_CORRUPTED_PREFS);
656 } 662 }
657 663
658 // 664 //
659 // Update Preferences with data from the cached data. 665 // Update Preferences with data from the cached data.
660 // 666 //
661 void HttpServerPropertiesManager::ScheduleUpdatePrefsOnNetworkThread() { 667 void HttpServerPropertiesManager::ScheduleUpdatePrefsOnNetworkThread(
668 Location location) {
662 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 669 DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
663 // Cancel pending updates, if any. 670 // Cancel pending updates, if any.
664 network_prefs_update_timer_->Stop(); 671 network_prefs_update_timer_->Stop();
665 StartPrefsUpdateTimerOnNetworkThread( 672 StartPrefsUpdateTimerOnNetworkThread(
666 base::TimeDelta::FromMilliseconds(kUpdatePrefsDelayMs)); 673 base::TimeDelta::FromMilliseconds(kUpdatePrefsDelayMs));
674 RecordUpdatePrefs(location);
667 } 675 }
668 676
669 void HttpServerPropertiesManager::StartPrefsUpdateTimerOnNetworkThread( 677 void HttpServerPropertiesManager::StartPrefsUpdateTimerOnNetworkThread(
670 base::TimeDelta delay) { 678 base::TimeDelta delay) {
671 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 679 DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
672 // This is overridden in tests to post the task without the delay. 680 // This is overridden in tests to post the task without the delay.
673 network_prefs_update_timer_->Start( 681 network_prefs_update_timer_->Start(
674 FROM_HERE, 682 FROM_HERE,
675 delay, 683 delay,
676 this, 684 this,
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after
946 server_network_stats_dict); 954 server_network_stats_dict);
947 } 955 }
948 956
949 void HttpServerPropertiesManager::OnHttpServerPropertiesChanged() { 957 void HttpServerPropertiesManager::OnHttpServerPropertiesChanged() {
950 DCHECK(pref_task_runner_->RunsTasksOnCurrentThread()); 958 DCHECK(pref_task_runner_->RunsTasksOnCurrentThread());
951 if (!setting_prefs_) 959 if (!setting_prefs_)
952 ScheduleUpdateCacheOnPrefThread(); 960 ScheduleUpdateCacheOnPrefThread();
953 } 961 }
954 962
955 } // namespace net 963 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698