| OLD | NEW |
| 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 "net/http/http_server_properties_impl.h" | 5 #include "net/http/http_server_properties_impl.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/location.h" | 8 #include "base/location.h" |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| (...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 271 if (it->second.alternative_service.host.empty()) { | 271 if (it->second.alternative_service.host.empty()) { |
| 272 alternative_service.host = origin.host(); | 272 alternative_service.host = origin.host(); |
| 273 } | 273 } |
| 274 return alternative_service; | 274 return alternative_service; |
| 275 } | 275 } |
| 276 | 276 |
| 277 void HttpServerPropertiesImpl::SetAlternativeService( | 277 void HttpServerPropertiesImpl::SetAlternativeService( |
| 278 const HostPortPair& origin, | 278 const HostPortPair& origin, |
| 279 const AlternativeService& alternative_service, | 279 const AlternativeService& alternative_service, |
| 280 double alternative_probability) { | 280 double alternative_probability) { |
| 281 AlternativeService complete_alternative_service(alternative_service); | |
| 282 if (complete_alternative_service.host.empty()) { | |
| 283 complete_alternative_service.host = origin.host(); | |
| 284 } | |
| 285 if (IsAlternativeServiceBroken(complete_alternative_service)) { | |
| 286 DVLOG(1) << "Ignore alternative service since it is known to be broken."; | |
| 287 return; | |
| 288 } | |
| 289 | |
| 290 const AlternativeServiceInfo alternative_service_info( | 281 const AlternativeServiceInfo alternative_service_info( |
| 291 alternative_service, alternative_probability); | 282 alternative_service, alternative_probability); |
| 292 AlternativeServiceMap::const_iterator it = | 283 AlternativeServiceMap::const_iterator it = |
| 293 GetAlternateProtocolIterator(origin); | 284 GetAlternateProtocolIterator(origin); |
| 294 if (it == alternative_service_map_.end() && | 285 if (it == alternative_service_map_.end() && |
| 295 alternative_probability >= alternative_service_probability_threshold_) { | 286 alternative_probability >= alternative_service_probability_threshold_) { |
| 296 // TODO(rch): Consider the case where multiple requests are started | 287 // TODO(rch): Consider the case where multiple requests are started |
| 297 // before the first completes. In this case, only one of the jobs | 288 // before the first completes. In this case, only one of the jobs |
| 298 // would reach this code, whereas all of them should should have. | 289 // would reach this code, whereas all of them should should have. |
| 299 HistogramAlternateProtocolUsage(ALTERNATE_PROTOCOL_USAGE_MAPPING_MISSING); | 290 HistogramAlternateProtocolUsage(ALTERNATE_PROTOCOL_USAGE_MAPPING_MISSING); |
| (...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 582 base::TimeDelta delay = when > now ? when - now : base::TimeDelta(); | 573 base::TimeDelta delay = when > now ? when - now : base::TimeDelta(); |
| 583 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 574 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
| 584 FROM_HERE, | 575 FROM_HERE, |
| 585 base::Bind( | 576 base::Bind( |
| 586 &HttpServerPropertiesImpl::ExpireBrokenAlternateProtocolMappings, | 577 &HttpServerPropertiesImpl::ExpireBrokenAlternateProtocolMappings, |
| 587 weak_ptr_factory_.GetWeakPtr()), | 578 weak_ptr_factory_.GetWeakPtr()), |
| 588 delay); | 579 delay); |
| 589 } | 580 } |
| 590 | 581 |
| 591 } // namespace net | 582 } // namespace net |
| OLD | NEW |