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

Unified Diff: net/http/http_server_properties.h

Issue 2901093004: Add and persist a new field in AlternativeServiceInfo to list QUIC verisons advertised (Closed)
Patch Set: fix Canonical test 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/http/http_network_transaction_unittest.cc ('k') | net/http/http_server_properties.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/http/http_server_properties.h
diff --git a/net/http/http_server_properties.h b/net/http/http_server_properties.h
index c521148b8cc73f5df1dffd5ecf7054e68e01cbf9..a11d80222f239b32dcb26f36bfdfb6472df487f3 100644
--- a/net/http/http_server_properties.h
+++ b/net/http/http_server_properties.h
@@ -20,6 +20,7 @@
#include "net/base/net_export.h"
#include "net/quic/core/quic_bandwidth.h"
#include "net/quic/core/quic_server_id.h"
+#include "net/quic/core/quic_versions.h"
#include "net/socket/next_proto.h"
#include "net/spdy/core/spdy_framer.h" // TODO(willchan): Reconsider this.
#include "net/spdy/core/spdy_protocol.h"
@@ -116,24 +117,28 @@ NET_EXPORT_PRIVATE std::ostream& operator<<(
class NET_EXPORT_PRIVATE AlternativeServiceInfo {
public:
- AlternativeServiceInfo();
+ static AlternativeServiceInfo CreateHttp2AlternativeServiceInfo(
+ const AlternativeService& alternative_service,
+ base::Time expiration);
- AlternativeServiceInfo(const AlternativeService& alternative_service,
- base::Time expiration);
+ static AlternativeServiceInfo CreateQuicAlternativeServiceInfo(
+ const AlternativeService& alternative_service,
+ base::Time expiration,
+ const QuicVersionVector& advertised_versions);
- AlternativeServiceInfo(NextProto protocol,
- const std::string& host,
- uint16_t port,
- base::Time expiration);
+ AlternativeServiceInfo();
+ ~AlternativeServiceInfo();
AlternativeServiceInfo(
const AlternativeServiceInfo& alternative_service_info);
+
AlternativeServiceInfo& operator=(
const AlternativeServiceInfo& alternative_service_info);
bool operator==(const AlternativeServiceInfo& other) const {
return alternative_service_ == other.alternative_service() &&
- expiration_ == other.expiration();
+ expiration_ == other.expiration() &&
+ advertised_versions_ == other.advertised_versions();
}
bool operator!=(const AlternativeServiceInfo& other) const {
@@ -158,15 +163,37 @@ class NET_EXPORT_PRIVATE AlternativeServiceInfo {
expiration_ = expiration;
}
+ void set_advertised_versions(const QuicVersionVector& advertised_versions) {
+ if (alternative_service_.protocol != kProtoQUIC)
+ return;
+
+ advertised_versions_ = advertised_versions;
+ std::sort(advertised_versions_.begin(), advertised_versions_.end());
+ }
+
const AlternativeService& alternative_service() const {
return alternative_service_;
}
base::Time expiration() const { return expiration_; }
+ const QuicVersionVector& advertised_versions() const {
+ return advertised_versions_;
+ }
+
private:
+ AlternativeServiceInfo(const AlternativeService& alternative_service,
+ base::Time expiration,
+ const QuicVersionVector& advertised_versions);
+
AlternativeService alternative_service_;
base::Time expiration_;
+
+ // Lists all the QUIC versions that are advertised by the server and supported
+ // by Chrome. If empty, defaults to versions used by the current instance of
+ // the netstack.
+ // This list MUST be sorted in ascending order.
+ QuicVersionVector advertised_versions_;
};
struct NET_EXPORT SupportsQuic {
@@ -270,16 +297,27 @@ class NET_EXPORT HttpServerProperties {
virtual AlternativeServiceInfoVector GetAlternativeServiceInfos(
const url::SchemeHostPort& origin) = 0;
- // Set a single alternative service for |origin|. Previous alternative
- // services for |origin| are discarded.
+ // Set a single HTTP/2 alternative service for |origin|. Previous
+ // alternative services for |origin| are discarded.
// |alternative_service.host| may be empty.
// Return true if |alternative_service_map_| has changed significantly enough
// that it should be persisted to disk.
- virtual bool SetAlternativeService(
+ virtual bool SetHttp2AlternativeService(
const url::SchemeHostPort& origin,
const AlternativeService& alternative_service,
base::Time expiration) = 0;
+ // Set a single QUIC alternative service for |origin|. Previous alternative
+ // services for |origin| are discarded.
+ // |alternative_service.host| may be empty.
+ // Return true if |alternative_service_map_| has changed significantly enough
+ // that it should be persisted to disk.
+ virtual bool SetQuicAlternativeService(
+ const url::SchemeHostPort& origin,
+ const AlternativeService& alternative_service,
+ base::Time expiration,
+ const QuicVersionVector& advertised_versions) = 0;
+
// Set alternative services for |origin|. Previous alternative services for
// |origin| are discarded.
// Hostnames in |alternative_service_info_vector| may be empty.
« no previous file with comments | « net/http/http_network_transaction_unittest.cc ('k') | net/http/http_server_properties.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698