Index: content/browser/fileapi/chrome_blob_storage_context.cc |
diff --git a/content/browser/fileapi/chrome_blob_storage_context.cc b/content/browser/fileapi/chrome_blob_storage_context.cc |
index f8753b5ea77e521d8f0c4fc24d517ee965bfdd6c..1f8acc8f7a6332030b38c0da0934157ca8fe9d3e 100644 |
--- a/content/browser/fileapi/chrome_blob_storage_context.cc |
+++ b/content/browser/fileapi/chrome_blob_storage_context.cc |
@@ -82,6 +82,27 @@ scoped_ptr<BlobHandle> ChromeBlobStorageContext::CreateMemoryBackedBlob( |
return blob_handle.Pass(); |
} |
+scoped_ptr<BlobHandle> ChromeBlobStorageContext::CreateFileBackedBlob( |
+ const base::FilePath& path, |
+ int64_t offset, |
+ int64_t size, |
+ const base::Time& expected_modification_time) { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
+ |
+ std::string uuid(base::GenerateGUID()); |
+ storage::BlobDataBuilder blob_data_builder(uuid); |
+ blob_data_builder.AppendFile(path, offset, size, expected_modification_time); |
+ |
+ scoped_ptr<storage::BlobDataHandle> blob_data_handle = |
+ context_->AddFinishedBlob(&blob_data_builder); |
+ if (!blob_data_handle) |
+ return scoped_ptr<BlobHandle>(); |
+ |
+ scoped_ptr<BlobHandle> blob_handle( |
+ new BlobHandleImpl(blob_data_handle.Pass())); |
+ return blob_handle.Pass(); |
+} |
+ |
ChromeBlobStorageContext::~ChromeBlobStorageContext() {} |
void ChromeBlobStorageContext::DeleteOnCorrectThread() const { |