Index: content/browser/loader/resource_dispatcher_host_impl.cc |
diff --git a/content/browser/loader/resource_dispatcher_host_impl.cc b/content/browser/loader/resource_dispatcher_host_impl.cc |
index fdf01f0b511100a61d67a553f7fd1e786e538a1e..f91fdb6f50904006e3e918d794d2f622c78494f6 100644 |
--- a/content/browser/loader/resource_dispatcher_host_impl.cc |
+++ b/content/browser/loader/resource_dispatcher_host_impl.cc |
@@ -86,7 +86,10 @@ |
#include "net/url_request/url_request_context.h" |
#include "net/url_request/url_request_job_factory.h" |
#include "webkit/browser/appcache/appcache_interceptor.h" |
-#include "webkit/browser/blob/blob_storage_controller.h" |
+#include "webkit/common/blob/blob_data.h" |
+#include "webkit/browser/blob/blob_data_handle.h" |
+#include "webkit/browser/blob/blob_storage_context.h" |
+#include "webkit/browser/blob/blob_url_request_job_factory.h" |
#include "webkit/browser/fileapi/file_permission_policy.h" |
#include "webkit/browser/fileapi/file_system_context.h" |
#include "webkit/common/appcache/appcache_interfaces.h" |
@@ -213,11 +216,12 @@ bool ShouldServiceRequest(int process_type, |
return false; |
} |
if (iter->type() == ResourceRequestBody::Element::TYPE_FILE_FILESYSTEM) { |
- fileapi::FileSystemURL url = file_system_context->CrackURL(iter->url()); |
+ fileapi::FileSystemURL url = |
+ file_system_context->CrackURL(iter->filesystem_url()); |
if (!policy->HasPermissionsForFileSystemFile( |
child_id, url, fileapi::kReadFilePermissions)) { |
NOTREACHED() << "Denied unauthorized upload of " |
- << iter->url().spec(); |
+ << iter->filesystem_url().spec(); |
return false; |
} |
} |
@@ -510,6 +514,14 @@ net::Error ResourceDispatcherHostImpl::BeginDownload( |
CreateRequestInfo(child_id, route_id, true, context); |
extra_info->AssociateWithRequest(request.get()); // Request takes ownership. |
+ if (request->url().SchemeIs(chrome::kBlobScheme)) { |
+ ChromeBlobStorageContext* blob_context = |
+ GetChromeBlobStorageContextForResourceContext(context); |
+ webkit_blob::BlobProtocolHandler::SetRequestedBlobDataHandle( |
+ request.get(), |
+ blob_context->context()->GetBlobDataFromPublicURL(request->url())); |
+ } |
+ |
// From this point forward, the |DownloadResourceHandler| is responsible for |
// |started_callback|. |
scoped_ptr<ResourceHandler> handler( |
@@ -988,7 +1000,7 @@ void ResourceDispatcherHostImpl::BeginRequest( |
if (request_data.request_body.get()) { |
request->set_upload(UploadDataStreamBuilder::Build( |
request_data.request_body.get(), |
- filter_->blob_storage_context()->controller(), |
+ filter_->blob_storage_context()->context(), |
filter_->file_system_context(), |
BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE) |
.get())); |
@@ -1023,9 +1035,10 @@ void ResourceDispatcherHostImpl::BeginRequest( |
if (request->url().SchemeIs(chrome::kBlobScheme)) { |
// Hang on to a reference to ensure the blob is not released prior |
// to the job being started. |
- extra_info->set_requested_blob_data( |
- filter_->blob_storage_context()->controller()-> |
- GetBlobDataFromUrl(request->url())); |
+ webkit_blob::BlobProtocolHandler::SetRequestedBlobDataHandle( |
+ request, |
+ filter_->blob_storage_context()->context()-> |
+ GetBlobDataFromPublicURL(request->url())); |
} |
// Have the appcache associate its extra info with the request. |