Refactor common QuicTransport constants into their own file. Also replace them with constexpr functions so that they can be inlined. gfe-relnote: n/a (no functional change) PiperOrigin-RevId: 273604469 Change-Id: Ic1f9d1b020afb2505789c7d0b3f93a154df95091
diff --git a/quic/quic_transport/quic_transport_client_session.cc b/quic/quic_transport/quic_transport_client_session.cc index 51e20b9..b093026 100644 --- a/quic/quic_transport/quic_transport_client_session.cc +++ b/quic/quic_transport/quic_transport_client_session.cc
@@ -21,9 +21,6 @@ namespace quic { -const char* kQuicTransportAlpn = "wq-vvv-01"; -const QuicStreamId kClientIndicationStream = 2; - namespace { // ProofHandler is primarily used by QUIC crypto to persist QUIC server configs // and perform some of related debug logging. QuicTransport does not support @@ -115,7 +112,7 @@ } auto client_indication_owned = std::make_unique<ClientIndication>( - /*stream_id=*/kClientIndicationStream, this, /*is_static=*/false, + /*stream_id=*/ClientIndicationStream(), this, /*is_static=*/false, WRITE_UNIDIRECTIONAL); ClientIndication* client_indication = client_indication_owned.get(); ActivateStream(std::move(client_indication_owned));
diff --git a/quic/quic_transport/quic_transport_client_session.h b/quic/quic_transport/quic_transport_client_session.h index 9ae8500..69e7d8e 100644 --- a/quic/quic_transport/quic_transport_client_session.h +++ b/quic/quic_transport/quic_transport_client_session.h
@@ -20,18 +20,10 @@ #include "net/third_party/quiche/src/quic/core/quic_versions.h" #include "net/third_party/quiche/src/quic/platform/api/quic_bug_tracker.h" #include "net/third_party/quiche/src/quic/platform/api/quic_string_piece.h" +#include "net/third_party/quiche/src/quic/quic_transport/quic_transport_protocol.h" namespace quic { -// The ALPN used by QuicTransport. -QUIC_EXPORT extern const char* kQuicTransportAlpn; - -QUIC_EXPORT extern const QuicStreamId kClientIndicationStream; - -enum class QuicTransportClientIndicationKeys : uint16_t { - kOrigin = 0x0000, -}; - // A client session for the QuicTransport protocol. class QUIC_EXPORT QuicTransportClientSession : public QuicSession { public: @@ -44,7 +36,7 @@ url::Origin origin); std::vector<std::string> GetAlpnsToOffer() const override { - return std::vector<std::string>({kQuicTransportAlpn}); + return std::vector<std::string>({QuicTransportAlpn()}); } void CryptoConnect() { crypto_stream_->CryptoConnect(); }
diff --git a/quic/quic_transport/quic_transport_client_session_test.cc b/quic/quic_transport/quic_transport_client_session_test.cc index a6af854..41b6816 100644 --- a/quic/quic_transport/quic_transport_client_session_test.cc +++ b/quic/quic_transport/quic_transport_client_session_test.cc
@@ -102,7 +102,7 @@ QuicConfig server_config = DefaultQuicConfig(); crypto_test_utils::HandshakeWithFakeServer( &server_config, &helper_, &alarm_factory_, &connection_, crypto_stream_, - kQuicTransportAlpn); + QuicTransportAlpn()); } MockAlarmFactory alarm_factory_; @@ -116,7 +116,7 @@ }; TEST_F(QuicTransportClientSessionTest, HasValidAlpn) { - EXPECT_THAT(session_->GetAlpnsToOffer(), ElementsAre(kQuicTransportAlpn)); + EXPECT_THAT(session_->GetAlpnsToOffer(), ElementsAre(QuicTransportAlpn())); } TEST_F(QuicTransportClientSessionTest, SuccessfulConnection) { @@ -124,7 +124,7 @@ EXPECT_TRUE(session_->IsSessionReady()); QuicStream* client_indication_stream = - QuicSessionPeer::zombie_streams(session_.get())[kClientIndicationStream] + QuicSessionPeer::zombie_streams(session_.get())[ClientIndicationStream()] .get(); ASSERT_TRUE(client_indication_stream != nullptr); const std::string client_indication = DataInStream(client_indication_stream);
diff --git a/quic/quic_transport/quic_transport_protocol.h b/quic/quic_transport/quic_transport_protocol.h new file mode 100644 index 0000000..bef5f8d --- /dev/null +++ b/quic/quic_transport/quic_transport_protocol.h
@@ -0,0 +1,31 @@ +// Copyright (c) 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef QUICHE_QUIC_QUIC_TRANSPORT_QUIC_TRANSPORT_PROTOCOL_H_ +#define QUICHE_QUIC_QUIC_TRANSPORT_QUIC_TRANSPORT_PROTOCOL_H_ + +#include "net/third_party/quiche/src/quic/core/quic_types.h" +#include "net/third_party/quiche/src/quic/platform/api/quic_export.h" +#include "net/third_party/quiche/src/quic/platform/api/quic_string_piece.h" + +namespace quic { + +// The ALPN used by QuicTransport. +QUIC_EXPORT inline const char* QuicTransportAlpn() { + return "wq-vvv-01"; +} + +// The stream ID on which the client indication is sent. +QUIC_EXPORT constexpr QuicStreamId ClientIndicationStream() { + return 2; +} + +// The keys of the fields in the client indication. +enum class QuicTransportClientIndicationKeys : uint16_t { + kOrigin = 0x0000, +}; + +} // namespace quic + +#endif // QUICHE_QUIC_QUIC_TRANSPORT_QUIC_TRANSPORT_PROTOCOL_H_