Add debug visitor for SETTINGS sent.

gfe-relnote: protected by v99 flag that is disabled in gfe.
PiperOrigin-RevId: 271645953
Change-Id: I421031f12100db05f316f6509e8085c5700ee1b7
diff --git a/quic/core/http/quic_receive_control_stream.cc b/quic/core/http/quic_receive_control_stream.cc
index dd9f3ec..d3cb01b 100644
--- a/quic/core/http/quic_receive_control_stream.cc
+++ b/quic/core/http/quic_receive_control_stream.cc
@@ -220,7 +220,7 @@
                 << " received settings frame: " << settings;
   QuicSpdySession* spdy_session = static_cast<QuicSpdySession*>(session());
   if (spdy_session->debug_visitor() != nullptr) {
-    spdy_session->debug_visitor()->OnSettingsFrame(settings);
+    spdy_session->debug_visitor()->OnSettingsFrameReceived(settings);
   }
   for (const auto& setting : settings.values) {
     spdy_session->OnSetting(setting.first, setting.second);
diff --git a/quic/core/http/quic_send_control_stream.cc b/quic/core/http/quic_send_control_stream.cc
index d1e0e62..da7f79e 100644
--- a/quic/core/http/quic_send_control_stream.cc
+++ b/quic/core/http/quic_send_control_stream.cc
@@ -5,6 +5,7 @@
 #include "net/third_party/quiche/src/quic/core/http/quic_send_control_stream.h"
 
 #include "net/third_party/quiche/src/quic/core/http/http_constants.h"
+#include "net/third_party/quiche/src/quic/core/http/quic_spdy_session.h"
 #include "net/third_party/quiche/src/quic/core/quic_session.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_arraysize.h"
 
@@ -57,6 +58,10 @@
       encoder_.SerializeSettingsFrame(settings, &buffer);
   QUIC_DVLOG(1) << "Control stream " << id() << " is writing settings frame "
                 << settings;
+  QuicSpdySession* spdy_session = static_cast<QuicSpdySession*>(session());
+  if (spdy_session->debug_visitor() != nullptr) {
+    spdy_session->debug_visitor()->OnSettingsFrameSent(settings);
+  }
   WriteOrBufferData(QuicStringPiece(buffer.get(), frame_length),
                     /*fin = */ false, nullptr);
   settings_sent_ = true;
diff --git a/quic/core/http/quic_spdy_session.h b/quic/core/http/quic_spdy_session.h
index 40ad070..3d82cd7 100644
--- a/quic/core/http/quic_spdy_session.h
+++ b/quic/core/http/quic_spdy_session.h
@@ -9,6 +9,7 @@
 #include <memory>
 #include <string>
 
+#include "net/third_party/quiche/src/quic/core/http/http_frames.h"
 #include "net/third_party/quiche/src/quic/core/http/quic_header_list.h"
 #include "net/third_party/quiche/src/quic/core/http/quic_headers_stream.h"
 #include "net/third_party/quiche/src/quic/core/http/quic_receive_control_stream.h"
@@ -70,7 +71,10 @@
   virtual void OnPeerQpackDecoderStreamCreated(QuicStreamId /*stream_id*/) = 0;
 
   // Called when SETTINGS frame is received.
-  virtual void OnSettingsFrame(const SettingsFrame& /*frame*/) = 0;
+  virtual void OnSettingsFrameReceived(const SettingsFrame& /*frame*/) = 0;
+
+  // Called when SETTINGS frame is sent.
+  virtual void OnSettingsFrameSent(const SettingsFrame& /*frame*/) = 0;
 };
 
 // A QUIC session for HTTP.
diff --git a/quic/core/http/quic_spdy_session_test.cc b/quic/core/http/quic_spdy_session_test.cc
index 16028de..1d3092c 100644
--- a/quic/core/http/quic_spdy_session_test.cc
+++ b/quic/core/http/quic_spdy_session_test.cc
@@ -135,7 +135,9 @@
 
   MOCK_METHOD1(OnPeerQpackDecoderStreamCreated, void(QuicStreamId));
 
-  MOCK_METHOD1(OnSettingsFrame, void(const SettingsFrame&));
+  MOCK_METHOD1(OnSettingsFrameReceived, void(const SettingsFrame&));
+
+  MOCK_METHOD1(OnSettingsFrameSent, void(const SettingsFrame&));
 };
 
 class TestStream : public QuicSpdyStream {
@@ -2222,7 +2224,7 @@
   EXPECT_NE(5u, session_.max_outbound_header_list_size());
   EXPECT_NE(42u, QpackEncoderPeer::maximum_blocked_streams(qpack_encoder));
 
-  EXPECT_CALL(debug_visitor, OnSettingsFrame(settings));
+  EXPECT_CALL(debug_visitor, OnSettingsFrameReceived(settings));
   session_.OnStreamFrame(frame);
 
   EXPECT_EQ(512u,