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

Side by Side Diff: webkit/browser/fileapi/file_system_operation_runner.cc

Issue 145303002: Convert Media Galleries to use base::File (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 6 years, 11 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "webkit/browser/fileapi/file_system_operation_runner.h" 5 #include "webkit/browser/fileapi/file_system_operation_runner.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/message_loop/message_loop_proxy.h" 8 #include "base/message_loop/message_loop_proxy.h"
9 #include "base/stl_util.h" 9 #include "base/stl_util.h"
10 #include "net/url_request/url_request_context.h" 10 #include "net/url_request/url_request_context.h"
(...skipping 25 matching lines...) Expand all
36 } 36 }
37 37
38 void FileSystemOperationRunner::Shutdown() { 38 void FileSystemOperationRunner::Shutdown() {
39 operations_.Clear(); 39 operations_.Clear();
40 } 40 }
41 41
42 OperationID FileSystemOperationRunner::CreateFile( 42 OperationID FileSystemOperationRunner::CreateFile(
43 const FileSystemURL& url, 43 const FileSystemURL& url,
44 bool exclusive, 44 bool exclusive,
45 const StatusCallback& callback) { 45 const StatusCallback& callback) {
46 base::PlatformFileError error = base::PLATFORM_FILE_OK; 46 base::File::Error error = base::File::FILE_OK;
47 FileSystemOperation* operation = 47 FileSystemOperation* operation =
48 file_system_context_->CreateFileSystemOperation(url, &error); 48 file_system_context_->CreateFileSystemOperation(url, &error);
49 49
50 BeginOperationScoper scope; 50 BeginOperationScoper scope;
51 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr()); 51 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
52 if (!operation) { 52 if (!operation) {
53 DidFinish(handle, callback, error); 53 DidFinish(handle, callback, error);
54 return handle.id; 54 return handle.id;
55 } 55 }
56 PrepareForWrite(handle.id, url); 56 PrepareForWrite(handle.id, url);
57 operation->CreateFile( 57 operation->CreateFile(
58 url, exclusive, 58 url, exclusive,
59 base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(), 59 base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(),
60 handle, callback)); 60 handle, callback));
61 return handle.id; 61 return handle.id;
62 } 62 }
63 63
64 OperationID FileSystemOperationRunner::CreateDirectory( 64 OperationID FileSystemOperationRunner::CreateDirectory(
65 const FileSystemURL& url, 65 const FileSystemURL& url,
66 bool exclusive, 66 bool exclusive,
67 bool recursive, 67 bool recursive,
68 const StatusCallback& callback) { 68 const StatusCallback& callback) {
69 base::PlatformFileError error = base::PLATFORM_FILE_OK; 69 base::File::Error error = base::File::FILE_OK;
70 FileSystemOperation* operation = 70 FileSystemOperation* operation =
71 file_system_context_->CreateFileSystemOperation(url, &error); 71 file_system_context_->CreateFileSystemOperation(url, &error);
72 BeginOperationScoper scope; 72 BeginOperationScoper scope;
73 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr()); 73 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
74 if (!operation) { 74 if (!operation) {
75 DidFinish(handle, callback, error); 75 DidFinish(handle, callback, error);
76 return handle.id; 76 return handle.id;
77 } 77 }
78 PrepareForWrite(handle.id, url); 78 PrepareForWrite(handle.id, url);
79 operation->CreateDirectory( 79 operation->CreateDirectory(
80 url, exclusive, recursive, 80 url, exclusive, recursive,
81 base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(), 81 base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(),
82 handle, callback)); 82 handle, callback));
83 return handle.id; 83 return handle.id;
84 } 84 }
85 85
86 OperationID FileSystemOperationRunner::Copy( 86 OperationID FileSystemOperationRunner::Copy(
87 const FileSystemURL& src_url, 87 const FileSystemURL& src_url,
88 const FileSystemURL& dest_url, 88 const FileSystemURL& dest_url,
89 CopyOrMoveOption option, 89 CopyOrMoveOption option,
90 const CopyProgressCallback& progress_callback, 90 const CopyProgressCallback& progress_callback,
91 const StatusCallback& callback) { 91 const StatusCallback& callback) {
92 base::PlatformFileError error = base::PLATFORM_FILE_OK; 92 base::File::Error error = base::File::FILE_OK;
93 FileSystemOperation* operation = 93 FileSystemOperation* operation =
94 file_system_context_->CreateFileSystemOperation(dest_url, &error); 94 file_system_context_->CreateFileSystemOperation(dest_url, &error);
95 BeginOperationScoper scope; 95 BeginOperationScoper scope;
96 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr()); 96 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
97 if (!operation) { 97 if (!operation) {
98 DidFinish(handle, callback, error); 98 DidFinish(handle, callback, error);
99 return handle.id; 99 return handle.id;
100 } 100 }
101 PrepareForWrite(handle.id, dest_url); 101 PrepareForWrite(handle.id, dest_url);
102 PrepareForRead(handle.id, src_url); 102 PrepareForRead(handle.id, src_url);
103 operation->Copy( 103 operation->Copy(
104 src_url, dest_url, option, 104 src_url, dest_url, option,
105 progress_callback.is_null() ? 105 progress_callback.is_null() ?
106 CopyProgressCallback() : 106 CopyProgressCallback() :
107 base::Bind(&FileSystemOperationRunner::OnCopyProgress, AsWeakPtr(), 107 base::Bind(&FileSystemOperationRunner::OnCopyProgress, AsWeakPtr(),
108 handle, progress_callback), 108 handle, progress_callback),
109 base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(), 109 base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(),
110 handle, callback)); 110 handle, callback));
111 return handle.id; 111 return handle.id;
112 } 112 }
113 113
114 OperationID FileSystemOperationRunner::Move( 114 OperationID FileSystemOperationRunner::Move(
115 const FileSystemURL& src_url, 115 const FileSystemURL& src_url,
116 const FileSystemURL& dest_url, 116 const FileSystemURL& dest_url,
117 CopyOrMoveOption option, 117 CopyOrMoveOption option,
118 const StatusCallback& callback) { 118 const StatusCallback& callback) {
119 base::PlatformFileError error = base::PLATFORM_FILE_OK; 119 base::File::Error error = base::File::FILE_OK;
120 FileSystemOperation* operation = 120 FileSystemOperation* operation =
121 file_system_context_->CreateFileSystemOperation(dest_url, &error); 121 file_system_context_->CreateFileSystemOperation(dest_url, &error);
122 BeginOperationScoper scope; 122 BeginOperationScoper scope;
123 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr()); 123 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
124 if (!operation) { 124 if (!operation) {
125 DidFinish(handle, callback, error); 125 DidFinish(handle, callback, error);
126 return handle.id; 126 return handle.id;
127 } 127 }
128 PrepareForWrite(handle.id, dest_url); 128 PrepareForWrite(handle.id, dest_url);
129 PrepareForWrite(handle.id, src_url); 129 PrepareForWrite(handle.id, src_url);
130 operation->Move( 130 operation->Move(
131 src_url, dest_url, option, 131 src_url, dest_url, option,
132 base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(), 132 base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(),
133 handle, callback)); 133 handle, callback));
134 return handle.id; 134 return handle.id;
135 } 135 }
136 136
137 OperationID FileSystemOperationRunner::DirectoryExists( 137 OperationID FileSystemOperationRunner::DirectoryExists(
138 const FileSystemURL& url, 138 const FileSystemURL& url,
139 const StatusCallback& callback) { 139 const StatusCallback& callback) {
140 base::PlatformFileError error = base::PLATFORM_FILE_OK; 140 base::File::Error error = base::File::FILE_OK;
141 FileSystemOperation* operation = 141 FileSystemOperation* operation =
142 file_system_context_->CreateFileSystemOperation(url, &error); 142 file_system_context_->CreateFileSystemOperation(url, &error);
143 BeginOperationScoper scope; 143 BeginOperationScoper scope;
144 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr()); 144 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
145 if (!operation) { 145 if (!operation) {
146 DidFinish(handle, callback, error); 146 DidFinish(handle, callback, error);
147 return handle.id; 147 return handle.id;
148 } 148 }
149 PrepareForRead(handle.id, url); 149 PrepareForRead(handle.id, url);
150 operation->DirectoryExists( 150 operation->DirectoryExists(
151 url, 151 url,
152 base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(), 152 base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(),
153 handle, callback)); 153 handle, callback));
154 return handle.id; 154 return handle.id;
155 } 155 }
156 156
157 OperationID FileSystemOperationRunner::FileExists( 157 OperationID FileSystemOperationRunner::FileExists(
158 const FileSystemURL& url, 158 const FileSystemURL& url,
159 const StatusCallback& callback) { 159 const StatusCallback& callback) {
160 base::PlatformFileError error = base::PLATFORM_FILE_OK; 160 base::File::Error error = base::File::FILE_OK;
161 FileSystemOperation* operation = 161 FileSystemOperation* operation =
162 file_system_context_->CreateFileSystemOperation(url, &error); 162 file_system_context_->CreateFileSystemOperation(url, &error);
163 BeginOperationScoper scope; 163 BeginOperationScoper scope;
164 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr()); 164 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
165 if (!operation) { 165 if (!operation) {
166 DidFinish(handle, callback, error); 166 DidFinish(handle, callback, error);
167 return handle.id; 167 return handle.id;
168 } 168 }
169 PrepareForRead(handle.id, url); 169 PrepareForRead(handle.id, url);
170 operation->FileExists( 170 operation->FileExists(
171 url, 171 url,
172 base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(), 172 base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(),
173 handle, callback)); 173 handle, callback));
174 return handle.id; 174 return handle.id;
175 } 175 }
176 176
177 OperationID FileSystemOperationRunner::GetMetadata( 177 OperationID FileSystemOperationRunner::GetMetadata(
178 const FileSystemURL& url, 178 const FileSystemURL& url,
179 const GetMetadataCallback& callback) { 179 const GetMetadataCallback& callback) {
180 base::PlatformFileError error = base::PLATFORM_FILE_OK; 180 base::File::Error error = base::File::FILE_OK;
181 FileSystemOperation* operation = 181 FileSystemOperation* operation =
182 file_system_context_->CreateFileSystemOperation(url, &error); 182 file_system_context_->CreateFileSystemOperation(url, &error);
183 BeginOperationScoper scope; 183 BeginOperationScoper scope;
184 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr()); 184 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
185 if (!operation) { 185 if (!operation) {
186 DidGetMetadata(handle, callback, error, base::PlatformFileInfo()); 186 DidGetMetadata(handle, callback, error, base::File::Info());
187 return handle.id; 187 return handle.id;
188 } 188 }
189 PrepareForRead(handle.id, url); 189 PrepareForRead(handle.id, url);
190 operation->GetMetadata( 190 operation->GetMetadata(
191 url, 191 url,
192 base::Bind(&FileSystemOperationRunner::DidGetMetadata, AsWeakPtr(), 192 base::Bind(&FileSystemOperationRunner::DidGetMetadata, AsWeakPtr(),
193 handle, callback)); 193 handle, callback));
194 return handle.id; 194 return handle.id;
195 } 195 }
196 196
197 OperationID FileSystemOperationRunner::ReadDirectory( 197 OperationID FileSystemOperationRunner::ReadDirectory(
198 const FileSystemURL& url, 198 const FileSystemURL& url,
199 const ReadDirectoryCallback& callback) { 199 const ReadDirectoryCallback& callback) {
200 base::PlatformFileError error = base::PLATFORM_FILE_OK; 200 base::File::Error error = base::File::FILE_OK;
201 FileSystemOperation* operation = 201 FileSystemOperation* operation =
202 file_system_context_->CreateFileSystemOperation(url, &error); 202 file_system_context_->CreateFileSystemOperation(url, &error);
203 BeginOperationScoper scope; 203 BeginOperationScoper scope;
204 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr()); 204 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
205 if (!operation) { 205 if (!operation) {
206 DidReadDirectory(handle, callback, error, std::vector<DirectoryEntry>(), 206 DidReadDirectory(handle, callback, error, std::vector<DirectoryEntry>(),
207 false); 207 false);
208 return handle.id; 208 return handle.id;
209 } 209 }
210 PrepareForRead(handle.id, url); 210 PrepareForRead(handle.id, url);
211 operation->ReadDirectory( 211 operation->ReadDirectory(
212 url, 212 url,
213 base::Bind(&FileSystemOperationRunner::DidReadDirectory, AsWeakPtr(), 213 base::Bind(&FileSystemOperationRunner::DidReadDirectory, AsWeakPtr(),
214 handle, callback)); 214 handle, callback));
215 return handle.id; 215 return handle.id;
216 } 216 }
217 217
218 OperationID FileSystemOperationRunner::Remove( 218 OperationID FileSystemOperationRunner::Remove(
219 const FileSystemURL& url, bool recursive, 219 const FileSystemURL& url, bool recursive,
220 const StatusCallback& callback) { 220 const StatusCallback& callback) {
221 base::PlatformFileError error = base::PLATFORM_FILE_OK; 221 base::File::Error error = base::File::FILE_OK;
222 FileSystemOperation* operation = 222 FileSystemOperation* operation =
223 file_system_context_->CreateFileSystemOperation(url, &error); 223 file_system_context_->CreateFileSystemOperation(url, &error);
224 BeginOperationScoper scope; 224 BeginOperationScoper scope;
225 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr()); 225 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
226 if (!operation) { 226 if (!operation) {
227 DidFinish(handle, callback, error); 227 DidFinish(handle, callback, error);
228 return handle.id; 228 return handle.id;
229 } 229 }
230 PrepareForWrite(handle.id, url); 230 PrepareForWrite(handle.id, url);
231 operation->Remove( 231 operation->Remove(
232 url, recursive, 232 url, recursive,
233 base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(), 233 base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(),
234 handle, callback)); 234 handle, callback));
235 return handle.id; 235 return handle.id;
236 } 236 }
237 237
238 OperationID FileSystemOperationRunner::Write( 238 OperationID FileSystemOperationRunner::Write(
239 const net::URLRequestContext* url_request_context, 239 const net::URLRequestContext* url_request_context,
240 const FileSystemURL& url, 240 const FileSystemURL& url,
241 scoped_ptr<webkit_blob::BlobDataHandle> blob, 241 scoped_ptr<webkit_blob::BlobDataHandle> blob,
242 int64 offset, 242 int64 offset,
243 const WriteCallback& callback) { 243 const WriteCallback& callback) {
244 base::PlatformFileError error = base::PLATFORM_FILE_OK; 244 base::File::Error error = base::File::FILE_OK;
245 FileSystemOperation* operation = 245 FileSystemOperation* operation =
246 file_system_context_->CreateFileSystemOperation(url, &error); 246 file_system_context_->CreateFileSystemOperation(url, &error);
247 247
248 BeginOperationScoper scope; 248 BeginOperationScoper scope;
249 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr()); 249 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
250 if (!operation) { 250 if (!operation) {
251 DidWrite(handle, callback, error, 0, true); 251 DidWrite(handle, callback, error, 0, true);
252 return handle.id; 252 return handle.id;
253 } 253 }
254 254
255 scoped_ptr<FileStreamWriter> writer( 255 scoped_ptr<FileStreamWriter> writer(
256 file_system_context_->CreateFileStreamWriter(url, offset)); 256 file_system_context_->CreateFileStreamWriter(url, offset));
257 if (!writer) { 257 if (!writer) {
258 // Write is not supported. 258 // Write is not supported.
259 DidWrite(handle, callback, base::PLATFORM_FILE_ERROR_SECURITY, 0, true); 259 DidWrite(handle, callback, base::File::FILE_ERROR_SECURITY, 0, true);
260 return handle.id; 260 return handle.id;
261 } 261 }
262 262
263 scoped_ptr<FileWriterDelegate> writer_delegate( 263 scoped_ptr<FileWriterDelegate> writer_delegate(
264 new FileWriterDelegate(writer.Pass())); 264 new FileWriterDelegate(writer.Pass()));
265 265
266 scoped_ptr<net::URLRequest> blob_request( 266 scoped_ptr<net::URLRequest> blob_request(
267 webkit_blob::BlobProtocolHandler::CreateBlobRequest( 267 webkit_blob::BlobProtocolHandler::CreateBlobRequest(
268 blob.Pass(), 268 blob.Pass(),
269 url_request_context, 269 url_request_context,
270 writer_delegate.get())); 270 writer_delegate.get()));
271 271
272 PrepareForWrite(handle.id, url); 272 PrepareForWrite(handle.id, url);
273 operation->Write( 273 operation->Write(
274 url, writer_delegate.Pass(), blob_request.Pass(), 274 url, writer_delegate.Pass(), blob_request.Pass(),
275 base::Bind(&FileSystemOperationRunner::DidWrite, AsWeakPtr(), 275 base::Bind(&FileSystemOperationRunner::DidWrite, AsWeakPtr(),
276 handle, callback)); 276 handle, callback));
277 return handle.id; 277 return handle.id;
278 } 278 }
279 279
280 OperationID FileSystemOperationRunner::Truncate( 280 OperationID FileSystemOperationRunner::Truncate(
281 const FileSystemURL& url, int64 length, 281 const FileSystemURL& url, int64 length,
282 const StatusCallback& callback) { 282 const StatusCallback& callback) {
283 base::PlatformFileError error = base::PLATFORM_FILE_OK; 283 base::File::Error error = base::File::FILE_OK;
284 FileSystemOperation* operation = 284 FileSystemOperation* operation =
285 file_system_context_->CreateFileSystemOperation(url, &error); 285 file_system_context_->CreateFileSystemOperation(url, &error);
286 BeginOperationScoper scope; 286 BeginOperationScoper scope;
287 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr()); 287 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
288 if (!operation) { 288 if (!operation) {
289 DidFinish(handle, callback, error); 289 DidFinish(handle, callback, error);
290 return handle.id; 290 return handle.id;
291 } 291 }
292 PrepareForWrite(handle.id, url); 292 PrepareForWrite(handle.id, url);
293 operation->Truncate( 293 operation->Truncate(
294 url, length, 294 url, length,
295 base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(), 295 base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(),
296 handle, callback)); 296 handle, callback));
297 return handle.id; 297 return handle.id;
298 } 298 }
299 299
300 void FileSystemOperationRunner::Cancel( 300 void FileSystemOperationRunner::Cancel(
301 OperationID id, 301 OperationID id,
302 const StatusCallback& callback) { 302 const StatusCallback& callback) {
303 if (ContainsKey(finished_operations_, id)) { 303 if (ContainsKey(finished_operations_, id)) {
304 DCHECK(!ContainsKey(stray_cancel_callbacks_, id)); 304 DCHECK(!ContainsKey(stray_cancel_callbacks_, id));
305 stray_cancel_callbacks_[id] = callback; 305 stray_cancel_callbacks_[id] = callback;
306 return; 306 return;
307 } 307 }
308 FileSystemOperation* operation = operations_.Lookup(id); 308 FileSystemOperation* operation = operations_.Lookup(id);
309 if (!operation) { 309 if (!operation) {
310 // There is no operation with |id|. 310 // There is no operation with |id|.
311 callback.Run(base::PLATFORM_FILE_ERROR_INVALID_OPERATION); 311 callback.Run(base::File::FILE_ERROR_INVALID_OPERATION);
312 return; 312 return;
313 } 313 }
314 operation->Cancel(callback); 314 operation->Cancel(callback);
315 } 315 }
316 316
317 OperationID FileSystemOperationRunner::TouchFile( 317 OperationID FileSystemOperationRunner::TouchFile(
318 const FileSystemURL& url, 318 const FileSystemURL& url,
319 const base::Time& last_access_time, 319 const base::Time& last_access_time,
320 const base::Time& last_modified_time, 320 const base::Time& last_modified_time,
321 const StatusCallback& callback) { 321 const StatusCallback& callback) {
322 base::PlatformFileError error = base::PLATFORM_FILE_OK; 322 base::File::Error error = base::File::FILE_OK;
323 FileSystemOperation* operation = 323 FileSystemOperation* operation =
324 file_system_context_->CreateFileSystemOperation(url, &error); 324 file_system_context_->CreateFileSystemOperation(url, &error);
325 BeginOperationScoper scope; 325 BeginOperationScoper scope;
326 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr()); 326 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
327 if (!operation) { 327 if (!operation) {
328 DidFinish(handle, callback, error); 328 DidFinish(handle, callback, error);
329 return handle.id; 329 return handle.id;
330 } 330 }
331 PrepareForWrite(handle.id, url); 331 PrepareForWrite(handle.id, url);
332 operation->TouchFile( 332 operation->TouchFile(
333 url, last_access_time, last_modified_time, 333 url, last_access_time, last_modified_time,
334 base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(), 334 base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(),
335 handle, callback)); 335 handle, callback));
336 return handle.id; 336 return handle.id;
337 } 337 }
338 338
339 OperationID FileSystemOperationRunner::OpenFile( 339 OperationID FileSystemOperationRunner::OpenFile(
340 const FileSystemURL& url, 340 const FileSystemURL& url,
341 int file_flags, 341 int file_flags,
342 const OpenFileCallback& callback) { 342 const OpenFileCallback& callback) {
343 base::PlatformFileError error = base::PLATFORM_FILE_OK; 343 base::File::Error error = base::File::FILE_OK;
344 FileSystemOperation* operation = 344 FileSystemOperation* operation =
345 file_system_context_->CreateFileSystemOperation(url, &error); 345 file_system_context_->CreateFileSystemOperation(url, &error);
346 BeginOperationScoper scope; 346 BeginOperationScoper scope;
347 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr()); 347 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
348 if (!operation) { 348 if (!operation) {
349 DidOpenFile(handle, callback, error, base::kInvalidPlatformFileValue, 349 DidOpenFile(handle, callback, error, base::kInvalidPlatformFileValue,
350 base::Closure()); 350 base::Closure());
351 return handle.id; 351 return handle.id;
352 } 352 }
353 if (file_flags & 353 if (file_flags &
354 (base::PLATFORM_FILE_CREATE | base::PLATFORM_FILE_OPEN_ALWAYS | 354 (base::PLATFORM_FILE_CREATE | base::PLATFORM_FILE_OPEN_ALWAYS |
355 base::PLATFORM_FILE_CREATE_ALWAYS | base::PLATFORM_FILE_OPEN_TRUNCATED | 355 base::PLATFORM_FILE_CREATE_ALWAYS | base::PLATFORM_FILE_OPEN_TRUNCATED |
356 base::PLATFORM_FILE_WRITE | base::PLATFORM_FILE_EXCLUSIVE_WRITE | 356 base::PLATFORM_FILE_WRITE | base::PLATFORM_FILE_EXCLUSIVE_WRITE |
357 base::PLATFORM_FILE_DELETE_ON_CLOSE | 357 base::PLATFORM_FILE_DELETE_ON_CLOSE |
358 base::PLATFORM_FILE_WRITE_ATTRIBUTES)) { 358 base::PLATFORM_FILE_WRITE_ATTRIBUTES)) {
359 PrepareForWrite(handle.id, url); 359 PrepareForWrite(handle.id, url);
360 } else { 360 } else {
361 PrepareForRead(handle.id, url); 361 PrepareForRead(handle.id, url);
362 } 362 }
363 operation->OpenFile( 363 operation->OpenFile(
364 url, file_flags, 364 url, file_flags,
365 base::Bind(&FileSystemOperationRunner::DidOpenFile, AsWeakPtr(), 365 base::Bind(&FileSystemOperationRunner::DidOpenFile, AsWeakPtr(),
366 handle, callback)); 366 handle, callback));
367 return handle.id; 367 return handle.id;
368 } 368 }
369 369
370 OperationID FileSystemOperationRunner::CreateSnapshotFile( 370 OperationID FileSystemOperationRunner::CreateSnapshotFile(
371 const FileSystemURL& url, 371 const FileSystemURL& url,
372 const SnapshotFileCallback& callback) { 372 const SnapshotFileCallback& callback) {
373 base::PlatformFileError error = base::PLATFORM_FILE_OK; 373 base::File::Error error = base::File::FILE_OK;
374 FileSystemOperation* operation = 374 FileSystemOperation* operation =
375 file_system_context_->CreateFileSystemOperation(url, &error); 375 file_system_context_->CreateFileSystemOperation(url, &error);
376 BeginOperationScoper scope; 376 BeginOperationScoper scope;
377 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr()); 377 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
378 if (!operation) { 378 if (!operation) {
379 DidCreateSnapshot(handle, callback, error, base::PlatformFileInfo(), 379 DidCreateSnapshot(handle, callback, error, base::File::Info(),
380 base::FilePath(), NULL); 380 base::FilePath(), NULL);
381 return handle.id; 381 return handle.id;
382 } 382 }
383 PrepareForRead(handle.id, url); 383 PrepareForRead(handle.id, url);
384 operation->CreateSnapshotFile( 384 operation->CreateSnapshotFile(
385 url, 385 url,
386 base::Bind(&FileSystemOperationRunner::DidCreateSnapshot, AsWeakPtr(), 386 base::Bind(&FileSystemOperationRunner::DidCreateSnapshot, AsWeakPtr(),
387 handle, callback)); 387 handle, callback));
388 return handle.id; 388 return handle.id;
389 } 389 }
390 390
391 OperationID FileSystemOperationRunner::CopyInForeignFile( 391 OperationID FileSystemOperationRunner::CopyInForeignFile(
392 const base::FilePath& src_local_disk_path, 392 const base::FilePath& src_local_disk_path,
393 const FileSystemURL& dest_url, 393 const FileSystemURL& dest_url,
394 const StatusCallback& callback) { 394 const StatusCallback& callback) {
395 base::PlatformFileError error = base::PLATFORM_FILE_OK; 395 base::File::Error error = base::File::FILE_OK;
396 FileSystemOperation* operation = 396 FileSystemOperation* operation =
397 file_system_context_->CreateFileSystemOperation(dest_url, &error); 397 file_system_context_->CreateFileSystemOperation(dest_url, &error);
398 BeginOperationScoper scope; 398 BeginOperationScoper scope;
399 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr()); 399 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
400 if (!operation) { 400 if (!operation) {
401 DidFinish(handle, callback, error); 401 DidFinish(handle, callback, error);
402 return handle.id; 402 return handle.id;
403 } 403 }
404 operation->CopyInForeignFile( 404 operation->CopyInForeignFile(
405 src_local_disk_path, dest_url, 405 src_local_disk_path, dest_url,
406 base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(), 406 base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(),
407 handle, callback)); 407 handle, callback));
408 return handle.id; 408 return handle.id;
409 } 409 }
410 410
411 OperationID FileSystemOperationRunner::RemoveFile( 411 OperationID FileSystemOperationRunner::RemoveFile(
412 const FileSystemURL& url, 412 const FileSystemURL& url,
413 const StatusCallback& callback) { 413 const StatusCallback& callback) {
414 base::PlatformFileError error = base::PLATFORM_FILE_OK; 414 base::File::Error error = base::File::FILE_OK;
415 FileSystemOperation* operation = 415 FileSystemOperation* operation =
416 file_system_context_->CreateFileSystemOperation(url, &error); 416 file_system_context_->CreateFileSystemOperation(url, &error);
417 BeginOperationScoper scope; 417 BeginOperationScoper scope;
418 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr()); 418 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
419 if (!operation) { 419 if (!operation) {
420 DidFinish(handle, callback, error); 420 DidFinish(handle, callback, error);
421 return handle.id; 421 return handle.id;
422 } 422 }
423 operation->RemoveFile( 423 operation->RemoveFile(
424 url, 424 url,
425 base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(), 425 base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(),
426 handle, callback)); 426 handle, callback));
427 return handle.id; 427 return handle.id;
428 } 428 }
429 429
430 OperationID FileSystemOperationRunner::RemoveDirectory( 430 OperationID FileSystemOperationRunner::RemoveDirectory(
431 const FileSystemURL& url, 431 const FileSystemURL& url,
432 const StatusCallback& callback) { 432 const StatusCallback& callback) {
433 base::PlatformFileError error = base::PLATFORM_FILE_OK; 433 base::File::Error error = base::File::FILE_OK;
434 FileSystemOperation* operation = 434 FileSystemOperation* operation =
435 file_system_context_->CreateFileSystemOperation(url, &error); 435 file_system_context_->CreateFileSystemOperation(url, &error);
436 BeginOperationScoper scope; 436 BeginOperationScoper scope;
437 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr()); 437 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
438 if (!operation) { 438 if (!operation) {
439 DidFinish(handle, callback, error); 439 DidFinish(handle, callback, error);
440 return handle.id; 440 return handle.id;
441 } 441 }
442 operation->RemoveDirectory( 442 operation->RemoveDirectory(
443 url, 443 url,
444 base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(), 444 base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(),
445 handle, callback)); 445 handle, callback));
446 return handle.id; 446 return handle.id;
447 } 447 }
448 448
449 OperationID FileSystemOperationRunner::CopyFileLocal( 449 OperationID FileSystemOperationRunner::CopyFileLocal(
450 const FileSystemURL& src_url, 450 const FileSystemURL& src_url,
451 const FileSystemURL& dest_url, 451 const FileSystemURL& dest_url,
452 CopyOrMoveOption option, 452 CopyOrMoveOption option,
453 const CopyFileProgressCallback& progress_callback, 453 const CopyFileProgressCallback& progress_callback,
454 const StatusCallback& callback) { 454 const StatusCallback& callback) {
455 base::PlatformFileError error = base::PLATFORM_FILE_OK; 455 base::File::Error error = base::File::FILE_OK;
456 FileSystemOperation* operation = 456 FileSystemOperation* operation =
457 file_system_context_->CreateFileSystemOperation(src_url, &error); 457 file_system_context_->CreateFileSystemOperation(src_url, &error);
458 BeginOperationScoper scope; 458 BeginOperationScoper scope;
459 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr()); 459 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
460 if (!operation) { 460 if (!operation) {
461 DidFinish(handle, callback, error); 461 DidFinish(handle, callback, error);
462 return handle.id; 462 return handle.id;
463 } 463 }
464 operation->CopyFileLocal( 464 operation->CopyFileLocal(
465 src_url, dest_url, option, progress_callback, 465 src_url, dest_url, option, progress_callback,
466 base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(), 466 base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(),
467 handle, callback)); 467 handle, callback));
468 return handle.id; 468 return handle.id;
469 } 469 }
470 470
471 OperationID FileSystemOperationRunner::MoveFileLocal( 471 OperationID FileSystemOperationRunner::MoveFileLocal(
472 const FileSystemURL& src_url, 472 const FileSystemURL& src_url,
473 const FileSystemURL& dest_url, 473 const FileSystemURL& dest_url,
474 CopyOrMoveOption option, 474 CopyOrMoveOption option,
475 const StatusCallback& callback) { 475 const StatusCallback& callback) {
476 base::PlatformFileError error = base::PLATFORM_FILE_OK; 476 base::File::Error error = base::File::FILE_OK;
477 FileSystemOperation* operation = 477 FileSystemOperation* operation =
478 file_system_context_->CreateFileSystemOperation(src_url, &error); 478 file_system_context_->CreateFileSystemOperation(src_url, &error);
479 BeginOperationScoper scope; 479 BeginOperationScoper scope;
480 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr()); 480 OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
481 if (!operation) { 481 if (!operation) {
482 DidFinish(handle, callback, error); 482 DidFinish(handle, callback, error);
483 return handle.id; 483 return handle.id;
484 } 484 }
485 operation->MoveFileLocal( 485 operation->MoveFileLocal(
486 src_url, dest_url, option, 486 src_url, dest_url, option,
487 base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(), 487 base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(),
488 handle, callback)); 488 handle, callback));
489 return handle.id; 489 return handle.id;
490 } 490 }
491 491
492 base::PlatformFileError FileSystemOperationRunner::SyncGetPlatformPath( 492 base::File::Error FileSystemOperationRunner::SyncGetPlatformPath(
493 const FileSystemURL& url, 493 const FileSystemURL& url,
494 base::FilePath* platform_path) { 494 base::FilePath* platform_path) {
495 base::PlatformFileError error = base::PLATFORM_FILE_OK; 495 base::File::Error error = base::File::FILE_OK;
496 scoped_ptr<FileSystemOperation> operation( 496 scoped_ptr<FileSystemOperation> operation(
497 file_system_context_->CreateFileSystemOperation(url, &error)); 497 file_system_context_->CreateFileSystemOperation(url, &error));
498 if (!operation.get()) 498 if (!operation.get())
499 return error; 499 return error;
500 return operation->SyncGetPlatformPath(url, platform_path); 500 return operation->SyncGetPlatformPath(url, platform_path);
501 } 501 }
502 502
503 FileSystemOperationRunner::FileSystemOperationRunner( 503 FileSystemOperationRunner::FileSystemOperationRunner(
504 FileSystemContext* file_system_context) 504 FileSystemContext* file_system_context)
505 : file_system_context_(file_system_context) {} 505 : file_system_context_(file_system_context) {}
506 506
507 void FileSystemOperationRunner::DidFinish( 507 void FileSystemOperationRunner::DidFinish(
508 const OperationHandle& handle, 508 const OperationHandle& handle,
509 const StatusCallback& callback, 509 const StatusCallback& callback,
510 base::PlatformFileError rv) { 510 base::File::Error rv) {
511 if (handle.scope) { 511 if (handle.scope) {
512 finished_operations_.insert(handle.id); 512 finished_operations_.insert(handle.id);
513 base::MessageLoopProxy::current()->PostTask( 513 base::MessageLoopProxy::current()->PostTask(
514 FROM_HERE, base::Bind(&FileSystemOperationRunner::DidFinish, 514 FROM_HERE, base::Bind(&FileSystemOperationRunner::DidFinish,
515 AsWeakPtr(), handle, callback, rv)); 515 AsWeakPtr(), handle, callback, rv));
516 return; 516 return;
517 } 517 }
518 callback.Run(rv); 518 callback.Run(rv);
519 FinishOperation(handle.id); 519 FinishOperation(handle.id);
520 } 520 }
521 521
522 void FileSystemOperationRunner::DidGetMetadata( 522 void FileSystemOperationRunner::DidGetMetadata(
523 const OperationHandle& handle, 523 const OperationHandle& handle,
524 const GetMetadataCallback& callback, 524 const GetMetadataCallback& callback,
525 base::PlatformFileError rv, 525 base::File::Error rv,
526 const base::PlatformFileInfo& file_info) { 526 const base::File::Info& file_info) {
527 if (handle.scope) { 527 if (handle.scope) {
528 finished_operations_.insert(handle.id); 528 finished_operations_.insert(handle.id);
529 base::MessageLoopProxy::current()->PostTask( 529 base::MessageLoopProxy::current()->PostTask(
530 FROM_HERE, base::Bind(&FileSystemOperationRunner::DidGetMetadata, 530 FROM_HERE, base::Bind(&FileSystemOperationRunner::DidGetMetadata,
531 AsWeakPtr(), handle, callback, rv, file_info)); 531 AsWeakPtr(), handle, callback, rv, file_info));
532 return; 532 return;
533 } 533 }
534 callback.Run(rv, file_info); 534 callback.Run(rv, file_info);
535 FinishOperation(handle.id); 535 FinishOperation(handle.id);
536 } 536 }
537 537
538 void FileSystemOperationRunner::DidReadDirectory( 538 void FileSystemOperationRunner::DidReadDirectory(
539 const OperationHandle& handle, 539 const OperationHandle& handle,
540 const ReadDirectoryCallback& callback, 540 const ReadDirectoryCallback& callback,
541 base::PlatformFileError rv, 541 base::File::Error rv,
542 const std::vector<DirectoryEntry>& entries, 542 const std::vector<DirectoryEntry>& entries,
543 bool has_more) { 543 bool has_more) {
544 if (handle.scope) { 544 if (handle.scope) {
545 finished_operations_.insert(handle.id); 545 finished_operations_.insert(handle.id);
546 base::MessageLoopProxy::current()->PostTask( 546 base::MessageLoopProxy::current()->PostTask(
547 FROM_HERE, base::Bind(&FileSystemOperationRunner::DidReadDirectory, 547 FROM_HERE, base::Bind(&FileSystemOperationRunner::DidReadDirectory,
548 AsWeakPtr(), handle, callback, rv, 548 AsWeakPtr(), handle, callback, rv,
549 entries, has_more)); 549 entries, has_more));
550 return; 550 return;
551 } 551 }
552 callback.Run(rv, entries, has_more); 552 callback.Run(rv, entries, has_more);
553 if (rv != base::PLATFORM_FILE_OK || !has_more) 553 if (rv != base::File::FILE_OK || !has_more)
554 FinishOperation(handle.id); 554 FinishOperation(handle.id);
555 } 555 }
556 556
557 void FileSystemOperationRunner::DidWrite( 557 void FileSystemOperationRunner::DidWrite(
558 const OperationHandle& handle, 558 const OperationHandle& handle,
559 const WriteCallback& callback, 559 const WriteCallback& callback,
560 base::PlatformFileError rv, 560 base::File::Error rv,
561 int64 bytes, 561 int64 bytes,
562 bool complete) { 562 bool complete) {
563 if (handle.scope) { 563 if (handle.scope) {
564 finished_operations_.insert(handle.id); 564 finished_operations_.insert(handle.id);
565 base::MessageLoopProxy::current()->PostTask( 565 base::MessageLoopProxy::current()->PostTask(
566 FROM_HERE, base::Bind(&FileSystemOperationRunner::DidWrite, AsWeakPtr(), 566 FROM_HERE, base::Bind(&FileSystemOperationRunner::DidWrite, AsWeakPtr(),
567 handle, callback, rv, bytes, complete)); 567 handle, callback, rv, bytes, complete));
568 return; 568 return;
569 } 569 }
570 callback.Run(rv, bytes, complete); 570 callback.Run(rv, bytes, complete);
571 if (rv != base::PLATFORM_FILE_OK || complete) 571 if (rv != base::File::FILE_OK || complete)
572 FinishOperation(handle.id); 572 FinishOperation(handle.id);
573 } 573 }
574 574
575 void FileSystemOperationRunner::DidOpenFile( 575 void FileSystemOperationRunner::DidOpenFile(
576 const OperationHandle& handle, 576 const OperationHandle& handle,
577 const OpenFileCallback& callback, 577 const OpenFileCallback& callback,
578 base::PlatformFileError rv, 578 base::File::Error rv,
579 base::PlatformFile file, 579 base::PlatformFile file,
580 const base::Closure& on_close_callback) { 580 const base::Closure& on_close_callback) {
581 if (handle.scope) { 581 if (handle.scope) {
582 finished_operations_.insert(handle.id); 582 finished_operations_.insert(handle.id);
583 base::MessageLoopProxy::current()->PostTask( 583 base::MessageLoopProxy::current()->PostTask(
584 FROM_HERE, base::Bind(&FileSystemOperationRunner::DidOpenFile, 584 FROM_HERE, base::Bind(&FileSystemOperationRunner::DidOpenFile,
585 AsWeakPtr(), handle, callback, rv, file, 585 AsWeakPtr(), handle, callback, rv, file,
586 on_close_callback)); 586 on_close_callback));
587 return; 587 return;
588 } 588 }
589 callback.Run(rv, file, on_close_callback); 589 callback.Run(rv, file, on_close_callback);
590 FinishOperation(handle.id); 590 FinishOperation(handle.id);
591 } 591 }
592 592
593 void FileSystemOperationRunner::DidCreateSnapshot( 593 void FileSystemOperationRunner::DidCreateSnapshot(
594 const OperationHandle& handle, 594 const OperationHandle& handle,
595 const SnapshotFileCallback& callback, 595 const SnapshotFileCallback& callback,
596 base::PlatformFileError rv, 596 base::File::Error rv,
597 const base::PlatformFileInfo& file_info, 597 const base::File::Info& file_info,
598 const base::FilePath& platform_path, 598 const base::FilePath& platform_path,
599 const scoped_refptr<webkit_blob::ShareableFileReference>& file_ref) { 599 const scoped_refptr<webkit_blob::ShareableFileReference>& file_ref) {
600 if (handle.scope) { 600 if (handle.scope) {
601 finished_operations_.insert(handle.id); 601 finished_operations_.insert(handle.id);
602 base::MessageLoopProxy::current()->PostTask( 602 base::MessageLoopProxy::current()->PostTask(
603 FROM_HERE, base::Bind(&FileSystemOperationRunner::DidCreateSnapshot, 603 FROM_HERE, base::Bind(&FileSystemOperationRunner::DidCreateSnapshot,
604 AsWeakPtr(), handle, callback, rv, file_info, 604 AsWeakPtr(), handle, callback, rv, file_info,
605 platform_path, file_ref)); 605 platform_path, file_ref));
606 return; 606 return;
607 } 607 }
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
672 672
673 operations_.Remove(id); 673 operations_.Remove(id);
674 finished_operations_.erase(id); 674 finished_operations_.erase(id);
675 675
676 // Dispatch stray cancel callback if exists. 676 // Dispatch stray cancel callback if exists.
677 std::map<OperationID, StatusCallback>::iterator found_cancel = 677 std::map<OperationID, StatusCallback>::iterator found_cancel =
678 stray_cancel_callbacks_.find(id); 678 stray_cancel_callbacks_.find(id);
679 if (found_cancel != stray_cancel_callbacks_.end()) { 679 if (found_cancel != stray_cancel_callbacks_.end()) {
680 // This cancel has been requested after the operation has finished, 680 // This cancel has been requested after the operation has finished,
681 // so report that we failed to stop it. 681 // so report that we failed to stop it.
682 found_cancel->second.Run(base::PLATFORM_FILE_ERROR_INVALID_OPERATION); 682 found_cancel->second.Run(base::File::FILE_ERROR_INVALID_OPERATION);
683 stray_cancel_callbacks_.erase(found_cancel); 683 stray_cancel_callbacks_.erase(found_cancel);
684 } 684 }
685 } 685 }
686 686
687 } // namespace fileapi 687 } // namespace fileapi
OLDNEW
« no previous file with comments | « webkit/browser/fileapi/file_system_operation_runner.h ('k') | webkit/browser/fileapi/file_system_quota_client.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698