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

Unified Diff: webkit/fileapi/cross_operation_delegate.cc

Issue 14225022: fileapi: Pass virtual path to copy validator. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 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/fileapi/cross_operation_delegate.cc
diff --git a/webkit/fileapi/cross_operation_delegate.cc b/webkit/fileapi/cross_operation_delegate.cc
index 3ec57ec05076ea4a6e9f6333c8108d802669ec3e..d03a1c5de467607bf238d27530ff3a81569aee98 100644
--- a/webkit/fileapi/cross_operation_delegate.cc
+++ b/webkit/fileapi/cross_operation_delegate.cc
@@ -55,14 +55,16 @@ void CrossOperationDelegate::RunRecursively() {
}
// First try to copy/move it as a file.
- CopyOrMoveFile(src_root_, dest_root_,
- base::Bind(&CrossOperationDelegate::DidTryCopyOrMoveFile,
- AsWeakPtr()));
+ Request request(src_root_, dest_root_,
+ base::Bind(&CrossOperationDelegate::DidTryCopyOrMoveFile,
+ AsWeakPtr()));
+ CopyOrMoveFile(request);
}
void CrossOperationDelegate::ProcessFile(const FileSystemURL& src_url,
const StatusCallback& callback) {
- CopyOrMoveFile(src_url, CreateDestURL(src_url), callback);
+ Request request(src_url, CreateDestURL(src_url), callback);
+ CopyOrMoveFile(request);
}
void CrossOperationDelegate::ProcessDirectory(const FileSystemURL& src_url,
@@ -109,21 +111,22 @@ void CrossOperationDelegate::DidTryRemoveDestRoot(
// TODO(kinuko): This could be too expensive for same_file_system_==true
// and operation==MOVE case, probably we can just rename the root directory.
// http://crbug.com/172187
+ Request request(src_root_, dest_root_, callback_);
StartRecursiveOperation(
src_root_, base::Bind(&CrossOperationDelegate::DidFinishCopy,
- AsWeakPtr(), src_root_, callback_));
+ AsWeakPtr(), request));
}
-void CrossOperationDelegate::CopyOrMoveFile(
- const FileSystemURL& src,
- const FileSystemURL& dest,
- const StatusCallback& callback) {
+void CrossOperationDelegate::CopyOrMoveFile(const Request& request) {
// Same filesystem case.
if (same_file_system_) {
- if (operation_type_ == OPERATION_MOVE)
- NewSourceOperation()->MoveFileLocal(src, dest, callback);
- else
- NewSourceOperation()->CopyFileLocal(src, dest, callback);
+ if (operation_type_ == OPERATION_MOVE) {
+ NewSourceOperation()->MoveFileLocal(request.src, request.dest,
+ request.callback);
+ } else {
+ NewSourceOperation()->CopyFileLocal(request.src, request.dest,
+ request.callback);
+ }
return;
}
@@ -131,22 +134,22 @@ void CrossOperationDelegate::CopyOrMoveFile(
// Perform CreateSnapshotFile, CopyInForeignFile and then calls
// copy_callback which removes the source file if operation_type == MOVE.
StatusCallback copy_callback =
- base::Bind(&CrossOperationDelegate::DidFinishCopy, AsWeakPtr(),
- src, callback);
+ base::Bind(&CrossOperationDelegate::DidFinishCopy, AsWeakPtr(), request);
+ Request copy_request(request.src, request.dest, copy_callback);
NewSourceOperation()->CreateSnapshotFile(
- src, base::Bind(&CrossOperationDelegate::DidCreateSnapshot, AsWeakPtr(),
- dest, copy_callback));
+ request.src,
+ base::Bind(&CrossOperationDelegate::DidCreateSnapshot, AsWeakPtr(),
+ copy_request));
}
void CrossOperationDelegate::DidCreateSnapshot(
- const FileSystemURL& dest,
- const StatusCallback& callback,
+ const Request& request,
base::PlatformFileError error,
const base::PlatformFileInfo& file_info,
const base::FilePath& platform_path,
const scoped_refptr<webkit_blob::ShareableFileReference>& file_ref) {
if (error != base::PLATFORM_FILE_OK) {
- callback.Run(error);
+ request.callback.Run(error);
return;
}
current_file_ref_ = file_ref;
@@ -159,41 +162,42 @@ void CrossOperationDelegate::DidCreateSnapshot(
file_system_context()->GetCopyOrMoveFileValidatorFactory(
dest_root_.type(), &error);
if (error != base::PLATFORM_FILE_OK) {
- callback.Run(error);
+ request.callback.Run(error);
return;
}
if (!factory) {
- DidValidateFile(dest, callback, file_info, platform_path, error);
+ DidValidateFile(request, file_info, platform_path, error);
return;
}
- validator_.reset(factory->CreateCopyOrMoveFileValidator(platform_path));
+ base::FilePath src_path = request.src.virtual_path();
+ validator_.reset(
+ factory->CreateCopyOrMoveFileValidator(src_path, platform_path));
validator_->StartValidation(
base::Bind(&CrossOperationDelegate::DidValidateFile, AsWeakPtr(),
- dest, callback, file_info, platform_path));
+ request, file_info, platform_path));
}
void CrossOperationDelegate::DidValidateFile(
- const FileSystemURL& dest,
- const StatusCallback& callback,
+ const Request& request,
const base::PlatformFileInfo& file_info,
const base::FilePath& platform_path,
base::PlatformFileError error) {
if (error != base::PLATFORM_FILE_OK) {
- callback.Run(error);
+ request.callback.Run(error);
return;
}
- NewDestOperation()->CopyInForeignFile(platform_path, dest, callback);
+ NewDestOperation()->CopyInForeignFile(platform_path, request.dest,
+ request.callback);
}
void CrossOperationDelegate::DidFinishCopy(
- const FileSystemURL& src,
- const StatusCallback& callback,
+ const Request& request,
base::PlatformFileError error) {
if (error != base::PLATFORM_FILE_OK ||
operation_type_ == OPERATION_COPY) {
- callback.Run(error);
+ request.callback.Run(error);
return;
}
@@ -201,17 +205,17 @@ void CrossOperationDelegate::DidFinishCopy(
// Remove the source for finalizing move operation.
NewSourceOperation()->Remove(
- src, true /* recursive */,
+ request.src, true /* recursive */,
base::Bind(&CrossOperationDelegate::DidRemoveSourceForMove,
- AsWeakPtr(), callback));
+ AsWeakPtr(), request));
}
void CrossOperationDelegate::DidRemoveSourceForMove(
- const StatusCallback& callback,
+ const Request& request,
base::PlatformFileError error) {
if (error == base::PLATFORM_FILE_ERROR_NOT_FOUND)
error = base::PLATFORM_FILE_OK;
- callback.Run(error);
+ request.callback.Run(error);
}
FileSystemURL CrossOperationDelegate::CreateDestURL(
« webkit/fileapi/cross_operation_delegate.h ('K') | « webkit/fileapi/cross_operation_delegate.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698