| 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> |
| (...skipping 722 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 733 } | 733 } |
| 734 | 734 |
| 735 // Set up a request for reading the stream. | 735 // Set up a request for reading the stream. |
| 736 if (response.stream_url.is_valid()) { | 736 if (response.stream_url.is_valid()) { |
| 737 DCHECK(response.blob_uuid.empty()); | 737 DCHECK(response.blob_uuid.empty()); |
| 738 SetResponseBodyType(STREAM); | 738 SetResponseBodyType(STREAM); |
| 739 streaming_version_ = version; | 739 streaming_version_ = version; |
| 740 streaming_version_->AddStreamingURLRequestJob(this); | 740 streaming_version_->AddStreamingURLRequestJob(this); |
| 741 response_url_ = response.url; | 741 response_url_ = response.url; |
| 742 service_worker_response_type_ = response.response_type; | 742 service_worker_response_type_ = response.response_type; |
| 743 cors_exposed_header_names_ = response.cors_exposed_header_names; |
| 743 response_time_ = response.response_time; | 744 response_time_ = response.response_time; |
| 744 CreateResponseHeader( | 745 CreateResponseHeader( |
| 745 response.status_code, response.status_text, response.headers); | 746 response.status_code, response.status_text, response.headers); |
| 746 load_timing_info_.receive_headers_end = base::TimeTicks::Now(); | 747 load_timing_info_.receive_headers_end = base::TimeTicks::Now(); |
| 747 StreamContext* stream_context = | 748 StreamContext* stream_context = |
| 748 GetStreamContextForResourceContext(resource_context_); | 749 GetStreamContextForResourceContext(resource_context_); |
| 749 stream_ = | 750 stream_ = |
| 750 stream_context->registry()->GetStream(response.stream_url); | 751 stream_context->registry()->GetStream(response.stream_url); |
| 751 if (!stream_.get()) { | 752 if (!stream_.get()) { |
| 752 waiting_stream_url_ = response.stream_url; | 753 waiting_stream_url_ = response.stream_url; |
| (...skipping 21 matching lines...) Expand all Loading... |
| 774 blob_request_ = storage::BlobProtocolHandler::CreateBlobRequest( | 775 blob_request_ = storage::BlobProtocolHandler::CreateBlobRequest( |
| 775 std::move(blob_data_handle), request()->context(), this); | 776 std::move(blob_data_handle), request()->context(), this); |
| 776 blob_request_->Start(); | 777 blob_request_->Start(); |
| 777 } | 778 } |
| 778 | 779 |
| 779 response_url_ = response.url; | 780 response_url_ = response.url; |
| 780 service_worker_response_type_ = response.response_type; | 781 service_worker_response_type_ = response.response_type; |
| 781 response_time_ = response.response_time; | 782 response_time_ = response.response_time; |
| 782 response_is_in_cache_storage_ = response.is_in_cache_storage; | 783 response_is_in_cache_storage_ = response.is_in_cache_storage; |
| 783 response_cache_storage_cache_name_ = response.cache_storage_cache_name; | 784 response_cache_storage_cache_name_ = response.cache_storage_cache_name; |
| 785 cors_exposed_header_names_ = response.cors_exposed_header_names; |
| 784 CreateResponseHeader( | 786 CreateResponseHeader( |
| 785 response.status_code, response.status_text, response.headers); | 787 response.status_code, response.status_text, response.headers); |
| 786 load_timing_info_.receive_headers_end = base::TimeTicks::Now(); | 788 load_timing_info_.receive_headers_end = base::TimeTicks::Now(); |
| 787 if (!blob_request_) { | 789 if (!blob_request_) { |
| 788 RecordResult(ServiceWorkerMetrics::REQUEST_JOB_HEADERS_ONLY_RESPONSE); | 790 RecordResult(ServiceWorkerMetrics::REQUEST_JOB_HEADERS_ONLY_RESPONSE); |
| 789 CommitResponseHeader(); | 791 CommitResponseHeader(); |
| 790 } | 792 } |
| 791 } | 793 } |
| 792 | 794 |
| 793 void ServiceWorkerURLRequestJob::CreateResponseHeader( | 795 void ServiceWorkerURLRequestJob::CreateResponseHeader( |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 908 if (response_type_ != FORWARD_TO_SERVICE_WORKER) { | 910 if (response_type_ != FORWARD_TO_SERVICE_WORKER) { |
| 909 ServiceWorkerResponseInfo::ForRequest(request_, true) | 911 ServiceWorkerResponseInfo::ForRequest(request_, true) |
| 910 ->OnStartCompleted( | 912 ->OnStartCompleted( |
| 911 false /* was_fetched_via_service_worker */, | 913 false /* was_fetched_via_service_worker */, |
| 912 false /* was_fallback_required */, | 914 false /* was_fallback_required */, |
| 913 GURL() /* original_url_via_service_worker */, | 915 GURL() /* original_url_via_service_worker */, |
| 914 blink::WebServiceWorkerResponseTypeDefault, | 916 blink::WebServiceWorkerResponseTypeDefault, |
| 915 base::TimeTicks() /* service_worker_start_time */, | 917 base::TimeTicks() /* service_worker_start_time */, |
| 916 base::TimeTicks() /* service_worker_ready_time */, | 918 base::TimeTicks() /* service_worker_ready_time */, |
| 917 false /* respons_is_in_cache_storage */, | 919 false /* respons_is_in_cache_storage */, |
| 918 std::string() /* response_cache_storage_cache_name */); | 920 std::string() /* response_cache_storage_cache_name */, |
| 921 ServiceWorkerHeaderList() /* cors_exposed_header_names */); |
| 919 return; | 922 return; |
| 920 } | 923 } |
| 921 ServiceWorkerResponseInfo::ForRequest(request_, true) | 924 ServiceWorkerResponseInfo::ForRequest(request_, true) |
| 922 ->OnStartCompleted(true /* was_fetched_via_service_worker */, | 925 ->OnStartCompleted( |
| 923 fall_back_required_, response_url_, | 926 true /* was_fetched_via_service_worker */, fall_back_required_, |
| 924 service_worker_response_type_, worker_start_time_, | 927 response_url_, service_worker_response_type_, worker_start_time_, |
| 925 worker_ready_time_, response_is_in_cache_storage_, | 928 worker_ready_time_, response_is_in_cache_storage_, |
| 926 response_cache_storage_cache_name_); | 929 response_cache_storage_cache_name_, cors_exposed_header_names_); |
| 927 } | 930 } |
| 928 | 931 |
| 929 bool ServiceWorkerURLRequestJob::IsMainResourceLoad() const { | 932 bool ServiceWorkerURLRequestJob::IsMainResourceLoad() const { |
| 930 return ServiceWorkerUtils::IsMainResourceType(resource_type_); | 933 return ServiceWorkerUtils::IsMainResourceType(resource_type_); |
| 931 } | 934 } |
| 932 | 935 |
| 933 bool ServiceWorkerURLRequestJob::HasRequestBody() { | 936 bool ServiceWorkerURLRequestJob::HasRequestBody() { |
| 934 // URLRequest::has_upload() must be checked since its upload data may have | 937 // URLRequest::has_upload() must be checked since its upload data may have |
| 935 // been cleared while handling a redirect. | 938 // been cleared while handling a redirect. |
| 936 return request_->has_upload() && body_.get() && blob_storage_context_; | 939 return request_->has_upload() && body_.get() && blob_storage_context_; |
| (...skipping 27 matching lines...) Expand all Loading... |
| 964 CreateFetchRequest(), active_worker, resource_type_, | 967 CreateFetchRequest(), active_worker, resource_type_, |
| 965 base::Bind(&ServiceWorkerURLRequestJob::DidPrepareFetchEvent, | 968 base::Bind(&ServiceWorkerURLRequestJob::DidPrepareFetchEvent, |
| 966 weak_factory_.GetWeakPtr()), | 969 weak_factory_.GetWeakPtr()), |
| 967 base::Bind(&ServiceWorkerURLRequestJob::DidDispatchFetchEvent, | 970 base::Bind(&ServiceWorkerURLRequestJob::DidDispatchFetchEvent, |
| 968 weak_factory_.GetWeakPtr()))); | 971 weak_factory_.GetWeakPtr()))); |
| 969 worker_start_time_ = base::TimeTicks::Now(); | 972 worker_start_time_ = base::TimeTicks::Now(); |
| 970 fetch_dispatcher_->Run(); | 973 fetch_dispatcher_->Run(); |
| 971 } | 974 } |
| 972 | 975 |
| 973 } // namespace content | 976 } // namespace content |
| OLD | NEW |