Add logging for Settings frame transportation.

gfe-relnote: no behavior change and v99 only.
PiperOrigin-RevId: 255506334
Change-Id: I65f8ee9cf102f40e00307c6437d790d33bd0dbf3
diff --git a/quic/core/http/http_frames.h b/quic/core/http/http_frames.h
index ff59614..cf282ee 100644
--- a/quic/core/http/http_frames.h
+++ b/quic/core/http/http_frames.h
@@ -6,9 +6,12 @@
 #define QUICHE_QUIC_CORE_HTTP_HTTP_FRAMES_H_
 
 #include <map>
+#include <ostream>
 
 #include "net/third_party/quiche/src/quic/core/quic_types.h"
+#include "net/third_party/quiche/src/quic/platform/api/quic_str_cat.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_string_piece.h"
+#include "net/third_party/quiche/src/quic/platform/api/quic_string_utils.h"
 #include "net/third_party/quiche/src/spdy/core/spdy_framer.h"
 
 namespace quic {
@@ -98,6 +101,21 @@
   bool operator==(const SettingsFrame& rhs) const {
     return values == rhs.values;
   }
+
+  std::string ToString() const {
+    std::string s;
+    for (auto it : values) {
+      std::string setting =
+          QuicStrCat("[id->", it.first, " | value->", it.second, "] ");
+      QuicStrAppend(&s, setting);
+    }
+    return s;
+  }
+  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os,
+                                                      const SettingsFrame& s) {
+    os << s.ToString();
+    return os;
+  }
 };
 
 // 4.2.6.  PUSH_PROMISE