Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(17)

Side by Side Diff: content/browser/service_worker/service_worker_controllee_request_handler.cc

Issue 1146253004: Add workerReady timing for ServiceWorker controlled requests [2/3] (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/service_worker/service_worker_controllee_request_handl er.h" 5 #include "content/browser/service_worker/service_worker_controllee_request_handl er.h"
6 6
7 #include "base/trace_event/trace_event.h" 7 #include "base/trace_event/trace_event.h"
8 #include "content/browser/service_worker/service_worker_context_core.h" 8 #include "content/browser/service_worker/service_worker_context_core.h"
9 #include "content/browser/service_worker/service_worker_metrics.h" 9 #include "content/browser/service_worker/service_worker_metrics.h"
10 #include "content/browser/service_worker/service_worker_provider_host.h" 10 #include "content/browser/service_worker/service_worker_provider_host.h"
11 #include "content/browser/service_worker/service_worker_registration.h" 11 #include "content/browser/service_worker/service_worker_registration.h"
12 #include "content/browser/service_worker/service_worker_url_request_job.h" 12 #include "content/browser/service_worker/service_worker_url_request_job.h"
13 #include "content/browser/service_worker/service_worker_utils.h" 13 #include "content/browser/service_worker/service_worker_utils.h"
14 #include "content/common/resource_request_body.h" 14 #include "content/common/resource_request_body.h"
15 #include "content/common/service_worker/service_worker_types.h" 15 #include "content/common/service_worker/service_worker_types.h"
16 #include "content/public/browser/content_browser_client.h" 16 #include "content/public/browser/content_browser_client.h"
17 #include "content/public/common/content_client.h" 17 #include "content/public/common/content_client.h"
18 #include "content/public/common/resource_response_info.h"
18 #include "net/base/load_flags.h" 19 #include "net/base/load_flags.h"
19 #include "net/base/net_util.h" 20 #include "net/base/net_util.h"
20 #include "net/url_request/url_request.h" 21 #include "net/url_request/url_request.h"
21 22
22 namespace content { 23 namespace content {
23 24
24 ServiceWorkerControlleeRequestHandler::ServiceWorkerControlleeRequestHandler( 25 ServiceWorkerControlleeRequestHandler::ServiceWorkerControlleeRequestHandler(
25 base::WeakPtr<ServiceWorkerContextCore> context, 26 base::WeakPtr<ServiceWorkerContextCore> context,
26 base::WeakPtr<ServiceWorkerProviderHost> provider_host, 27 base::WeakPtr<ServiceWorkerProviderHost> provider_host,
27 base::WeakPtr<storage::BlobStorageContext> blob_storage_context, 28 base::WeakPtr<storage::BlobStorageContext> blob_storage_context,
(...skipping 30 matching lines...) Expand all
58 59
59 if (is_main_resource_load_ && provider_host_) 60 if (is_main_resource_load_ && provider_host_)
60 provider_host_->SetAllowAssociation(true); 61 provider_host_->SetAllowAssociation(true);
61 } 62 }
62 63
63 net::URLRequestJob* ServiceWorkerControlleeRequestHandler::MaybeCreateJob( 64 net::URLRequestJob* ServiceWorkerControlleeRequestHandler::MaybeCreateJob(
64 net::URLRequest* request, 65 net::URLRequest* request,
65 net::NetworkDelegate* network_delegate, 66 net::NetworkDelegate* network_delegate,
66 ResourceContext* resource_context) { 67 ResourceContext* resource_context) {
67 if (job_.get() && worker_start_time_.is_null()) { 68 if (job_.get() && worker_start_time_.is_null()) {
68 // Save worker-start time of the first job. 69 // Save worker timings of the first job.
69 worker_start_time_ = job_->worker_start_time(); 70 worker_start_time_ = job_->worker_start_time();
71 worker_ready_time_ = job_->worker_ready_time();
70 } 72 }
71 73
72 if (!context_ || !provider_host_) { 74 if (!context_ || !provider_host_) {
73 // We can't do anything other than to fall back to network. 75 // We can't do anything other than to fall back to network.
74 job_ = NULL; 76 job_ = NULL;
75 return NULL; 77 return NULL;
76 } 78 }
77 79
78 // This may get called multiple times for original and redirect requests: 80 // This may get called multiple times for original and redirect requests:
79 // A. original request case: job_ is null, no previous location info. 81 // A. original request case: job_ is null, no previous location info.
(...skipping 28 matching lines...) Expand all
108 // the storage lookup returned immediately), just return NULL here to 110 // the storage lookup returned immediately), just return NULL here to
109 // fallback to network. 111 // fallback to network.
110 job_ = NULL; 112 job_ = NULL;
111 return NULL; 113 return NULL;
112 } 114 }
113 115
114 return job_.get(); 116 return job_.get();
115 } 117 }
116 118
117 void ServiceWorkerControlleeRequestHandler::GetExtraResponseInfo( 119 void ServiceWorkerControlleeRequestHandler::GetExtraResponseInfo(
118 bool* was_fetched_via_service_worker, 120 ResourceResponseInfo* response_info) const {
119 bool* was_fallback_required_by_service_worker,
120 GURL* original_url_via_service_worker,
121 blink::WebServiceWorkerResponseType* response_type_via_service_worker,
122 base::TimeTicks* worker_start_time) const {
123 if (!job_.get()) { 121 if (!job_.get()) {
124 *was_fetched_via_service_worker = false; 122 response_info->was_fetched_via_service_worker = false;
125 *was_fallback_required_by_service_worker = false; 123 response_info->was_fallback_required_by_service_worker = false;
126 *original_url_via_service_worker = GURL(); 124 response_info->original_url_via_service_worker = GURL();
127 *worker_start_time = worker_start_time_; 125 response_info->service_worker_start_time = worker_start_time_;
126 response_info->service_worker_ready_time = worker_ready_time_;
128 return; 127 return;
129 } 128 }
130 job_->GetExtraResponseInfo( 129 job_->GetExtraResponseInfo(response_info);
131 was_fetched_via_service_worker, was_fallback_required_by_service_worker,
132 original_url_via_service_worker, response_type_via_service_worker,
133 worker_start_time);
134 if (!worker_start_time_.is_null()) { 130 if (!worker_start_time_.is_null()) {
135 // If we have worker start time from previous job, use it. 131 // If we have worker timings from previous job, use it.
136 *worker_start_time = worker_start_time_; 132 response_info->service_worker_start_time = worker_start_time_;
133 response_info->service_worker_ready_time = worker_ready_time_;
137 } 134 }
138 } 135 }
139 136
140 void ServiceWorkerControlleeRequestHandler::PrepareForMainResource( 137 void ServiceWorkerControlleeRequestHandler::PrepareForMainResource(
141 const net::URLRequest* request) { 138 const net::URLRequest* request) {
142 DCHECK(job_.get()); 139 DCHECK(job_.get());
143 DCHECK(context_); 140 DCHECK(context_);
144 DCHECK(provider_host_); 141 DCHECK(provider_host_);
145 TRACE_EVENT_ASYNC_BEGIN1( 142 TRACE_EVENT_ASYNC_BEGIN1(
146 "ServiceWorker", 143 "ServiceWorker",
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 } 267 }
271 268
272 void ServiceWorkerControlleeRequestHandler::PrepareForSubResource() { 269 void ServiceWorkerControlleeRequestHandler::PrepareForSubResource() {
273 DCHECK(job_.get()); 270 DCHECK(job_.get());
274 DCHECK(context_); 271 DCHECK(context_);
275 DCHECK(provider_host_->active_version()); 272 DCHECK(provider_host_->active_version());
276 job_->ForwardToServiceWorker(); 273 job_->ForwardToServiceWorker();
277 } 274 }
278 275
279 } // namespace content 276 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698