Index: storage/browser/blob/blob_url_request_job_factory.cc |
diff --git a/storage/browser/blob/blob_url_request_job_factory.cc b/storage/browser/blob/blob_url_request_job_factory.cc |
index 60f9c738b9e74245871d167d2c9c2b8eb9bd3d6e..fe193afbeb8abd6069654d3828bd93bf5214993c 100644 |
--- a/storage/browser/blob/blob_url_request_job_factory.cc |
+++ b/storage/browser/blob/blob_url_request_job_factory.cc |
@@ -68,11 +68,11 @@ net::URLRequestJob* BlobProtocolHandler::MaybeCreateJob( |
file_loop_proxy_.get()); |
} |
-scoped_refptr<storage::BlobData> BlobProtocolHandler::LookupBlobData( |
+scoped_ptr<BlobDataSnapshot> BlobProtocolHandler::LookupBlobData( |
net::URLRequest* request) const { |
BlobDataHandle* blob_data_handle = GetRequestedBlobDataHandle(request); |
if (blob_data_handle) |
- return blob_data_handle->data(); |
+ return blob_data_handle->CreateSnapshot().Pass(); |
if (!context_.get()) |
return NULL; |
@@ -84,7 +84,12 @@ scoped_refptr<storage::BlobData> BlobProtocolHandler::LookupBlobData( |
return NULL; |
std::string uuid = request->url().spec().substr(kPrefix.length()); |
scoped_ptr<BlobDataHandle> handle = context_->GetBlobDataFromUUID(uuid); |
- return handle.get() ? handle->data() : NULL; |
+ scoped_ptr<BlobDataSnapshot> snapshot; |
+ if (handle) { |
+ snapshot = handle->CreateSnapshot().Pass(); |
+ SetRequestedBlobDataHandle(request, handle.Pass()); |
+ } |
+ return snapshot.Pass(); |
} |
} // namespace storage |