Index: content/browser/service_worker/service_worker_url_request_job.cc |
diff --git a/content/browser/service_worker/service_worker_url_request_job.cc b/content/browser/service_worker/service_worker_url_request_job.cc |
index b48b8d96a6ecce970fc57d6d0931b13f8f5c0422..8bcb4eaaa274eff715ddb0e02f6eb3d7f9bf67a8 100644 |
--- a/content/browser/service_worker/service_worker_url_request_job.cc |
+++ b/content/browser/service_worker/service_worker_url_request_job.cc |
@@ -18,6 +18,21 @@ |
namespace content { |
+namespace { |
+ |
+ServiceWorkerFetchRequest URLRequestToFetchRequest( |
+ net::URLRequest* url_request) { |
+ ServiceWorkerFetchRequest fetch_request; |
+ fetch_request.url = url_request->url(); |
+ fetch_request.method = url_request->method(); |
+ const net::HttpRequestHeaders& headers = url_request->extra_request_headers(); |
+ for (net::HttpRequestHeaders::Iterator it(headers); it.GetNext();) |
+ fetch_request.headers[it.name()] = it.value(); |
+ return fetch_request; |
+} |
+ |
+} // namespace |
+ |
ServiceWorkerURLRequestJob::ServiceWorkerURLRequestJob( |
net::URLRequest* request, |
net::NetworkDelegate* network_delegate, |
@@ -201,7 +216,9 @@ void ServiceWorkerURLRequestJob::StartRequest() { |
// Send a fetch event to the ServiceWorker associated to the |
// provider_host. |
fetch_dispatcher_.reset(new ServiceWorkerFetchDispatcher( |
- request(), provider_host_->active_version(), |
+ URLRequestToFetchRequest(request()), |
+ provider_host_->active_version(), |
+ blob_storage_context_, |
base::Bind(&ServiceWorkerURLRequestJob::DidDispatchFetchEvent, |
weak_factory_.GetWeakPtr()))); |
fetch_dispatcher_->Run(); |
@@ -214,7 +231,8 @@ void ServiceWorkerURLRequestJob::StartRequest() { |
void ServiceWorkerURLRequestJob::DidDispatchFetchEvent( |
ServiceWorkerStatusCode status, |
ServiceWorkerFetchEventResult fetch_result, |
- const ServiceWorkerResponse& response) { |
+ const ServiceWorkerResponse& response, |
+ scoped_ptr<webkit_blob::BlobDataHandle> blob_data_handle) { |
fetch_dispatcher_.reset(); |
// Check if we're not orphaned. |
@@ -245,8 +263,6 @@ void ServiceWorkerURLRequestJob::DidDispatchFetchEvent( |
// Set up a request for reading the blob. |
if (!response.blob_uuid.empty() && blob_storage_context_) { |
- scoped_ptr<webkit_blob::BlobDataHandle> blob_data_handle = |
- blob_storage_context_->GetBlobDataFromUUID(response.blob_uuid); |
if (!blob_data_handle) { |
// The renderer gave us a bad blob UUID. |
DeliverErrorResponse(); |