Surface hpack decoder detailed error for header value too long, and put detailed error to quic connection close error details. only change connection close error detail, not protected.

PiperOrigin-RevId: 323008871
Change-Id: I6f41118464ae686fbfeb009c8ac13d83b8fff3f0
diff --git a/quic/core/http/quic_headers_stream_test.cc b/quic/core/http/quic_headers_stream_test.cc
index d9e1c8e..d2736ff 100644
--- a/quic/core/http/quic_headers_stream_test.cc
+++ b/quic/core/http/quic_headers_stream_test.cc
@@ -87,7 +87,8 @@
  public:
   MOCK_METHOD(void,
               OnError,
-              (http2::Http2DecoderAdapter::SpdyFramerError error),
+              (http2::Http2DecoderAdapter::SpdyFramerError error,
+               std::string detailed_error),
               (override));
   MOCK_METHOD(void,
               OnDataFrameHeader,
diff --git a/quic/core/http/quic_spdy_session.cc b/quic/core/http/quic_spdy_session.cc
index b0bf7e9..63b6b87 100644
--- a/quic/core/http/quic_spdy_session.cc
+++ b/quic/core/http/quic_spdy_session.cc
@@ -135,7 +135,8 @@
                     QUIC_INVALID_HEADERS_STREAM_DATA);
   }
 
-  void OnError(Http2DecoderAdapter::SpdyFramerError error) override {
+  void OnError(Http2DecoderAdapter::SpdyFramerError error,
+               std::string detailed_error) override {
     QuicErrorCode code;
     switch (error) {
       case Http2DecoderAdapter::SpdyFramerError::SPDY_HPACK_INDEX_VARINT_ERROR:
@@ -200,7 +201,7 @@
         code = QUIC_INVALID_HEADERS_STREAM_DATA;
     }
     CloseConnection(quiche::QuicheStrCat(
-                        "SPDY framing error: ",
+                        "SPDY framing error: ", detailed_error,
                         Http2DecoderAdapter::SpdyFramerErrorToString(error)),
                     code);
   }