Index: content/browser/service_worker/service_worker_url_request_job.cc |
diff --git a/content/browser/service_worker/service_worker_url_request_job.cc b/content/browser/service_worker/service_worker_url_request_job.cc |
index aa1cf1ffff75baa73649d11c78f81ef36dfad55e..2374485f45adeaefb13ab423fa2428c6622709ea 100644 |
--- a/content/browser/service_worker/service_worker_url_request_job.cc |
+++ b/content/browser/service_worker/service_worker_url_request_job.cc |
@@ -11,6 +11,7 @@ |
#include "base/bind.h" |
#include "base/guid.h" |
#include "base/strings/stringprintf.h" |
+#include "base/time/time.h" |
#include "content/browser/service_worker/service_worker_fetch_dispatcher.h" |
#include "content/browser/service_worker/service_worker_provider_host.h" |
#include "content/common/resource_request_body.h" |
@@ -26,6 +27,9 @@ |
#include "webkit/browser/blob/blob_storage_context.h" |
#include "webkit/browser/blob/blob_url_request_job_factory.h" |
+using base::Time; |
+using base::TimeTicks; |
michaeln
2014/09/03 00:56:04
are these needed, looks like you fully qualify the
shimazu
2014/09/04 03:32:41
Done.
|
+ |
namespace content { |
ServiceWorkerURLRequestJob::ServiceWorkerURLRequestJob( |
@@ -88,6 +92,12 @@ void ServiceWorkerURLRequestJob::GetResponseInfo(net::HttpResponseInfo* info) { |
if (!http_info()) |
return; |
*info = *http_info(); |
+ info->response_time = response_time_; |
+} |
+ |
+void ServiceWorkerURLRequestJob::GetLoadTimingInfo( |
+ net::LoadTimingInfo* load_timing_info) const { |
mmenke
2014/09/02 19:10:43
+2 indent.
shimazu
2014/09/04 03:32:41
Done.
|
+ *load_timing_info = load_timing_info_; |
} |
int ServiceWorkerURLRequestJob::GetResponseCode() const { |
@@ -159,6 +169,7 @@ void ServiceWorkerURLRequestJob::OnBeforeNetworkStart(net::URLRequest* request, |
void ServiceWorkerURLRequestJob::OnResponseStarted(net::URLRequest* request) { |
// TODO(falken): Add Content-Length, Content-Type if they were not provided in |
// the ServiceWorkerResponse. |
+ response_time_ = base::Time::Now(); |
CommitResponseHeader(); |
} |
@@ -222,6 +233,8 @@ void ServiceWorkerURLRequestJob::StartRequest() { |
return; |
case FORWARD_TO_SERVICE_WORKER: |
+ load_timing_info_.request_start_time = base::Time::Now(); |
+ load_timing_info_.request_start = base::TimeTicks::Now(); |
mmenke
2014/09/02 19:10:43
These two are populated by the URLRequest itself,
shimazu
2014/09/04 03:32:41
Done.
|
DCHECK(provider_host_ && provider_host_->active_version()); |
DCHECK(!fetch_dispatcher_); |
// Send a fetch event to the ServiceWorker associated to the |
@@ -233,6 +246,8 @@ void ServiceWorkerURLRequestJob::StartRequest() { |
weak_factory_.GetWeakPtr()), |
base::Bind(&ServiceWorkerURLRequestJob::DidDispatchFetchEvent, |
weak_factory_.GetWeakPtr()))); |
+ load_timing_info_.serviceworker_timing.fetch_start = |
+ base::TimeTicks::Now(); |
mmenke
2014/09/02 19:10:43
+2 indent
shimazu
2014/09/04 03:32:41
Done.
|
fetch_dispatcher_->Run(); |
return; |
} |
@@ -324,8 +339,8 @@ bool ServiceWorkerURLRequestJob::CreateRequestBodyBlob(std::string* blob_uuid, |
} |
void ServiceWorkerURLRequestJob::DidPrepareFetchEvent() { |
- // TODO(shimazu): Set the timestamp to measure the time to launch SW |
- // This is related to this (http://crbug.com/401389) |
+ load_timing_info_.serviceworker_timing.fetch_ready = |
+ base::TimeTicks::Now(); |
mmenke
2014/09/02 19:10:43
+2 indent.
shimazu
2014/09/04 03:32:41
Done.
|
} |
void ServiceWorkerURLRequestJob::DidDispatchFetchEvent( |
@@ -359,6 +374,7 @@ void ServiceWorkerURLRequestJob::DidDispatchFetchEvent( |
// We should have a response now. |
DCHECK_EQ(SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, fetch_result); |
+ load_timing_info_.serviceworker_timing.fetch_end = base::TimeTicks::Now(); |
// Set up a request for reading the blob. |
if (!response.blob_uuid.empty() && blob_storage_context_) { |
@@ -377,14 +393,15 @@ void ServiceWorkerURLRequestJob::DidDispatchFetchEvent( |
response_url_ = response.url; |
CreateResponseHeader( |
response.status_code, response.status_text, response.headers); |
+ load_timing_info_.receive_headers_end = base::TimeTicks::Now(); |
if (!blob_request_) |
CommitResponseHeader(); |
} |
void ServiceWorkerURLRequestJob::CreateResponseHeader( |
- int status_code, |
- const std::string& status_text, |
- const std::map<std::string, std::string>& headers) { |
+ int status_code, |
+ const std::string& status_text, |
+ const std::map<std::string, std::string>& headers) { |
mmenke
2014/09/02 19:10:43
+2 indent for the above 3 lines.
shimazu
2014/09/04 03:32:41
Done.
|
// TODO(kinuko): If the response has an identifier to on-disk cache entry, |
// pull response header from the disk. |
std::string status_line( |