Index: chrome/browser/chromeos/file_system_provider/fileapi/file_stream_writer.h |
diff --git a/chrome/browser/chromeos/file_system_provider/fileapi/file_stream_writer.h b/chrome/browser/chromeos/file_system_provider/fileapi/file_stream_writer.h |
index 5f969b1790470a7e877ad505ed593f78a0d10221..e21e12a0162443a91ec1fcf7b5f46600b0ac7e4e 100644 |
--- a/chrome/browser/chromeos/file_system_provider/fileapi/file_stream_writer.h |
+++ b/chrome/browser/chromeos/file_system_provider/fileapi/file_stream_writer.h |
@@ -22,12 +22,6 @@ class ProvidedFileSystemInterface; |
// to Write(). |
class FileStreamWriter : public fileapi::FileStreamWriter { |
public: |
- typedef base::Callback< |
- void(base::WeakPtr<ProvidedFileSystemInterface> file_system, |
- const base::FilePath& file_path, |
- int file_handle, |
- base::File::Error result)> OpenFileCompletedCallback; |
- |
FileStreamWriter(const fileapi::FileSystemURL& url, int64 initial_offset); |
virtual ~FileStreamWriter(); |
@@ -40,17 +34,28 @@ class FileStreamWriter : public fileapi::FileStreamWriter { |
virtual int Flush(const net::CompletionCallback& callback) OVERRIDE; |
private: |
+ // Helper class for executing operations on the provided file system. All |
+ // of its methods must be called on UI thread. Callbacks are called on IO |
+ // thread. |
+ class OperationRunner; |
+ |
// State of the file stream writer. |
enum State { NOT_INITIALIZED, INITIALIZING, INITIALIZED, FAILED }; |
+ // Called when OperationRunner::WriteOnUIThread is completed. |
void OnWriteFileCompleted(int buffer_length, |
const net::CompletionCallback& callback, |
base::File::Error result); |
- // Called when Write() operation is completed with either a success of an |
+ // Called when Write() operation is completed with either a success or an |
// error. |
void OnWriteCompleted(net::CompletionCallback callback, int result); |
+ // Called when Abort() operation is completed with either a success or an |
+ // error. |
+ void OnAbortCompleted(const net::CompletionCallback& callback, |
+ base::File::Error result); |
+ |
// Initializes the writer by opening the file. When completed with success, |
// runs the |pending_closure|. Otherwise, calls the |error_callback|. |
void Initialize(const base::Closure& pending_closure, |
@@ -60,9 +65,6 @@ class FileStreamWriter : public fileapi::FileStreamWriter { |
void OnOpenFileCompleted( |
const base::Closure& pending_closure, |
const net::CompletionCallback& error_callback, |
- base::WeakPtr<ProvidedFileSystemInterface> file_system, |
- const base::FilePath& file_path, |
- int file_handle, |
base::File::Error result); |
// Same as Write(), but called after initializing is completed. |
@@ -72,13 +74,9 @@ class FileStreamWriter : public fileapi::FileStreamWriter { |
fileapi::FileSystemURL url_; |
int64 current_offset_; |
+ scoped_refptr<OperationRunner> runner_; |
State state_; |
- // Set during initialization (in case of a success). |
- base::WeakPtr<ProvidedFileSystemInterface> file_system_; |
- base::FilePath file_path_; |
- int file_handle_; |
- |
base::WeakPtrFactory<FileStreamWriter> weak_ptr_factory_; |
DISALLOW_COPY_AND_ASSIGN(FileStreamWriter); |
}; |