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

Side by Side Diff: content/browser/service_worker/service_worker_url_request_job.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_url_request_job.h" 5 #include "content/browser/service_worker/service_worker_url_request_job.h"
6 6
7 #include <map> 7 #include <map>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/bind.h" 11 #include "base/bind.h"
12 #include "base/guid.h" 12 #include "base/guid.h"
13 #include "base/memory/scoped_vector.h" 13 #include "base/memory/scoped_vector.h"
14 #include "base/strings/stringprintf.h" 14 #include "base/strings/stringprintf.h"
15 #include "base/time/time.h" 15 #include "base/time/time.h"
16 #include "content/browser/resource_context_impl.h" 16 #include "content/browser/resource_context_impl.h"
17 #include "content/browser/service_worker/service_worker_fetch_dispatcher.h" 17 #include "content/browser/service_worker/service_worker_fetch_dispatcher.h"
18 #include "content/browser/service_worker/service_worker_provider_host.h" 18 #include "content/browser/service_worker/service_worker_provider_host.h"
19 #include "content/browser/streams/stream.h" 19 #include "content/browser/streams/stream.h"
20 #include "content/browser/streams/stream_context.h" 20 #include "content/browser/streams/stream_context.h"
21 #include "content/browser/streams/stream_registry.h" 21 #include "content/browser/streams/stream_registry.h"
22 #include "content/common/resource_request_body.h" 22 #include "content/common/resource_request_body.h"
23 #include "content/common/service_worker/service_worker_types.h" 23 #include "content/common/service_worker/service_worker_types.h"
24 #include "content/public/browser/blob_handle.h" 24 #include "content/public/browser/blob_handle.h"
25 #include "content/public/browser/resource_request_info.h" 25 #include "content/public/browser/resource_request_info.h"
26 #include "content/public/browser/service_worker_context.h" 26 #include "content/public/browser/service_worker_context.h"
27 #include "content/public/common/referrer.h" 27 #include "content/public/common/referrer.h"
28 #include "content/public/common/resource_response_info.h"
28 #include "net/base/net_errors.h" 29 #include "net/base/net_errors.h"
29 #include "net/http/http_request_headers.h" 30 #include "net/http/http_request_headers.h"
30 #include "net/http/http_response_headers.h" 31 #include "net/http/http_response_headers.h"
31 #include "net/http/http_response_info.h" 32 #include "net/http/http_response_info.h"
32 #include "net/http/http_util.h" 33 #include "net/http/http_util.h"
33 #include "storage/browser/blob/blob_data_builder.h" 34 #include "storage/browser/blob/blob_data_builder.h"
34 #include "storage/browser/blob/blob_data_handle.h" 35 #include "storage/browser/blob/blob_data_handle.h"
35 #include "storage/browser/blob/blob_storage_context.h" 36 #include "storage/browser/blob/blob_storage_context.h"
36 #include "storage/browser/blob/blob_url_request_job_factory.h" 37 #include "storage/browser/blob/blob_url_request_job_factory.h"
37 #include "ui/base/page_transition_types.h" 38 #include "ui/base/page_transition_types.h"
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 286
286 const net::HttpResponseInfo* ServiceWorkerURLRequestJob::http_info() const { 287 const net::HttpResponseInfo* ServiceWorkerURLRequestJob::http_info() const {
287 if (!http_response_info_) 288 if (!http_response_info_)
288 return nullptr; 289 return nullptr;
289 if (range_response_info_) 290 if (range_response_info_)
290 return range_response_info_.get(); 291 return range_response_info_.get();
291 return http_response_info_.get(); 292 return http_response_info_.get();
292 } 293 }
293 294
294 void ServiceWorkerURLRequestJob::GetExtraResponseInfo( 295 void ServiceWorkerURLRequestJob::GetExtraResponseInfo(
295 bool* was_fetched_via_service_worker, 296 ResourceResponseInfo* response_info) const {
296 bool* was_fallback_required_by_service_worker,
297 GURL* original_url_via_service_worker,
298 blink::WebServiceWorkerResponseType* response_type_via_service_worker,
299 base::TimeTicks* worker_start_time) const {
300 if (response_type_ != FORWARD_TO_SERVICE_WORKER) { 297 if (response_type_ != FORWARD_TO_SERVICE_WORKER) {
301 *was_fetched_via_service_worker = false; 298 response_info->was_fetched_via_service_worker = false;
302 *was_fallback_required_by_service_worker = false; 299 response_info->was_fallback_required_by_service_worker = false;
303 *original_url_via_service_worker = GURL(); 300 response_info->original_url_via_service_worker = GURL();
304 *response_type_via_service_worker = 301 response_info->response_type_via_service_worker =
305 blink::WebServiceWorkerResponseTypeDefault; 302 blink::WebServiceWorkerResponseTypeDefault;
306 return; 303 return;
307 } 304 }
308 *was_fetched_via_service_worker = true; 305 response_info->was_fetched_via_service_worker = true;
309 *was_fallback_required_by_service_worker = fall_back_required_; 306 response_info->was_fallback_required_by_service_worker = fall_back_required_;
310 *original_url_via_service_worker = response_url_; 307 response_info->original_url_via_service_worker = response_url_;
311 *response_type_via_service_worker = service_worker_response_type_; 308 response_info->response_type_via_service_worker =
312 *worker_start_time = worker_start_time_; 309 service_worker_response_type_;
310 response_info->service_worker_start_time = worker_start_time_;
311 response_info->service_worker_ready_time = worker_ready_time_;
313 } 312 }
314 313
315 314
316 ServiceWorkerURLRequestJob::~ServiceWorkerURLRequestJob() { 315 ServiceWorkerURLRequestJob::~ServiceWorkerURLRequestJob() {
317 ClearStream(); 316 ClearStream();
318 } 317 }
319 318
320 void ServiceWorkerURLRequestJob::MaybeStartRequest() { 319 void ServiceWorkerURLRequestJob::MaybeStartRequest() {
321 if (is_started_ && response_type_ != NOT_DETERMINED) { 320 if (is_started_ && response_type_ != NOT_DETERMINED) {
322 // Start asynchronously. 321 // Start asynchronously.
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
464 } 463 }
465 464
466 request_body_blob_data_handle_ = 465 request_body_blob_data_handle_ =
467 blob_storage_context_->AddFinishedBlob(&blob_builder); 466 blob_storage_context_->AddFinishedBlob(&blob_builder);
468 *blob_uuid = uuid; 467 *blob_uuid = uuid;
469 *blob_size = total_size; 468 *blob_size = total_size;
470 return true; 469 return true;
471 } 470 }
472 471
473 void ServiceWorkerURLRequestJob::DidPrepareFetchEvent() { 472 void ServiceWorkerURLRequestJob::DidPrepareFetchEvent() {
474 load_timing_info_.send_start = base::TimeTicks::Now(); 473 worker_ready_time_ = base::TimeTicks::Now();
474 load_timing_info_.send_start = worker_ready_time_;
475 } 475 }
476 476
477 void ServiceWorkerURLRequestJob::DidDispatchFetchEvent( 477 void ServiceWorkerURLRequestJob::DidDispatchFetchEvent(
478 ServiceWorkerStatusCode status, 478 ServiceWorkerStatusCode status,
479 ServiceWorkerFetchEventResult fetch_result, 479 ServiceWorkerFetchEventResult fetch_result,
480 const ServiceWorkerResponse& response, 480 const ServiceWorkerResponse& response,
481 scoped_refptr<ServiceWorkerVersion> version) { 481 scoped_refptr<ServiceWorkerVersion> version) {
482 fetch_dispatcher_.reset(); 482 fetch_dispatcher_.reset();
483 483
484 // Check if we're not orphaned. 484 // Check if we're not orphaned.
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
644 } 644 }
645 if (!waiting_stream_url_.is_empty()) { 645 if (!waiting_stream_url_.is_empty()) {
646 StreamRegistry* stream_registry = 646 StreamRegistry* stream_registry =
647 GetStreamContextForResourceContext(resource_context_)->registry(); 647 GetStreamContextForResourceContext(resource_context_)->registry();
648 stream_registry->RemoveRegisterObserver(waiting_stream_url_); 648 stream_registry->RemoveRegisterObserver(waiting_stream_url_);
649 stream_registry->AbortPendingStream(waiting_stream_url_); 649 stream_registry->AbortPendingStream(waiting_stream_url_);
650 } 650 }
651 } 651 }
652 652
653 } // namespace content 653 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/service_worker/service_worker_url_request_job.h ('k') | content/child/resource_dispatcher.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698