Chromium Code Reviews| Index: content/common/resource_dispatcher.cc |
| diff --git a/content/common/resource_dispatcher.cc b/content/common/resource_dispatcher.cc |
| index b4addcb82f7b1227b05b098bf22118b86e6301aa..fd8c25daa6c15d05ffd3bc1a387456f4ca1a4661 100644 |
| --- a/content/common/resource_dispatcher.cc |
| +++ b/content/common/resource_dispatcher.cc |
| @@ -257,7 +257,8 @@ void IPCResourceLoaderBridge::SyncLoad(SyncLoadResponse* response) { |
| ResourceDispatcher::ResourceDispatcher(IPC::Sender* sender) |
| : message_sender_(sender), |
| weak_factory_(this), |
| - delegate_(NULL) { |
| + delegate_(NULL), |
| + io_timestamp_(base::TimeTicks()) { |
| } |
| ResourceDispatcher::~ResourceDispatcher() { |
| @@ -334,7 +335,7 @@ void ResourceDispatcher::OnReceivedResponse( |
| PendingRequestInfo* request_info = GetPendingRequestInfo(request_id); |
| if (!request_info) |
| return; |
| - request_info->response_start = base::TimeTicks::Now(); |
| + request_info->response_start = consume_io_timestamp(); |
| if (delegate_) { |
| ResourceLoaderBridge::Peer* new_peer = |
| @@ -447,7 +448,7 @@ void ResourceDispatcher::OnReceivedRedirect( |
| PendingRequestInfo* request_info = GetPendingRequestInfo(request_id); |
| if (!request_info) |
| return; |
| - request_info->response_start = base::TimeTicks::Now(); |
| + request_info->response_start = consume_io_timestamp(); |
| int32 routing_id = message.routing_id(); |
| bool has_new_first_party_for_cookies = false; |
| @@ -491,7 +492,7 @@ void ResourceDispatcher::OnRequestComplete( |
| PendingRequestInfo* request_info = GetPendingRequestInfo(request_id); |
| if (!request_info) |
| return; |
| - request_info->completion_time = base::TimeTicks::Now(); |
| + request_info->completion_time = consume_io_timestamp(); |
| request_info->buffer.reset(); |
| request_info->buffer_size = 0; |
| @@ -702,6 +703,16 @@ base::TimeTicks ResourceDispatcher::ToRendererCompletionTime( |
| return base::TimeTicks::FromInternalValue(result); |
| } |
| +base::TimeTicks ResourceDispatcher::consume_io_timestamp() { |
| + if (io_timestamp_ == base::TimeTicks()) |
| + return base::TimeTicks::Now(); |
| + else { |
|
Charlie Reis
2013/05/24 16:17:08
nit: No else needed, since you return in the first
|
| + base::TimeTicks result = io_timestamp_; |
| + io_timestamp_ = base::TimeTicks(); |
| + return result; |
| + } |
| +} |
| + |
| // static |
| bool ResourceDispatcher::IsResourceDispatcherMessage( |
| const IPC::Message& message) { |