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

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

Issue 389973002: [fsp] Add support for moving files within a provided file system. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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/provider_async_fi le_util.h" 5 #include "chrome/browser/chromeos/file_system_provider/fileapi/provider_async_fi le_util.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/files/file.h" 8 #include "base/files/file.h"
9 #include "base/files/file_path.h" 9 #include "base/files/file_path.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 } 179 }
180 180
181 // Routes the response of CopyEntry to a callback of CopyLocalFile() on the 181 // Routes the response of CopyEntry to a callback of CopyLocalFile() on the
182 // IO thread. 182 // IO thread.
183 void OnCopyEntry(const fileapi::AsyncFileUtil::StatusCallback& callback, 183 void OnCopyEntry(const fileapi::AsyncFileUtil::StatusCallback& callback,
184 base::File::Error result) { 184 base::File::Error result) {
185 BrowserThread::PostTask( 185 BrowserThread::PostTask(
186 BrowserThread::IO, FROM_HERE, base::Bind(callback, result)); 186 BrowserThread::IO, FROM_HERE, base::Bind(callback, result));
187 } 187 }
188 188
189 // Executes MoveEntry on the UI thread.
190 void MoveEntryOnUIThread(
191 scoped_ptr<fileapi::FileSystemOperationContext> context,
192 const fileapi::FileSystemURL& source_url,
193 const fileapi::FileSystemURL& target_url,
194 const fileapi::AsyncFileUtil::StatusCallback& callback) {
195 util::FileSystemURLParser source_parser(source_url);
196 util::FileSystemURLParser target_parser(target_url);
197
198 if (!source_parser.Parse() || !target_parser.Parse() ||
199 source_parser.file_system() != target_parser.file_system()) {
200 callback.Run(base::File::FILE_ERROR_INVALID_OPERATION);
201 return;
202 }
203
204 target_parser.file_system()->MoveEntry(
205 source_parser.file_path(), target_parser.file_path(), callback);
206 }
207
208 // Routes the response of CopyEntry to a callback of MoveLocalFile() on the
209 // IO thread.
210 void OnMoveEntry(const fileapi::AsyncFileUtil::StatusCallback& callback,
211 base::File::Error result) {
212 BrowserThread::PostTask(
213 BrowserThread::IO, FROM_HERE, base::Bind(callback, result));
214 }
215
189 } // namespace 216 } // namespace
190 217
191 ProviderAsyncFileUtil::ProviderAsyncFileUtil() {} 218 ProviderAsyncFileUtil::ProviderAsyncFileUtil() {}
192 219
193 ProviderAsyncFileUtil::~ProviderAsyncFileUtil() {} 220 ProviderAsyncFileUtil::~ProviderAsyncFileUtil() {}
194 221
195 void ProviderAsyncFileUtil::CreateOrOpen( 222 void ProviderAsyncFileUtil::CreateOrOpen(
196 scoped_ptr<fileapi::FileSystemOperationContext> context, 223 scoped_ptr<fileapi::FileSystemOperationContext> context,
197 const fileapi::FileSystemURL& url, 224 const fileapi::FileSystemURL& url,
198 int file_flags, 225 int file_flags,
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 base::Bind(&OnCopyEntry, callback))); 334 base::Bind(&OnCopyEntry, callback)));
308 } 335 }
309 336
310 void ProviderAsyncFileUtil::MoveFileLocal( 337 void ProviderAsyncFileUtil::MoveFileLocal(
311 scoped_ptr<fileapi::FileSystemOperationContext> context, 338 scoped_ptr<fileapi::FileSystemOperationContext> context,
312 const fileapi::FileSystemURL& src_url, 339 const fileapi::FileSystemURL& src_url,
313 const fileapi::FileSystemURL& dest_url, 340 const fileapi::FileSystemURL& dest_url,
314 CopyOrMoveOption option, 341 CopyOrMoveOption option,
315 const StatusCallback& callback) { 342 const StatusCallback& callback) {
316 DCHECK_CURRENTLY_ON(BrowserThread::IO); 343 DCHECK_CURRENTLY_ON(BrowserThread::IO);
317 callback.Run(base::File::FILE_ERROR_ACCESS_DENIED); 344 // TODO(mtomasz): Consier adding support for options (preserving last modified
345 // time) as well as the progress callback.
346 BrowserThread::PostTask(BrowserThread::UI,
347 FROM_HERE,
348 base::Bind(&MoveEntryOnUIThread,
349 base::Passed(&context),
350 src_url,
351 dest_url,
352 base::Bind(&OnMoveEntry, callback)));
318 } 353 }
319 354
320 void ProviderAsyncFileUtil::CopyInForeignFile( 355 void ProviderAsyncFileUtil::CopyInForeignFile(
321 scoped_ptr<fileapi::FileSystemOperationContext> context, 356 scoped_ptr<fileapi::FileSystemOperationContext> context,
322 const base::FilePath& src_file_path, 357 const base::FilePath& src_file_path,
323 const fileapi::FileSystemURL& dest_url, 358 const fileapi::FileSystemURL& dest_url,
324 const StatusCallback& callback) { 359 const StatusCallback& callback) {
325 DCHECK_CURRENTLY_ON(BrowserThread::IO); 360 DCHECK_CURRENTLY_ON(BrowserThread::IO);
326 callback.Run(base::File::FILE_ERROR_ACCESS_DENIED); 361 callback.Run(base::File::FILE_ERROR_ACCESS_DENIED);
327 } 362 }
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
376 NOTIMPLEMENTED(); 411 NOTIMPLEMENTED();
377 callback.Run(base::File::FILE_ERROR_INVALID_OPERATION, 412 callback.Run(base::File::FILE_ERROR_INVALID_OPERATION,
378 base::File::Info(), 413 base::File::Info(),
379 base::FilePath(), 414 base::FilePath(),
380 scoped_refptr<webkit_blob::ShareableFileReference>()); 415 scoped_refptr<webkit_blob::ShareableFileReference>());
381 } 416 }
382 417
383 } // namespace internal 418 } // namespace internal
384 } // namespace file_system_provider 419 } // namespace file_system_provider
385 } // namespace chromeos 420 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698