| Index: content/common/resource_dispatcher.cc
|
| diff --git a/content/common/resource_dispatcher.cc b/content/common/resource_dispatcher.cc
|
| index b4addcb82f7b1227b05b098bf22118b86e6301aa..a35737245a244271c49c528b52593944f738509f 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 = ConsumeIOTimestamp();
|
|
|
| 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 = ConsumeIOTimestamp();
|
|
|
| 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 = ConsumeIOTimestamp();
|
| request_info->buffer.reset();
|
| request_info->buffer_size = 0;
|
|
|
| @@ -702,6 +703,14 @@ base::TimeTicks ResourceDispatcher::ToRendererCompletionTime(
|
| return base::TimeTicks::FromInternalValue(result);
|
| }
|
|
|
| +base::TimeTicks ResourceDispatcher::ConsumeIOTimestamp() {
|
| + if (io_timestamp_ == base::TimeTicks())
|
| + return base::TimeTicks::Now();
|
| + base::TimeTicks result = io_timestamp_;
|
| + io_timestamp_ = base::TimeTicks();
|
| + return result;
|
| +}
|
| +
|
| // static
|
| bool ResourceDispatcher::IsResourceDispatcherMessage(
|
| const IPC::Message& message) {
|
|
|