Index: webkit/blob/mock_blob_url_request_context.cc |
=================================================================== |
--- webkit/blob/mock_blob_url_request_context.cc (revision 186525) |
+++ webkit/blob/mock_blob_url_request_context.cc (working copy) |
@@ -5,51 +5,20 @@ |
#include "webkit/blob/mock_blob_url_request_context.h" |
#include "webkit/blob/blob_data.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/blob/blob_url_request_job_factory.h" |
namespace webkit_blob { |
-namespace { |
- |
-class MockBlobProtocolHandler |
- : public net::URLRequestJobFactory::ProtocolHandler { |
- public: |
- explicit MockBlobProtocolHandler( |
- BlobStorageController* blob_storage_controller, |
- fileapi::FileSystemContext* file_system_context) |
- : blob_storage_controller_(blob_storage_controller), |
- file_system_context_(file_system_context) {} |
- |
- virtual ~MockBlobProtocolHandler() {} |
- |
- virtual net::URLRequestJob* MaybeCreateJob( |
- net::URLRequest* request, |
- net::NetworkDelegate* network_delegate) const OVERRIDE { |
- return new BlobURLRequestJob( |
- request, |
- network_delegate, |
- blob_storage_controller_->GetBlobDataFromUrl(request->url()), |
- file_system_context_, |
- base::MessageLoopProxy::current()); |
- } |
- |
- private: |
- webkit_blob::BlobStorageController* const blob_storage_controller_; |
- fileapi::FileSystemContext* const file_system_context_; |
- |
- DISALLOW_COPY_AND_ASSIGN(MockBlobProtocolHandler); |
-}; |
- |
-} // namespace |
- |
MockBlobURLRequestContext::MockBlobURLRequestContext( |
fileapi::FileSystemContext* file_system_context) |
- : blob_storage_controller_(new BlobStorageController) { |
+ : blob_storage_context_(new BlobStorageContext) { |
// Job factory owns the protocol handler. |
job_factory_.SetProtocolHandler( |
- "blob", new MockBlobProtocolHandler(blob_storage_controller_.get(), |
- file_system_context)); |
+ "blob", new BlobProtocolHandler(blob_storage_context_.get(), |
+ file_system_context, |
+ base::MessageLoopProxy::current())); |
set_job_factory(&job_factory_); |
} |
@@ -57,18 +26,23 @@ |
ScopedTextBlob::ScopedTextBlob( |
const MockBlobURLRequestContext& request_context, |
- const GURL& blob_url, |
+ const std::string& blob_id, |
const std::string& data) |
- : blob_url_(blob_url), |
- blob_storage_controller_(request_context.blob_storage_controller()) { |
- DCHECK(blob_storage_controller_); |
- scoped_refptr<BlobData> blob_data(new BlobData()); |
- blob_data->AppendData(data); |
- blob_storage_controller_->AddFinishedBlob(blob_url_, blob_data); |
+ : blob_id_(blob_id), |
+ blob_storage_context_(request_context.blob_storage_context()) { |
+ DCHECK(blob_storage_context_); |
+ scoped_refptr<BlobData> blob_data(new BlobData(blob_id_)); |
+ if (!data.empty()) |
+ blob_data->AppendData(data); |
+ blob_storage_context_->AddFinishedBlob(blob_data); |
} |
ScopedTextBlob::~ScopedTextBlob() { |
- blob_storage_controller_->RemoveBlob(blob_url_); |
+ blob_storage_context_->DecrementBlobRefCount(blob_id_); |
} |
+scoped_ptr<BlobDataHandle> ScopedTextBlob::GetBlobDataHandle() { |
+ return blob_storage_context_->GetBlobDataFromUUID(blob_id_); |
+} |
+ |
} // namespace webkit_blob |