Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(281)

Unified Diff: webkit/browser/fileapi/file_system_operation_runner.cc

Issue 16311010: Make FileSystemOperation::Write take closure-friendly parameters (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webkit/browser/fileapi/file_system_operation_runner.cc
diff --git a/webkit/browser/fileapi/file_system_operation_runner.cc b/webkit/browser/fileapi/file_system_operation_runner.cc
index f1abba5bd2767380de447449f46c9d95dfa8fdef..6d1f67ac71aa1aabf696ec2de5e28d374acb71e0 100644
--- a/webkit/browser/fileapi/file_system_operation_runner.cc
+++ b/webkit/browser/fileapi/file_system_operation_runner.cc
@@ -5,8 +5,11 @@
#include "webkit/browser/fileapi/file_system_operation_runner.h"
#include "base/bind.h"
+#include "net/url_request/url_request_context.h"
#include "webkit/browser/fileapi/file_observers.h"
+#include "webkit/browser/fileapi/file_stream_writer.h"
#include "webkit/browser/fileapi/file_system_context.h"
+#include "webkit/browser/fileapi/file_writer_delegate.h"
#include "webkit/browser/fileapi/local_file_system_operation.h"
#include "webkit/common/blob/shareable_file_reference.h"
@@ -214,10 +217,25 @@ OperationID FileSystemOperationRunner::Write(
callback.Run(error, 0, true);
return kErrorOperationID;
}
+
+ scoped_ptr<FileStreamWriter> writer(
+ file_system_context_->CreateFileStreamWriter(url, offset));
+ if (!writer) {
+ // Write is not supported.
+ callback.Run(base::PLATFORM_FILE_ERROR_SECURITY, 0, true);
+ return kErrorOperationID;
+ }
+
+ DCHECK(blob_url.is_valid());
+ scoped_ptr<FileWriterDelegate> writer_delegate(
+ new FileWriterDelegate(writer.Pass()));
+ scoped_ptr<net::URLRequest> blob_request(url_request_context->CreateRequest(
+ blob_url, writer_delegate.get()));
+
OperationID id = operations_.Add(operation);
PrepareForWrite(id, url);
operation->Write(
- url_request_context, url, blob_url, offset,
+ url, writer_delegate.Pass(), blob_request.Pass(),
base::Bind(&FileSystemOperationRunner::DidWrite, AsWeakPtr(),
id, callback));
return id;

Powered by Google App Engine
This is Rietveld 408576698