Move cansendstreamdata() from quicconnection to quicsession.  no functional change, not flag protected.

PiperOrigin-RevId: 312172952
Change-Id: I1bcff4cf48ca8f0e895e99ea76e90bfa911e0e62
diff --git a/quic/core/quic_session.cc b/quic/core/quic_session.cc
index 033495f..32ada39 100644
--- a/quic/core/quic_session.cc
+++ b/quic/core/quic_session.cc
@@ -619,7 +619,7 @@
                                    ConnectionCloseBehavior::SILENT_CLOSE);
       return;
     }
-    if (!connection_->CanWriteStreamData()) {
+    if (!CanWriteStreamData()) {
       return;
     }
     currently_writing_stream_id_ = write_blocked_streams_.PopFront();
@@ -2279,6 +2279,18 @@
   return QuicUtils::GenerateStatelessResetToken(connection_->connection_id());
 }
 
+bool QuicSession::CanWriteStreamData() const {
+  // Don't write stream data if there are queued data packets.
+  if (connection_->HasQueuedPackets()) {
+    return false;
+  }
+  // Immediately write handshake data.
+  if (HasPendingHandshake()) {
+    return true;
+  }
+  return connection_->CanWrite(HAS_RETRANSMITTABLE_DATA);
+}
+
 bool QuicSession::RetransmitLostData() {
   QuicConnection::ScopedPacketFlusher retransmission_flusher(connection_);
   // Retransmit crypto data first.
@@ -2311,7 +2323,7 @@
     }
   }
   while (!streams_with_pending_retransmission_.empty()) {
-    if (!connection_->CanWriteStreamData()) {
+    if (!CanWriteStreamData()) {
       break;
     }
     // Retransmit lost data on headers and data streams.