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_