| 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 <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/strings/stringprintf.h" | 13 #include "base/strings/stringprintf.h" |
| 14 #include "base/time/time.h" | 14 #include "base/time/time.h" |
| 15 #include "content/browser/service_worker/service_worker_fetch_dispatcher.h" | 15 #include "content/browser/service_worker/service_worker_fetch_dispatcher.h" |
| 16 #include "content/browser/service_worker/service_worker_provider_host.h" | 16 #include "content/browser/service_worker/service_worker_provider_host.h" |
| 17 #include "content/common/resource_request_body.h" | 17 #include "content/common/resource_request_body.h" |
| 18 #include "content/common/service_worker/service_worker_types.h" | 18 #include "content/common/service_worker/service_worker_types.h" |
| 19 #include "content/public/browser/blob_handle.h" | 19 #include "content/public/browser/blob_handle.h" |
| 20 #include "content/public/browser/resource_request_info.h" | 20 #include "content/public/browser/resource_request_info.h" |
| 21 #include "content/public/browser/service_worker_context.h" |
| 21 #include "net/base/net_errors.h" | 22 #include "net/base/net_errors.h" |
| 22 #include "net/http/http_request_headers.h" | 23 #include "net/http/http_request_headers.h" |
| 23 #include "net/http/http_response_headers.h" | 24 #include "net/http/http_response_headers.h" |
| 24 #include "net/http/http_response_info.h" | 25 #include "net/http/http_response_info.h" |
| 25 #include "net/http/http_util.h" | 26 #include "net/http/http_util.h" |
| 26 #include "storage/browser/blob/blob_data_handle.h" | 27 #include "storage/browser/blob/blob_data_handle.h" |
| 27 #include "storage/browser/blob/blob_storage_context.h" | 28 #include "storage/browser/blob/blob_storage_context.h" |
| 28 #include "storage/browser/blob/blob_url_request_job_factory.h" | 29 #include "storage/browser/blob/blob_url_request_job_factory.h" |
| 29 #include "ui/base/page_transition_types.h" | 30 #include "ui/base/page_transition_types.h" |
| 30 | 31 |
| 31 namespace content { | 32 namespace content { |
| 32 | 33 |
| 33 namespace { | |
| 34 | |
| 35 // Keep in sync with kDevToolsRequestInitiator and | |
| 36 // kDevToolsEmulateNetworkConditionsClientId defined in | |
| 37 // devtools_network_transaction.cc and InspectorResourceAgent.cpp. | |
| 38 const char kDevToolsRequestInitiator[] = "X-DevTools-Request-Initiator"; | |
| 39 const char kDevToolsEmulateNetworkConditionsClientId[] = | |
| 40 "X-DevTools-Emulate-Network-Conditions-Client-Id"; | |
| 41 | |
| 42 } // namespace | |
| 43 | |
| 44 ServiceWorkerURLRequestJob::ServiceWorkerURLRequestJob( | 34 ServiceWorkerURLRequestJob::ServiceWorkerURLRequestJob( |
| 45 net::URLRequest* request, | 35 net::URLRequest* request, |
| 46 net::NetworkDelegate* network_delegate, | 36 net::NetworkDelegate* network_delegate, |
| 47 base::WeakPtr<ServiceWorkerProviderHost> provider_host, | 37 base::WeakPtr<ServiceWorkerProviderHost> provider_host, |
| 48 base::WeakPtr<storage::BlobStorageContext> blob_storage_context, | 38 base::WeakPtr<storage::BlobStorageContext> blob_storage_context, |
| 49 FetchRequestMode request_mode, | 39 FetchRequestMode request_mode, |
| 50 FetchCredentialsMode credentials_mode, | 40 FetchCredentialsMode credentials_mode, |
| 51 RequestContextType request_context_type, | 41 RequestContextType request_context_type, |
| 52 RequestContextFrameType frame_type, | 42 RequestContextFrameType frame_type, |
| 53 scoped_refptr<ResourceRequestBody> body) | 43 scoped_refptr<ResourceRequestBody> body) |
| (...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 292 CreateRequestBodyBlob(&blob_uuid, &blob_size); | 282 CreateRequestBodyBlob(&blob_uuid, &blob_size); |
| 293 scoped_ptr<ServiceWorkerFetchRequest> request( | 283 scoped_ptr<ServiceWorkerFetchRequest> request( |
| 294 new ServiceWorkerFetchRequest()); | 284 new ServiceWorkerFetchRequest()); |
| 295 request->mode = request_mode_; | 285 request->mode = request_mode_; |
| 296 request->request_context_type = request_context_type_; | 286 request->request_context_type = request_context_type_; |
| 297 request->frame_type = frame_type_; | 287 request->frame_type = frame_type_; |
| 298 request->url = request_->url(); | 288 request->url = request_->url(); |
| 299 request->method = request_->method(); | 289 request->method = request_->method(); |
| 300 const net::HttpRequestHeaders& headers = request_->extra_request_headers(); | 290 const net::HttpRequestHeaders& headers = request_->extra_request_headers(); |
| 301 for (net::HttpRequestHeaders::Iterator it(headers); it.GetNext();) { | 291 for (net::HttpRequestHeaders::Iterator it(headers); it.GetNext();) { |
| 302 if (it.name() == kDevToolsRequestInitiator || | 292 if (ServiceWorkerContext::IsExcludedHeaderNameForFetchEvent(it.name())) |
| 303 it.name() == kDevToolsEmulateNetworkConditionsClientId) { | |
| 304 continue; | 293 continue; |
| 305 } | |
| 306 request->headers[it.name()] = it.value(); | 294 request->headers[it.name()] = it.value(); |
| 307 } | 295 } |
| 308 request->blob_uuid = blob_uuid; | 296 request->blob_uuid = blob_uuid; |
| 309 request->blob_size = blob_size; | 297 request->blob_size = blob_size; |
| 310 request->referrer = GURL(request_->referrer()); | 298 request->referrer = GURL(request_->referrer()); |
| 311 request->credentials_mode = credentials_mode_; | 299 request->credentials_mode = credentials_mode_; |
| 312 const ResourceRequestInfo* info = ResourceRequestInfo::ForRequest(request_); | 300 const ResourceRequestInfo* info = ResourceRequestInfo::ForRequest(request_); |
| 313 if (info) { | 301 if (info) { |
| 314 request->is_reload = ui::PageTransitionCoreTypeIs( | 302 request->is_reload = ui::PageTransitionCoreTypeIs( |
| 315 info->GetPageTransition(), ui::PAGE_TRANSITION_RELOAD); | 303 info->GetPageTransition(), ui::PAGE_TRANSITION_RELOAD); |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 492 | 480 |
| 493 void ServiceWorkerURLRequestJob::DeliverErrorResponse() { | 481 void ServiceWorkerURLRequestJob::DeliverErrorResponse() { |
| 494 // TODO(falken): Print an error to the console of the ServiceWorker and of | 482 // TODO(falken): Print an error to the console of the ServiceWorker and of |
| 495 // the requesting page. | 483 // the requesting page. |
| 496 CreateResponseHeader( | 484 CreateResponseHeader( |
| 497 500, "Service Worker Response Error", ServiceWorkerHeaderMap()); | 485 500, "Service Worker Response Error", ServiceWorkerHeaderMap()); |
| 498 CommitResponseHeader(); | 486 CommitResponseHeader(); |
| 499 } | 487 } |
| 500 | 488 |
| 501 } // namespace content | 489 } // namespace content |
| OLD | NEW |