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/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=" +