Use version-aware QuicConnectionCloseFrame constructor.

Several places omitted using this constructor. They have been updated
to use it.

gfe-relnote: N/A just refactors a constructor.
PiperOrigin-RevId: 268329266
Change-Id: Ib9edbc826690aed524d8888ae7893eed5c2006da
diff --git a/quic/core/quic_framer_test.cc b/quic/core/quic_framer_test.cc
index ed52624..933b975 100644
--- a/quic/core/quic_framer_test.cc
+++ b/quic/core/quic_framer_test.cc
@@ -7222,17 +7222,13 @@
   header.version_flag = false;
   header.packet_number = kPacketNumber;
 
-  QuicConnectionCloseFrame close_frame;
-  if (VersionHasIetfQuicFrames(framer_.transport_version())) {
-    close_frame.transport_error_code =
-        static_cast<QuicIetfTransportErrorCodes>(0x11);
-    close_frame.transport_close_frame_type = 0x05;
-    close_frame.close_type = IETF_QUIC_TRANSPORT_CONNECTION_CLOSE;
-  } else {
-    close_frame.quic_error_code = static_cast<QuicErrorCode>(0x05060708);
-  }
-  close_frame.error_details = "because I can";
-
+  QuicConnectionCloseFrame close_frame(
+      framer_.transport_version(),
+      static_cast<QuicErrorCode>(
+          VersionHasIetfQuicFrames(framer_.transport_version()) ? 0x11
+                                                                : 0x05060708),
+      "because I can", 0x05);
+  close_frame.extracted_error_code = QUIC_IETF_GQUIC_ERROR_MISSING;
   QuicFrames frames = {QuicFrame(&close_frame)};
 
   // clang-format off
@@ -7327,23 +7323,16 @@
   header.version_flag = false;
   header.packet_number = kPacketNumber;
 
-  QuicConnectionCloseFrame close_frame;
-  if (VersionHasIetfQuicFrames(framer_.transport_version())) {
-    close_frame.transport_error_code =
-        static_cast<QuicIetfTransportErrorCodes>(0x11);
-    close_frame.transport_close_frame_type = 0x05;
-    close_frame.close_type = IETF_QUIC_TRANSPORT_CONNECTION_CLOSE;
-  } else {
-    close_frame.quic_error_code = static_cast<QuicErrorCode>(0x05060708);
-  }
+  QuicConnectionCloseFrame close_frame(
+      framer_.transport_version(),
+      static_cast<QuicErrorCode>(
+          VersionHasIetfQuicFrames(framer_.transport_version()) ? 0x11
+                                                                : 0x05060708),
+      "because I can", 0x05);
   // Set this so that it is "there" for both Google QUIC and IETF QUIC
   // framing. It better not show up for Google QUIC!
   close_frame.extracted_error_code = static_cast<QuicErrorCode>(0x4567);
 
-  // For IETF QUIC this will be prefaced with "17767:"
-  // (17767 == 0x4567).
-  close_frame.error_details = "because I can";
-
   QuicFrames frames = {QuicFrame(&close_frame)};
 
   // clang-format off
@@ -7439,15 +7428,13 @@
   header.version_flag = false;
   header.packet_number = kPacketNumber;
 
-  QuicConnectionCloseFrame close_frame;
-  if (VersionHasIetfQuicFrames(framer_.transport_version())) {
-    close_frame.transport_error_code = PROTOCOL_VIOLATION;  // value is 0x0a
-    EXPECT_EQ(0u, close_frame.transport_close_frame_type);
-    close_frame.close_type = IETF_QUIC_TRANSPORT_CONNECTION_CLOSE;
-  } else {
-    close_frame.quic_error_code = static_cast<QuicErrorCode>(0x05060708);
-  }
-  close_frame.error_details = std::string(2048, 'A');
+  QuicConnectionCloseFrame close_frame(
+      framer_.transport_version(),
+      static_cast<QuicErrorCode>(
+          VersionHasIetfQuicFrames(framer_.transport_version()) ? 0xa
+                                                                : 0x05060708),
+      std::string(2048, 'A'), 0x05);
+  close_frame.extracted_error_code = QUIC_IETF_GQUIC_ERROR_MISSING;
   QuicFrames frames = {QuicFrame(&close_frame)};
 
   // clang-format off
@@ -7562,7 +7549,7 @@
     // error code
     kVarInt62OneByte + 0x0a,
     // Frame type within the CONNECTION_CLOSE frame
-    kVarInt62OneByte + 0x00,
+    kVarInt62OneByte + 0x05,
     // error details length
     kVarInt62TwoBytes + 0x01, 0x00,
     // error details (truncated to 256 bytes)
@@ -7653,12 +7640,12 @@
     // error code
     kVarInt62OneByte + 0x11,
     // error details length
-    kVarInt62OneByte + 0x0d,
-    // error details
-    'b',  'e',  'c',  'a',
-    'u',  's',  'e',  ' ',
-    'I',  ' ',  'c',  'a',
-    'n',
+    kVarInt62OneByte + 0x0f,
+    // error details, note that it includes an extended error code.
+    '0',  ':',  'b',  'e',
+    'c',  'a',  'u',  's',
+    'e',  ' ',  'I',  ' ',
+    'c',  'a',  'n',
   };
   // clang-format on
 
@@ -7687,6 +7674,9 @@
       static_cast<uint64_t>(QUIC_INVALID_STREAM_ID);
   app_close_frame.error_details = std::string(2048, 'A');
   app_close_frame.close_type = IETF_QUIC_APPLICATION_CONNECTION_CLOSE;
+  // Setting to missing ensures that if it is missing, the extended
+  // code is not added to the text message.
+  app_close_frame.extracted_error_code = QUIC_IETF_GQUIC_ERROR_MISSING;
 
   QuicFrames frames = {QuicFrame(&app_close_frame)};