diff options
author | dbeam@chromium.org <dbeam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-08 05:46:20 +0000 |
---|---|---|
committer | dbeam@chromium.org <dbeam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-08 05:46:20 +0000 |
commit | 9e66a9b94a40eeeeb52c47c83990b0766e1b7ceb (patch) | |
tree | 0818f910c522fb5bda00cab55412201251db32f7 /net | |
parent | ad5b14e00b36aab6e2b2d6aba8477a5dd9a11998 (diff) | |
download | chromium_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.cc | 44 | ||||
-rw-r--r-- | net/base/directory_lister.h | 4 | ||||
-rw-r--r-- | net/base/directory_lister_unittest.cc | 18 | ||||
-rw-r--r-- | net/disk_cache/block_files_unittest.cc | 3 | ||||
-rw-r--r-- | net/disk_cache/cache_util_posix.cc | 12 | ||||
-rw-r--r-- | net/disk_cache/simple/simple_index.cc | 19 | ||||
-rw-r--r-- | net/tools/dump_cache/dump_files.cc | 7 | ||||
-rw-r--r-- | net/tools/quic/quic_in_memory_cache.cc | 8 | ||||
-rw-r--r-- | net/url_request/url_request_file_dir_job.cc | 26 |
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(); |