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

Side by Side Diff: chrome/browser/chromeos/file_system_provider/fileapi/file_stream_writer.cc

Issue 492873002: Collapse fileapi, webkit_blob, webkit_database, quota, and webkit_common namespaces into single sto… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix chromeos build Created 6 years, 4 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/chromeos/file_system_provider/fileapi/file_stream_write r.h" 5 #include "chrome/browser/chromeos/file_system_provider/fileapi/file_stream_write r.h"
6 6
7 #include "base/debug/trace_event.h" 7 #include "base/debug/trace_event.h"
8 #include "base/memory/ref_counted.h" 8 #include "base/memory/ref_counted.h"
9 #include "chrome/browser/chromeos/file_system_provider/fileapi/provider_async_fi le_util.h" 9 #include "chrome/browser/chromeos/file_system_provider/fileapi/provider_async_fi le_util.h"
10 #include "chrome/browser/chromeos/file_system_provider/mount_path_util.h" 10 #include "chrome/browser/chromeos/file_system_provider/mount_path_util.h"
(...skipping 15 matching lines...) Expand all
26 } // namespace 26 } // namespace
27 27
28 class FileStreamWriter::OperationRunner 28 class FileStreamWriter::OperationRunner
29 : public base::RefCountedThreadSafe<FileStreamWriter::OperationRunner> { 29 : public base::RefCountedThreadSafe<FileStreamWriter::OperationRunner> {
30 public: 30 public:
31 OperationRunner() : file_handle_(-1) {} 31 OperationRunner() : file_handle_(-1) {}
32 32
33 // Opens a file for writing and calls the completion callback. Must be called 33 // Opens a file for writing and calls the completion callback. Must be called
34 // on UI thread. 34 // on UI thread.
35 void OpenFileOnUIThread( 35 void OpenFileOnUIThread(
36 const fileapi::FileSystemURL& url, 36 const storage::FileSystemURL& url,
37 const fileapi::AsyncFileUtil::StatusCallback& callback) { 37 const storage::AsyncFileUtil::StatusCallback& callback) {
38 DCHECK_CURRENTLY_ON(BrowserThread::UI); 38 DCHECK_CURRENTLY_ON(BrowserThread::UI);
39 39
40 util::FileSystemURLParser parser(url); 40 util::FileSystemURLParser parser(url);
41 if (!parser.Parse()) { 41 if (!parser.Parse()) {
42 BrowserThread::PostTask( 42 BrowserThread::PostTask(
43 BrowserThread::IO, 43 BrowserThread::IO,
44 FROM_HERE, 44 FROM_HERE,
45 base::Bind(callback, base::File::FILE_ERROR_SECURITY)); 45 base::Bind(callback, base::File::FILE_ERROR_SECURITY));
46 return; 46 return;
47 } 47 }
(...skipping 17 matching lines...) Expand all
65 abort_callback_ = ProvidedFileSystemInterface::AbortCallback(); 65 abort_callback_ = ProvidedFileSystemInterface::AbortCallback();
66 } 66 }
67 } 67 }
68 68
69 // Requests writing bytes to the file. In case of either success or a failure 69 // Requests writing bytes to the file. In case of either success or a failure
70 // |callback| is executed. Must be called on UI thread. 70 // |callback| is executed. Must be called on UI thread.
71 void WriteFileOnUIThread( 71 void WriteFileOnUIThread(
72 scoped_refptr<net::IOBuffer> buffer, 72 scoped_refptr<net::IOBuffer> buffer,
73 int64 offset, 73 int64 offset,
74 int length, 74 int length,
75 const fileapi::AsyncFileUtil::StatusCallback& callback) { 75 const storage::AsyncFileUtil::StatusCallback& callback) {
76 DCHECK_CURRENTLY_ON(BrowserThread::UI); 76 DCHECK_CURRENTLY_ON(BrowserThread::UI);
77 77
78 // If the file system got unmounted, then abort the writing operation. 78 // If the file system got unmounted, then abort the writing operation.
79 if (!file_system_.get()) { 79 if (!file_system_.get()) {
80 BrowserThread::PostTask( 80 BrowserThread::PostTask(
81 BrowserThread::IO, 81 BrowserThread::IO,
82 FROM_HERE, 82 FROM_HERE,
83 base::Bind(callback, base::File::FILE_ERROR_ABORT)); 83 base::Bind(callback, base::File::FILE_ERROR_ABORT));
84 return; 84 return;
85 } 85 }
86 86
87 abort_callback_ = file_system_->WriteFile( 87 abort_callback_ = file_system_->WriteFile(
88 file_handle_, 88 file_handle_,
89 buffer, 89 buffer,
90 offset, 90 offset,
91 length, 91 length,
92 base::Bind( 92 base::Bind(
93 &OperationRunner::OnWriteFileCompletedOnUIThread, this, callback)); 93 &OperationRunner::OnWriteFileCompletedOnUIThread, this, callback));
94 } 94 }
95 95
96 // Aborts the most recent operation (if exists), and calls the callback. 96 // Aborts the most recent operation (if exists), and calls the callback.
97 void AbortOnUIThread(const fileapi::AsyncFileUtil::StatusCallback& callback) { 97 void AbortOnUIThread(const storage::AsyncFileUtil::StatusCallback& callback) {
98 DCHECK_CURRENTLY_ON(BrowserThread::UI); 98 DCHECK_CURRENTLY_ON(BrowserThread::UI);
99 99
100 if (abort_callback_.is_null()) { 100 if (abort_callback_.is_null()) {
101 // No operation to be cancelled. At most a callback call, which will be 101 // No operation to be cancelled. At most a callback call, which will be
102 // discarded. 102 // discarded.
103 BrowserThread::PostTask(BrowserThread::IO, 103 BrowserThread::PostTask(BrowserThread::IO,
104 FROM_HERE, 104 FROM_HERE,
105 base::Bind(callback, base::File::FILE_OK)); 105 base::Bind(callback, base::File::FILE_OK));
106 return; 106 return;
107 } 107 }
108 108
109 const ProvidedFileSystemInterface::AbortCallback abort_callback = 109 const ProvidedFileSystemInterface::AbortCallback abort_callback =
110 abort_callback_; 110 abort_callback_;
111 abort_callback_ = ProvidedFileSystemInterface::AbortCallback(); 111 abort_callback_ = ProvidedFileSystemInterface::AbortCallback();
112 abort_callback.Run(base::Bind( 112 abort_callback.Run(base::Bind(
113 &OperationRunner::OnAbortCompletedOnUIThread, this, callback)); 113 &OperationRunner::OnAbortCompletedOnUIThread, this, callback));
114 } 114 }
115 115
116 private: 116 private:
117 friend class base::RefCountedThreadSafe<OperationRunner>; 117 friend class base::RefCountedThreadSafe<OperationRunner>;
118 118
119 virtual ~OperationRunner() {} 119 virtual ~OperationRunner() {}
120 120
121 // Remembers a file handle for further operations and forwards the result to 121 // Remembers a file handle for further operations and forwards the result to
122 // the IO thread. 122 // the IO thread.
123 void OnOpenFileCompletedOnUIThread( 123 void OnOpenFileCompletedOnUIThread(
124 const fileapi::AsyncFileUtil::StatusCallback& callback, 124 const storage::AsyncFileUtil::StatusCallback& callback,
125 int file_handle, 125 int file_handle,
126 base::File::Error result) { 126 base::File::Error result) {
127 DCHECK_CURRENTLY_ON(BrowserThread::UI); 127 DCHECK_CURRENTLY_ON(BrowserThread::UI);
128 128
129 file_handle_ = file_handle; 129 file_handle_ = file_handle;
130 BrowserThread::PostTask( 130 BrowserThread::PostTask(
131 BrowserThread::IO, FROM_HERE, base::Bind(callback, result)); 131 BrowserThread::IO, FROM_HERE, base::Bind(callback, result));
132 } 132 }
133 133
134 // Forwards a response of writing to a file to the IO thread. 134 // Forwards a response of writing to a file to the IO thread.
135 void OnWriteFileCompletedOnUIThread( 135 void OnWriteFileCompletedOnUIThread(
136 const fileapi::AsyncFileUtil::StatusCallback& callback, 136 const storage::AsyncFileUtil::StatusCallback& callback,
137 base::File::Error result) { 137 base::File::Error result) {
138 DCHECK_CURRENTLY_ON(BrowserThread::UI); 138 DCHECK_CURRENTLY_ON(BrowserThread::UI);
139 BrowserThread::PostTask( 139 BrowserThread::PostTask(
140 BrowserThread::IO, FROM_HERE, base::Bind(callback, result)); 140 BrowserThread::IO, FROM_HERE, base::Bind(callback, result));
141 } 141 }
142 142
143 // Forwards a response of aborting an operation to the IO thread. 143 // Forwards a response of aborting an operation to the IO thread.
144 void OnAbortCompletedOnUIThread( 144 void OnAbortCompletedOnUIThread(
145 const fileapi::AsyncFileUtil::StatusCallback& callback, 145 const storage::AsyncFileUtil::StatusCallback& callback,
146 base::File::Error result) { 146 base::File::Error result) {
147 DCHECK_CURRENTLY_ON(BrowserThread::UI); 147 DCHECK_CURRENTLY_ON(BrowserThread::UI);
148 BrowserThread::PostTask( 148 BrowserThread::PostTask(
149 BrowserThread::IO, FROM_HERE, base::Bind(callback, result)); 149 BrowserThread::IO, FROM_HERE, base::Bind(callback, result));
150 } 150 }
151 151
152 ProvidedFileSystemInterface::AbortCallback abort_callback_; 152 ProvidedFileSystemInterface::AbortCallback abort_callback_;
153 base::WeakPtr<ProvidedFileSystemInterface> file_system_; 153 base::WeakPtr<ProvidedFileSystemInterface> file_system_;
154 int file_handle_; 154 int file_handle_;
155 155
156 DISALLOW_COPY_AND_ASSIGN(OperationRunner); 156 DISALLOW_COPY_AND_ASSIGN(OperationRunner);
157 }; 157 };
158 158
159 FileStreamWriter::FileStreamWriter(const fileapi::FileSystemURL& url, 159 FileStreamWriter::FileStreamWriter(const storage::FileSystemURL& url,
160 int64 initial_offset) 160 int64 initial_offset)
161 : url_(url), 161 : url_(url),
162 current_offset_(initial_offset), 162 current_offset_(initial_offset),
163 runner_(new OperationRunner), 163 runner_(new OperationRunner),
164 state_(NOT_INITIALIZED), 164 state_(NOT_INITIALIZED),
165 weak_ptr_factory_(this) { 165 weak_ptr_factory_(this) {
166 } 166 }
167 167
168 FileStreamWriter::~FileStreamWriter() { 168 FileStreamWriter::~FileStreamWriter() {
169 BrowserThread::PostTask( 169 BrowserThread::PostTask(
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
330 current_offset_, 330 current_offset_,
331 buffer_length, 331 buffer_length,
332 base::Bind(&FileStreamWriter::OnWriteFileCompleted, 332 base::Bind(&FileStreamWriter::OnWriteFileCompleted,
333 weak_ptr_factory_.GetWeakPtr(), 333 weak_ptr_factory_.GetWeakPtr(),
334 buffer_length, 334 buffer_length,
335 callback))); 335 callback)));
336 } 336 }
337 337
338 } // namespace file_system_provider 338 } // namespace file_system_provider
339 } // namespace chromeos 339 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698