| Index: webkit/fileapi/local_file_system_operation.cc
|
| ===================================================================
|
| --- webkit/fileapi/local_file_system_operation.cc (revision 183651)
|
| +++ webkit/fileapi/local_file_system_operation.cc (working copy)
|
| @@ -10,7 +10,9 @@
|
| #include "base/utf_string_conversions.h"
|
| #include "net/base/escape.h"
|
| #include "net/url_request/url_request_context.h"
|
| +#include "webkit/blob/blob_storage_context.h"
|
| #include "webkit/blob/shareable_file_reference.h"
|
| +#include "webkit/blob/blob_url_request_job_factory.h"
|
| #include "webkit/fileapi/async_file_util.h"
|
| #include "webkit/fileapi/cross_operation_delegate.h"
|
| #include "webkit/fileapi/file_observers.h"
|
| @@ -248,10 +250,11 @@
|
| void LocalFileSystemOperation::Write(
|
| const net::URLRequestContext* url_request_context,
|
| const FileSystemURL& url,
|
| - const GURL& blob_url,
|
| + scoped_ptr<webkit_blob::BlobDataHandle> blob,
|
| int64 offset,
|
| const WriteCallback& callback) {
|
| - GetWriteClosure(url_request_context, url, blob_url, offset, callback).Run();
|
| + GetWriteClosure(url_request_context, url, blob.Pass(), offset, callback)
|
| + .Run();
|
| }
|
|
|
| void LocalFileSystemOperation::Truncate(const FileSystemURL& url, int64 length,
|
| @@ -584,7 +587,7 @@
|
| base::Closure LocalFileSystemOperation::GetWriteClosure(
|
| const net::URLRequestContext* url_request_context,
|
| const FileSystemURL& url,
|
| - const GURL& blob_url,
|
| + scoped_ptr<webkit_blob::BlobDataHandle> blob_handle,
|
| int64 offset,
|
| const WriteCallback& callback) {
|
| DCHECK(SetPendingOperationType(kOperationWrite));
|
| @@ -608,15 +611,19 @@
|
| base::PLATFORM_FILE_ERROR_SECURITY);
|
| }
|
|
|
| - DCHECK(blob_url.is_valid());
|
| file_writer_delegate_.reset(new FileWriterDelegate(
|
| base::Bind(&LocalFileSystemOperation::DidWrite,
|
| weak_factory_.GetWeakPtr(), url),
|
| writer.Pass()));
|
|
|
| write_callback_ = callback;
|
| +
|
| + // Use a URLRequest to read the blob data that's to be written to the file.
|
| scoped_ptr<net::URLRequest> blob_request(url_request_context->CreateRequest(
|
| - blob_url, file_writer_delegate_.get()));
|
| + GURL("blob://see_user_data/"), file_writer_delegate_.get()));
|
| + webkit_blob::BlobProtocolHandler::SetRequestedBlobDataHandle(
|
| + blob_request.get(),
|
| + blob_handle.Pass());
|
|
|
| return base::Bind(&FileWriterDelegate::Start,
|
| base::Unretained(file_writer_delegate_.get()),
|
|
|