diff options
author | kinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-23 15:13:08 +0000 |
---|---|---|
committer | kinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-23 15:13:08 +0000 |
commit | bab213be76cfdc0c8fb631c5b1b04359f625aef2 (patch) | |
tree | 555b24aa5a66622d368e6af402c6293ad7d46c8b /webkit/fileapi/native_file_util.cc | |
parent | f5b8d69a846c57729d5374cdbb0c258f8a3cb1d4 (diff) | |
download | chromium_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.cc | 39 |
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; |