Remove QuicSession::num_active_request() and allow subclasses to account the number of request individually.

gfe-relnote: n/a - code refactor.
PiperOrigin-RevId: 237508966
Change-Id: Id33ba212a4cfbd73f07264d5f6bcf95908fe772b
diff --git a/quic/core/http/quic_spdy_client_session_base.cc b/quic/core/http/quic_spdy_client_session_base.cc
index 5a8fe8d..924ab36 100644
--- a/quic/core/http/quic_spdy_client_session_base.cc
+++ b/quic/core/http/quic_spdy_client_session_base.cc
@@ -203,7 +203,7 @@
 }
 
 bool QuicSpdyClientSessionBase::ShouldReleaseHeadersStreamSequencerBuffer() {
-  return num_active_requests() == 0 && promised_by_id_.empty();
+  return !HasActiveRequestStreams() && promised_by_id_.empty();
 }
 
 }  // namespace quic
diff --git a/quic/core/http/quic_spdy_session.cc b/quic/core/http/quic_spdy_session.cc
index 01e630d..ddae51a 100644
--- a/quic/core/http/quic_spdy_session.cc
+++ b/quic/core/http/quic_spdy_session.cc
@@ -693,4 +693,9 @@
       error, details, ConnectionCloseBehavior::SEND_CONNECTION_CLOSE_PACKET);
 }
 
+bool QuicSpdySession::HasActiveRequestStreams() const {
+  // TODO(renjietang): Exclude static streams.
+  return !dynamic_streams().empty();
+}
+
 }  // namespace quic
diff --git a/quic/core/http/quic_spdy_session.h b/quic/core/http/quic_spdy_session.h
index 00f241e..93067fa 100644
--- a/quic/core/http/quic_spdy_session.h
+++ b/quic/core/http/quic_spdy_session.h
@@ -159,6 +159,9 @@
     max_inbound_header_list_size_ = max_inbound_header_list_size;
   }
 
+  // Returns true if the session has active request streams.
+  bool HasActiveRequestStreams() const;
+
  protected:
   // Override CreateIncomingStream(), CreateOutgoingBidirectionalStream() and
   // CreateOutgoingUnidirectionalStream() with QuicSpdyStream return type to
diff --git a/quic/core/quic_session.h b/quic/core/quic_session.h
index 8976842..6cd766f 100644
--- a/quic/core/quic_session.h
+++ b/quic/core/quic_session.h
@@ -275,7 +275,6 @@
 
   QuicConnection* connection() { return connection_; }
   const QuicConnection* connection() const { return connection_; }
-  size_t num_active_requests() const { return dynamic_stream_map_.size(); }
   const QuicSocketAddress& peer_address() const {
     return connection_->peer_address();
   }
diff --git a/quic/tools/quic_client_base.cc b/quic/tools/quic_client_base.cc
index 2d8c307..db0503c 100644
--- a/quic/tools/quic_client_base.cc
+++ b/quic/tools/quic_client_base.cc
@@ -194,7 +194,7 @@
     Connect();
   }
 
-  return session()->num_active_requests() != 0;
+  return HasActiveRequests();
 }
 
 bool QuicClientBase::MigrateSocket(const QuicIpAddress& new_host) {
diff --git a/quic/tools/quic_client_base.h b/quic/tools/quic_client_base.h
index 379f097..3b09e18 100644
--- a/quic/tools/quic_client_base.h
+++ b/quic/tools/quic_client_base.h
@@ -283,6 +283,9 @@
   // You probably want to call this if you override CreateQuicSpdyClientSession.
   void ResetSession() { session_.reset(); }
 
+  // Returns true if the corresponding of this client has active requests.
+  virtual bool HasActiveRequests() = 0;
+
  private:
   // Returns true and set |version| if client can reconnect with a different
   // version.
diff --git a/quic/tools/quic_spdy_client_base.cc b/quic/tools/quic_spdy_client_base.cc
index 8225053..b9b0bd2 100644
--- a/quic/tools/quic_spdy_client_base.cc
+++ b/quic/tools/quic_spdy_client_base.cc
@@ -266,4 +266,8 @@
   return latest_response_trailers_;
 }
 
+bool QuicSpdyClientBase::HasActiveRequests() {
+  return client_session()->HasActiveRequestStreams();
+}
+
 }  // namespace quic
diff --git a/quic/tools/quic_spdy_client_base.h b/quic/tools/quic_spdy_client_base.h
index be91ca1..3112f9c 100644
--- a/quic/tools/quic_spdy_client_base.h
+++ b/quic/tools/quic_spdy_client_base.h
@@ -159,6 +159,7 @@
   void AddPromiseDataToResend(const spdy::SpdyHeaderBlock& headers,
                               QuicStringPiece body,
                               bool fin);
+  bool HasActiveRequests() override;
 
  private:
   // Specific QuicClient class for storing data to resend.