Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6052)

Unified Diff: chrome/browser/net/load_timing_observer.cc

Issue 2868054: DevTools: provide SSL networks time as a part of LoadTimingInfo. (Closed)
Patch Set: Created 10 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/net/load_timing_observer.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/net/load_timing_observer.cc
diff --git a/chrome/browser/net/load_timing_observer.cc b/chrome/browser/net/load_timing_observer.cc
index cd80b7de9031cf5a7c5da87897e61069b53c90ff..d0e0485f68bd9f2469a3f55c12f6d4b10baef842 100644
--- a/chrome/browser/net/load_timing_observer.cc
+++ b/chrome/browser/net/load_timing_observer.cc
@@ -71,6 +71,8 @@ void LoadTimingObserver::OnAddEntry(net::NetLog::EventType type,
OnAddURLRequestEntry(type, time, source, phase, params);
else if (source.type == net::NetLog::SOURCE_CONNECT_JOB)
OnAddConnectJobEntry(type, time, source, phase, params);
+ else if (source.type == net::NetLog::SOURCE_SOCKET)
+ OnAddSocketEntry(type, time, source, phase, params);
}
void LoadTimingObserver::OnAddURLRequestEntry(
@@ -148,6 +150,14 @@ void LoadTimingObserver::OnAddURLRequestEntry(
case net::NetLog::TYPE_SOCKET_POOL_BOUND_TO_SOCKET:
record->socket_log_id = static_cast<net::NetLogSourceParameter*>(
params)->value().id;
+ if (!record->socket_reused) {
+ SocketToRecordMap::iterator it =
+ socket_to_record_.find(record->socket_log_id);
+ if (it != socket_to_record_.end() && !it->second.ssl_start.is_null()) {
+ timing.ssl_start = TimeTicksToOffset(it->second.ssl_start, record);
+ timing.ssl_end = TimeTicksToOffset(it->second.ssl_end, record);
+ }
+ }
break;
case net::NetLog::TYPE_HTTP_TRANSACTION_SEND_REQUEST:
case net::NetLog::TYPE_SPDY_TRANSACTION_SEND_REQUEST:
@@ -204,3 +214,42 @@ void LoadTimingObserver::OnAddConnectJobEntry(
}
}
}
+
+void LoadTimingObserver::OnAddSocketEntry(
+ net::NetLog::EventType type,
+ const base::TimeTicks& time,
+ const net::NetLog::Source& source,
+ net::NetLog::EventPhase phase,
+ net::NetLog::EventParameters* params) {
+ bool is_begin = phase == net::NetLog::PHASE_BEGIN;
+ bool is_end = phase == net::NetLog::PHASE_END;
+
+ // Manage record lifetime based on the SOCKET_ALIVE entry.
+ if (type == net::NetLog::TYPE_SOCKET_ALIVE) {
+ if (is_begin) {
+ // Prevents us from passively growing the memory memory unbounded in case
+ // something went wrong. Should not happen.
+ if (socket_to_record_.size() > kMaxNumEntries) {
+ LOG(WARNING) << "The load timing observer socket count has grown "
+ "larger than expected, resetting";
+ socket_to_record_.clear();
+ }
+
+ socket_to_record_.insert(
+ std::make_pair(source.id, SocketRecord()));
+ } else if (is_end) {
+ socket_to_record_.erase(source.id);
+ }
+ return;
+ }
+ SocketToRecordMap::iterator it = socket_to_record_.find(source.id);
+ if (it == socket_to_record_.end())
+ return;
+
+ if (type == net::NetLog::TYPE_SSL_CONNECT) {
+ if (is_begin)
+ it->second.ssl_start = time;
+ else if (is_end)
+ it->second.ssl_end = time;
+ }
+}
« no previous file with comments | « chrome/browser/net/load_timing_observer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698