Add GetLargestGuaranteedMessagePayload to QuicSession/Connection/Generator/Creator to expose the largest message payload that's guaranteed to fit in any packet containing application data.

gfe-relnote: n/a (Only used in Quartc)
PiperOrigin-RevId: 242135946
Change-Id: I52cc763af88d22fc240210e00cf4d4062d0b9c59
diff --git a/quic/core/http/end_to_end_test.cc b/quic/core/http/end_to_end_test.cc
index c3f50ef..6935dee 100644
--- a/quic/core/http/end_to_end_test.cc
+++ b/quic/core/http/end_to_end_test.cc
@@ -3552,8 +3552,8 @@
   }
 
   SetPacketLossPercentage(30);
-  ASSERT_GT(kMaxPacketSize, client_session->GetLargestMessagePayload());
-  ASSERT_LT(0, client_session->GetLargestMessagePayload());
+  ASSERT_GT(kMaxPacketSize, client_session->GetCurrentLargestMessagePayload());
+  ASSERT_LT(0, client_session->GetCurrentLargestMessagePayload());
 
   std::string message_string(kMaxPacketSize, 'a');
   QuicStringPiece message_buffer(message_string);
@@ -3564,20 +3564,23 @@
     QuicConnection::ScopedPacketFlusher flusher(
         client_session->connection(), QuicConnection::SEND_ACK_IF_PENDING);
     // Verify the largest message gets successfully sent.
-    EXPECT_EQ(MessageResult(MESSAGE_STATUS_SUCCESS, 1),
-              client_session->SendMessage(MakeSpan(
-                  client_session->connection()
-                      ->helper()
-                      ->GetStreamSendBufferAllocator(),
-                  QuicStringPiece(message_buffer.data(),
-                                  client_session->GetLargestMessagePayload()),
-                  &storage)));
+    EXPECT_EQ(
+        MessageResult(MESSAGE_STATUS_SUCCESS, 1),
+        client_session->SendMessage(MakeSpan(
+            client_session->connection()
+                ->helper()
+                ->GetStreamSendBufferAllocator(),
+            QuicStringPiece(message_buffer.data(),
+                            client_session->GetCurrentLargestMessagePayload()),
+            &storage)));
     // Send more messages with size (0, largest_payload] until connection is
     // write blocked.
     const int kTestMaxNumberOfMessages = 100;
     for (size_t i = 2; i <= kTestMaxNumberOfMessages; ++i) {
       size_t message_length =
-          random->RandUint64() % client_session->GetLargestMessagePayload() + 1;
+          random->RandUint64() %
+              client_session->GetCurrentLargestMessagePayload() +
+          1;
       MessageResult result = client_session->SendMessage(MakeSpan(
           client_session->connection()
               ->helper()
@@ -3592,17 +3595,17 @@
   }
 
   client_->WaitForDelayedAcks();
-  EXPECT_EQ(
-      MESSAGE_STATUS_TOO_LARGE,
-      client_session
-          ->SendMessage(MakeSpan(
-              client_session->connection()
-                  ->helper()
-                  ->GetStreamSendBufferAllocator(),
-              QuicStringPiece(message_buffer.data(),
-                              client_session->GetLargestMessagePayload() + 1),
-              &storage))
-          .status);
+  EXPECT_EQ(MESSAGE_STATUS_TOO_LARGE,
+            client_session
+                ->SendMessage(MakeSpan(
+                    client_session->connection()
+                        ->helper()
+                        ->GetStreamSendBufferAllocator(),
+                    QuicStringPiece(
+                        message_buffer.data(),
+                        client_session->GetCurrentLargestMessagePayload() + 1),
+                    &storage))
+                .status);
   EXPECT_EQ(QUIC_NO_ERROR, client_->connection_error());
 }