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_