| Index: webkit/blob/blob_url_request_job_factory.cc
|
| ===================================================================
|
| --- webkit/blob/blob_url_request_job_factory.cc (revision 171309)
|
| +++ webkit/blob/blob_url_request_job_factory.cc (working copy)
|
| @@ -9,39 +9,52 @@
|
| #include "base/message_loop_proxy.h"
|
| #include "net/url_request/url_request.h"
|
| #include "net/url_request/url_request_job_factory.h"
|
| -#include "webkit/blob/blob_storage_controller.h"
|
| +#include "webkit/blob/blob_storage_context.h"
|
| #include "webkit/blob/blob_url_request_job.h"
|
| #include "webkit/fileapi/file_system_context.h"
|
|
|
| namespace webkit_blob {
|
|
|
| +namespace {
|
| +int kUserDataKey;
|
| +
|
| +BlobDataHandle* GetRequestedBlobDataHandle(net::URLRequest* request) {
|
| + return reinterpret_cast<BlobDataHandle*>(
|
| + request->GetUserData(&kUserDataKey));
|
| +}
|
| +} // namespace
|
| +
|
| +void BlobProtocolHandler::SetRequestedBlobDataHandle(
|
| + net::URLRequest* request,
|
| + scoped_ptr<BlobDataHandle> blob_data_handle) {
|
| + // The request takes ownership
|
| + request->SetUserData(&kUserDataKey, blob_data_handle.release());
|
| +}
|
| +
|
| BlobProtocolHandler::BlobProtocolHandler(
|
| - webkit_blob::BlobStorageController* blob_storage_controller,
|
| + webkit_blob::BlobStorageContext* blob_storage_context,
|
| fileapi::FileSystemContext* file_system_context,
|
| base::MessageLoopProxy* loop_proxy)
|
| - : blob_storage_controller_(blob_storage_controller),
|
| - file_system_context_(file_system_context),
|
| + : file_system_context_(file_system_context),
|
| file_loop_proxy_(loop_proxy) {
|
| - DCHECK(blob_storage_controller_);
|
| - DCHECK(file_system_context_);
|
| - DCHECK(file_loop_proxy_);
|
| }
|
|
|
| BlobProtocolHandler::~BlobProtocolHandler() {}
|
|
|
| net::URLRequestJob* BlobProtocolHandler::MaybeCreateJob(
|
| net::URLRequest* request, net::NetworkDelegate* network_delegate) const {
|
| - scoped_refptr<webkit_blob::BlobData> data = LookupBlobData(request);
|
| - if (!data) {
|
| - // This request is not coming through resource dispatcher host.
|
| - data = blob_storage_controller_->GetBlobDataFromUrl(request->url());
|
| - }
|
| return new webkit_blob::BlobURLRequestJob(
|
| - request, network_delegate, data, file_system_context_, file_loop_proxy_);
|
| + request, network_delegate, LookupBlobData(request), file_system_context_, file_loop_proxy_);
|
| }
|
|
|
| scoped_refptr<webkit_blob::BlobData>
|
| BlobProtocolHandler::LookupBlobData(net::URLRequest* request) const {
|
| + // We don't lookup based on the requested url. The caller is responsible for
|
| + // Setting up what blob to retrieve by calling SetRequestedBlobDataHandle prior
|
| + // to starting the URLRequest.
|
| + BlobDataHandle* blob_data_handle = GetRequestedBlobDataHandle(request);
|
| + if (blob_data_handle)
|
| + return blob_data_handle->data();
|
| return NULL;
|
| }
|
|
|
|
|