summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authordbeam@chromium.org <dbeam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-08 05:46:20 +0000
committerdbeam@chromium.org <dbeam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-08 05:46:20 +0000
commit9e66a9b94a40eeeeb52c47c83990b0766e1b7ceb (patch)
tree0818f910c522fb5bda00cab55412201251db32f7 /net
parentad5b14e00b36aab6e2b2d6aba8477a5dd9a11998 (diff)
downloadchromium_src-9e66a9b94a40eeeeb52c47c83990b0766e1b7ceb.zip
chromium_src-9e66a9b94a40eeeeb52c47c83990b0766e1b7ceb.tar.gz
chromium_src-9e66a9b94a40eeeeb52c47c83990b0766e1b7ceb.tar.bz2
Revert 198820 "Move FileEnumerator to its own file, do some refa..."
Broke both windows clobber and official builders' compile with this error: 771>Link: 771> Creating library ..\..\..\build\Release\lib\gcp_portmon64.lib and object ..\..\..\build\Release\lib\gcp_portmon64.exp 771>base.lib(path_service.obj) : fatalerror LNK1112: module machine type 'X86' conflicts with target machine type 'x64' 771> 771>Build FAILED. > Move FileEnumerator to its own file, do some refactoring. > > It creates a class FileInfo to contain the details rather than using a platform-specific typedef. This allows the accessors GetName, GetSize, etc. to be moved directly to this class (previously they were static helpers on the FileEnumerator class) which makes a bunch of code much cleaner. It also gives reasonable getting and initialization which the previous version lacked. > > BUG=175002 > R=rvargas@chromium.org > > Review URL: https://codereview.chromium.org/13165005 TBR=brettw@chromium.org Review URL: https://codereview.chromium.org/14824006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@198850 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net')
-rw-r--r--net/base/directory_lister.cc44
-rw-r--r--net/base/directory_lister.h4
-rw-r--r--net/base/directory_lister_unittest.cc18
-rw-r--r--net/disk_cache/block_files_unittest.cc3
-rw-r--r--net/disk_cache/cache_util_posix.cc12
-rw-r--r--net/disk_cache/simple/simple_index.cc19
-rw-r--r--net/tools/dump_cache/dump_files.cc7
-rw-r--r--net/tools/quic/quic_in_memory_cache.cc8
-rw-r--r--net/url_request/url_request_file_dir_job.cc26
9 files changed, 81 insertions, 60 deletions
diff --git a/net/base/directory_lister.cc b/net/base/directory_lister.cc
index 2f7e473..c01289e 100644
--- a/net/base/directory_lister.cc
+++ b/net/base/directory_lister.cc
@@ -9,7 +9,6 @@
#include "base/bind.h"
#include "base/file_util.h"
-#include "base/files/file_enumerator.h"
#include "base/i18n/file_util_icu.h"
#include "base/message_loop.h"
#include "base/threading/thread_restrictions.h"
@@ -32,35 +31,47 @@ bool IsDotDot(const base::FilePath& path) {
bool CompareAlphaDirsFirst(const DirectoryLister::DirectoryListerData& a,
const DirectoryLister::DirectoryListerData& b) {
// Parent directory before all else.
- if (IsDotDot(a.info.GetName()))
+ if (IsDotDot(file_util::FileEnumerator::GetFilename(a.info)))
return true;
- if (IsDotDot(b.info.GetName()))
+ if (IsDotDot(file_util::FileEnumerator::GetFilename(b.info)))
return false;
// Directories before regular files.
- bool a_is_directory = a.info.IsDirectory();
- bool b_is_directory = b.info.IsDirectory();
+ bool a_is_directory = file_util::FileEnumerator::IsDirectory(a.info);
+ bool b_is_directory = file_util::FileEnumerator::IsDirectory(b.info);
if (a_is_directory != b_is_directory)
return a_is_directory;
- return file_util::LocaleAwareCompareFilenames(a.info.GetName(),
- b.info.GetName());
+ return file_util::LocaleAwareCompareFilenames(
+ file_util::FileEnumerator::GetFilename(a.info),
+ file_util::FileEnumerator::GetFilename(b.info));
}
bool CompareDate(const DirectoryLister::DirectoryListerData& a,
const DirectoryLister::DirectoryListerData& b) {
// Parent directory before all else.
- if (IsDotDot(a.info.GetName()))
+ if (IsDotDot(file_util::FileEnumerator::GetFilename(a.info)))
return true;
- if (IsDotDot(b.info.GetName()))
+ if (IsDotDot(file_util::FileEnumerator::GetFilename(b.info)))
return false;
// Directories before regular files.
- bool a_is_directory = a.info.IsDirectory();
- bool b_is_directory = b.info.IsDirectory();
+ bool a_is_directory = file_util::FileEnumerator::IsDirectory(a.info);
+ bool b_is_directory = file_util::FileEnumerator::IsDirectory(b.info);
if (a_is_directory != b_is_directory)
return a_is_directory;
- return a.info.GetLastModifiedTime() > b.info.GetLastModifiedTime();
+#if defined(OS_POSIX)
+ return a.info.stat.st_mtime > b.info.stat.st_mtime;
+#elif defined(OS_WIN)
+ if (a.info.ftLastWriteTime.dwHighDateTime ==
+ b.info.ftLastWriteTime.dwHighDateTime) {
+ return a.info.ftLastWriteTime.dwLowDateTime >
+ b.info.ftLastWriteTime.dwLowDateTime;
+ } else {
+ return a.info.ftLastWriteTime.dwHighDateTime >
+ b.info.ftLastWriteTime.dwHighDateTime;
+ }
+#endif
}
// Comparator for sorting find result by paths. This uses the locale-aware
@@ -150,17 +161,18 @@ void DirectoryLister::Core::StartInternal() {
return;
}
- int types = base::FileEnumerator::FILES | base::FileEnumerator::DIRECTORIES;
+ int types = file_util::FileEnumerator::FILES |
+ file_util::FileEnumerator::DIRECTORIES;
if (!recursive_)
- types |= base::FileEnumerator::INCLUDE_DOT_DOT;
+ types |= file_util::FileEnumerator::INCLUDE_DOT_DOT;
- base::FileEnumerator file_enum(dir_, recursive_, types);
+ file_util::FileEnumerator file_enum(dir_, recursive_, types);
base::FilePath path;
std::vector<DirectoryListerData> file_data;
while (lister_ && !(path = file_enum.Next()).empty()) {
DirectoryListerData data;
- data.info = file_enum.GetInfo();
+ file_enum.GetFindInfo(&data.info);
data.path = path;
file_data.push_back(data);
diff --git a/net/base/directory_lister.h b/net/base/directory_lister.h
index e8de0ab..999b857 100644
--- a/net/base/directory_lister.h
+++ b/net/base/directory_lister.h
@@ -7,7 +7,7 @@
#include <vector>
-#include "base/files/file_enumerator.h"
+#include "base/file_util.h"
#include "base/files/file_path.h"
#include "base/memory/ref_counted.h"
#include "base/message_loop_proxy.h"
@@ -26,7 +26,7 @@ class NET_EXPORT DirectoryLister {
public:
// Represents one file found.
struct DirectoryListerData {
- base::FileEnumerator::FileInfo info;
+ file_util::FileEnumerator::FindInfo info;
base::FilePath path;
};
diff --git a/net/base/directory_lister_unittest.cc b/net/base/directory_lister_unittest.cc
index bc4cb3a..b088c8e 100644
--- a/net/base/directory_lister_unittest.cc
+++ b/net/base/directory_lister_unittest.cc
@@ -5,7 +5,6 @@
#include <list>
#include <utility>
-#include "base/file_util.h"
#include "base/files/file_path.h"
#include "base/files/scoped_temp_dir.h"
#include "base/i18n/file_util_icu.h"
@@ -64,17 +63,18 @@ class ListerDelegate : public DirectoryLister::DirectoryListerDelegate {
current < file_list_.size();
previous++, current++) {
// Directories should come before files.
- if (file_list_[previous].IsDirectory() &&
- !file_list_[current].IsDirectory()) {
+ if (file_util::FileEnumerator::IsDirectory(file_list_[previous]) &&
+ !file_util::FileEnumerator::IsDirectory(file_list_[current])) {
continue;
}
EXPECT_NE(FILE_PATH_LITERAL(".."),
- file_list_[current].GetName().BaseName().value());
- EXPECT_EQ(file_list_[previous].IsDirectory(),
- file_list_[current].IsDirectory());
+ file_util::FileEnumerator::GetFilename(
+ file_list_[current]).BaseName().value());
+ EXPECT_EQ(file_util::FileEnumerator::IsDirectory(file_list_[previous]),
+ file_util::FileEnumerator::IsDirectory(file_list_[current]));
EXPECT_TRUE(file_util::LocaleAwareCompareFilenames(
- file_list_[previous].GetName(),
- file_list_[current].GetName()));
+ file_util::FileEnumerator::GetFilename(file_list_[previous]),
+ file_util::FileEnumerator::GetFilename(file_list_[current])));
}
}
}
@@ -87,7 +87,7 @@ class ListerDelegate : public DirectoryLister::DirectoryListerDelegate {
int error_;
bool recursive_;
bool quit_loop_after_each_file_;
- std::vector<base::FileEnumerator::FileInfo> file_list_;
+ std::vector<file_util::FileEnumerator::FindInfo> file_list_;
std::vector<base::FilePath> paths_;
};
diff --git a/net/disk_cache/block_files_unittest.cc b/net/disk_cache/block_files_unittest.cc
index fa7c5db..781c69b 100644
--- a/net/disk_cache/block_files_unittest.cc
+++ b/net/disk_cache/block_files_unittest.cc
@@ -3,7 +3,6 @@
// found in the LICENSE file.
#include "base/file_util.h"
-#include "base/files/file_enumerator.h"
#include "net/disk_cache/block_files.h"
#include "net/disk_cache/disk_cache.h"
#include "net/disk_cache/disk_cache_test_base.h"
@@ -16,7 +15,7 @@ namespace {
// Returns the number of files in this folder.
int NumberOfFiles(const base::FilePath& path) {
- base::FileEnumerator iter(path, false, base::FileEnumerator::FILES);
+ file_util::FileEnumerator iter(path, false, file_util::FileEnumerator::FILES);
int count = 0;
for (base::FilePath file = iter.Next(); !file.value().empty();
file = iter.Next()) {
diff --git a/net/disk_cache/cache_util_posix.cc b/net/disk_cache/cache_util_posix.cc
index ffd8107..3cc9f3b 100644
--- a/net/disk_cache/cache_util_posix.cc
+++ b/net/disk_cache/cache_util_posix.cc
@@ -5,7 +5,6 @@
#include "net/disk_cache/cache_util.h"
#include "base/file_util.h"
-#include "base/files/file_enumerator.h"
#include "base/logging.h"
#include "base/string_util.h"
@@ -23,8 +22,9 @@ bool MoveCache(const base::FilePath& from_path, const base::FilePath& to_path) {
LOG(ERROR) << "Unable to create destination cache directory.";
return false;
}
- base::FileEnumerator iter(from_path, false /* not recursive */,
- base::FileEnumerator::DIRECTORIES | base::FileEnumerator::FILES);
+ file_util::FileEnumerator iter(from_path, false /* not recursive */,
+ file_util::FileEnumerator::DIRECTORIES |
+ file_util::FileEnumerator::FILES);
for (base::FilePath name = iter.Next(); !name.value().empty();
name = iter.Next()) {
base::FilePath destination = to_path.Append(name.BaseName());
@@ -40,9 +40,9 @@ bool MoveCache(const base::FilePath& from_path, const base::FilePath& to_path) {
}
void DeleteCache(const base::FilePath& path, bool remove_folder) {
- base::FileEnumerator iter(path,
- /* recursive */ false,
- base::FileEnumerator::FILES);
+ file_util::FileEnumerator iter(path,
+ /* recursive */ false,
+ file_util::FileEnumerator::FILES);
for (base::FilePath file = iter.Next(); !file.value().empty();
file = iter.Next()) {
if (!file_util::Delete(file, /* recursive */ false)) {
diff --git a/net/disk_cache/simple/simple_index.cc b/net/disk_cache/simple/simple_index.cc
index eb56a63..7effb1b 100644
--- a/net/disk_cache/simple/simple_index.cc
+++ b/net/disk_cache/simple/simple_index.cc
@@ -9,7 +9,6 @@
#include "base/bind.h"
#include "base/bind_helpers.h"
#include "base/file_util.h"
-#include "base/files/file_enumerator.h"
#include "base/logging.h"
#include "base/message_loop.h"
#include "base/metrics/histogram.h"
@@ -448,6 +447,7 @@ void SimpleIndex::InitializeInternal(
// static
scoped_ptr<SimpleIndex::EntrySet> SimpleIndex::RestoreFromDisk(
const base::FilePath& index_filename) {
+ using file_util::FileEnumerator;
LOG(INFO) << "Simple Cache Index is being restored from disk.";
file_util::Delete(index_filename, /* recursive = */ false);
@@ -459,10 +459,10 @@ scoped_ptr<SimpleIndex::EntrySet> SimpleIndex::RestoreFromDisk(
const int kFileSuffixLenght = std::string("_0").size();
const base::FilePath::StringType file_pattern = FILE_PATH_LITERAL("*_[0-2]");
- base::FileEnumerator enumerator(index_filename.DirName(),
- false /* recursive */,
- base::FileEnumerator::FILES,
- file_pattern);
+ FileEnumerator enumerator(index_filename.DirName(),
+ false /* recursive */,
+ FileEnumerator::FILES,
+ file_pattern);
for (base::FilePath file_path = enumerator.Next(); !file_path.empty();
file_path = enumerator.Next()) {
const base::FilePath::StringType base_name = file_path.BaseName().value();
@@ -480,17 +480,18 @@ scoped_ptr<SimpleIndex::EntrySet> SimpleIndex::RestoreFromDisk(
continue;
}
- base::FileEnumerator::FileInfo find_info = enumerator.GetInfo();
+ FileEnumerator::FindInfo find_info = {};
+ enumerator.GetFindInfo(&find_info);
base::Time last_used_time;
#if defined(OS_POSIX)
// For POSIX systems, a last access time is available. However, it's not
// guaranteed to be more accurate than mtime. It is no worse though.
- last_used_time = base::Time::FromTimeT(find_info.stat().st_atime);
+ last_used_time = base::Time::FromTimeT(find_info.stat.st_atime);
#endif
if (last_used_time.is_null())
- last_used_time = find_info.GetLastModifiedTime();
+ last_used_time = FileEnumerator::GetLastModifiedTime(find_info);
- int64 file_size = find_info.GetSize();
+ int64 file_size = FileEnumerator::GetFilesize(find_info);
EntrySet::iterator it = index_file_entries->find(hash_key);
if (it == index_file_entries->end()) {
InsertInEntrySet(EntryMetadata(hash_key, last_used_time, file_size),
diff --git a/net/tools/dump_cache/dump_files.cc b/net/tools/dump_cache/dump_files.cc
index 061634bc..b43ca04 100644
--- a/net/tools/dump_cache/dump_files.cc
+++ b/net/tools/dump_cache/dump_files.cc
@@ -14,7 +14,6 @@
#include <string>
#include "base/file_util.h"
-#include "base/files/file_enumerator.h"
#include "base/format_macros.h"
#include "base/message_loop.h"
#include "net/base/file_stream.h"
@@ -340,9 +339,9 @@ int DumpHeaders(const base::FilePath& input_path) {
disk_cache::CacheAddr stats_addr = 0;
DumpIndexHeader(index_name, &stats_addr);
- base::FileEnumerator iter(input_path, false,
- base::FileEnumerator::FILES,
- FILE_PATH_LITERAL("data_*"));
+ file_util::FileEnumerator iter(input_path, false,
+ file_util::FileEnumerator::FILES,
+ FILE_PATH_LITERAL("data_*"));
for (base::FilePath file = iter.Next(); !file.empty(); file = iter.Next())
DumpBlockHeader(file);
diff --git a/net/tools/quic/quic_in_memory_cache.cc b/net/tools/quic/quic_in_memory_cache.cc
index 7a1906b..9d086e2 100644
--- a/net/tools/quic/quic_in_memory_cache.cc
+++ b/net/tools/quic/quic_in_memory_cache.cc
@@ -5,11 +5,11 @@
#include "net/tools/quic/quic_in_memory_cache.h"
#include "base/file_util.h"
-#include "base/files/file_enumerator.h"
#include "base/stl_util.h"
using base::FilePath;
using base::StringPiece;
+using file_util::FileEnumerator;
using std::string;
// Specifies the directory used during QuicInMemoryCache
@@ -119,9 +119,9 @@ QuicInMemoryCache::QuicInMemoryCache() {
<< FLAGS_quic_in_memory_cache_dir;
FilePath directory(FLAGS_quic_in_memory_cache_dir);
- base::FileEnumerator file_list(directory,
- true,
- base::FileEnumerator::FILES);
+ FileEnumerator file_list(directory,
+ true,
+ FileEnumerator::FILES);
FilePath file = file_list.Next();
while (!file.empty()) {
diff --git a/net/url_request/url_request_file_dir_job.cc b/net/url_request/url_request_file_dir_job.cc
index 7add3a0..421c62a 100644
--- a/net/url_request/url_request_file_dir_job.cc
+++ b/net/url_request/url_request_file_dir_job.cc
@@ -116,17 +116,27 @@ void URLRequestFileDirJob::OnListFile(
}
#if defined(OS_WIN)
- std::string raw_bytes; // Empty on Windows means UTF-8 encoded name.
+ int64 size = (static_cast<unsigned __int64>(data.info.nFileSizeHigh) << 32) |
+ data.info.nFileSizeLow;
+
+ // Note that we should not convert ftLastWriteTime to the local time because
+ // ICU's datetime formatting APIs expect time in UTC and take into account
+ // the timezone before formatting.
+ data_.append(GetDirectoryListingEntry(
+ data.info.cFileName,
+ std::string(),
+ ((data.info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0),
+ size,
+ base::Time::FromFileTime(data.info.ftLastWriteTime)));
#elif defined(OS_POSIX)
// TOOD(jungshik): The same issue as for the directory name.
- const std::string& raw_bytes = data.info.GetName().value();
-#endif
data_.append(GetDirectoryListingEntry(
- data.info.GetName().LossyDisplayName(),
- raw_bytes,
- data.info.IsDirectory(),
- data.info.GetSize(),
- data.info.GetLastModifiedTime()));
+ WideToUTF16(base::SysNativeMBToWide(data.info.filename)),
+ data.info.filename,
+ S_ISDIR(data.info.stat.st_mode),
+ data.info.stat.st_size,
+ base::Time::FromTimeT(data.info.stat.st_mtime)));
+#endif
// TODO(darin): coalesce more?
CompleteRead();