Update tests on HTTP/3 unidirectional streams.

Those streams should be created in a style similar to how they are created in real QuicSpdySession.

gfe-relnote: test only change, no behavior change.
PiperOrigin-RevId: 262616474
Change-Id: Ibbd5ff50043091c6e6ce5ef8380199b57988270b
diff --git a/quic/core/http/quic_receive_control_stream_test.cc b/quic/core/http/quic_receive_control_stream_test.cc
index 7c90c76..e305102 100644
--- a/quic/core/http/quic_receive_control_stream_test.cc
+++ b/quic/core/http/quic_receive_control_stream_test.cc
@@ -68,13 +68,19 @@
             SupportedVersions(GetParam().version))),
         session_(connection_) {
     session_.Initialize();
-    auto pending = QuicMakeUnique<PendingStream>(
-        QuicUtils::GetFirstUnidirectionalStreamId(
-            GetParam().version.transport_version,
-            QuicUtils::InvertPerspective(perspective())),
-        &session_);
+    QuicStreamId id = perspective() == Perspective::IS_SERVER
+                          ? GetNthClientInitiatedUnidirectionalStreamId(
+                                session_.transport_version(), 3)
+                          : GetNthServerInitiatedUnidirectionalStreamId(
+                                session_.transport_version(), 3);
+    char type[] = {kControlStream};
+
+    QuicStreamFrame data1(id, false, 0, QuicStringPiece(type, 1));
+    session_.OnStreamFrame(data1);
+
     receive_control_stream_ =
-        QuicMakeUnique<QuicReceiveControlStream>(pending.get());
+        QuicSpdySessionPeer::GetReceiveControlStream(&session_);
+
     stream_ = new TestStream(GetNthClientInitiatedBidirectionalStreamId(
                                  GetParam().version.transport_version, 0),
                              &session_);
@@ -100,7 +106,7 @@
   }
 
   QuicStreamOffset NumBytesConsumed() {
-    return QuicStreamPeer::sequencer(receive_control_stream_.get())
+    return QuicStreamPeer::sequencer(receive_control_stream_)
         ->NumBytesConsumed();
   }
 
@@ -108,7 +114,7 @@
   MockAlarmFactory alarm_factory_;
   StrictMock<MockQuicConnection>* connection_;
   StrictMock<MockQuicSpdySession> session_;
-  std::unique_ptr<QuicReceiveControlStream> receive_control_stream_;
+  QuicReceiveControlStream* receive_control_stream_;
   TestStream* stream_;
 };
 
@@ -130,8 +136,7 @@
   settings.values[3] = 2;
   settings.values[SETTINGS_MAX_HEADER_LIST_SIZE] = 5;
   std::string data = EncodeSettings(settings);
-  QuicStreamFrame frame(receive_control_stream_->id(), false, 0,
-                        QuicStringPiece(data));
+  QuicStreamFrame frame(receive_control_stream_->id(), false, 1, data);
   EXPECT_NE(5u, session_.max_outbound_header_list_size());
   receive_control_stream_->OnStreamFrame(frame);
   EXPECT_EQ(5u, session_.max_outbound_header_list_size());
@@ -148,15 +153,15 @@
 
   std::string settings_frame = EncodeSettings(settings);
 
-  EXPECT_EQ(0u, NumBytesConsumed());
+  EXPECT_EQ(1u, NumBytesConsumed());
 
   // Receive first SETTINGS frame.
   receive_control_stream_->OnStreamFrame(
       QuicStreamFrame(receive_control_stream_->id(), /* fin = */ false,
-                      /* offset = */ 0, settings_frame));
+                      /* offset = */ 1, settings_frame));
 
   // First SETTINGS frame is consumed.
-  EXPECT_EQ(settings_frame.size(), NumBytesConsumed());
+  EXPECT_EQ(settings_frame.size() + 1, NumBytesConsumed());
 
   // Second SETTINGS frame causes the connection to be closed.
   EXPECT_CALL(*connection_,
@@ -168,13 +173,13 @@
   EXPECT_CALL(session_, OnConnectionClosed(_, _));
 
   // Receive second SETTINGS frame.
-  receive_control_stream_->OnStreamFrame(
-      QuicStreamFrame(receive_control_stream_->id(), /* fin = */ false,
-                      /* offset = */ settings_frame.size(), settings_frame));
+  receive_control_stream_->OnStreamFrame(QuicStreamFrame(
+      receive_control_stream_->id(), /* fin = */ false,
+      /* offset = */ settings_frame.size() + 1, settings_frame));
 
   // Frame header of second SETTINGS frame is consumed, but not frame payload.
   QuicByteCount settings_frame_header_length = 2;
-  EXPECT_EQ(settings_frame.size() + settings_frame_header_length,
+  EXPECT_EQ(settings_frame.size() + settings_frame_header_length + 1,
             NumBytesConsumed());
 }
 
@@ -186,10 +191,8 @@
   std::string data1 = data.substr(0, 1);
   std::string data2 = data.substr(1, data.length() - 1);
 
-  QuicStreamFrame frame(receive_control_stream_->id(), false, 0,
-                        QuicStringPiece(data.data(), 1));
-  QuicStreamFrame frame2(receive_control_stream_->id(), false, 1,
-                         QuicStringPiece(data.data() + 1, data.length() - 1));
+  QuicStreamFrame frame(receive_control_stream_->id(), false, 1, data1);
+  QuicStreamFrame frame2(receive_control_stream_->id(), false, 2, data2);
   EXPECT_NE(5u, session_.max_outbound_header_list_size());
   receive_control_stream_->OnStreamFrame(frame);
   receive_control_stream_->OnStreamFrame(frame2);
@@ -204,8 +207,7 @@
   QuicByteCount header_length = encoder.SerializeGoAwayFrame(goaway, &buffer);
   std::string data = std::string(buffer.get(), header_length);
 
-  QuicStreamFrame frame(receive_control_stream_->id(), false, 0,
-                        QuicStringPiece(data));
+  QuicStreamFrame frame(receive_control_stream_->id(), false, 1, data);
   EXPECT_CALL(*connection_, CloseConnection(QUIC_HTTP_DECODER_ERROR, _, _));
   receive_control_stream_->OnStreamFrame(frame);
 }
@@ -220,8 +222,8 @@
   frame.prioritized_element_id = stream_->id();
   frame.weight = 1;
   std::string serialized_frame = PriorityFrame(frame);
-  QuicStreamFrame data(receive_control_stream_->id(), false, 0,
-                       QuicStringPiece(serialized_frame));
+  QuicStreamFrame data(receive_control_stream_->id(), false, 1,
+                       serialized_frame);
 
   EXPECT_EQ(3u, stream_->precedence().spdy3_priority());
   receive_control_stream_->OnStreamFrame(data);
@@ -236,7 +238,7 @@
   HttpEncoder encoder;
   uint64_t length =
       encoder.SerializePushPromiseFrameWithOnlyPushId(push_promise, &buffer);
-  QuicStreamFrame frame(receive_control_stream_->id(), false, 0, buffer.get(),
+  QuicStreamFrame frame(receive_control_stream_->id(), false, 1, buffer.get(),
                         length);
   // TODO(lassey) Check for HTTP_WRONG_STREAM error code.
   EXPECT_CALL(*connection_, CloseConnection(QUIC_HTTP_DECODER_ERROR, _, _))
@@ -251,13 +253,13 @@
       "03"        // payload length
       "666f6f");  // payload "foo"
 
-  EXPECT_EQ(0u, NumBytesConsumed());
+  EXPECT_EQ(1u, NumBytesConsumed());
 
   receive_control_stream_->OnStreamFrame(
       QuicStreamFrame(receive_control_stream_->id(), /* fin = */ false,
-                      /* offset = */ 0, unknown_frame));
+                      /* offset = */ 1, unknown_frame));
 
-  EXPECT_EQ(unknown_frame.size(), NumBytesConsumed());
+  EXPECT_EQ(unknown_frame.size() + 1, NumBytesConsumed());
 }
 
 }  // namespace
diff --git a/quic/core/http/quic_send_control_stream_test.cc b/quic/core/http/quic_send_control_stream_test.cc
index 7c0ee12..722ac86 100644
--- a/quic/core/http/quic_send_control_stream_test.cc
+++ b/quic/core/http/quic_send_control_stream_test.cc
@@ -54,9 +54,7 @@
             SupportedVersions(GetParam().version))),
         session_(connection_) {
     session_.Initialize();
-    send_control_stream_ = QuicMakeUnique<QuicSendControlStream>(
-        QuicSpdySessionPeer::GetNextOutgoingUnidirectionalStreamId(&session_),
-        &session_, /* max_inbound_header_list_size = */ 100);
+    send_control_stream_ = QuicSpdySessionPeer::GetSendControlStream(&session_);
     ON_CALL(session_, WritevData(_, _, _, _, _))
         .WillByDefault(Invoke(MockQuicSession::ConsumeData));
   }
@@ -68,7 +66,7 @@
   StrictMock<MockQuicConnection>* connection_;
   StrictMock<MockQuicSpdySession> session_;
   HttpEncoder encoder_;
-  std::unique_ptr<QuicSendControlStream> send_control_stream_;
+  QuicSendControlStream* send_control_stream_;
 };
 
 INSTANTIATE_TEST_SUITE_P(Tests,
diff --git a/quic/core/qpack/qpack_receive_stream_test.cc b/quic/core/qpack/qpack_receive_stream_test.cc
index 121043f..63c8baf 100644
--- a/quic/core/qpack/qpack_receive_stream_test.cc
+++ b/quic/core/qpack/qpack_receive_stream_test.cc
@@ -55,12 +55,16 @@
             SupportedVersions(GetParam().version))),
         session_(connection_) {
     session_.Initialize();
+    // TODO(b/112770235): Remove explicit QPACK stream construction in test once
+    // QPACK streams are created in QuicSpdySession initialization.
     PendingStream* pending =
         new PendingStream(QuicUtils::GetFirstUnidirectionalStreamId(
                               GetParam().version.transport_version,
                               QuicUtils::InvertPerspective(perspective())),
                           &session_);
-    qpack_receive_stream_ = QuicMakeUnique<QpackReceiveStream>(pending);
+    auto qpack_receive = QuicMakeUnique<QpackReceiveStream>(pending);
+    qpack_receive_stream_ = qpack_receive.get();
+    session_.RegisterStaticStream(std::move(qpack_receive), false);
     delete pending;
   }
 
@@ -70,7 +74,7 @@
   MockAlarmFactory alarm_factory_;
   StrictMock<MockQuicConnection>* connection_;
   StrictMock<MockQuicSpdySession> session_;
-  std::unique_ptr<QpackReceiveStream> qpack_receive_stream_;
+  QpackReceiveStream* qpack_receive_stream_;
 };
 
 INSTANTIATE_TEST_SUITE_P(Tests,
diff --git a/quic/core/qpack/qpack_send_stream_test.cc b/quic/core/qpack/qpack_send_stream_test.cc
index 46037c9..9eb6471 100644
--- a/quic/core/qpack/qpack_send_stream_test.cc
+++ b/quic/core/qpack/qpack_send_stream_test.cc
@@ -56,9 +56,15 @@
             SupportedVersions(GetParam().version))),
         session_(connection_) {
     session_.Initialize();
-    qpack_send_stream_ = QuicMakeUnique<QpackSendStream>(
+
+    // TODO(b/112770235): Remove explicit QPACK stream construction in test once
+    // QPACK streams are created in QuicSpdySession initialization.
+    auto qpack_send = QuicMakeUnique<QpackSendStream>(
         QuicSpdySessionPeer::GetNextOutgoingUnidirectionalStreamId(&session_),
         &session_, kQpackEncoderStream);
+    qpack_send_stream_ = qpack_send.get();
+    session_.RegisterStaticStream(std::move(qpack_send), false);
+
     ON_CALL(session_, WritevData(_, _, _, _, _))
         .WillByDefault(Invoke(MockQuicSession::ConsumeData));
   }
@@ -69,7 +75,7 @@
   MockAlarmFactory alarm_factory_;
   StrictMock<MockQuicConnection>* connection_;
   StrictMock<MockQuicSpdySession> session_;
-  std::unique_ptr<QpackSendStream> qpack_send_stream_;
+  QpackSendStream* qpack_send_stream_;
 };
 
 INSTANTIATE_TEST_SUITE_P(Tests,
diff --git a/quic/test_tools/quic_test_utils.h b/quic/test_tools/quic_test_utils.h
index 52f0e2d..87c02be 100644
--- a/quic/test_tools/quic_test_utils.h
+++ b/quic/test_tools/quic_test_utils.h
@@ -676,6 +676,8 @@
     QuicSession::OnConnectionClosed(frame, source);
   }
 
+  using QuicSession::RegisterStaticStream;
+
   // From QuicSession.
   MOCK_METHOD2(OnConnectionClosed,
                void(const QuicConnectionCloseFrame& frame,