OLD | NEW |
---|---|
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 <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <limits> | 10 #include <limits> |
11 #include <map> | 11 #include <map> |
12 #include <memory> | 12 #include <memory> |
13 #include <string> | 13 #include <string> |
14 #include <utility> | 14 #include <utility> |
15 #include <vector> | 15 #include <vector> |
16 | 16 |
17 #include "base/bind.h" | 17 #include "base/bind.h" |
18 #include "base/guid.h" | 18 #include "base/guid.h" |
19 #include "base/location.h" | 19 #include "base/location.h" |
20 #include "base/single_thread_task_runner.h" | 20 #include "base/single_thread_task_runner.h" |
21 #include "base/strings/stringprintf.h" | 21 #include "base/strings/stringprintf.h" |
22 #include "base/threading/thread_task_runner_handle.h" | 22 #include "base/threading/thread_task_runner_handle.h" |
23 #include "base/time/time.h" | 23 #include "base/time/time.h" |
24 #include "content/browser/resource_context_impl.h" | 24 #include "content/browser/resource_context_impl.h" |
25 #include "content/browser/service_worker/embedded_worker_instance.h" | |
25 #include "content/browser/service_worker/service_worker_fetch_dispatcher.h" | 26 #include "content/browser/service_worker/service_worker_fetch_dispatcher.h" |
26 #include "content/browser/service_worker/service_worker_provider_host.h" | 27 #include "content/browser/service_worker/service_worker_provider_host.h" |
27 #include "content/browser/service_worker/service_worker_response_info.h" | 28 #include "content/browser/service_worker/service_worker_response_info.h" |
28 #include "content/browser/streams/stream.h" | 29 #include "content/browser/streams/stream.h" |
29 #include "content/browser/streams/stream_context.h" | 30 #include "content/browser/streams/stream_context.h" |
30 #include "content/browser/streams/stream_registry.h" | 31 #include "content/browser/streams/stream_registry.h" |
31 #include "content/common/resource_request_body.h" | 32 #include "content/common/resource_request_body.h" |
32 #include "content/common/service_worker/service_worker_types.h" | 33 #include "content/common/service_worker/service_worker_types.h" |
33 #include "content/common/service_worker/service_worker_utils.h" | 34 #include "content/common/service_worker/service_worker_utils.h" |
34 #include "content/public/browser/blob_handle.h" | 35 #include "content/public/browser/blob_handle.h" |
(...skipping 590 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
625 NOTIMPLEMENTED(); | 626 NOTIMPLEMENTED(); |
626 } | 627 } |
627 } | 628 } |
628 | 629 |
629 request_body_blob_data_handle_ = | 630 request_body_blob_data_handle_ = |
630 blob_storage_context_->AddFinishedBlob(&blob_builder); | 631 blob_storage_context_->AddFinishedBlob(&blob_builder); |
631 *blob_uuid = uuid; | 632 *blob_uuid = uuid; |
632 *blob_size = total_size; | 633 *blob_size = total_size; |
633 } | 634 } |
634 | 635 |
635 void ServiceWorkerURLRequestJob::DidPrepareFetchEvent() { | 636 void ServiceWorkerURLRequestJob::DidPrepareFetchEvent( |
637 const scoped_refptr<ServiceWorkerVersion>& version) { | |
falken
2016/06/07 06:20:30
const scoped_refptr& is deprecated. Now we use sco
horo
2016/06/07 06:58:48
Done.
| |
636 worker_ready_time_ = base::TimeTicks::Now(); | 638 worker_ready_time_ = base::TimeTicks::Now(); |
637 load_timing_info_.send_start = worker_ready_time_; | 639 load_timing_info_.send_start = worker_ready_time_; |
640 if (resource_type_ == RESOURCE_TYPE_MAIN_FRAME && worker_already_activated_ && | |
641 !(version->skip_recording_startup_time() && | |
642 initial_worker_status_ != EmbeddedWorkerStatus::RUNNING) && | |
falken
2016/06/07 06:20:30
Doesn't that mean ServiceWorker.ActivatedWorkerPre
horo
2016/06/07 06:58:48
"!(version->skip_recording_startup_time() &&
in
| |
643 !ServiceWorkerMetrics::ShouldExcludeURLFromHistogram(request()->url())) { | |
644 ServiceWorkerMetrics::RecordActivatedWorkerPreparationTimeForMainFrame( | |
645 worker_ready_time_ - request()->creation_time(), initial_worker_status_, | |
646 version->embedded_worker()->start_situation()); | |
647 } | |
638 } | 648 } |
639 | 649 |
640 void ServiceWorkerURLRequestJob::DidDispatchFetchEvent( | 650 void ServiceWorkerURLRequestJob::DidDispatchFetchEvent( |
641 ServiceWorkerStatusCode status, | 651 ServiceWorkerStatusCode status, |
642 ServiceWorkerFetchEventResult fetch_result, | 652 ServiceWorkerFetchEventResult fetch_result, |
643 const ServiceWorkerResponse& response, | 653 const ServiceWorkerResponse& response, |
644 const scoped_refptr<ServiceWorkerVersion>& version) { | 654 const scoped_refptr<ServiceWorkerVersion>& version) { |
645 fetch_dispatcher_.reset(); | 655 fetch_dispatcher_.reset(); |
646 ServiceWorkerMetrics::RecordFetchEventStatus(IsMainResourceLoad(), status); | 656 ServiceWorkerMetrics::RecordFetchEventStatus(IsMainResourceLoad(), status); |
647 | 657 |
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
955 ServiceWorkerMetrics::URLRequestJobResult result = | 965 ServiceWorkerMetrics::URLRequestJobResult result = |
956 ServiceWorkerMetrics::REQUEST_JOB_ERROR_BAD_DELEGATE; | 966 ServiceWorkerMetrics::REQUEST_JOB_ERROR_BAD_DELEGATE; |
957 ServiceWorkerVersion* active_worker = | 967 ServiceWorkerVersion* active_worker = |
958 delegate_->GetServiceWorkerVersion(&result); | 968 delegate_->GetServiceWorkerVersion(&result); |
959 if (!active_worker) { | 969 if (!active_worker) { |
960 RecordResult(result); | 970 RecordResult(result); |
961 DeliverErrorResponse(); | 971 DeliverErrorResponse(); |
962 return; | 972 return; |
963 } | 973 } |
964 | 974 |
975 worker_already_activated_ = | |
976 active_worker->status() == ServiceWorkerVersion::ACTIVATED; | |
977 initial_worker_status_ = active_worker->running_status(); | |
978 | |
965 DCHECK(!fetch_dispatcher_); | 979 DCHECK(!fetch_dispatcher_); |
966 fetch_dispatcher_.reset(new ServiceWorkerFetchDispatcher( | 980 fetch_dispatcher_.reset(new ServiceWorkerFetchDispatcher( |
967 CreateFetchRequest(), active_worker, resource_type_, | 981 CreateFetchRequest(), active_worker, resource_type_, |
968 base::Bind(&ServiceWorkerURLRequestJob::DidPrepareFetchEvent, | 982 base::Bind(&ServiceWorkerURLRequestJob::DidPrepareFetchEvent, |
969 weak_factory_.GetWeakPtr()), | 983 weak_factory_.GetWeakPtr(), active_worker), |
970 base::Bind(&ServiceWorkerURLRequestJob::DidDispatchFetchEvent, | 984 base::Bind(&ServiceWorkerURLRequestJob::DidDispatchFetchEvent, |
971 weak_factory_.GetWeakPtr()))); | 985 weak_factory_.GetWeakPtr()))); |
972 worker_start_time_ = base::TimeTicks::Now(); | 986 worker_start_time_ = base::TimeTicks::Now(); |
973 fetch_dispatcher_->Run(); | 987 fetch_dispatcher_->Run(); |
974 } | 988 } |
975 | 989 |
976 } // namespace content | 990 } // namespace content |
OLD | NEW |