Convert base::file_util to use File instead of PlatformFile.
BUG=322664
R=brettw@chromium.org
TBR=darin@chromium.org
Review URL: https://codereview.chromium.org/101143006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@243235 0039d316-1c4b-4281-b951-d872f2087c98
CrOS-Libchrome-Original-Commit: 54124ed0423cd16e594535fdd9e779f82235fa1a
diff --git a/base/file_util.cc b/base/file_util.cc
index 1575a07..e44f713 100644
--- a/base/file_util.cc
+++ b/base/file_util.cc
@@ -166,7 +166,7 @@
}
bool GetFileSize(const FilePath& file_path, int64* file_size) {
- PlatformFileInfo info;
+ File::Info info;
if (!GetFileInfo(file_path, &info))
return false;
*file_size = info.size;
@@ -176,22 +176,19 @@
bool TouchFile(const FilePath& path,
const Time& last_accessed,
const Time& last_modified) {
- int flags = PLATFORM_FILE_OPEN | PLATFORM_FILE_WRITE_ATTRIBUTES;
+ int flags = File::FLAG_OPEN | File::FLAG_WRITE_ATTRIBUTES;
#if defined(OS_WIN)
// On Windows, FILE_FLAG_BACKUP_SEMANTICS is needed to open a directory.
if (DirectoryExists(path))
- flags |= PLATFORM_FILE_BACKUP_SEMANTICS;
+ flags |= File::FLAG_BACKUP_SEMANTICS;
#endif // OS_WIN
- const PlatformFile file = CreatePlatformFile(path, flags, NULL, NULL);
- if (file != kInvalidPlatformFileValue) {
- bool result = TouchPlatformFile(file, last_accessed, last_modified);
- ClosePlatformFile(file);
- return result;
- }
+ File file(path, flags);
+ if (!file.IsValid())
+ return false;
- return false;
+ return file.SetTimes(last_accessed, last_modified);
}
bool CloseFile(FILE* file) {
diff --git a/base/file_util.h b/base/file_util.h
index 3f892e3..f841831 100644
--- a/base/file_util.h
+++ b/base/file_util.h
@@ -25,9 +25,9 @@
#include "base/base_export.h"
#include "base/basictypes.h"
+#include "base/files/file.h"
#include "base/files/file_path.h"
#include "base/memory/scoped_ptr.h"
-#include "base/platform_file.h"
#include "base/strings/string16.h"
#if defined(OS_POSIX)
@@ -93,7 +93,7 @@
// Returns false on failure and sets *error appropriately, if it is non-NULL.
BASE_EXPORT bool ReplaceFile(const FilePath& from_path,
const FilePath& to_path,
- PlatformFileError* error);
+ File::Error* error);
// Copies a single file. Use CopyDirectory to copy directories.
// This function fails if either path contains traversal components ('..').
@@ -256,7 +256,7 @@
// Returns true on success, leaving *error unchanged.
// Returns false on failure and sets *error appropriately, if it is non-NULL.
BASE_EXPORT bool CreateDirectoryAndGetError(const FilePath& full_path,
- PlatformFileError* error);
+ File::Error* error);
// Backward-compatible convenience method for the above.
BASE_EXPORT bool CreateDirectory(const FilePath& full_path);
@@ -292,7 +292,7 @@
BASE_EXPORT bool IsLink(const FilePath& file_path);
// Returns information about the given file path.
-BASE_EXPORT bool GetFileInfo(const FilePath& file_path, PlatformFileInfo* info);
+BASE_EXPORT bool GetFileInfo(const FilePath& file_path, File::Info* info);
// Sets the time of the last access and the time of the last modification.
BASE_EXPORT bool TouchFile(const FilePath& path,
@@ -311,7 +311,7 @@
// Reads the given number of bytes from the file into the buffer. Returns
// the number of read bytes, or -1 on error.
-BASE_EXPORT int ReadFile(const base::FilePath& filename, char* data, int size);
+BASE_EXPORT int ReadFile(const FilePath& filename, char* data, int size);
} // namespace base
diff --git a/base/file_util_posix.cc b/base/file_util_posix.cc
index ddcd5dd..3f0ee0a 100644
--- a/base/file_util_posix.cc
+++ b/base/file_util_posix.cc
@@ -244,12 +244,12 @@
bool ReplaceFile(const FilePath& from_path,
const FilePath& to_path,
- PlatformFileError* error) {
+ File::Error* error) {
ThreadRestrictions::AssertIOAllowed();
if (rename(from_path.value().c_str(), to_path.value().c_str()) == 0)
return true;
if (error)
- *error = ErrnoToPlatformFileError(errno);
+ *error = File::OSErrorToFileError(errno);
return false;
}
@@ -589,7 +589,7 @@
}
bool CreateDirectoryAndGetError(const FilePath& full_path,
- PlatformFileError* error) {
+ File::Error* error) {
ThreadRestrictions::AssertIOAllowed(); // For call to mkdir().
std::vector<FilePath> subpaths;
@@ -616,7 +616,7 @@
int saved_errno = errno;
if (!DirectoryExists(*i)) {
if (error)
- *error = ErrnoToPlatformFileError(saved_errno);
+ *error = File::OSErrorToFileError(saved_errno);
return false;
}
}
@@ -654,7 +654,7 @@
return false;
}
-bool GetFileInfo(const FilePath& file_path, PlatformFileInfo* results) {
+bool GetFileInfo(const FilePath& file_path, File::Info* results) {
stat_wrapper_t file_info;
#if defined(OS_ANDROID)
if (file_path.IsContentUri()) {
diff --git a/base/file_util_unittest.cc b/base/file_util_unittest.cc
index b65e171..96e144d 100644
--- a/base/file_util_unittest.cc
+++ b/base/file_util_unittest.cc
@@ -485,25 +485,6 @@
&win32_path));
}
-TEST_F(FileUtilTest, GetPlatformFileInfoForDirectory) {
- FilePath empty_dir = temp_dir_.path().Append(FPL("gpfi_test"));
- ASSERT_TRUE(CreateDirectory(empty_dir));
- win::ScopedHandle dir(
- ::CreateFile(empty_dir.value().c_str(),
- FILE_ALL_ACCESS,
- FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
- NULL,
- OPEN_EXISTING,
- FILE_FLAG_BACKUP_SEMANTICS, // Needed to open a directory.
- NULL));
- ASSERT_TRUE(dir.IsValid());
- PlatformFileInfo info;
- EXPECT_TRUE(GetPlatformFileInfo(dir.Get(), &info));
- EXPECT_TRUE(info.is_directory);
- EXPECT_FALSE(info.is_symbolic_link);
- EXPECT_EQ(0, info.size);
-}
-
TEST_F(FileUtilTest, CreateTemporaryFileInDirLongPathTest) {
// Test that CreateTemporaryFileInDir() creates a path and returns a long path
// if it is available. This test requires that:
@@ -1912,7 +1893,7 @@
&modification_time));
ASSERT_TRUE(TouchFile(foobar, access_time, modification_time));
- PlatformFileInfo file_info;
+ File::Info file_info;
ASSERT_TRUE(GetFileInfo(foobar, &file_info));
EXPECT_EQ(file_info.last_accessed.ToInternalValue(),
access_time.ToInternalValue());
diff --git a/base/files/file_unittest.cc b/base/files/file_unittest.cc
index 16eece1..224776f 100644
--- a/base/files/file_unittest.cc
+++ b/base/files/file_unittest.cc
@@ -374,3 +374,28 @@
EXPECT_EQ(std::string(buffer, buffer + kDataSize),
std::string(kData));
}
+
+#if defined(OS_WIN)
+TEST(File, GetInfoForDirectory) {
+ base::ScopedTempDir temp_dir;
+ ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
+ FilePath empty_dir = temp_dir.path().Append(FILE_PATH_LITERAL("gpfi_test"));
+ ASSERT_TRUE(CreateDirectory(empty_dir));
+
+ base::File dir(
+ ::CreateFile(empty_dir.value().c_str(),
+ FILE_ALL_ACCESS,
+ FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
+ NULL,
+ OPEN_EXISTING,
+ FILE_FLAG_BACKUP_SEMANTICS, // Needed to open a directory.
+ NULL));
+ ASSERT_TRUE(dir.IsValid());
+
+ base::File::Info info;
+ EXPECT_TRUE(dir.GetInfo(&info));
+ EXPECT_TRUE(info.is_directory);
+ EXPECT_FALSE(info.is_symbolic_link);
+ EXPECT_EQ(0, info.size);
+}
+#endif // defined(OS_WIN)
diff --git a/base/files/file_util_proxy.cc b/base/files/file_util_proxy.cc
index 40cac11..8307234 100644
--- a/base/files/file_util_proxy.cc
+++ b/base/files/file_util_proxy.cc
@@ -7,6 +7,7 @@
#include "base/bind.h"
#include "base/bind_helpers.h"
#include "base/file_util.h"
+#include "base/files/file.h"
#include "base/location.h"
#include "base/message_loop/message_loop_proxy.h"
#include "base/task_runner.h"
@@ -111,7 +112,8 @@
error_ = PLATFORM_FILE_ERROR_NOT_FOUND;
return;
}
- if (!GetFileInfo(file_path, &file_info_))
+ // TODO(rvargas): switch this file to base::File.
+ if (!GetFileInfo(file_path, reinterpret_cast<File::Info*>(&file_info_)))
error_ = PLATFORM_FILE_ERROR_FAILED;
}
diff --git a/base/files/file_util_proxy_unittest.cc b/base/files/file_util_proxy_unittest.cc
index 17c7a3f..762d92b 100644
--- a/base/files/file_util_proxy_unittest.cc
+++ b/base/files/file_util_proxy_unittest.cc
@@ -225,7 +225,7 @@
TEST_F(FileUtilProxyTest, GetFileInfo_File) {
// Setup.
ASSERT_EQ(4, file_util::WriteFile(test_path(), "test", 4));
- PlatformFileInfo expected_info;
+ File::Info expected_info;
GetFileInfo(test_path(), &expected_info);
// Run.
@@ -248,7 +248,7 @@
TEST_F(FileUtilProxyTest, GetFileInfo_Directory) {
// Setup.
ASSERT_TRUE(base::CreateDirectory(test_path()));
- PlatformFileInfo expected_info;
+ File::Info expected_info;
GetFileInfo(test_path(), &expected_info);
// Run.
@@ -341,7 +341,7 @@
MessageLoop::current()->Run();
EXPECT_EQ(PLATFORM_FILE_OK, error_);
- PlatformFileInfo info;
+ File::Info info;
GetFileInfo(test_path(), &info);
// The returned values may only have the seconds precision, so we cast
@@ -356,7 +356,7 @@
// Setup.
const char kTestData[] = "0123456789";
ASSERT_EQ(10, file_util::WriteFile(test_path(), kTestData, 10));
- PlatformFileInfo info;
+ File::Info info;
GetFileInfo(test_path(), &info);
ASSERT_EQ(10, info.size);
@@ -383,7 +383,7 @@
// Setup.
const char kTestData[] = "9876543210";
ASSERT_EQ(10, file_util::WriteFile(test_path(), kTestData, 10));
- PlatformFileInfo info;
+ File::Info info;
GetFileInfo(test_path(), &info);
ASSERT_EQ(10, info.size);
diff --git a/base/files/important_file_writer.cc b/base/files/important_file_writer.cc
index 261c987..9cbbd73 100644
--- a/base/files/important_file_writer.cc
+++ b/base/files/important_file_writer.cc
@@ -17,6 +17,7 @@
#include "base/bind.h"
#include "base/critical_closure.h"
#include "base/file_util.h"
+#include "base/files/file.h"
#include "base/files/file_path.h"
#include "base/logging.h"
#include "base/metrics/histogram.h"
@@ -63,25 +64,18 @@
return false;
}
- int flags = PLATFORM_FILE_OPEN | PLATFORM_FILE_WRITE;
- PlatformFile tmp_file =
- CreatePlatformFile(tmp_file_path, flags, NULL, NULL);
- if (tmp_file == kInvalidPlatformFileValue) {
+ File tmp_file(tmp_file_path, File::FLAG_OPEN | File::FLAG_WRITE);
+ if (!tmp_file.IsValid()) {
LogFailure(path, FAILED_OPENING, "could not open temporary file");
return false;
}
// If this happens in the wild something really bad is going on.
CHECK_LE(data.length(), static_cast<size_t>(kint32max));
- int bytes_written = WritePlatformFile(
- tmp_file, 0, data.data(), static_cast<int>(data.length()));
- FlushPlatformFile(tmp_file); // Ignore return value.
-
- if (!ClosePlatformFile(tmp_file)) {
- LogFailure(path, FAILED_CLOSING, "failed to close temporary file");
- base::DeleteFile(tmp_file_path, false);
- return false;
- }
+ int bytes_written = tmp_file.Write(0, data.data(),
+ static_cast<int>(data.length()));
+ tmp_file.Flush(); // Ignore return value.
+ tmp_file.Close();
if (bytes_written < static_cast<int>(data.length())) {
LogFailure(path, FAILED_WRITING, "error writing, bytes_written=" +
diff --git a/base/nix/mime_util_xdg.cc b/base/nix/mime_util_xdg.cc
index dd2c7eb..215a4d3 100644
--- a/base/nix/mime_util_xdg.cc
+++ b/base/nix/mime_util_xdg.cc
@@ -387,7 +387,7 @@
bool CheckDirExistsAndGetMtime(const FilePath& dir, Time* last_modified) {
if (!DirectoryExists(dir))
return false;
- PlatformFileInfo file_info;
+ File::Info file_info;
if (!GetFileInfo(dir, &file_info))
return false;
*last_modified = file_info.last_modified;
diff --git a/base/sys_info_chromeos.cc b/base/sys_info_chromeos.cc
index 7cf6975..4f32f9b 100644
--- a/base/sys_info_chromeos.cc
+++ b/base/sys_info_chromeos.cc
@@ -7,6 +7,7 @@
#include "base/basictypes.h"
#include "base/environment.h"
#include "base/file_util.h"
+#include "base/files/file.h"
#include "base/files/file_path.h"
#include "base/lazy_instance.h"
#include "base/strings/string_number_conversions.h"
@@ -71,7 +72,7 @@
ThreadRestrictions::ScopedAllowIO allow_io;
FilePath path(kLinuxStandardBaseReleaseFile);
ReadFileToString(path, &lsb_release);
- PlatformFileInfo fileinfo;
+ File::Info fileinfo;
if (GetFileInfo(path, &fileinfo))
lsb_release_time_ = fileinfo.creation_time;
}