Index: chrome/browser/chromeos/drive/fileapi/async_file_util.cc |
diff --git a/chrome/browser/chromeos/drive/fileapi/async_file_util.cc b/chrome/browser/chromeos/drive/fileapi/async_file_util.cc |
index f13893fb6f0ca1c5ba0d1ae5caca6f86aeb63b8b..c1e093b66622c0683004fd09240be2fda1ef68bd 100644 |
--- a/chrome/browser/chromeos/drive/fileapi/async_file_util.cc |
+++ b/chrome/browser/chromeos/drive/fileapi/async_file_util.cc |
@@ -9,6 +9,7 @@ |
#include "base/logging.h" |
#include "base/platform_file.h" |
#include "base/threading/sequenced_worker_pool.h" |
+#include "chrome/browser/chromeos/drive/drive_integration_service.h" |
#include "chrome/browser/chromeos/drive/file_system_util.h" |
#include "chrome/browser/chromeos/drive/fileapi/fileapi_worker.h" |
#include "content/public/browser/browser_thread.h" |
@@ -46,7 +47,7 @@ void PostFileSystemCallback( |
// Runs CreateOrOpenFile callback based on the given |error| and |file|. |
void RunCreateOrOpenFileCallback( |
- const AsyncFileUtil::FileSystemGetter& file_system_getter, |
+ const fileapi_internal::FileSystemGetter& file_system_getter, |
const base::FilePath& file_path, |
const AsyncFileUtil::CreateOrOpenCallback& callback, |
base::File::Error error, |
@@ -114,8 +115,7 @@ void RunCreateSnapshotFileCallback( |
} // namespace |
-AsyncFileUtil::AsyncFileUtil(const FileSystemGetter& file_system_getter) |
- : file_system_getter_(file_system_getter) { |
+AsyncFileUtil::AsyncFileUtil() { |
} |
AsyncFileUtil::~AsyncFileUtil() { |
@@ -137,13 +137,15 @@ void AsyncFileUtil::CreateOrOpen( |
return; |
} |
+ const fileapi_internal::FileSystemGetter getter = |
+ base::Bind(&fileapi_internal::GetFileSystemFromUrl, url); |
PostFileSystemCallback( |
- file_system_getter_, |
+ getter, |
base::Bind(&fileapi_internal::OpenFile, |
file_path, file_flags, |
google_apis::CreateRelayCallback( |
base::Bind(&RunCreateOrOpenFileCallback, |
- file_system_getter_, file_path, callback))), |
+ getter, file_path, callback))), |
base::Bind(&RunCreateOrOpenFileCallbackOnError, |
callback, base::File::FILE_ERROR_FAILED)); |
} |
@@ -161,7 +163,7 @@ void AsyncFileUtil::EnsureFileExists( |
} |
PostFileSystemCallback( |
- file_system_getter_, |
+ base::Bind(&fileapi_internal::GetFileSystemFromUrl, url), |
base::Bind(&fileapi_internal::CreateFile, |
file_path, true /* is_exlusive */, |
google_apis::CreateRelayCallback( |
@@ -184,7 +186,7 @@ void AsyncFileUtil::CreateDirectory( |
} |
PostFileSystemCallback( |
- file_system_getter_, |
+ base::Bind(&fileapi_internal::GetFileSystemFromUrl, url), |
base::Bind(&fileapi_internal::CreateDirectory, |
file_path, exclusive, recursive, |
google_apis::CreateRelayCallback(callback)), |
@@ -204,7 +206,7 @@ void AsyncFileUtil::GetFileInfo( |
} |
PostFileSystemCallback( |
- file_system_getter_, |
+ base::Bind(&fileapi_internal::GetFileSystemFromUrl, url), |
base::Bind(&fileapi_internal::GetFileInfo, |
file_path, google_apis::CreateRelayCallback(callback)), |
base::Bind(callback, base::File::FILE_ERROR_FAILED, |
@@ -224,7 +226,7 @@ void AsyncFileUtil::ReadDirectory( |
} |
PostFileSystemCallback( |
- file_system_getter_, |
+ base::Bind(&fileapi_internal::GetFileSystemFromUrl, url), |
base::Bind(&fileapi_internal::ReadDirectory, |
file_path, google_apis::CreateRelayCallback(callback)), |
base::Bind(callback, base::File::FILE_ERROR_FAILED, |
@@ -246,7 +248,7 @@ void AsyncFileUtil::Touch( |
} |
PostFileSystemCallback( |
- file_system_getter_, |
+ base::Bind(&fileapi_internal::GetFileSystemFromUrl, url), |
base::Bind(&fileapi_internal::TouchFile, |
file_path, last_access_time, last_modified_time, |
google_apis::CreateRelayCallback(callback)), |
@@ -267,7 +269,7 @@ void AsyncFileUtil::Truncate( |
} |
PostFileSystemCallback( |
- file_system_getter_, |
+ base::Bind(&fileapi_internal::GetFileSystemFromUrl, url), |
base::Bind(&fileapi_internal::Truncate, |
file_path, length, google_apis::CreateRelayCallback(callback)), |
base::Bind(callback, base::File::FILE_ERROR_FAILED)); |
@@ -289,8 +291,14 @@ void AsyncFileUtil::CopyFileLocal( |
return; |
} |
+ // TODO(kinaba): crbug.com/339794. |
+ // Assumption here is that |src_url| and |dest_url| are always from the same |
+ // profile. This indeed holds as long as we mount different profiles onto |
+ // different mount point. Hence, using GetFileSystemFromUrl(dest_url) is safe. |
+ // This will change after we introduce cross-profile sharing etc., and we |
+ // need to deal with files from different profiles here. |
PostFileSystemCallback( |
- file_system_getter_, |
+ base::Bind(&fileapi_internal::GetFileSystemFromUrl, dest_url), |
base::Bind( |
&fileapi_internal::Copy, |
src_path, dest_path, |
@@ -314,8 +322,11 @@ void AsyncFileUtil::MoveFileLocal( |
return; |
} |
+ // TODO(kinaba): see the comment in CopyFileLocal(). |src_url| and |dest_url| |
+ // always return the same FileSystem by GetFileSystemFromUrl, but we need to |
+ // change it in order to support cross-profile file sharing etc. |
PostFileSystemCallback( |
- file_system_getter_, |
+ base::Bind(&fileapi_internal::GetFileSystemFromUrl, dest_url), |
base::Bind( |
&fileapi_internal::Move, |
src_path, dest_path, |
@@ -338,7 +349,7 @@ void AsyncFileUtil::CopyInForeignFile( |
} |
PostFileSystemCallback( |
- file_system_getter_, |
+ base::Bind(&fileapi_internal::GetFileSystemFromUrl, dest_url), |
base::Bind(&fileapi_internal::CopyInForeignFile, |
src_file_path, dest_path, |
google_apis::CreateRelayCallback(callback)), |
@@ -358,7 +369,7 @@ void AsyncFileUtil::DeleteFile( |
} |
PostFileSystemCallback( |
- file_system_getter_, |
+ base::Bind(&fileapi_internal::GetFileSystemFromUrl, url), |
base::Bind(&fileapi_internal::Remove, |
file_path, false /* not recursive */, |
google_apis::CreateRelayCallback(callback)), |
@@ -378,7 +389,7 @@ void AsyncFileUtil::DeleteDirectory( |
} |
PostFileSystemCallback( |
- file_system_getter_, |
+ base::Bind(&fileapi_internal::GetFileSystemFromUrl, url), |
base::Bind(&fileapi_internal::Remove, |
file_path, false /* not recursive */, |
google_apis::CreateRelayCallback(callback)), |
@@ -398,7 +409,7 @@ void AsyncFileUtil::DeleteRecursively( |
} |
PostFileSystemCallback( |
- file_system_getter_, |
+ base::Bind(&fileapi_internal::GetFileSystemFromUrl, url), |
base::Bind(&fileapi_internal::Remove, |
file_path, true /* recursive */, |
google_apis::CreateRelayCallback(callback)), |
@@ -421,7 +432,7 @@ void AsyncFileUtil::CreateSnapshotFile( |
} |
PostFileSystemCallback( |
- file_system_getter_, |
+ base::Bind(&fileapi_internal::GetFileSystemFromUrl, url), |
base::Bind(&fileapi_internal::CreateSnapshotFile, |
file_path, |
google_apis::CreateRelayCallback( |