Remove QuicSession::RegisterStaticStream() and merge it into
QuicSession::ActivateStream().

As static_stream_map_ has been removed, static streams are getting less and
less distinct from normal streams. And now after preventing
v99_stream_id_manager from knowing about stream staticness, static streams are
all the same as dynamic streams only to be different in is_static_ field.

So I think it'd be a nice cleanup to have only one method.

gfe-relnote: code refactoring. No behavior change.
PiperOrigin-RevId: 267652775
Change-Id: I27137a225c69c0a41c644d473d59e7a4c3c64359
diff --git a/quic/core/http/quic_spdy_session.cc b/quic/core/http/quic_spdy_session.cc
index e626f2a..b789857 100644
--- a/quic/core/http/quic_spdy_session.cc
+++ b/quic/core/http/quic_spdy_session.cc
@@ -382,7 +382,7 @@
               headers_stream->id());
 
     headers_stream_ = headers_stream.get();
-    RegisterStaticStream(std::move(headers_stream));
+    ActivateStream(std::move(headers_stream));
   } else {
     ConfigureMaxIncomingDynamicStreamsToSend(
         config()->GetMaxIncomingUnidirectionalStreamsToSend());
@@ -921,7 +921,7 @@
       }
       auto receive_stream = QuicMakeUnique<QuicReceiveControlStream>(pending);
       receive_control_stream_ = receive_stream.get();
-      RegisterStaticStream(std::move(receive_stream));
+      ActivateStream(std::move(receive_stream));
       receive_control_stream_->SetUnblocked();
       QUIC_DVLOG(1) << "Receive Control stream is created";
       return true;
@@ -939,7 +939,7 @@
       auto encoder_receive = QuicMakeUnique<QpackReceiveStream>(
           pending, qpack_decoder_->encoder_stream_receiver());
       qpack_encoder_receive_stream_ = encoder_receive.get();
-      RegisterStaticStream(std::move(encoder_receive));
+      ActivateStream(std::move(encoder_receive));
       qpack_encoder_receive_stream_->SetUnblocked();
       QUIC_DVLOG(1) << "Receive QPACK Encoder stream is created";
       return true;
@@ -952,7 +952,7 @@
       auto decoder_receive = QuicMakeUnique<QpackReceiveStream>(
           pending, qpack_encoder_->decoder_stream_receiver());
       qpack_decoder_receive_stream_ = decoder_receive.get();
-      RegisterStaticStream(std::move(decoder_receive));
+      ActivateStream(std::move(decoder_receive));
       qpack_decoder_receive_stream_->SetUnblocked();
       QUIC_DVLOG(1) << "Receive Qpack Decoder stream is created";
       return true;
@@ -971,7 +971,7 @@
         GetNextOutgoingUnidirectionalStreamId(), this,
         qpack_maximum_dynamic_table_capacity_, max_inbound_header_list_size_);
     send_control_stream_ = send_control.get();
-    RegisterStaticStream(std::move(send_control));
+    ActivateStream(std::move(send_control));
   }
 
   if (!qpack_decoder_send_stream_ &&
@@ -979,7 +979,7 @@
     auto decoder_send = QuicMakeUnique<QpackSendStream>(
         GetNextOutgoingUnidirectionalStreamId(), this, kQpackDecoderStream);
     qpack_decoder_send_stream_ = decoder_send.get();
-    RegisterStaticStream(std::move(decoder_send));
+    ActivateStream(std::move(decoder_send));
     qpack_decoder_->set_qpack_stream_sender_delegate(
         qpack_decoder_send_stream_);
   }
@@ -989,7 +989,7 @@
     auto encoder_send = QuicMakeUnique<QpackSendStream>(
         GetNextOutgoingUnidirectionalStreamId(), this, kQpackEncoderStream);
     qpack_encoder_send_stream_ = encoder_send.get();
-    RegisterStaticStream(std::move(encoder_send));
+    ActivateStream(std::move(encoder_send));
     qpack_encoder_->set_qpack_stream_sender_delegate(
         qpack_encoder_send_stream_);
   }
diff --git a/quic/core/quic_session.cc b/quic/core/quic_session.cc
index eb8ee80..b342e3d 100644
--- a/quic/core/quic_session.cc
+++ b/quic/core/quic_session.cc
@@ -122,24 +122,6 @@
   QUIC_LOG_IF(WARNING, !zombie_streams_.empty()) << "Still have zombie streams";
 }
 
-void QuicSession::RegisterStaticStream(std::unique_ptr<QuicStream> stream) {
-  DCHECK(stream->is_static());
-  QuicStreamId stream_id = stream->id();
-  stream_map_[stream_id] = std::move(stream);
-  if (IsIncomingStream(stream_id)) {
-    ++num_incoming_static_streams_;
-  } else {
-    ++num_outgoing_static_streams_;
-  }
-  if (VersionHasIetfQuicFrames(transport_version()) &&
-      !QuicUtils::IsBidirectionalStreamId(stream_id)) {
-    DCHECK_LE(num_incoming_static_streams_,
-              num_expected_unidirectional_static_streams_);
-    DCHECK_LE(num_outgoing_static_streams_,
-              num_expected_unidirectional_static_streams_);
-  }
-}
-
 void QuicSession::PendingStreamOnStreamFrame(const QuicStreamFrame& frame) {
   DCHECK(VersionHasStreamType(transport_version()));
   QuicStreamId stream_id = frame.stream_id;
@@ -1197,14 +1179,25 @@
 }
 
 void QuicSession::ActivateStream(std::unique_ptr<QuicStream> stream) {
-  DCHECK(!stream->is_static());
   QuicStreamId stream_id = stream->id();
+  bool is_static = stream->is_static();
   QUIC_DVLOG(1) << ENDPOINT << "num_streams: " << stream_map_.size()
                 << ". activating " << stream_id;
   DCHECK(!QuicContainsKey(stream_map_, stream_id));
   stream_map_[stream_id] = std::move(stream);
   if (IsIncomingStream(stream_id)) {
-    ++num_dynamic_incoming_streams_;
+    is_static ? ++num_incoming_static_streams_
+              : ++num_dynamic_incoming_streams_;
+  } else if (is_static) {
+    ++num_outgoing_static_streams_;
+  }
+
+  if (VersionHasIetfQuicFrames(transport_version()) &&
+      !QuicUtils::IsBidirectionalStreamId(stream_id) && is_static) {
+    DCHECK_LE(num_incoming_static_streams_,
+              num_expected_unidirectional_static_streams_);
+    DCHECK_LE(num_outgoing_static_streams_,
+              num_expected_unidirectional_static_streams_);
   }
 }
 
diff --git a/quic/core/quic_session.h b/quic/core/quic_session.h
index 1f03a40..96633d8 100644
--- a/quic/core/quic_session.h
+++ b/quic/core/quic_session.h
@@ -547,12 +547,6 @@
   // ProcessPendingStream().
   virtual bool UsesPendingStreams() const { return false; }
 
-  // Transfer ownership of |stream| to stream_map_, and register
-  // |stream| as static in stream id manager. |stream_already_counted| is true
-  // if |stream| is created from pending stream and is already known as an open
-  // stream.
-  void RegisterStaticStream(std::unique_ptr<QuicStream> stream);
-
   StreamMap& stream_map() { return stream_map_; }
   const StreamMap& stream_map() const { return stream_map_; }
 
@@ -581,7 +575,7 @@
   // Returns true if the stream is a static stream.
   bool IsStaticStream(QuicStreamId id) const;
 
-  // Close connection when receive a frame for a locally-created nonexistant
+  // Close connection when receive a frame for a locally-created nonexistent
   // stream.
   // Prerequisite: IsClosedStream(stream_id) == false
   // Server session might need to override this method to allow server push
diff --git a/quic/core/quic_session_test.cc b/quic/core/quic_session_test.cc
index eafb0bd..4e419da 100644
--- a/quic/core/quic_session_test.cc
+++ b/quic/core/quic_session_test.cc
@@ -1388,8 +1388,7 @@
       QuicUtils::GetHeadersStreamId(connection_->transport_version());
   std::unique_ptr<TestStream> fake_headers_stream = QuicMakeUnique<TestStream>(
       headers_stream_id, &session_, /*is_static*/ true, BIDIRECTIONAL);
-  QuicSessionPeer::RegisterStaticStream(&session_,
-                                        std::move(fake_headers_stream));
+  QuicSessionPeer::ActivateStream(&session_, std::move(fake_headers_stream));
   // Send two bytes of payload.
   QuicStreamFrame data1(headers_stream_id, true, 0, QuicStringPiece("HT"));
   EXPECT_CALL(*connection_,
@@ -1407,8 +1406,7 @@
       QuicUtils::GetHeadersStreamId(connection_->transport_version());
   std::unique_ptr<TestStream> fake_headers_stream = QuicMakeUnique<TestStream>(
       headers_stream_id, &session_, /*is_static*/ true, BIDIRECTIONAL);
-  QuicSessionPeer::RegisterStaticStream(&session_,
-                                        std::move(fake_headers_stream));
+  QuicSessionPeer::ActivateStream(&session_, std::move(fake_headers_stream));
   // Send two bytes of payload.
   QuicRstStreamFrame rst1(kInvalidControlFrameId, headers_stream_id,
                           QUIC_ERROR_PROCESSING_STREAM, 0);
@@ -2616,8 +2614,7 @@
   QuicStreamId stream_id = 0;
   std::unique_ptr<TestStream> fake_static_stream = QuicMakeUnique<TestStream>(
       stream_id, &session_, /*is_static*/ true, BIDIRECTIONAL);
-  QuicSessionPeer::RegisterStaticStream(&session_,
-                                        std::move(fake_static_stream));
+  QuicSessionPeer::ActivateStream(&session_, std::move(fake_static_stream));
   // Check that a stream id in the static stream map is ignored.
   // Note that the notion of a static stream is Google-specific.
   QuicStopSendingFrame frame(1, stream_id, 123);
diff --git a/quic/qbone/qbone_client_session.cc b/quic/qbone/qbone_client_session.cc
index 5c199e2..c07bdf6 100644
--- a/quic/qbone/qbone_client_session.cc
+++ b/quic/qbone/qbone_client_session.cc
@@ -43,7 +43,7 @@
   auto control_stream =
       QuicMakeUnique<QboneClientControlStream>(this, handler_);
   control_stream_ = control_stream.get();
-  RegisterStaticStream(std::move(control_stream));
+  ActivateStream(std::move(control_stream));
 }
 
 int QboneClientSession::GetNumSentClientHellos() const {
diff --git a/quic/qbone/qbone_server_session.cc b/quic/qbone/qbone_server_session.cc
index 37cdd4c..49f84eb 100644
--- a/quic/qbone/qbone_server_session.cc
+++ b/quic/qbone/qbone_server_session.cc
@@ -59,7 +59,7 @@
   auto control_stream =
       QuicMakeUnique<QboneServerControlStream>(this, handler_);
   control_stream_ = control_stream.get();
-  RegisterStaticStream(std::move(control_stream));
+  ActivateStream(std::move(control_stream));
 }
 
 bool QboneServerSession::SendClientRequest(const QboneClientRequest& request) {
diff --git a/quic/test_tools/quic_session_peer.cc b/quic/test_tools/quic_session_peer.cc
index db803af..22ccb28 100644
--- a/quic/test_tools/quic_session_peer.cc
+++ b/quic/test_tools/quic_session_peer.cc
@@ -159,12 +159,6 @@
 }
 
 // static
-void QuicSessionPeer::RegisterStaticStream(QuicSession* session,
-                                           std::unique_ptr<QuicStream> stream) {
-  return session->RegisterStaticStream(std::move(stream));
-}
-
-// static
 bool QuicSessionPeer::IsStreamClosed(QuicSession* session, QuicStreamId id) {
   return session->IsClosedStream(id);
 }
diff --git a/quic/test_tools/quic_session_peer.h b/quic/test_tools/quic_session_peer.h
index decc4b9..79338fc 100644
--- a/quic/test_tools/quic_session_peer.h
+++ b/quic/test_tools/quic_session_peer.h
@@ -63,8 +63,6 @@
       QuicSession* session);
   static void ActivateStream(QuicSession* session,
                              std::unique_ptr<QuicStream> stream);
-  static void RegisterStaticStream(QuicSession* session,
-                                      std::unique_ptr<QuicStream> stream);
 
   // Discern the state of a stream.  Exactly one of these should be true at a
   // time for any stream id > 0 (other than the special streams 1 and 3).
diff --git a/quic/test_tools/quic_test_utils.h b/quic/test_tools/quic_test_utils.h
index b3b6a68..90fa9b1 100644
--- a/quic/test_tools/quic_test_utils.h
+++ b/quic/test_tools/quic_test_utils.h
@@ -690,8 +690,6 @@
     QuicSession::OnConnectionClosed(frame, source);
   }
 
-  using QuicSession::RegisterStaticStream;
-
   // From QuicSession.
   MOCK_METHOD2(OnConnectionClosed,
                void(const QuicConnectionCloseFrame& frame,