| 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 d0e0485f68bd9f2469a3f55c12f6d4b10baef842..8d512780e969e05e5c5d32f06ad4cac0024bd2cf 100644
|
| --- a/chrome/browser/net/load_timing_observer.cc
|
| +++ b/chrome/browser/net/load_timing_observer.cc
|
| @@ -48,7 +48,8 @@ LoadTimingObserver::URLRequestRecord::URLRequestRecord()
|
| socket_reused(false) {
|
| }
|
|
|
| -LoadTimingObserver::LoadTimingObserver() {
|
| +LoadTimingObserver::LoadTimingObserver()
|
| + : last_connect_job_id_(net::NetLog::Source::kInvalidId) {
|
| }
|
|
|
| LoadTimingObserver::~LoadTimingObserver() {
|
| @@ -118,7 +119,7 @@ void LoadTimingObserver::OnAddURLRequestEntry(
|
|
|
| ResourceLoaderBridge::LoadTimingInfo& timing = record->timing;
|
|
|
| - switch(type) {
|
| + switch (type) {
|
| case net::NetLog::TYPE_PROXY_SERVICE:
|
| if (is_begin)
|
| timing.proxy_start = TimeTicksToOffset(time, record);
|
| @@ -135,12 +136,12 @@ void LoadTimingObserver::OnAddURLRequestEntry(
|
| {
|
| uint32 connect_job_id = static_cast<net::NetLogSourceParameter*>(
|
| params)->value().id;
|
| - ConnectJobToRecordMap::iterator it =
|
| - connect_job_to_record_.find(connect_job_id);
|
| - if (it != connect_job_to_record_.end() &&
|
| - !it->second.dns_start.is_null()) {
|
| - timing.dns_start = TimeTicksToOffset(it->second.dns_start, record);
|
| - timing.dns_end = TimeTicksToOffset(it->second.dns_end, record);
|
| + if (last_connect_job_id_ == connect_job_id &&
|
| + !last_connect_job_record_.dns_start.is_null()) {
|
| + timing.dns_start =
|
| + TimeTicksToOffset(last_connect_job_record_.dns_start, record);
|
| + timing.dns_end =
|
| + TimeTicksToOffset(last_connect_job_record_.dns_end, record);
|
| }
|
| }
|
| break;
|
| @@ -154,8 +155,8 @@ void LoadTimingObserver::OnAddURLRequestEntry(
|
| 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);
|
| + timing.ssl_start = TimeTicksToOffset(it->second.ssl_start, record);
|
| + timing.ssl_end = TimeTicksToOffset(it->second.ssl_end, record);
|
| }
|
| }
|
| break;
|
| @@ -201,7 +202,13 @@ void LoadTimingObserver::OnAddConnectJobEntry(
|
| connect_job_to_record_.insert(
|
| std::make_pair(source.id, ConnectJobRecord()));
|
| } else if (is_end) {
|
| - connect_job_to_record_.erase(source.id);
|
| + ConnectJobToRecordMap::iterator it =
|
| + connect_job_to_record_.find(source.id);
|
| + if (it != connect_job_to_record_.end()) {
|
| + last_connect_job_id_ = it->first;
|
| + last_connect_job_record_ = it->second;
|
| + connect_job_to_record_.erase(it);
|
| + }
|
| }
|
| } else if (type == net::NetLog::TYPE_HOST_RESOLVER_IMPL) {
|
| ConnectJobToRecordMap::iterator it =
|
|
|