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

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

Issue 1160883004: Keep workerStart timing info over request job restarts (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"
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 } 57 }
58 58
59 if (is_main_resource_load_ && provider_host_) 59 if (is_main_resource_load_ && provider_host_)
60 provider_host_->SetAllowAssociation(true); 60 provider_host_->SetAllowAssociation(true);
61 } 61 }
62 62
63 net::URLRequestJob* ServiceWorkerControlleeRequestHandler::MaybeCreateJob( 63 net::URLRequestJob* ServiceWorkerControlleeRequestHandler::MaybeCreateJob(
64 net::URLRequest* request, 64 net::URLRequest* request,
65 net::NetworkDelegate* network_delegate, 65 net::NetworkDelegate* network_delegate,
66 ResourceContext* resource_context) { 66 ResourceContext* resource_context) {
67 if (job_.get() && worker_start_time_.is_null()) {
68 // Save worker-start time of the first job.
69 worker_start_time_ = job_->worker_start_time();
70 }
71
67 if (!context_ || !provider_host_) { 72 if (!context_ || !provider_host_) {
68 // We can't do anything other than to fall back to network. 73 // We can't do anything other than to fall back to network.
69 job_ = NULL; 74 job_ = NULL;
70 return NULL; 75 return NULL;
71 } 76 }
72 77
73 // This may get called multiple times for original and redirect requests: 78 // This may get called multiple times for original and redirect requests:
74 // A. original request case: job_ is null, no previous location info. 79 // A. original request case: job_ is null, no previous location info.
75 // B. redirect or restarted request case: 80 // B. redirect or restarted request case:
76 // a) job_ is non-null if the previous location was forwarded to SW. 81 // a) job_ is non-null if the previous location was forwarded to SW.
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 void ServiceWorkerControlleeRequestHandler::GetExtraResponseInfo( 117 void ServiceWorkerControlleeRequestHandler::GetExtraResponseInfo(
113 bool* was_fetched_via_service_worker, 118 bool* was_fetched_via_service_worker,
114 bool* was_fallback_required_by_service_worker, 119 bool* was_fallback_required_by_service_worker,
115 GURL* original_url_via_service_worker, 120 GURL* original_url_via_service_worker,
116 blink::WebServiceWorkerResponseType* response_type_via_service_worker, 121 blink::WebServiceWorkerResponseType* response_type_via_service_worker,
117 base::TimeTicks* worker_start_time) const { 122 base::TimeTicks* worker_start_time) const {
118 if (!job_.get()) { 123 if (!job_.get()) {
119 *was_fetched_via_service_worker = false; 124 *was_fetched_via_service_worker = false;
120 *was_fallback_required_by_service_worker = false; 125 *was_fallback_required_by_service_worker = false;
121 *original_url_via_service_worker = GURL(); 126 *original_url_via_service_worker = GURL();
127 *worker_start_time = worker_start_time_;
122 return; 128 return;
123 } 129 }
124 job_->GetExtraResponseInfo( 130 job_->GetExtraResponseInfo(
125 was_fetched_via_service_worker, was_fallback_required_by_service_worker, 131 was_fetched_via_service_worker, was_fallback_required_by_service_worker,
126 original_url_via_service_worker, response_type_via_service_worker, 132 original_url_via_service_worker, response_type_via_service_worker,
127 worker_start_time); 133 worker_start_time);
134 if (!worker_start_time_.is_null()) {
135 // If we have worker start time from previous job, use it.
136 *worker_start_time = worker_start_time_;
137 }
128 } 138 }
129 139
130 void ServiceWorkerControlleeRequestHandler::PrepareForMainResource( 140 void ServiceWorkerControlleeRequestHandler::PrepareForMainResource(
131 const net::URLRequest* request) { 141 const net::URLRequest* request) {
132 DCHECK(job_.get()); 142 DCHECK(job_.get());
133 DCHECK(context_); 143 DCHECK(context_);
134 DCHECK(provider_host_); 144 DCHECK(provider_host_);
135 TRACE_EVENT_ASYNC_BEGIN1( 145 TRACE_EVENT_ASYNC_BEGIN1(
136 "ServiceWorker", 146 "ServiceWorker",
137 "ServiceWorkerControlleeRequestHandler::PrepareForMainResource", 147 "ServiceWorkerControlleeRequestHandler::PrepareForMainResource",
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 } 270 }
261 271
262 void ServiceWorkerControlleeRequestHandler::PrepareForSubResource() { 272 void ServiceWorkerControlleeRequestHandler::PrepareForSubResource() {
263 DCHECK(job_.get()); 273 DCHECK(job_.get());
264 DCHECK(context_); 274 DCHECK(context_);
265 DCHECK(provider_host_->active_version()); 275 DCHECK(provider_host_->active_version());
266 job_->ForwardToServiceWorker(); 276 job_->ForwardToServiceWorker();
267 } 277 }
268 278
269 } // namespace content 279 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698