Remove incorrect uses of GetHeadersStreamId().

Many places call GetHeadersStreamId() only to use the first stream id. So I
reaplced them with GetFirstBirectionalStreamId().

gfe-relnote: v99 and test change only, not protected.
PiperOrigin-RevId: 261412202
Change-Id: I54f3b5b5a100d8b8d31a0de5ecb324b474c6a430
diff --git a/quic/core/congestion_control/general_loss_algorithm_test.cc b/quic/core/congestion_control/general_loss_algorithm_test.cc
index f2ebbb2..4fdd05f 100644
--- a/quic/core/congestion_control/general_loss_algorithm_test.cc
+++ b/quic/core/congestion_control/general_loss_algorithm_test.cc
@@ -34,8 +34,9 @@
 
   void SendDataPacket(uint64_t packet_number) {
     QuicStreamFrame frame;
-    frame.stream_id = QuicUtils::GetHeadersStreamId(
-        CurrentSupportedVersions()[0].transport_version);
+    frame.stream_id = QuicUtils::GetFirstBidirectionalStreamId(
+        CurrentSupportedVersions()[0].transport_version,
+        Perspective::IS_CLIENT);
     SerializedPacket packet(QuicPacketNumber(packet_number),
                             PACKET_1BYTE_PACKET_NUMBER, nullptr, kDefaultLength,
                             false, false);
diff --git a/quic/core/congestion_control/uber_loss_algorithm_test.cc b/quic/core/congestion_control/uber_loss_algorithm_test.cc
index 0c79ac5..c70f176 100644
--- a/quic/core/congestion_control/uber_loss_algorithm_test.cc
+++ b/quic/core/congestion_control/uber_loss_algorithm_test.cc
@@ -32,7 +32,8 @@
     QuicStreamFrame frame;
     QuicTransportVersion version =
         CurrentSupportedVersions()[0].transport_version;
-    frame.stream_id = QuicUtils::GetHeadersStreamId(version);
+    frame.stream_id = QuicUtils::GetFirstBidirectionalStreamId(
+        version, Perspective::IS_CLIENT);
     if (encryption_level == ENCRYPTION_INITIAL) {
       if (QuicVersionUsesCryptoFrames(version)) {
         frame.stream_id = QuicUtils::GetFirstBidirectionalStreamId(
diff --git a/quic/core/http/quic_server_session_base_test.cc b/quic/core/http/quic_server_session_base_test.cc
index ecca4e7..2236d42 100644
--- a/quic/core/http/quic_server_session_base_test.cc
+++ b/quic/core/http/quic_server_session_base_test.cc
@@ -531,8 +531,14 @@
       &bandwidth_recorder, max_bandwidth_estimate_kbytes_per_second,
       max_bandwidth_estimate_timestamp);
   // Queue up some pending data.
-  session_->MarkConnectionLevelWriteBlocked(
-      QuicUtils::GetHeadersStreamId(connection_->transport_version()));
+  if (!VersionUsesQpack(transport_version())) {
+    session_->MarkConnectionLevelWriteBlocked(
+        QuicUtils::GetHeadersStreamId(connection_->transport_version()));
+  } else {
+    session_->MarkConnectionLevelWriteBlocked(
+        QuicUtils::GetFirstUnidirectionalStreamId(
+            connection_->transport_version(), Perspective::IS_SERVER));
+  }
   EXPECT_TRUE(session_->HasDataToWrite());
 
   // There will be no update sent yet - not enough time has passed.
diff --git a/quic/core/http/quic_spdy_client_session_test.cc b/quic/core/http/quic_spdy_client_session_test.cc
index fc42d52..6819e9a 100644
--- a/quic/core/http/quic_spdy_client_session_test.cc
+++ b/quic/core/http/quic_spdy_client_session_test.cc
@@ -431,10 +431,24 @@
   trailers.OnHeader(kFinalOffsetHeaderKey, "0");
   trailers.OnHeaderBlockEnd(0, 0);
 
-  EXPECT_CALL(*connection_, CloseConnection(_, _, _)).Times(1);
-  session_->OnStreamHeaderList(
-      QuicUtils::GetHeadersStreamId(connection_->transport_version()),
-      /*fin=*/false, 0, trailers);
+  // Initialize H/3 control stream.
+  QuicStreamId id;
+  if (VersionUsesQpack(connection_->transport_version())) {
+    id = GetNthServerInitiatedUnidirectionalStreamId(
+        connection_->transport_version(), 3);
+    char type[] = {0x00};
+
+    QuicStreamFrame data1(id, false, 0, QuicStringPiece(type, 1));
+    session_->OnStreamFrame(data1);
+  } else {
+    id = QuicUtils::GetHeadersStreamId(connection_->transport_version());
+  }
+
+  EXPECT_CALL(*connection_, CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA,
+                                            "stream is static", _))
+      .Times(1);
+  session_->OnStreamHeaderList(id,
+                               /*fin=*/false, 0, trailers);
 }
 
 TEST_P(QuicSpdyClientSessionTest, OnPromiseHeaderListWithStaticStream) {
@@ -459,7 +473,9 @@
   } else {
     id = QuicUtils::GetHeadersStreamId(connection_->transport_version());
   }
-  EXPECT_CALL(*connection_, CloseConnection(_, _, _)).Times(1);
+  EXPECT_CALL(*connection_, CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA,
+                                            "stream is static", _))
+      .Times(1);
   session_->OnPromiseHeaderList(id, promised_stream_id_, 0, trailers);
 }
 
diff --git a/quic/core/quic_packet_generator_test.cc b/quic/core/quic_packet_generator_test.cc
index 0e71e44..9c2e3f3 100644
--- a/quic/core/quic_packet_generator_test.cc
+++ b/quic/core/quic_packet_generator_test.cc
@@ -430,8 +430,9 @@
 
   MakeIOVector("foo", &iov_);
   QuicConsumedData consumed = generator_.ConsumeData(
-      QuicUtils::GetHeadersStreamId(framer_.transport_version()), &iov_, 1u,
-      iov_.iov_len, 0, FIN);
+      QuicUtils::GetFirstBidirectionalStreamId(framer_.transport_version(),
+                                               Perspective::IS_CLIENT),
+      &iov_, 1u, iov_.iov_len, 0, FIN);
   EXPECT_EQ(0u, consumed.bytes_consumed);
   EXPECT_FALSE(consumed.fin_consumed);
   EXPECT_FALSE(generator_.HasPendingFrames());
@@ -443,8 +444,9 @@
 
   MakeIOVector("foo", &iov_);
   QuicConsumedData consumed = generator_.ConsumeData(
-      QuicUtils::GetHeadersStreamId(framer_.transport_version()), &iov_, 1u,
-      iov_.iov_len, 0, FIN);
+      QuicUtils::GetFirstBidirectionalStreamId(framer_.transport_version(),
+                                               Perspective::IS_CLIENT),
+      &iov_, 1u, iov_.iov_len, 0, FIN);
   EXPECT_EQ(3u, consumed.bytes_consumed);
   EXPECT_TRUE(consumed.fin_consumed);
   EXPECT_TRUE(generator_.HasPendingFrames());
@@ -458,8 +460,9 @@
       .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
   MakeIOVector("foo", &iov_);
   QuicConsumedData consumed = generator_.ConsumeData(
-      QuicUtils::GetHeadersStreamId(framer_.transport_version()), &iov_, 1u,
-      iov_.iov_len, 0, FIN);
+      QuicUtils::GetFirstBidirectionalStreamId(framer_.transport_version(),
+                                               Perspective::IS_CLIENT),
+      &iov_, 1u, iov_.iov_len, 0, FIN);
   generator_.Flush();
   EXPECT_EQ(3u, consumed.bytes_consumed);
   EXPECT_TRUE(consumed.fin_consumed);
@@ -564,9 +567,10 @@
 TEST_F(QuicPacketGeneratorTest, ConsumeData_EmptyData) {
   delegate_.SetCanWriteAnything();
 
-  EXPECT_QUIC_BUG(generator_.ConsumeData(QuicUtils::GetHeadersStreamId(
-                                             framer_.transport_version()),
-                                         nullptr, 0, 0, 0, NO_FIN),
+  EXPECT_QUIC_BUG(generator_.ConsumeData(
+                      QuicUtils::QuicUtils::GetFirstBidirectionalStreamId(
+                          framer_.transport_version(), Perspective::IS_CLIENT),
+                      nullptr, 0, 0, 0, NO_FIN),
                   "Attempt to consume empty data without FIN.");
 }
 
@@ -576,8 +580,9 @@
 
   MakeIOVector("foo", &iov_);
   generator_.ConsumeData(
-      QuicUtils::GetHeadersStreamId(framer_.transport_version()), &iov_, 1u,
-      iov_.iov_len, 0, FIN);
+      QuicUtils::GetFirstBidirectionalStreamId(framer_.transport_version(),
+                                               Perspective::IS_CLIENT),
+      &iov_, 1u, iov_.iov_len, 0, FIN);
   MakeIOVector("quux", &iov_);
   QuicConsumedData consumed =
       generator_.ConsumeData(3, &iov_, 1u, iov_.iov_len, 3, NO_FIN);
@@ -592,12 +597,14 @@
 
   MakeIOVector("foo", &iov_);
   generator_.ConsumeData(
-      QuicUtils::GetHeadersStreamId(framer_.transport_version()), &iov_, 1u,
-      iov_.iov_len, 0, FIN);
+      QuicUtils::GetFirstBidirectionalStreamId(framer_.transport_version(),
+                                               Perspective::IS_CLIENT),
+      &iov_, 1u, iov_.iov_len, 0, FIN);
   MakeIOVector("quux", &iov_);
   QuicConsumedData consumed = generator_.ConsumeData(
-      QuicUtils::GetHeadersStreamId(framer_.transport_version()), &iov_, 1u,
-      iov_.iov_len, 3, NO_FIN);
+      QuicUtils::GetFirstBidirectionalStreamId(framer_.transport_version(),
+                                               Perspective::IS_CLIENT),
+      &iov_, 1u, iov_.iov_len, 3, NO_FIN);
   EXPECT_EQ(4u, consumed.bytes_consumed);
   EXPECT_FALSE(consumed.fin_consumed);
   EXPECT_TRUE(generator_.HasPendingFrames());
@@ -650,8 +657,9 @@
   // fitting.
   MakeIOVector("foo", &iov_);
   QuicConsumedData consumed = generator_.ConsumeData(
-      QuicUtils::GetHeadersStreamId(framer_.transport_version()), &iov_, 1u,
-      iov_.iov_len, 0, NO_FIN);
+      QuicUtils::GetFirstBidirectionalStreamId(framer_.transport_version(),
+                                               Perspective::IS_CLIENT),
+      &iov_, 1u, iov_.iov_len, 0, NO_FIN);
   EXPECT_EQ(3u, consumed.bytes_consumed);
   EXPECT_FALSE(consumed.fin_consumed);
   EXPECT_TRUE(generator_.HasPendingFrames());
@@ -661,8 +669,9 @@
   // to be serialized, and it will be added to a new open packet.
   MakeIOVector("bar", &iov_);
   consumed = generator_.ConsumeData(
-      QuicUtils::GetHeadersStreamId(framer_.transport_version()), &iov_, 1u,
-      iov_.iov_len, 3, FIN);
+      QuicUtils::GetFirstBidirectionalStreamId(framer_.transport_version(),
+                                               Perspective::IS_CLIENT),
+      &iov_, 1u, iov_.iov_len, 3, FIN);
   EXPECT_EQ(3u, consumed.bytes_consumed);
   EXPECT_TRUE(consumed.fin_consumed);
   EXPECT_TRUE(generator_.HasPendingFrames());
@@ -688,8 +697,9 @@
   EXPECT_CALL(delegate_, OnSerializedPacket(_))
       .WillRepeatedly(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
   QuicConsumedData consumed = generator_.ConsumeDataFastPath(
-      QuicUtils::GetHeadersStreamId(framer_.transport_version()), &iov_, 1u,
-      iov_.iov_len, 0, true);
+      QuicUtils::GetFirstBidirectionalStreamId(framer_.transport_version(),
+                                               Perspective::IS_CLIENT),
+      &iov_, 1u, iov_.iov_len, 0, true);
   EXPECT_EQ(10000u, consumed.bytes_consumed);
   EXPECT_TRUE(consumed.fin_consumed);
   EXPECT_FALSE(generator_.HasPendingFrames());
@@ -716,8 +726,9 @@
   EXPECT_CALL(delegate_, OnSerializedPacket(_))
       .WillRepeatedly(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
   QuicConsumedData consumed = generator_.ConsumeData(
-      QuicUtils::GetHeadersStreamId(framer_.transport_version()), &iov_, 1u,
-      iov_.iov_len, 0, FIN);
+      QuicUtils::GetFirstBidirectionalStreamId(framer_.transport_version(),
+                                               Perspective::IS_CLIENT),
+      &iov_, 1u, iov_.iov_len, 0, FIN);
   EXPECT_EQ(10000u, consumed.bytes_consumed);
   EXPECT_TRUE(consumed.fin_consumed);
   EXPECT_FALSE(generator_.HasPendingFrames());
@@ -759,8 +770,9 @@
       QuicFrame(CreateRstStreamFrame()),
       /*bundle_ack=*/true);
   QuicConsumedData consumed = generator_.ConsumeData(
-      QuicUtils::GetHeadersStreamId(framer_.transport_version()), &iov_, 1u,
-      iov_.iov_len, 0, FIN);
+      QuicUtils::GetFirstBidirectionalStreamId(framer_.transport_version(),
+                                               Perspective::IS_CLIENT),
+      &iov_, 1u, iov_.iov_len, 0, FIN);
   generator_.Flush();
 
   EXPECT_EQ(10000u, consumed.bytes_consumed);
@@ -789,8 +801,9 @@
   EXPECT_CALL(delegate_, OnSerializedPacket(_))
       .WillRepeatedly(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
   QuicConsumedData consumed = generator_.ConsumeData(
-      QuicUtils::GetHeadersStreamId(framer_.transport_version()), &iov_, 1u,
-      iov_.iov_len, 0, FIN);
+      QuicUtils::GetFirstBidirectionalStreamId(framer_.transport_version(),
+                                               Perspective::IS_CLIENT),
+      &iov_, 1u, iov_.iov_len, 0, FIN);
   generator_.Flush();
 
   EXPECT_EQ(10000u, consumed.bytes_consumed);
@@ -925,8 +938,8 @@
 
   size_t data_len = 1324;
   CreateData(data_len);
-  QuicStreamId stream1_id =
-      QuicUtils::GetHeadersStreamId(framer_.transport_version());
+  QuicStreamId stream1_id = QuicUtils::GetFirstBidirectionalStreamId(
+      framer_.transport_version(), Perspective::IS_CLIENT);
   QuicConsumedData consumed =
       generator_.ConsumeData(stream1_id, &iov_, 1u, iov_.iov_len, 0, NO_FIN);
   EXPECT_EQ(data_len, consumed.bytes_consumed);
@@ -993,8 +1006,9 @@
       .WillRepeatedly(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
   CreateData(data_len);
   QuicConsumedData consumed = generator_.ConsumeData(
-      QuicUtils::GetHeadersStreamId(framer_.transport_version()), &iov_, 1u,
-      iov_.iov_len,
+      QuicUtils::GetFirstBidirectionalStreamId(framer_.transport_version(),
+                                               Perspective::IS_CLIENT),
+      &iov_, 1u, iov_.iov_len,
       /*offset=*/0, FIN);
   EXPECT_EQ(data_len, consumed.bytes_consumed);
   EXPECT_TRUE(consumed.fin_consumed);
@@ -1030,8 +1044,9 @@
   // Send two packets before packet size change.
   CreateData(data_len);
   QuicConsumedData consumed = generator_.ConsumeData(
-      QuicUtils::GetHeadersStreamId(framer_.transport_version()), &iov_, 1u,
-      iov_.iov_len,
+      QuicUtils::GetFirstBidirectionalStreamId(framer_.transport_version(),
+                                               Perspective::IS_CLIENT),
+      &iov_, 1u, iov_.iov_len,
       /*offset=*/0, NO_FIN);
   generator_.Flush();
   EXPECT_EQ(data_len, consumed.bytes_consumed);
@@ -1050,8 +1065,9 @@
   CreateData(data_len);
   generator_.AttachPacketFlusher();
   consumed = generator_.ConsumeData(
-      QuicUtils::GetHeadersStreamId(framer_.transport_version()), &iov_, 1u,
-      iov_.iov_len, data_len, FIN);
+      QuicUtils::GetFirstBidirectionalStreamId(framer_.transport_version(),
+                                               Perspective::IS_CLIENT),
+      &iov_, 1u, iov_.iov_len, data_len, FIN);
   generator_.Flush();
   EXPECT_EQ(data_len, consumed.bytes_consumed);
   EXPECT_TRUE(consumed.fin_consumed);
@@ -1080,8 +1096,9 @@
   // should not cause packet serialization.
   CreateData(first_write_len);
   QuicConsumedData consumed = generator_.ConsumeData(
-      QuicUtils::GetHeadersStreamId(framer_.transport_version()), &iov_, 1u,
-      iov_.iov_len,
+      QuicUtils::GetFirstBidirectionalStreamId(framer_.transport_version(),
+                                               Perspective::IS_CLIENT),
+      &iov_, 1u, iov_.iov_len,
       /*offset=*/0, NO_FIN);
   EXPECT_EQ(first_write_len, consumed.bytes_consumed);
   EXPECT_FALSE(consumed.fin_consumed);
@@ -1113,8 +1130,9 @@
   // trigger serialization of one packet, and queue another one.
   CreateData(second_write_len);
   consumed = generator_.ConsumeData(
-      QuicUtils::GetHeadersStreamId(framer_.transport_version()), &iov_, 1u,
-      iov_.iov_len,
+      QuicUtils::GetFirstBidirectionalStreamId(framer_.transport_version(),
+                                               Perspective::IS_CLIENT),
+      &iov_, 1u, iov_.iov_len,
       /*offset=*/first_write_len, FIN);
   EXPECT_EQ(second_write_len, consumed.bytes_consumed);
   EXPECT_TRUE(consumed.fin_consumed);
@@ -1201,8 +1219,9 @@
   // Send data before the MTU probe.
   CreateData(data_len);
   QuicConsumedData consumed = generator_.ConsumeData(
-      QuicUtils::GetHeadersStreamId(framer_.transport_version()), &iov_, 1u,
-      iov_.iov_len,
+      QuicUtils::GetFirstBidirectionalStreamId(framer_.transport_version(),
+                                               Perspective::IS_CLIENT),
+      &iov_, 1u, iov_.iov_len,
       /*offset=*/0, NO_FIN);
   generator_.Flush();
   EXPECT_EQ(data_len, consumed.bytes_consumed);
@@ -1219,8 +1238,9 @@
   CreateData(data_len);
   generator_.AttachPacketFlusher();
   consumed = generator_.ConsumeData(
-      QuicUtils::GetHeadersStreamId(framer_.transport_version()), &iov_, 1u,
-      iov_.iov_len,
+      QuicUtils::GetFirstBidirectionalStreamId(framer_.transport_version(),
+                                               Perspective::IS_CLIENT),
+      &iov_, 1u, iov_.iov_len,
       /*offset=*/data_len, FIN);
   generator_.Flush();
   EXPECT_EQ(data_len, consumed.bytes_consumed);
@@ -1445,8 +1465,9 @@
 
   MakeIOVector("foo", &iov_);
   generator_.ConsumeData(
-      QuicUtils::GetHeadersStreamId(framer_.transport_version()), &iov_, 1u,
-      iov_.iov_len, 0, FIN);
+      QuicUtils::GetFirstBidirectionalStreamId(framer_.transport_version(),
+                                               Perspective::IS_CLIENT),
+      &iov_, 1u, iov_.iov_len, 0, FIN);
   EXPECT_EQ(MESSAGE_STATUS_SUCCESS,
             generator_.AddMessageFrame(
                 1, MakeSpan(&allocator_, "message", &storage)));
diff --git a/quic/core/quic_stream_test.cc b/quic/core/quic_stream_test.cc
index ee9676f..d371866 100644
--- a/quic/core/quic_stream_test.cc
+++ b/quic/core/quic_stream_test.cc
@@ -143,9 +143,9 @@
   uint32_t initial_flow_control_window_bytes_;
   QuicTime::Delta zero_;
   ParsedQuicVersionVector supported_versions_;
-  const QuicStreamId kTestStreamId =
-      QuicUtils::GetHeadersStreamId(GetParam().transport_version) +
-      QuicUtils::StreamIdDelta(GetParam().transport_version);
+  QuicStreamId kTestStreamId =
+      GetNthClientInitiatedBidirectionalStreamId(GetParam().transport_version,
+                                                 1);
 };
 
 // Non parameterized QuicStreamTest used for tests that do not
diff --git a/quic/core/quic_unacked_packet_map_test.cc b/quic/core/quic_unacked_packet_map_test.cc
index 807a959..5dda2ae 100644
--- a/quic/core/quic_unacked_packet_map_test.cc
+++ b/quic/core/quic_unacked_packet_map_test.cc
@@ -68,8 +68,9 @@
 
   SerializedPacket CreateRetransmittablePacket(uint64_t packet_number) {
     return CreateRetransmittablePacketForStream(
-        packet_number, QuicUtils::GetHeadersStreamId(
-                           CurrentSupportedVersions()[0].transport_version));
+        packet_number, QuicUtils::GetFirstBidirectionalStreamId(
+                           CurrentSupportedVersions()[0].transport_version,
+                           Perspective::IS_CLIENT));
   }
 
   SerializedPacket CreateRetransmittablePacketForStream(
@@ -174,8 +175,9 @@
     }
     QuicTransmissionInfo* info = unacked_packets_.GetMutableTransmissionInfo(
         QuicPacketNumber(old_packet_number));
-    QuicStreamId stream_id = QuicUtils::GetHeadersStreamId(
-        CurrentSupportedVersions()[0].transport_version);
+    QuicStreamId stream_id = QuicUtils::GetFirstBidirectionalStreamId(
+        CurrentSupportedVersions()[0].transport_version,
+        Perspective::IS_CLIENT);
     for (const auto& frame : info->retransmittable_frames) {
       if (frame.type == STREAM_FRAME) {
         stream_id = frame.stream_frame.stream_id;
diff --git a/quic/core/quic_utils.cc b/quic/core/quic_utils.cc
index 58996f6..1e2c5fc 100644
--- a/quic/core/quic_utils.cc
+++ b/quic/core/quic_utils.cc
@@ -401,7 +401,7 @@
 
 // static
 QuicStreamId QuicUtils::GetHeadersStreamId(QuicTransportVersion version) {
-  // TODO(b/138653948): Add DCHECK(!VersionUsesQpack(version));
+  DCHECK(!VersionUsesQpack(version));
   return GetFirstBidirectionalStreamId(version, Perspective::IS_CLIENT);
 }