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 <algorithm> | 7 #include <algorithm> |
8 #include <memory> | 8 #include <memory> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
239 DCHECK(CalledOnValidThread()); | 239 DCHECK(CalledOnValidThread()); |
240 if (server.host().empty()) | 240 if (server.host().empty()) |
241 return false; | 241 return false; |
242 | 242 |
243 if (GetSupportsSpdy(server)) | 243 if (GetSupportsSpdy(server)) |
244 return true; | 244 return true; |
245 const AlternativeServiceVector alternative_service_vector = | 245 const AlternativeServiceVector alternative_service_vector = |
246 GetAlternativeServices(server); | 246 GetAlternativeServices(server); |
247 for (const AlternativeService& alternative_service : | 247 for (const AlternativeService& alternative_service : |
248 alternative_service_vector) { | 248 alternative_service_vector) { |
249 if (alternative_service.protocol == kProtoQUIC) { | 249 if (alternative_service.protocol == QUIC) { |
250 return true; | 250 return true; |
251 } | 251 } |
252 } | 252 } |
253 return false; | 253 return false; |
254 } | 254 } |
255 | 255 |
256 bool HttpServerPropertiesImpl::GetSupportsSpdy( | 256 bool HttpServerPropertiesImpl::GetSupportsSpdy( |
257 const url::SchemeHostPort& server) { | 257 const url::SchemeHostPort& server) { |
258 DCHECK(CalledOnValidThread()); | 258 DCHECK(CalledOnValidThread()); |
259 if (server.host().empty()) | 259 if (server.host().empty()) |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
333 it = map_it->second.erase(it); | 333 it = map_it->second.erase(it); |
334 continue; | 334 continue; |
335 } | 335 } |
336 AlternativeService alternative_service(it->alternative_service); | 336 AlternativeService alternative_service(it->alternative_service); |
337 if (alternative_service.host.empty()) { | 337 if (alternative_service.host.empty()) { |
338 alternative_service.host = origin.host(); | 338 alternative_service.host = origin.host(); |
339 } | 339 } |
340 // If the alternative service is equivalent to the origin (same host, same | 340 // If the alternative service is equivalent to the origin (same host, same |
341 // port, and both TCP), skip it. | 341 // port, and both TCP), skip it. |
342 if (host_port_pair.Equals(alternative_service.host_port_pair()) && | 342 if (host_port_pair.Equals(alternative_service.host_port_pair()) && |
343 alternative_service.protocol == kProtoHTTP2) { | 343 alternative_service.protocol == NPN_HTTP_2) { |
344 ++it; | 344 ++it; |
345 continue; | 345 continue; |
346 } | 346 } |
347 valid_alternative_services.push_back(alternative_service); | 347 valid_alternative_services.push_back(alternative_service); |
348 ++it; | 348 ++it; |
349 } | 349 } |
350 if (map_it->second.empty()) { | 350 if (map_it->second.empty()) { |
351 alternative_service_map_.Erase(map_it); | 351 alternative_service_map_.Erase(map_it); |
352 } | 352 } |
353 return valid_alternative_services; | 353 return valid_alternative_services; |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
465 canonical_host_to_origin_map_[canonical_server] = origin; | 465 canonical_host_to_origin_map_[canonical_server] = origin; |
466 } | 466 } |
467 } | 467 } |
468 return changed; | 468 return changed; |
469 } | 469 } |
470 | 470 |
471 void HttpServerPropertiesImpl::MarkAlternativeServiceBroken( | 471 void HttpServerPropertiesImpl::MarkAlternativeServiceBroken( |
472 const AlternativeService& alternative_service) { | 472 const AlternativeService& alternative_service) { |
473 // Empty host means use host of origin, callers are supposed to substitute. | 473 // Empty host means use host of origin, callers are supposed to substitute. |
474 DCHECK(!alternative_service.host.empty()); | 474 DCHECK(!alternative_service.host.empty()); |
475 if (alternative_service.protocol == kProtoUnknown) { | 475 if (alternative_service.protocol == UNINITIALIZED_ALTERNATE_PROTOCOL) { |
476 LOG(DFATAL) << "Trying to mark unknown alternate protocol broken."; | 476 LOG(DFATAL) << "Trying to mark unknown alternate protocol broken."; |
477 return; | 477 return; |
478 } | 478 } |
479 ++recently_broken_alternative_services_[alternative_service]; | 479 ++recently_broken_alternative_services_[alternative_service]; |
480 int shift = recently_broken_alternative_services_[alternative_service] - 1; | 480 int shift = recently_broken_alternative_services_[alternative_service] - 1; |
481 if (shift > kBrokenDelayMaxShift) | 481 if (shift > kBrokenDelayMaxShift) |
482 shift = kBrokenDelayMaxShift; | 482 shift = kBrokenDelayMaxShift; |
483 base::TimeDelta delay = | 483 base::TimeDelta delay = |
484 base::TimeDelta::FromSeconds(kBrokenAlternativeProtocolDelaySecs); | 484 base::TimeDelta::FromSeconds(kBrokenAlternativeProtocolDelaySecs); |
485 base::TimeTicks when = base::TimeTicks::Now() + delay * (1 << shift); | 485 base::TimeTicks when = base::TimeTicks::Now() + delay * (1 << shift); |
(...skipping 20 matching lines...) Expand all Loading... |
506 | 506 |
507 bool HttpServerPropertiesImpl::IsAlternativeServiceBroken( | 507 bool HttpServerPropertiesImpl::IsAlternativeServiceBroken( |
508 const AlternativeService& alternative_service) const { | 508 const AlternativeService& alternative_service) const { |
509 // Empty host means use host of origin, callers are supposed to substitute. | 509 // Empty host means use host of origin, callers are supposed to substitute. |
510 DCHECK(!alternative_service.host.empty()); | 510 DCHECK(!alternative_service.host.empty()); |
511 return base::ContainsKey(broken_alternative_services_, alternative_service); | 511 return base::ContainsKey(broken_alternative_services_, alternative_service); |
512 } | 512 } |
513 | 513 |
514 bool HttpServerPropertiesImpl::WasAlternativeServiceRecentlyBroken( | 514 bool HttpServerPropertiesImpl::WasAlternativeServiceRecentlyBroken( |
515 const AlternativeService& alternative_service) { | 515 const AlternativeService& alternative_service) { |
516 if (alternative_service.protocol == kProtoUnknown) | 516 if (alternative_service.protocol == UNINITIALIZED_ALTERNATE_PROTOCOL) |
517 return false; | 517 return false; |
518 return base::ContainsKey(recently_broken_alternative_services_, | 518 return base::ContainsKey(recently_broken_alternative_services_, |
519 alternative_service); | 519 alternative_service); |
520 } | 520 } |
521 | 521 |
522 void HttpServerPropertiesImpl::ConfirmAlternativeService( | 522 void HttpServerPropertiesImpl::ConfirmAlternativeService( |
523 const AlternativeService& alternative_service) { | 523 const AlternativeService& alternative_service) { |
524 if (alternative_service.protocol == kProtoUnknown) | 524 if (alternative_service.protocol == UNINITIALIZED_ALTERNATE_PROTOCOL) |
525 return; | 525 return; |
526 broken_alternative_services_.erase(alternative_service); | 526 broken_alternative_services_.erase(alternative_service); |
527 recently_broken_alternative_services_.erase(alternative_service); | 527 recently_broken_alternative_services_.erase(alternative_service); |
528 } | 528 } |
529 | 529 |
530 const AlternativeServiceMap& HttpServerPropertiesImpl::alternative_service_map() | 530 const AlternativeServiceMap& HttpServerPropertiesImpl::alternative_service_map() |
531 const { | 531 const { |
532 return alternative_service_map_; | 532 return alternative_service_map_; |
533 } | 533 } |
534 | 534 |
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
806 base::TimeDelta delay = when > now ? when - now : base::TimeDelta(); | 806 base::TimeDelta delay = when > now ? when - now : base::TimeDelta(); |
807 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 807 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
808 FROM_HERE, | 808 FROM_HERE, |
809 base::Bind( | 809 base::Bind( |
810 &HttpServerPropertiesImpl::ExpireBrokenAlternateProtocolMappings, | 810 &HttpServerPropertiesImpl::ExpireBrokenAlternateProtocolMappings, |
811 weak_ptr_factory_.GetWeakPtr()), | 811 weak_ptr_factory_.GetWeakPtr()), |
812 delay); | 812 delay); |
813 } | 813 } |
814 | 814 |
815 } // namespace net | 815 } // namespace net |
OLD | NEW |