Index: content/browser/service_worker/service_worker_fetch_dispatcher.cc |
diff --git a/content/browser/service_worker/service_worker_fetch_dispatcher.cc b/content/browser/service_worker/service_worker_fetch_dispatcher.cc |
index 81be9aff2a7e3624b83af03071295210428b67af..dd33f40d45ea6bba6d38c55d98cc4235f53f344f 100644 |
--- a/content/browser/service_worker/service_worker_fetch_dispatcher.cc |
+++ b/content/browser/service_worker/service_worker_fetch_dispatcher.cc |
@@ -7,21 +7,20 @@ |
#include "base/bind.h" |
#include "content/browser/service_worker/service_worker_version.h" |
#include "net/url_request/url_request.h" |
+#include "webkit/browser/blob/blob_storage_context.h" |
namespace content { |
ServiceWorkerFetchDispatcher::ServiceWorkerFetchDispatcher( |
- net::URLRequest* request, |
+ const ServiceWorkerFetchRequest& request, |
ServiceWorkerVersion* version, |
+ base::WeakPtr<webkit_blob::BlobStorageContext> blob_storage_context, |
const FetchCallback& callback) |
: version_(version), |
callback_(callback), |
+ request_(request), |
+ blob_storage_context_(blob_storage_context), |
weak_factory_(this) { |
- request_.url = request->url(); |
- request_.method = request->method(); |
- const net::HttpRequestHeaders& headers = request->extra_request_headers(); |
- for (net::HttpRequestHeaders::Iterator it(headers); it.GetNext();) |
- request_.headers[it.name()] = it.value(); |
} |
ServiceWorkerFetchDispatcher::~ServiceWorkerFetchDispatcher() {} |
@@ -72,7 +71,12 @@ void ServiceWorkerFetchDispatcher::DidFinish( |
const ServiceWorkerResponse& response) { |
DCHECK(!callback_.is_null()); |
FetchCallback callback = callback_; |
- callback.Run(status, fetch_result, response); |
+ scoped_ptr<webkit_blob::BlobDataHandle> blob_data_handle; |
+ if (!response.blob_uuid.empty() && blob_storage_context_) { |
+ blob_data_handle = |
+ blob_storage_context_->GetBlobDataFromUUID(response.blob_uuid); |
+ } |
+ callback.Run(status, fetch_result, response, blob_data_handle.Pass()); |
} |
} // namespace content |