summaryrefslogtreecommitdiffstats
path: root/webkit/fileapi/native_file_util.cc
diff options
context:
space:
mode:
authorkinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-23 15:13:08 +0000
committerkinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-23 15:13:08 +0000
commitbab213be76cfdc0c8fb631c5b1b04359f625aef2 (patch)
tree555b24aa5a66622d368e6af402c6293ad7d46c8b /webkit/fileapi/native_file_util.cc
parentf5b8d69a846c57729d5374cdbb0c258f8a3cb1d4 (diff)
downloadchromium_src-bab213be76cfdc0c8fb631c5b1b04359f625aef2.zip
chromium_src-bab213be76cfdc0c8fb631c5b1b04359f625aef2.tar.gz
chromium_src-bab213be76cfdc0c8fb631c5b1b04359f625aef2.tar.bz2
Cleanup: Move more recursive operation logic from FileUtilHelper to FileUtil
- To make each FileUtil methods more well-defined - To further reduce the number of FileUtil calls (As a preparation to split recursive jobs into multiple tasks) BUG=146215 TEST=content_unittests:.*File.*,content_browsertests:FileSystemLayoutTest.Op{Copy,Move} Review URL: https://chromiumcodereview.appspot.com/11960003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@178294 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/fileapi/native_file_util.cc')
-rw-r--r--webkit/fileapi/native_file_util.cc39
1 files changed, 25 insertions, 14 deletions
diff --git a/webkit/fileapi/native_file_util.cc b/webkit/fileapi/native_file_util.cc
index c6bc50b..7ee3b04 100644
--- a/webkit/fileapi/native_file_util.cc
+++ b/webkit/fileapi/native_file_util.cc
@@ -202,20 +202,35 @@ bool NativeFileUtil::DirectoryExists(const FilePath& path) {
return file_util::DirectoryExists(path);
}
-bool NativeFileUtil::IsDirectoryEmpty(const FilePath& path) {
- return file_util::IsDirectoryEmpty(path);
-}
-
PlatformFileError NativeFileUtil::CopyOrMoveFile(
const FilePath& src_path,
const FilePath& dest_path,
bool copy) {
+ base::PlatformFileInfo info;
+ base::PlatformFileError error = NativeFileUtil::GetFileInfo(src_path, &info);
+ if (error != base::PLATFORM_FILE_OK)
+ return error;
+ if (info.is_directory)
+ return base::PLATFORM_FILE_ERROR_NOT_A_FILE;
+
+ error = NativeFileUtil::GetFileInfo(dest_path, &info);
+ if (error != base::PLATFORM_FILE_OK &&
+ error != base::PLATFORM_FILE_ERROR_NOT_FOUND)
+ return error;
+ if (info.is_directory)
+ return base::PLATFORM_FILE_ERROR_INVALID_OPERATION;
+ if (error == base::PLATFORM_FILE_ERROR_NOT_FOUND) {
+ error = NativeFileUtil::GetFileInfo(dest_path.DirName(), &info);
+ if (error != base::PLATFORM_FILE_OK)
+ return error;
+ if (!info.is_directory)
+ return base::PLATFORM_FILE_ERROR_NOT_FOUND;
+ }
+
if (copy) {
- if (file_util::CopyFile(src_path,
- dest_path))
+ if (file_util::CopyFile(src_path, dest_path))
return base::PLATFORM_FILE_OK;
} else {
- DCHECK(!file_util::DirectoryExists(src_path));
if (file_util::Move(src_path, dest_path))
return base::PLATFORM_FILE_OK;
}
@@ -232,17 +247,13 @@ PlatformFileError NativeFileUtil::DeleteFile(const FilePath& path) {
return base::PLATFORM_FILE_OK;
}
-PlatformFileError NativeFileUtil::DeleteSingleDirectory(const FilePath& path) {
+PlatformFileError NativeFileUtil::DeleteDirectory(const FilePath& path) {
if (!file_util::PathExists(path))
return base::PLATFORM_FILE_ERROR_NOT_FOUND;
- if (!file_util::DirectoryExists(path)) {
- // TODO(dmikurube): Check if this error code is appropriate.
+ if (!file_util::DirectoryExists(path))
return base::PLATFORM_FILE_ERROR_NOT_A_DIRECTORY;
- }
- if (!file_util::IsDirectoryEmpty(path)) {
- // TODO(dmikurube): Check if this error code is appropriate.
+ if (!file_util::IsDirectoryEmpty(path))
return base::PLATFORM_FILE_ERROR_NOT_EMPTY;
- }
if (!file_util::Delete(path, false))
return base::PLATFORM_FILE_ERROR_FAILED;
return base::PLATFORM_FILE_OK;