Add code counts for detailed reasons of stream creation failure.

PiperOrigin-RevId: 494815408
diff --git a/quiche/quic/core/http/quic_spdy_client_session.cc b/quiche/quic/core/http/quic_spdy_client_session.cc
index 12bb511..99b25c2 100644
--- a/quiche/quic/core/http/quic_spdy_client_session.cc
+++ b/quiche/quic/core/http/quic_spdy_client_session.cc
@@ -48,11 +48,14 @@
 bool QuicSpdyClientSession::ShouldCreateOutgoingBidirectionalStream() {
   if (!crypto_stream_->encryption_established()) {
     QUIC_DLOG(INFO) << "Encryption not active so no outgoing stream created.";
+    QUIC_CODE_COUNT(
+        quic_client_fails_to_create_stream_encryption_not_established);
     return false;
   }
   if (goaway_received() && respect_goaway_) {
     QUIC_DLOG(INFO) << "Failed to create a new outgoing stream. "
                     << "Already received goaway.";
+    QUIC_CODE_COUNT(quic_client_fails_to_create_stream_goaway_received);
     return false;
   }
   return CanOpenNextOutgoingBidirectionalStream();
diff --git a/quiche/quic/core/quic_session.cc b/quiche/quic/core/quic_session.cc
index a84f756..e71f67f 100644
--- a/quiche/quic/core/quic_session.cc
+++ b/quiche/quic/core/quic_session.cc
@@ -1855,6 +1855,8 @@
 bool QuicSession::CanOpenNextOutgoingBidirectionalStream() {
   if (liveness_testing_in_progress_) {
     QUICHE_DCHECK_EQ(Perspective::IS_CLIENT, perspective());
+    QUIC_CODE_COUNT(
+        quic_client_fails_to_create_stream_liveness_testing_in_progress);
     return false;
   }
   if (!VersionHasIetfQuicFrames(transport_version())) {
@@ -1863,6 +1865,8 @@
     }
   } else {
     if (!ietf_streamid_manager_.CanOpenNextOutgoingBidirectionalStream()) {
+      QUIC_CODE_COUNT(
+          quic_fails_to_create_stream_close_too_many_streams_created);
       if (is_configured_) {
         // Send STREAM_BLOCKED after config negotiated.
         control_frame_manager_.WriteOrBufferStreamsBlocked(
@@ -1877,6 +1881,7 @@
     // Now is relatively close to the idle timeout having the risk that requests
     // could be discarded at the server.
     liveness_testing_in_progress_ = true;
+    QUIC_CODE_COUNT(quic_client_fails_to_create_stream_close_to_idle_timeout);
     return false;
   }
   return true;