Add support for HTTP/3 control stream.
Upon initialization, QuicSpdySession will create a write_unidirectional stream
and write stream type and settings when crypto handshake is completed.
The peer will receive the stream type and create a read_unidirectional stream
that reads the settings.
gfe-relnote: version 99 only. Not in prod.
PiperOrigin-RevId: 252650934
Change-Id: I708280eb94dea3d6eb7e54b96ce8ee91e2b8684f
diff --git a/quic/test_tools/quic_session_peer.cc b/quic/test_tools/quic_session_peer.cc
index 9eee494..60133cf 100644
--- a/quic/test_tools/quic_session_peer.cc
+++ b/quic/test_tools/quic_session_peer.cc
@@ -176,7 +176,8 @@
void QuicSessionPeer::RegisterStaticStreamNew(
QuicSession* session,
std::unique_ptr<QuicStream> stream) {
- return session->RegisterStaticStreamNew(std::move(stream));
+ return session->RegisterStaticStreamNew(std::move(stream),
+ /*stream_already_counted = */ false);
}
// static
diff --git a/quic/test_tools/quic_spdy_session_peer.cc b/quic/test_tools/quic_spdy_session_peer.cc
index 956cd88..6a49bb7 100644
--- a/quic/test_tools/quic_spdy_session_peer.cc
+++ b/quic/test_tools/quic_spdy_session_peer.cc
@@ -81,5 +81,11 @@
return session->GetNextOutgoingUnidirectionalStreamId();
}
+// static
+QuicReceiveControlStream* QuicSpdySessionPeer::GetReceiveControlStream(
+ QuicSpdySession* session) {
+ return session->receive_control_stream_;
+}
+
} // namespace test
} // namespace quic
diff --git a/quic/test_tools/quic_spdy_session_peer.h b/quic/test_tools/quic_spdy_session_peer.h
index 47b55e1..47ff021 100644
--- a/quic/test_tools/quic_spdy_session_peer.h
+++ b/quic/test_tools/quic_spdy_session_peer.h
@@ -5,6 +5,7 @@
#ifndef QUICHE_QUIC_TEST_TOOLS_QUIC_SPDY_SESSION_PEER_H_
#define QUICHE_QUIC_TEST_TOOLS_QUIC_SPDY_SESSION_PEER_H_
+#include "net/third_party/quiche/src/quic/core/http/quic_receive_control_stream.h"
#include "net/third_party/quiche/src/quic/core/quic_packets.h"
#include "net/third_party/quiche/src/quic/core/quic_write_blocked_list.h"
#include "net/third_party/quiche/src/spdy/core/spdy_framer.h"
@@ -46,6 +47,8 @@
// |session| can't be nullptr.
static QuicStreamId GetNextOutgoingUnidirectionalStreamId(
QuicSpdySession* session);
+ static QuicReceiveControlStream* GetReceiveControlStream(
+ QuicSpdySession* session);
};
} // namespace test
diff --git a/quic/test_tools/quic_test_utils.cc b/quic/test_tools/quic_test_utils.cc
index 5021068..38873dd 100644
--- a/quic/test_tools/quic_test_utils.cc
+++ b/quic/test_tools/quic_test_utils.cc
@@ -1169,6 +1169,14 @@
QuicUtils::StreamIdDelta(version) * n;
}
+QuicStreamId GetNthClientInitiatedUnidirectionalStreamId(
+ QuicTransportVersion version,
+ int n) {
+ return QuicUtils::GetFirstUnidirectionalStreamId(version,
+ Perspective::IS_CLIENT) +
+ QuicUtils::StreamIdDelta(version) * n;
+}
+
StreamType DetermineStreamType(QuicStreamId id,
QuicTransportVersion version,
Perspective perspective,
diff --git a/quic/test_tools/quic_test_utils.h b/quic/test_tools/quic_test_utils.h
index 8f1cb7a..cb51a3b 100644
--- a/quic/test_tools/quic_test_utils.h
+++ b/quic/test_tools/quic_test_utils.h
@@ -1170,6 +1170,9 @@
QuicStreamId GetNthServerInitiatedUnidirectionalStreamId(
QuicTransportVersion version,
int n);
+QuicStreamId GetNthClientInitiatedUnidirectionalStreamId(
+ QuicTransportVersion version,
+ int n);
StreamType DetermineStreamType(QuicStreamId id,
QuicTransportVersion version,