Chromium Code Reviews| 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 92d43af2c56ee9c323f80a160505035c5ec59610..2db2bc65c0b5356d0de7d92694745c48cca8df9c 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" |
| @@ -88,6 +89,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 { |
| + *load_timing_info = load_timing_info_; |
| } |
| int ServiceWorkerURLRequestJob::GetResponseCode() const { |
| @@ -159,6 +166,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(); |
| } |
| @@ -184,7 +192,10 @@ const net::HttpResponseInfo* ServiceWorkerURLRequestJob::http_info() const { |
| void ServiceWorkerURLRequestJob::GetExtraResponseInfo( |
| bool* was_fetched_via_service_worker, |
| - GURL* original_url_via_service_worker) const { |
| + GURL* original_url_via_service_worker, |
| + base::TimeTicks* fetch_start_time, |
| + base::TimeTicks* fetch_ready_time, |
| + base::TimeTicks* fetch_end_time) const { |
| if (response_type_ != FORWARD_TO_SERVICE_WORKER) { |
| *was_fetched_via_service_worker = false; |
| *original_url_via_service_worker = GURL(); |
| @@ -192,6 +203,9 @@ void ServiceWorkerURLRequestJob::GetExtraResponseInfo( |
| } |
| *was_fetched_via_service_worker = true; |
| *original_url_via_service_worker = response_url_; |
| + *fetch_start_time = fetch_start_time_; |
| + *fetch_ready_time = fetch_ready_time_; |
| + *fetch_end_time = fetch_end_time_; |
| } |
| @@ -233,6 +247,7 @@ void ServiceWorkerURLRequestJob::StartRequest() { |
| weak_factory_.GetWeakPtr()), |
| base::Bind(&ServiceWorkerURLRequestJob::DidDispatchFetchEvent, |
| weak_factory_.GetWeakPtr()))); |
| + fetch_start_time_ = base::TimeTicks::Now(); |
| fetch_dispatcher_->Run(); |
| return; |
| } |
| @@ -329,8 +344,7 @@ 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) |
| + fetch_ready_time_ = base::TimeTicks::Now(); |
| } |
| void ServiceWorkerURLRequestJob::DidDispatchFetchEvent( |
| @@ -364,7 +378,7 @@ void ServiceWorkerURLRequestJob::DidDispatchFetchEvent( |
| // We should have a response now. |
| DCHECK_EQ(SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, fetch_result); |
| - |
| + fetch_end_time_ = base::TimeTicks::Now(); |
| // Set up a request for reading the blob. |
| if (!response.blob_uuid.empty() && blob_storage_context_) { |
| scoped_ptr<storage::BlobDataHandle> blob_data_handle = |
| @@ -382,6 +396,7 @@ 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(); |
|
mmenke
2014/09/04 14:53:51
Currently, either all of send_start/send_end/recei
shimazu
2014/09/05 04:18:48
Thanks, I didn't know the spec.
I set the send_sta
|
| if (!blob_request_) |
| CommitResponseHeader(); |
| } |