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

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

Issue 1157823003: Refactoring timing info for ServiceWorker controlled requests [2/3] (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 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
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
289 if (range_response_info_) 289 if (range_response_info_)
290 return range_response_info_.get(); 290 return range_response_info_.get();
291 return http_response_info_.get(); 291 return http_response_info_.get();
292 } 292 }
293 293
294 void ServiceWorkerURLRequestJob::GetExtraResponseInfo( 294 void ServiceWorkerURLRequestJob::GetExtraResponseInfo(
295 bool* was_fetched_via_service_worker, 295 bool* was_fetched_via_service_worker,
296 bool* was_fallback_required_by_service_worker, 296 bool* was_fallback_required_by_service_worker,
297 GURL* original_url_via_service_worker, 297 GURL* original_url_via_service_worker,
298 blink::WebServiceWorkerResponseType* response_type_via_service_worker, 298 blink::WebServiceWorkerResponseType* response_type_via_service_worker,
299 base::TimeTicks* fetch_start_time, 299 base::TimeTicks* worker_start_time) const {
300 base::TimeTicks* fetch_ready_time,
301 base::TimeTicks* fetch_end_time) const {
302 if (response_type_ != FORWARD_TO_SERVICE_WORKER) { 300 if (response_type_ != FORWARD_TO_SERVICE_WORKER) {
303 *was_fetched_via_service_worker = false; 301 *was_fetched_via_service_worker = false;
304 *was_fallback_required_by_service_worker = false; 302 *was_fallback_required_by_service_worker = false;
305 *original_url_via_service_worker = GURL(); 303 *original_url_via_service_worker = GURL();
306 *response_type_via_service_worker = 304 *response_type_via_service_worker =
307 blink::WebServiceWorkerResponseTypeDefault; 305 blink::WebServiceWorkerResponseTypeDefault;
308 return; 306 return;
309 } 307 }
310 *was_fetched_via_service_worker = true; 308 *was_fetched_via_service_worker = true;
311 *was_fallback_required_by_service_worker = fall_back_required_; 309 *was_fallback_required_by_service_worker = fall_back_required_;
312 *original_url_via_service_worker = response_url_; 310 *original_url_via_service_worker = response_url_;
313 *response_type_via_service_worker = service_worker_response_type_; 311 *response_type_via_service_worker = service_worker_response_type_;
314 *fetch_start_time = fetch_start_time_; 312 *worker_start_time = worker_start_time_;
315 *fetch_ready_time = fetch_ready_time_;
316 *fetch_end_time = fetch_end_time_;
317 } 313 }
318 314
319 315
320 ServiceWorkerURLRequestJob::~ServiceWorkerURLRequestJob() { 316 ServiceWorkerURLRequestJob::~ServiceWorkerURLRequestJob() {
321 ClearStream(); 317 ClearStream();
322 } 318 }
323 319
324 void ServiceWorkerURLRequestJob::MaybeStartRequest() { 320 void ServiceWorkerURLRequestJob::MaybeStartRequest() {
325 if (is_started_ && response_type_ != NOT_DETERMINED) { 321 if (is_started_ && response_type_ != NOT_DETERMINED) {
326 // Start asynchronously. 322 // Start asynchronously.
(...skipping 22 matching lines...) Expand all
349 DCHECK(!fetch_dispatcher_); 345 DCHECK(!fetch_dispatcher_);
350 // Send a fetch event to the ServiceWorker associated to the 346 // Send a fetch event to the ServiceWorker associated to the
351 // provider_host. 347 // provider_host.
352 fetch_dispatcher_.reset(new ServiceWorkerFetchDispatcher( 348 fetch_dispatcher_.reset(new ServiceWorkerFetchDispatcher(
353 CreateFetchRequest(), 349 CreateFetchRequest(),
354 provider_host_->active_version(), 350 provider_host_->active_version(),
355 base::Bind(&ServiceWorkerURLRequestJob::DidPrepareFetchEvent, 351 base::Bind(&ServiceWorkerURLRequestJob::DidPrepareFetchEvent,
356 weak_factory_.GetWeakPtr()), 352 weak_factory_.GetWeakPtr()),
357 base::Bind(&ServiceWorkerURLRequestJob::DidDispatchFetchEvent, 353 base::Bind(&ServiceWorkerURLRequestJob::DidDispatchFetchEvent,
358 weak_factory_.GetWeakPtr()))); 354 weak_factory_.GetWeakPtr())));
359 fetch_start_time_ = base::TimeTicks::Now(); 355 worker_start_time_ = base::TimeTicks::Now();
360 fetch_dispatcher_->Run(); 356 fetch_dispatcher_->Run();
361 return; 357 return;
362 } 358 }
363 359
364 NOTREACHED(); 360 NOTREACHED();
365 } 361 }
366 362
367 scoped_ptr<ServiceWorkerFetchRequest> 363 scoped_ptr<ServiceWorkerFetchRequest>
368 ServiceWorkerURLRequestJob::CreateFetchRequest() { 364 ServiceWorkerURLRequestJob::CreateFetchRequest() {
369 std::string blob_uuid; 365 std::string blob_uuid;
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
465 } 461 }
466 462
467 request_body_blob_data_handle_ = 463 request_body_blob_data_handle_ =
468 blob_storage_context_->AddFinishedBlob(&blob_builder); 464 blob_storage_context_->AddFinishedBlob(&blob_builder);
469 *blob_uuid = uuid; 465 *blob_uuid = uuid;
470 *blob_size = total_size; 466 *blob_size = total_size;
471 return true; 467 return true;
472 } 468 }
473 469
474 void ServiceWorkerURLRequestJob::DidPrepareFetchEvent() { 470 void ServiceWorkerURLRequestJob::DidPrepareFetchEvent() {
475 fetch_ready_time_ = base::TimeTicks::Now(); 471 load_timing_info_.send_start = base::TimeTicks::Now();
476 load_timing_info_.send_start = fetch_ready_time_;
477 } 472 }
478 473
479 void ServiceWorkerURLRequestJob::DidDispatchFetchEvent( 474 void ServiceWorkerURLRequestJob::DidDispatchFetchEvent(
480 ServiceWorkerStatusCode status, 475 ServiceWorkerStatusCode status,
481 ServiceWorkerFetchEventResult fetch_result, 476 ServiceWorkerFetchEventResult fetch_result,
482 const ServiceWorkerResponse& response, 477 const ServiceWorkerResponse& response,
483 scoped_refptr<ServiceWorkerVersion> version) { 478 scoped_refptr<ServiceWorkerVersion> version) {
484 fetch_dispatcher_.reset(); 479 fetch_dispatcher_.reset();
485 480
486 // Check if we're not orphaned. 481 // Check if we're not orphaned.
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
521 // We should have a response now. 516 // We should have a response now.
522 DCHECK_EQ(SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, fetch_result); 517 DCHECK_EQ(SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, fetch_result);
523 518
524 // Treat a response whose status is 0 as a Network Error. 519 // Treat a response whose status is 0 as a Network Error.
525 if (response.status_code == 0) { 520 if (response.status_code == 0) {
526 NotifyDone( 521 NotifyDone(
527 net::URLRequestStatus(net::URLRequestStatus::FAILED, net::ERR_FAILED)); 522 net::URLRequestStatus(net::URLRequestStatus::FAILED, net::ERR_FAILED));
528 return; 523 return;
529 } 524 }
530 525
531 fetch_end_time_ = base::TimeTicks::Now(); 526 load_timing_info_.send_end = base::TimeTicks::Now();
532 load_timing_info_.send_end = fetch_end_time_;
533 527
534 // Creates a new HttpResponseInfo using the the ServiceWorker script's 528 // Creates a new HttpResponseInfo using the the ServiceWorker script's
535 // HttpResponseInfo to show HTTPS padlock. 529 // HttpResponseInfo to show HTTPS padlock.
536 // TODO(horo): When we support mixed-content (HTTP) no-cors requests from a 530 // TODO(horo): When we support mixed-content (HTTP) no-cors requests from a
537 // ServiceWorker, we have to check the security level of the responses. 531 // ServiceWorker, we have to check the security level of the responses.
538 DCHECK(!http_response_info_); 532 DCHECK(!http_response_info_);
539 DCHECK(version); 533 DCHECK(version);
540 const net::HttpResponseInfo* main_script_http_info = 534 const net::HttpResponseInfo* main_script_http_info =
541 version->GetMainScriptHttpResponseInfo(); 535 version->GetMainScriptHttpResponseInfo();
542 if (main_script_http_info) { 536 if (main_script_http_info) {
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
647 } 641 }
648 if (!waiting_stream_url_.is_empty()) { 642 if (!waiting_stream_url_.is_empty()) {
649 StreamRegistry* stream_registry = 643 StreamRegistry* stream_registry =
650 GetStreamContextForResourceContext(resource_context_)->registry(); 644 GetStreamContextForResourceContext(resource_context_)->registry();
651 stream_registry->RemoveRegisterObserver(waiting_stream_url_); 645 stream_registry->RemoveRegisterObserver(waiting_stream_url_);
652 stream_registry->AbortPendingStream(waiting_stream_url_); 646 stream_registry->AbortPendingStream(waiting_stream_url_);
653 } 647 }
654 } 648 }
655 649
656 } // namespace content 650 } // 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