summaryrefslogtreecommitdiffstats
path: root/net/quic/quic_chromium_client_session.cc
diff options
context:
space:
mode:
Diffstat (limited to 'net/quic/quic_chromium_client_session.cc')
-rw-r--r--net/quic/quic_chromium_client_session.cc35
1 files changed, 35 insertions, 0 deletions
diff --git a/net/quic/quic_chromium_client_session.cc b/net/quic/quic_chromium_client_session.cc
index 85d06ae..fbc1382 100644
--- a/net/quic/quic_chromium_client_session.cc
+++ b/net/quic/quic_chromium_client_session.cc
@@ -18,6 +18,7 @@
#include "net/base/io_buffer.h"
#include "net/base/net_errors.h"
#include "net/base/network_activity_monitor.h"
+#include "net/http/http_log_util.h"
#include "net/http/transport_security_state.h"
#include "net/quic/crypto/proof_verifier_chromium.h"
#include "net/quic/crypto/quic_server_info.h"
@@ -128,6 +129,31 @@ scoped_ptr<base::Value> NetLogQuicClientSessionCallback(
return std::move(dict);
}
+scoped_ptr<base::ListValue> SpdyHeaderBlockToListValue(
+ const SpdyHeaderBlock& headers,
+ NetLogCaptureMode capture_mode) {
+ scoped_ptr<base::ListValue> headers_list(new base::ListValue());
+ for (const auto& it : headers) {
+ headers_list->AppendString(
+ it.first.as_string() + ": " +
+ ElideHeaderValueForNetLog(capture_mode, it.first.as_string(),
+ it.second.as_string()));
+ }
+ return headers_list;
+}
+
+scoped_ptr<base::Value> NetLogQuicPushPromiseReceivedCallback(
+ const SpdyHeaderBlock* headers,
+ SpdyStreamId stream_id,
+ SpdyStreamId promised_stream_id,
+ NetLogCaptureMode capture_mode) {
+ scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
+ dict->Set("headers", SpdyHeaderBlockToListValue(*headers, capture_mode));
+ dict->SetInteger("id", stream_id);
+ dict->SetInteger("promised_stream_id", promised_stream_id);
+ return std::move(dict);
+}
+
} // namespace
QuicChromiumClientSession::StreamRequest::StreamRequest() : stream_(nullptr) {}
@@ -1124,4 +1150,13 @@ bool QuicChromiumClientSession::HasNonMigratableStreams() const {
return false;
}
+void QuicChromiumClientSession::HandlePromised(QuicStreamId id,
+ QuicStreamId promised_id,
+ const SpdyHeaderBlock& headers) {
+ QuicClientSessionBase::HandlePromised(id, promised_id, headers);
+ net_log_.AddEvent(NetLog::TYPE_QUIC_SESSION_PUSH_PROMISE_RECEIVED,
+ base::Bind(&NetLogQuicPushPromiseReceivedCallback, &headers,
+ id, promised_id));
+}
+
} // namespace net