summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-07 22:51:31 +0000
committerbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-07 22:51:31 +0000
commitfcb524ead399b591b4e6587c2fbe712e45126320 (patch)
tree77da32bc4e3ab916de166e0f9e52e0ad61629efa
parent3afef01773fcfe63523ebede8ad5a4dfed10088b (diff)
downloadchromium_src-fcb524ead399b591b4e6587c2fbe712e45126320.zip
chromium_src-fcb524ead399b591b4e6587c2fbe712e45126320.tar.gz
chromium_src-fcb524ead399b591b4e6587c2fbe712e45126320.tar.bz2
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 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@198820 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--base/base.gypi5
-rw-r--r--base/file_util.cc29
-rw-r--r--base/file_util.h114
-rw-r--r--base/file_util_posix.cc178
-rw-r--r--base/file_util_unittest.cc42
-rw-r--r--base/file_util_win.cc133
-rw-r--r--base/files/file_enumerator.cc21
-rw-r--r--base/files/file_enumerator.h156
-rw-r--r--base/files/file_enumerator_posix.cc160
-rw-r--r--base/files/file_enumerator_win.cc149
-rw-r--r--base/test/test_file_util_posix.cc3
-rw-r--r--chrome/browser/browsing_data/browsing_data_local_storage_helper_browsertest.cc5
-rw-r--r--chrome/browser/chromeos/camera_detector.cc6
-rw-r--r--chrome/browser/chromeos/contacts/contact_database_unittest.cc5
-rw-r--r--chrome/browser/chromeos/drive/file_cache.cc13
-rw-r--r--chrome/browser/chromeos/drive/file_cache_metadata.cc6
-rw-r--r--chrome/browser/chromeos/drive/file_cache_unittest.cc17
-rw-r--r--chrome/browser/chromeos/extensions/wallpaper_private_api.cc9
-rw-r--r--chrome/browser/chromeos/login/wallpaper_manager.cc4
-rw-r--r--chrome/browser/chromeos/policy/app_pack_updater.cc14
-rw-r--r--chrome/browser/component_updater/pepper_flash_component_installer.cc5
-rw-r--r--chrome/browser/component_updater/pnacl/pnacl_component_installer.cc5
-rw-r--r--chrome/browser/component_updater/swiftshader_component_installer.cc5
-rw-r--r--chrome/browser/component_updater/widevine_cdm_component_installer.cc5
-rw-r--r--chrome/browser/extensions/api/developer_private/developer_private_api.cc6
-rw-r--r--chrome/browser/extensions/api/serial/serial_port_enumerator_posix.cc8
-rw-r--r--chrome/browser/extensions/api/storage/settings_backend.cc11
-rw-r--r--chrome/browser/extensions/extension_service_unittest.cc5
-rw-r--r--chrome/browser/extensions/external_pref_loader.cc5
-rw-r--r--chrome/browser/extensions/sandboxed_unpacker_unittest.cc7
-rw-r--r--chrome/browser/file_select_helper.cc3
-rw-r--r--chrome/browser/history/expire_history_backend.cc5
-rw-r--r--chrome/browser/history/text_database_manager.cc5
-rw-r--r--chrome/browser/importer/firefox2_importer.cc7
-rw-r--r--chrome/browser/importer/firefox3_importer.cc4
-rw-r--r--chrome/browser/importer/ie_importer.cc5
-rw-r--r--chrome/browser/policy/config_dir_policy_loader.cc9
-rw-r--r--chrome/browser/policy/policy_browsertest.cc10
-rw-r--r--chrome/browser/printing/printing_layout_browsertest.cc5
-rw-r--r--chrome/browser/profiles/profile_manager.cc13
-rw-r--r--chrome/browser/profiles/profile_shortcut_manager_win.cc9
-rw-r--r--chrome/browser/shell_integration_win.cc5
-rw-r--r--chrome/browser/ui/pdf/pdf_browsertest.cc5
-rw-r--r--chrome/browser/ui/webui/chromeos/drive_internals_ui.cc25
-rw-r--r--chrome/browser/ui/webui/feedback_ui.cc6
-rw-r--r--chrome/common/extensions/api/i18n/default_locale_handler.cc5
-rw-r--r--chrome/common/extensions/extension_file_util.cc20
-rw-r--r--chrome/common/extensions/extension_l10n_util.cc7
-rw-r--r--chrome/common/extensions/unpacker.cc7
-rw-r--r--chrome/installer/setup/setup_util.cc12
-rw-r--r--chrome/installer/setup/uninstall.cc16
-rw-r--r--chrome/installer/test/alternate_version_generator.cc4
-rw-r--r--chrome/installer/util/delete_after_reboot_helper.cc9
-rw-r--r--chrome/installer/util/duplicate_tree_detector.cc6
-rw-r--r--chrome/installer/util/installer_state.cc5
-rw-r--r--chrome/installer/util/installer_state_unittest.cc5
-rw-r--r--chrome/installer/util/shell_util.cc5
-rw-r--r--chrome/installer/util/shell_util_unittest.cc5
-rw-r--r--chrome/test/automation/proxy_launcher.cc14
-rw-r--r--chrome/test/chromedriver/chrome/zip.cc6
-rw-r--r--chrome/test/chromedriver/util.cc6
-rw-r--r--chrome/test/gpu/gpu_pixel_browsertest.cc9
-rw-r--r--chrome/test/mini_installer_test/installer_path_provider.cc37
-rw-r--r--chrome/test/perf/page_cycler_test.cc9
-rw-r--r--chrome/test/perf/startup_test.cc1
-rw-r--r--chrome/test/reliability/automated_ui_tests.cc7
-rw-r--r--chrome/test/reliability/page_load_test.cc19
-rw-r--r--chrome/test/ui/ui_test.cc9
-rw-r--r--chrome/test/webdriver/webdriver_util.cc6
-rw-r--r--chrome/tools/profiles/generate_profile.cc5
-rw-r--r--chrome_frame/test/reliability/page_load_test.cc13
-rw-r--r--cloud_print/virtual_driver/win/port_monitor/port_monitor.cc8
-rw-r--r--cloud_print/virtual_driver/win/virtual_driver.gypi1
-rw-r--r--components/autofill/browser/data_driven_test.cc9
-rw-r--r--content/browser/gpu/gpu_pixel_browsertest.cc9
-rw-r--r--content/browser/indexed_db/indexed_db_context_impl.cc5
-rw-r--r--content/browser/renderer_host/pepper/pepper_flash_file_message_filter.cc16
-rw-r--r--content/browser/storage_partition_impl_map.cc15
-rw-r--r--content/browser/zygote_host/zygote_host_impl_linux.cc4
-rw-r--r--content/gpu/gpu_info_collector_win.cc5
-rw-r--r--content/test/image_decoder_test.cc7
-rw-r--r--gpu/tools/compositor_model_bench/compositor_model_bench.cc4
-rw-r--r--media/video/capture/linux/video_capture_device_linux.cc12
-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
-rw-r--r--remoting/host/policy_hack/policy_watcher_linux.cc11
-rw-r--r--third_party/leveldatabase/env_chromium.cc5
-rw-r--r--third_party/zlib/google/zip.cc6
-rw-r--r--third_party/zlib/google/zip_unittest.cc6
-rw-r--r--tools/android/md5sum/md5sum.cc5
-rw-r--r--tools/heapcheck/suppressions.txt6
-rw-r--r--tools/valgrind/tsan/suppressions.txt4
-rw-r--r--webkit/database/database_tracker.cc9
-rw-r--r--webkit/dom_storage/dom_storage_context.cc14
-rw-r--r--webkit/fileapi/file_system_database_test_helper.cc11
-rw-r--r--webkit/fileapi/file_system_directory_database.cc11
-rw-r--r--webkit/fileapi/file_system_origin_database.cc7
-rw-r--r--webkit/fileapi/isolated_file_util_unittest.cc16
-rw-r--r--webkit/fileapi/local_file_util.cc16
-rw-r--r--webkit/fileapi/native_file_util.cc16
-rw-r--r--webkit/plugins/npapi/plugin_list_mac.mm7
-rw-r--r--webkit/plugins/npapi/plugin_list_posix.cc7
109 files changed, 974 insertions, 913 deletions
diff --git a/base/base.gypi b/base/base.gypi
index 7194f24..be869ce 100644
--- a/base/base.gypi
+++ b/base/base.gypi
@@ -159,6 +159,10 @@
'files/dir_reader_fallback.h',
'files/dir_reader_linux.h',
'files/dir_reader_posix.h',
+ 'files/file_enumerator.cc',
+ 'files/file_enumerator.h',
+ 'files/file_enumerator_posix.cc',
+ 'files/file_enumerator_win.cc',
'files/file_path.cc',
'files/file_path.h',
'files/file_path_watcher.cc',
@@ -629,6 +633,7 @@
'file_util.cc',
'file_util_posix.cc',
'file_util_proxy.cc',
+ 'files/file_enumerator_posix.cc',
'files/file_path_watcher_kqueue.cc',
'memory/shared_memory_posix.cc',
'native_library_posix.cc',
diff --git a/base/file_util.cc b/base/file_util.cc
index e76c5c2..8cdf75b 100644
--- a/base/file_util.cc
+++ b/base/file_util.cc
@@ -11,6 +11,7 @@
#include <fstream>
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/logging.h"
#include "base/string_util.h"
@@ -18,6 +19,7 @@
#include "base/strings/string_piece.h"
#include "base/utf_string_conversions.h"
+using base::FileEnumerator;
using base::FilePath;
namespace {
@@ -165,7 +167,7 @@ bool ReadFileToString(const FilePath& path, std::string* contents) {
bool IsDirectoryEmpty(const FilePath& dir_path) {
FileEnumerator files(dir_path, false,
FileEnumerator::FILES | FileEnumerator::DIRECTORIES);
- if (files.Next().value().empty())
+ if (files.Next().empty())
return true;
return false;
}
@@ -262,30 +264,9 @@ int GetUniquePathNumber(
int64 ComputeDirectorySize(const FilePath& root_path) {
int64 running_size = 0;
FileEnumerator file_iter(root_path, true, FileEnumerator::FILES);
- for (FilePath current = file_iter.Next(); !current.empty();
- current = file_iter.Next()) {
- FileEnumerator::FindInfo info;
- file_iter.GetFindInfo(&info);
-#if defined(OS_WIN)
- LARGE_INTEGER li = { info.nFileSizeLow, info.nFileSizeHigh };
- running_size += li.QuadPart;
-#else
- running_size += info.stat.st_size;
-#endif
- }
+ while (!file_iter.Next().empty())
+ running_size += file_iter.GetInfo().GetSize();
return running_size;
}
-///////////////////////////////////////////////
-// FileEnumerator
-//
-// Note: the main logic is in file_util_<platform>.cc
-
-bool FileEnumerator::ShouldSkip(const FilePath& path) {
- FilePath::StringType basename = path.BaseName().value();
- return basename == FILE_PATH_LITERAL(".") ||
- (basename == FILE_PATH_LITERAL("..") &&
- !(INCLUDE_DOT_DOT & file_type_));
-}
-
} // namespace
diff --git a/base/file_util.h b/base/file_util.h
index 4ffd05b..b9bb6eb 100644
--- a/base/file_util.h
+++ b/base/file_util.h
@@ -20,7 +20,6 @@
#include <stdio.h>
#include <set>
-#include <stack>
#include <string>
#include <vector>
@@ -117,9 +116,9 @@ BASE_EXPORT bool CopyFileUnsafe(const base::FilePath& from_path,
// Copies the given path, and optionally all subdirectories and their contents
// as well.
-// If there are files existing under to_path, always overwrite.
-// Returns true if successful, false otherwise.
-// Don't use wildcards on the names, it may stop working without notice.
+//
+// If there are files existing under to_path, always overwrite. Returns true
+// if successful, false otherwise. Wildcards on the names are not supported.
//
// If you only need to copy a file use CopyFile, it's faster.
BASE_EXPORT bool CopyDirectory(const base::FilePath& from_path,
@@ -422,113 +421,6 @@ class ScopedFDClose {
typedef scoped_ptr_malloc<int, ScopedFDClose> ScopedFD;
#endif // OS_POSIX
-// A class for enumerating the files in a provided path. The order of the
-// results is not guaranteed.
-//
-// DO NOT USE FROM THE MAIN THREAD of your application unless it is a test
-// program where latency does not matter. This class is blocking.
-class BASE_EXPORT FileEnumerator {
- public:
-#if defined(OS_WIN)
- typedef WIN32_FIND_DATA FindInfo;
-#elif defined(OS_POSIX)
- typedef struct {
- struct stat stat;
- std::string filename;
- } FindInfo;
-#endif
-
- enum FileType {
- FILES = 1 << 0,
- DIRECTORIES = 1 << 1,
- INCLUDE_DOT_DOT = 1 << 2,
-#if defined(OS_POSIX)
- SHOW_SYM_LINKS = 1 << 4,
-#endif
- };
-
- // |root_path| is the starting directory to search for. It may or may not end
- // in a slash.
- //
- // If |recursive| is true, this will enumerate all matches in any
- // subdirectories matched as well. It does a breadth-first search, so all
- // files in one directory will be returned before any files in a
- // subdirectory.
- //
- // |file_type|, a bit mask of FileType, specifies whether the enumerator
- // should match files, directories, or both.
- //
- // |pattern| is an optional pattern for which files to match. This
- // works like shell globbing. For example, "*.txt" or "Foo???.doc".
- // However, be careful in specifying patterns that aren't cross platform
- // since the underlying code uses OS-specific matching routines. In general,
- // Windows matching is less featureful than others, so test there first.
- // If unspecified, this will match all files.
- // NOTE: the pattern only matches the contents of root_path, not files in
- // recursive subdirectories.
- // TODO(erikkay): Fix the pattern matching to work at all levels.
- FileEnumerator(const base::FilePath& root_path,
- bool recursive,
- int file_type);
- FileEnumerator(const base::FilePath& root_path,
- bool recursive,
- int file_type,
- const base::FilePath::StringType& pattern);
- ~FileEnumerator();
-
- // Returns an empty string if there are no more results.
- base::FilePath Next();
-
- // Write the file info into |info|.
- void GetFindInfo(FindInfo* info);
-
- // Looks inside a FindInfo and determines if it's a directory.
- static bool IsDirectory(const FindInfo& info);
-
- static base::FilePath GetFilename(const FindInfo& find_info);
- static int64 GetFilesize(const FindInfo& find_info);
- static base::Time GetLastModifiedTime(const FindInfo& find_info);
-
- private:
- // Returns true if the given path should be skipped in enumeration.
- bool ShouldSkip(const base::FilePath& path);
-
-
-#if defined(OS_WIN)
- // True when find_data_ is valid.
- bool has_find_data_;
- WIN32_FIND_DATA find_data_;
- HANDLE find_handle_;
-#elif defined(OS_POSIX)
- struct DirectoryEntryInfo {
- base::FilePath filename;
- struct stat stat;
- };
-
- // Read the filenames in source into the vector of DirectoryEntryInfo's
- static bool ReadDirectory(std::vector<DirectoryEntryInfo>* entries,
- const base::FilePath& source, bool show_links);
-
- // The files in the current directory
- std::vector<DirectoryEntryInfo> directory_entries_;
-
- // The next entry to use from the directory_entries_ vector
- size_t current_directory_entry_;
-#endif
-
- base::FilePath root_path_;
- bool recursive_;
- int file_type_;
- base::FilePath::StringType pattern_; // Empty when we want to find
- // everything.
-
- // A stack that keeps track of which subdirectories we still need to
- // enumerate in the breadth-first search.
- std::stack<base::FilePath> pending_paths_;
-
- DISALLOW_COPY_AND_ASSIGN(FileEnumerator);
-};
-
#if defined(OS_LINUX)
// Broad categories of file systems as returned by statfs() on Linux.
enum FileSystemType {
diff --git a/base/file_util_posix.cc b/base/file_util_posix.cc
index 8b36812..68516e4 100644
--- a/base/file_util_posix.cc
+++ b/base/file_util_posix.cc
@@ -7,7 +7,6 @@
#include <dirent.h>
#include <errno.h>
#include <fcntl.h>
-#include <fnmatch.h>
#include <libgen.h>
#include <limits.h>
#include <stdio.h>
@@ -32,6 +31,7 @@
#include <fstream>
#include "base/basictypes.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/logging.h"
#include "base/memory/scoped_ptr.h"
@@ -58,6 +58,7 @@
#include "base/chromeos/chromeos_version.h"
#endif
+using base::FileEnumerator;
using base::FilePath;
using base::MakeAbsoluteFilePath;
@@ -190,10 +191,7 @@ bool Delete(const FilePath& path, bool recursive) {
FileEnumerator::SHOW_SYM_LINKS);
for (FilePath current = traversal.Next(); success && !current.empty();
current = traversal.Next()) {
- FileEnumerator::FindInfo info;
- traversal.GetFindInfo(&info);
-
- if (S_ISDIR(info.stat.st_mode))
+ if (traversal.GetInfo().IsDirectory())
directories.push(current.value());
else
success = (unlink(current.value().c_str()) == 0);
@@ -237,14 +235,13 @@ bool ReplaceFile(const FilePath& from_path, const FilePath& to_path) {
return (rename(from_path.value().c_str(), to_path.value().c_str()) == 0);
}
-bool CopyDirectory(const FilePath& from_path,
- const FilePath& to_path,
+bool CopyDirectory(const base::FilePath& from_path,
+ const base::FilePath& to_path,
bool recursive) {
base::ThreadRestrictions::AssertIOAllowed();
// Some old callers of CopyDirectory want it to support wildcards.
// After some discussion, we decided to fix those callers.
// Break loudly here if anyone tries to do this.
- // TODO(evanm): remove this once we're sure it's ok.
DCHECK(to_path.value().find('*') == std::string::npos);
DCHECK(from_path.value().find('*') == std::string::npos);
@@ -281,9 +278,9 @@ bool CopyDirectory(const FilePath& from_path,
// We have to mimic windows behavior here. |to_path| may not exist yet,
// start the loop with |to_path|.
- FileEnumerator::FindInfo info;
+ struct stat from_stat;
FilePath current = from_path;
- if (stat(from_path.value().c_str(), &info.stat) < 0) {
+ if (stat(from_path.value().c_str(), &from_stat) < 0) {
DLOG(ERROR) << "CopyDirectory() couldn't stat source directory: "
<< from_path.value() << " errno = " << errno;
success = false;
@@ -299,7 +296,7 @@ bool CopyDirectory(const FilePath& from_path,
// The Windows version of this function assumes that non-recursive calls
// will always have a directory for from_path.
- DCHECK(recursive || S_ISDIR(info.stat.st_mode));
+ DCHECK(recursive || S_ISDIR(from_stat.st_mode));
while (success && !current.empty()) {
// current is the source path, including from_path, so append
@@ -312,14 +309,14 @@ bool CopyDirectory(const FilePath& from_path,
}
}
- if (S_ISDIR(info.stat.st_mode)) {
- if (mkdir(target_path.value().c_str(), info.stat.st_mode & 01777) != 0 &&
+ if (S_ISDIR(from_stat.st_mode)) {
+ if (mkdir(target_path.value().c_str(), from_stat.st_mode & 01777) != 0 &&
errno != EEXIST) {
DLOG(ERROR) << "CopyDirectory() couldn't create directory: "
<< target_path.value() << " errno = " << errno;
success = false;
}
- } else if (S_ISREG(info.stat.st_mode)) {
+ } else if (S_ISREG(from_stat.st_mode)) {
if (!CopyFile(current, target_path)) {
DLOG(ERROR) << "CopyDirectory() couldn't create file: "
<< target_path.value();
@@ -331,7 +328,8 @@ bool CopyDirectory(const FilePath& from_path,
}
current = traversal.Next();
- traversal.GetFindInfo(&info);
+ if (!current.empty())
+ from_stat = traversal.GetInfo().stat();
}
return success;
@@ -684,156 +682,6 @@ bool SetCurrentDirectory(const FilePath& path) {
return !ret;
}
-///////////////////////////////////////////////
-// FileEnumerator
-
-FileEnumerator::FileEnumerator(const FilePath& root_path,
- bool recursive,
- int file_type)
- : current_directory_entry_(0),
- root_path_(root_path),
- recursive_(recursive),
- file_type_(file_type) {
- // INCLUDE_DOT_DOT must not be specified if recursive.
- DCHECK(!(recursive && (INCLUDE_DOT_DOT & file_type_)));
- pending_paths_.push(root_path);
-}
-
-FileEnumerator::FileEnumerator(const FilePath& root_path,
- bool recursive,
- int file_type,
- const FilePath::StringType& pattern)
- : current_directory_entry_(0),
- root_path_(root_path),
- recursive_(recursive),
- file_type_(file_type),
- pattern_(root_path.Append(pattern).value()) {
- // INCLUDE_DOT_DOT must not be specified if recursive.
- DCHECK(!(recursive && (INCLUDE_DOT_DOT & file_type_)));
- // The Windows version of this code appends the pattern to the root_path,
- // potentially only matching against items in the top-most directory.
- // Do the same here.
- if (pattern.empty())
- pattern_ = FilePath::StringType();
- pending_paths_.push(root_path);
-}
-
-FileEnumerator::~FileEnumerator() {
-}
-
-FilePath FileEnumerator::Next() {
- ++current_directory_entry_;
-
- // While we've exhausted the entries in the current directory, do the next
- while (current_directory_entry_ >= directory_entries_.size()) {
- if (pending_paths_.empty())
- return FilePath();
-
- root_path_ = pending_paths_.top();
- root_path_ = root_path_.StripTrailingSeparators();
- pending_paths_.pop();
-
- std::vector<DirectoryEntryInfo> entries;
- if (!ReadDirectory(&entries, root_path_, file_type_ & SHOW_SYM_LINKS))
- continue;
-
- directory_entries_.clear();
- current_directory_entry_ = 0;
- for (std::vector<DirectoryEntryInfo>::const_iterator
- i = entries.begin(); i != entries.end(); ++i) {
- FilePath full_path = root_path_.Append(i->filename);
- if (ShouldSkip(full_path))
- continue;
-
- if (pattern_.size() &&
- fnmatch(pattern_.c_str(), full_path.value().c_str(), FNM_NOESCAPE))
- continue;
-
- if (recursive_ && S_ISDIR(i->stat.st_mode))
- pending_paths_.push(full_path);
-
- if ((S_ISDIR(i->stat.st_mode) && (file_type_ & DIRECTORIES)) ||
- (!S_ISDIR(i->stat.st_mode) && (file_type_ & FILES)))
- directory_entries_.push_back(*i);
- }
- }
-
- return root_path_.Append(directory_entries_[current_directory_entry_
- ].filename);
-}
-
-void FileEnumerator::GetFindInfo(FindInfo* info) {
- DCHECK(info);
-
- if (current_directory_entry_ >= directory_entries_.size())
- return;
-
- DirectoryEntryInfo* cur_entry = &directory_entries_[current_directory_entry_];
- memcpy(&(info->stat), &(cur_entry->stat), sizeof(info->stat));
- info->filename.assign(cur_entry->filename.value());
-}
-
-// static
-bool FileEnumerator::IsDirectory(const FindInfo& info) {
- return S_ISDIR(info.stat.st_mode);
-}
-
-// static
-FilePath FileEnumerator::GetFilename(const FindInfo& find_info) {
- return FilePath(find_info.filename);
-}
-
-// static
-int64 FileEnumerator::GetFilesize(const FindInfo& find_info) {
- return find_info.stat.st_size;
-}
-
-// static
-base::Time FileEnumerator::GetLastModifiedTime(const FindInfo& find_info) {
- return base::Time::FromTimeT(find_info.stat.st_mtime);
-}
-
-bool FileEnumerator::ReadDirectory(std::vector<DirectoryEntryInfo>* entries,
- const FilePath& source, bool show_links) {
- base::ThreadRestrictions::AssertIOAllowed();
- DIR* dir = opendir(source.value().c_str());
- if (!dir)
- return false;
-
-#if !defined(OS_LINUX) && !defined(OS_MACOSX) && !defined(OS_BSD) && \
- !defined(OS_SOLARIS) && !defined(OS_ANDROID)
- #error Port warning: depending on the definition of struct dirent, \
- additional space for pathname may be needed
-#endif
-
- struct dirent dent_buf;
- struct dirent* dent;
- while (readdir_r(dir, &dent_buf, &dent) == 0 && dent) {
- DirectoryEntryInfo info;
- info.filename = FilePath(dent->d_name);
-
- FilePath full_name = source.Append(dent->d_name);
- int ret;
- if (show_links)
- ret = lstat(full_name.value().c_str(), &info.stat);
- else
- ret = stat(full_name.value().c_str(), &info.stat);
- if (ret < 0) {
- // Print the stat() error message unless it was ENOENT and we're
- // following symlinks.
- if (!(errno == ENOENT && !show_links)) {
- DPLOG(ERROR) << "Couldn't stat "
- << source.Append(dent->d_name).value();
- }
- memset(&info.stat, 0, sizeof(info.stat));
- }
- entries->push_back(info);
- }
-
- closedir(dir);
- return true;
-}
-
bool NormalizeFilePath(const FilePath& path, FilePath* normalized_path) {
FilePath real_path_result;
if (!RealPath(path, &real_path_result))
diff --git a/base/file_util_unittest.cc b/base/file_util_unittest.cc
index 5cfc677..593ae81 100644
--- a/base/file_util_unittest.cc
+++ b/base/file_util_unittest.cc
@@ -18,6 +18,7 @@
#include "base/base_paths.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/files/scoped_temp_dir.h"
#include "base/path_service.h"
@@ -34,6 +35,7 @@
// This macro helps avoid wrapped lines in the test structs.
#define FPL(x) FILE_PATH_LITERAL(x)
+using base::FileEnumerator;
using base::FilePath;
namespace {
@@ -134,7 +136,7 @@ void ChangePosixFilePermissions(const FilePath& path,
const wchar_t bogus_content[] = L"I'm cannon fodder.";
const int FILES_AND_DIRECTORIES =
- file_util::FileEnumerator::FILES | file_util::FileEnumerator::DIRECTORIES;
+ FileEnumerator::FILES | FileEnumerator::DIRECTORIES;
// file_util winds up using autoreleased objects on the Mac, so this needs
// to be a PlatformTest
@@ -152,7 +154,7 @@ class FileUtilTest : public PlatformTest {
// interface to query whether a given file is present.
class FindResultCollector {
public:
- explicit FindResultCollector(file_util::FileEnumerator& enumerator) {
+ explicit FindResultCollector(FileEnumerator& enumerator) {
FilePath cur_file;
while (!(cur_file = enumerator.Next()).value().empty()) {
FilePath::StringType path = cur_file.value();
@@ -917,8 +919,7 @@ TEST_F(FileUtilTest, ChangeDirectoryPermissionsAndEnumerate) {
EXPECT_FALSE(mode & file_util::FILE_PERMISSION_USER_MASK);
// Make sure the file in the directory can't be enumerated.
- file_util::FileEnumerator f1(subdir_path, true,
- file_util::FileEnumerator::FILES);
+ FileEnumerator f1(subdir_path, true, FileEnumerator::FILES);
EXPECT_TRUE(file_util::PathExists(subdir_path));
FindResultCollector c1(f1);
EXPECT_EQ(c1.size(), 0);
@@ -933,8 +934,7 @@ TEST_F(FileUtilTest, ChangeDirectoryPermissionsAndEnumerate) {
mode & file_util::FILE_PERMISSION_USER_MASK);
// Make sure the file in the directory can be enumerated.
- file_util::FileEnumerator f2(subdir_path, true,
- file_util::FileEnumerator::FILES);
+ FileEnumerator f2(subdir_path, true, FileEnumerator::FILES);
FindResultCollector c2(f2);
EXPECT_TRUE(c2.HasFile(file_name));
EXPECT_EQ(c2.size(), 1);
@@ -1824,13 +1824,13 @@ TEST_F(FileUtilTest, DetectDirectoryTest) {
TEST_F(FileUtilTest, FileEnumeratorTest) {
// Test an empty directory.
- file_util::FileEnumerator f0(temp_dir_.path(), true, FILES_AND_DIRECTORIES);
+ FileEnumerator f0(temp_dir_.path(), true, FILES_AND_DIRECTORIES);
EXPECT_EQ(f0.Next().value(), FILE_PATH_LITERAL(""));
EXPECT_EQ(f0.Next().value(), FILE_PATH_LITERAL(""));
// Test an empty directory, non-recursively, including "..".
- file_util::FileEnumerator f0_dotdot(temp_dir_.path(), false,
- FILES_AND_DIRECTORIES | file_util::FileEnumerator::INCLUDE_DOT_DOT);
+ FileEnumerator f0_dotdot(temp_dir_.path(), false,
+ FILES_AND_DIRECTORIES | FileEnumerator::INCLUDE_DOT_DOT);
EXPECT_EQ(temp_dir_.path().Append(FILE_PATH_LITERAL("..")).value(),
f0_dotdot.Next().value());
EXPECT_EQ(FILE_PATH_LITERAL(""),
@@ -1857,8 +1857,7 @@ TEST_F(FileUtilTest, FileEnumeratorTest) {
FilePath file2_abs = temp_dir_.path().Append(FILE_PATH_LITERAL("file2.txt"));
// Only enumerate files.
- file_util::FileEnumerator f1(temp_dir_.path(), true,
- file_util::FileEnumerator::FILES);
+ FileEnumerator f1(temp_dir_.path(), true, FileEnumerator::FILES);
FindResultCollector c1(f1);
EXPECT_TRUE(c1.HasFile(file1));
EXPECT_TRUE(c1.HasFile(file2_abs));
@@ -1867,8 +1866,7 @@ TEST_F(FileUtilTest, FileEnumeratorTest) {
EXPECT_EQ(c1.size(), 4);
// Only enumerate directories.
- file_util::FileEnumerator f2(temp_dir_.path(), true,
- file_util::FileEnumerator::DIRECTORIES);
+ FileEnumerator f2(temp_dir_.path(), true, FileEnumerator::DIRECTORIES);
FindResultCollector c2(f2);
EXPECT_TRUE(c2.HasFile(dir1));
EXPECT_TRUE(c2.HasFile(dir2));
@@ -1876,17 +1874,17 @@ TEST_F(FileUtilTest, FileEnumeratorTest) {
EXPECT_EQ(c2.size(), 3);
// Only enumerate directories non-recursively.
- file_util::FileEnumerator f2_non_recursive(
- temp_dir_.path(), false, file_util::FileEnumerator::DIRECTORIES);
+ FileEnumerator f2_non_recursive(
+ temp_dir_.path(), false, FileEnumerator::DIRECTORIES);
FindResultCollector c2_non_recursive(f2_non_recursive);
EXPECT_TRUE(c2_non_recursive.HasFile(dir1));
EXPECT_TRUE(c2_non_recursive.HasFile(dir2));
EXPECT_EQ(c2_non_recursive.size(), 2);
// Only enumerate directories, non-recursively, including "..".
- file_util::FileEnumerator f2_dotdot(temp_dir_.path(), false,
- file_util::FileEnumerator::DIRECTORIES |
- file_util::FileEnumerator::INCLUDE_DOT_DOT);
+ FileEnumerator f2_dotdot(temp_dir_.path(), false,
+ FileEnumerator::DIRECTORIES |
+ FileEnumerator::INCLUDE_DOT_DOT);
FindResultCollector c2_dotdot(f2_dotdot);
EXPECT_TRUE(c2_dotdot.HasFile(dir1));
EXPECT_TRUE(c2_dotdot.HasFile(dir2));
@@ -1895,7 +1893,7 @@ TEST_F(FileUtilTest, FileEnumeratorTest) {
EXPECT_EQ(c2_dotdot.size(), 3);
// Enumerate files and directories.
- file_util::FileEnumerator f3(temp_dir_.path(), true, FILES_AND_DIRECTORIES);
+ FileEnumerator f3(temp_dir_.path(), true, FILES_AND_DIRECTORIES);
FindResultCollector c3(f3);
EXPECT_TRUE(c3.HasFile(dir1));
EXPECT_TRUE(c3.HasFile(dir2));
@@ -1907,7 +1905,7 @@ TEST_F(FileUtilTest, FileEnumeratorTest) {
EXPECT_EQ(c3.size(), 7);
// Non-recursive operation.
- file_util::FileEnumerator f4(temp_dir_.path(), false, FILES_AND_DIRECTORIES);
+ FileEnumerator f4(temp_dir_.path(), false, FILES_AND_DIRECTORIES);
FindResultCollector c4(f4);
EXPECT_TRUE(c4.HasFile(dir2));
EXPECT_TRUE(c4.HasFile(dir2));
@@ -1916,7 +1914,7 @@ TEST_F(FileUtilTest, FileEnumeratorTest) {
EXPECT_EQ(c4.size(), 4);
// Enumerate with a pattern.
- file_util::FileEnumerator f5(temp_dir_.path(), true, FILES_AND_DIRECTORIES,
+ FileEnumerator f5(temp_dir_.path(), true, FILES_AND_DIRECTORIES,
FILE_PATH_LITERAL("dir*"));
FindResultCollector c5(f5);
EXPECT_TRUE(c5.HasFile(dir1));
@@ -1928,7 +1926,7 @@ TEST_F(FileUtilTest, FileEnumeratorTest) {
// Make sure the destructor closes the find handle while in the middle of a
// query to allow TearDown to delete the directory.
- file_util::FileEnumerator f6(temp_dir_.path(), true, FILES_AND_DIRECTORIES);
+ FileEnumerator f6(temp_dir_.path(), true, FILES_AND_DIRECTORIES);
EXPECT_FALSE(f6.Next().value().empty()); // Should have found something
// (we don't care what).
}
diff --git a/base/file_util_win.cc b/base/file_util_win.cc
index 964302a..b166322 100644
--- a/base/file_util_win.cc
+++ b/base/file_util_win.cc
@@ -595,139 +595,6 @@ bool SetCurrentDirectory(const FilePath& directory) {
return ret != 0;
}
-///////////////////////////////////////////////
-// FileEnumerator
-
-FileEnumerator::FileEnumerator(const FilePath& root_path,
- bool recursive,
- int file_type)
- : recursive_(recursive),
- file_type_(file_type),
- has_find_data_(false),
- find_handle_(INVALID_HANDLE_VALUE) {
- // INCLUDE_DOT_DOT must not be specified if recursive.
- DCHECK(!(recursive && (INCLUDE_DOT_DOT & file_type_)));
- memset(&find_data_, 0, sizeof(find_data_));
- pending_paths_.push(root_path);
-}
-
-FileEnumerator::FileEnumerator(const FilePath& root_path,
- bool recursive,
- int file_type,
- const FilePath::StringType& pattern)
- : recursive_(recursive),
- file_type_(file_type),
- has_find_data_(false),
- pattern_(pattern),
- find_handle_(INVALID_HANDLE_VALUE) {
- // INCLUDE_DOT_DOT must not be specified if recursive.
- DCHECK(!(recursive && (INCLUDE_DOT_DOT & file_type_)));
- memset(&find_data_, 0, sizeof(find_data_));
- pending_paths_.push(root_path);
-}
-
-FileEnumerator::~FileEnumerator() {
- if (find_handle_ != INVALID_HANDLE_VALUE)
- FindClose(find_handle_);
-}
-
-void FileEnumerator::GetFindInfo(FindInfo* info) {
- DCHECK(info);
-
- if (!has_find_data_)
- return;
-
- memcpy(info, &find_data_, sizeof(*info));
-}
-
-// static
-bool FileEnumerator::IsDirectory(const FindInfo& info) {
- return (info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0;
-}
-
-// static
-FilePath FileEnumerator::GetFilename(const FindInfo& find_info) {
- return FilePath(find_info.cFileName);
-}
-
-// static
-int64 FileEnumerator::GetFilesize(const FindInfo& find_info) {
- ULARGE_INTEGER size;
- size.HighPart = find_info.nFileSizeHigh;
- size.LowPart = find_info.nFileSizeLow;
- DCHECK_LE(size.QuadPart, std::numeric_limits<int64>::max());
- return static_cast<int64>(size.QuadPart);
-}
-
-// static
-base::Time FileEnumerator::GetLastModifiedTime(const FindInfo& find_info) {
- return base::Time::FromFileTime(find_info.ftLastWriteTime);
-}
-
-FilePath FileEnumerator::Next() {
- base::ThreadRestrictions::AssertIOAllowed();
-
- while (has_find_data_ || !pending_paths_.empty()) {
- if (!has_find_data_) {
- // The last find FindFirstFile operation is done, prepare a new one.
- root_path_ = pending_paths_.top();
- pending_paths_.pop();
-
- // Start a new find operation.
- FilePath src = root_path_;
-
- if (pattern_.empty())
- src = src.Append(L"*"); // No pattern = match everything.
- else
- src = src.Append(pattern_);
-
- find_handle_ = FindFirstFile(src.value().c_str(), &find_data_);
- has_find_data_ = true;
- } else {
- // Search for the next file/directory.
- if (!FindNextFile(find_handle_, &find_data_)) {
- FindClose(find_handle_);
- find_handle_ = INVALID_HANDLE_VALUE;
- }
- }
-
- if (INVALID_HANDLE_VALUE == find_handle_) {
- has_find_data_ = false;
-
- // This is reached when we have finished a directory and are advancing to
- // the next one in the queue. We applied the pattern (if any) to the files
- // in the root search directory, but for those directories which were
- // matched, we want to enumerate all files inside them. This will happen
- // when the handle is empty.
- pattern_ = FilePath::StringType();
-
- continue;
- }
-
- FilePath cur_file(find_data_.cFileName);
- if (ShouldSkip(cur_file))
- continue;
-
- // Construct the absolute filename.
- cur_file = root_path_.Append(find_data_.cFileName);
-
- if (find_data_.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
- if (recursive_) {
- // If |cur_file| is a directory, and we are doing recursive searching,
- // add it to pending_paths_ so we scan it after we finish scanning this
- // directory.
- pending_paths_.push(cur_file);
- }
- if (file_type_ & FileEnumerator::DIRECTORIES)
- return cur_file;
- } else if (file_type_ & FileEnumerator::FILES) {
- return cur_file;
- }
- }
-
- return FilePath();
-}
-
bool NormalizeFilePath(const FilePath& path, FilePath* real_path) {
base::ThreadRestrictions::AssertIOAllowed();
FilePath mapped_file;
diff --git a/base/files/file_enumerator.cc b/base/files/file_enumerator.cc
new file mode 100644
index 0000000..e49f465
--- /dev/null
+++ b/base/files/file_enumerator.cc
@@ -0,0 +1,21 @@
+// Copyright (c) 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/files/file_enumerator.h"
+
+#include "base/file_util.h"
+
+namespace base {
+
+FileEnumerator::FileInfo::~FileInfo() {
+}
+
+bool FileEnumerator::ShouldSkip(const FilePath& path) {
+ FilePath::StringType basename = path.BaseName().value();
+ return basename == FILE_PATH_LITERAL(".") ||
+ (basename == FILE_PATH_LITERAL("..") &&
+ !(INCLUDE_DOT_DOT & file_type_));
+}
+
+} // namespace base
diff --git a/base/files/file_enumerator.h b/base/files/file_enumerator.h
new file mode 100644
index 0000000..3834281
--- /dev/null
+++ b/base/files/file_enumerator.h
@@ -0,0 +1,156 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef BASE_FILES_FILE_ENUMERATOR_H_
+#define BASE_FILES_FILE_ENUMERATOR_H_
+
+#include <stack>
+#include <vector>
+
+#include "base/base_export.h"
+#include "base/basictypes.h"
+#include "base/files/file_path.h"
+#include "base/time.h"
+#include "build/build_config.h"
+
+#if defined(OS_WIN)
+#include <windows.h>
+#elif defined(OS_POSIX)
+#include <sys/stat.h>
+#include <unistd.h>
+#endif
+
+namespace base {
+
+// A class for enumerating the files in a provided path. The order of the
+// results is not guaranteed.
+//
+// This is blocking. Do not use on critical threads.
+//
+// Example:
+//
+// base::FileEnumerator enum(my_dir, false, base::FileEnumerator::FILES,
+// FILE_PATH_LITERAL("*.txt"));
+// for (base::FilePath name = enum.Next(); !name.empty(); name = enum.Next())
+// ...
+class BASE_EXPORT FileEnumerator {
+ public:
+ // Note: copy & assign supported.
+ class FileInfo {
+ public:
+ FileInfo();
+ ~FileInfo();
+
+ bool IsDirectory() const;
+
+ // The name of the file. This will not include any path information. This
+ // is in constrast to the value returned by FileEnumerator.Next() which
+ // includes the |root_path| passed into the FileEnumerator constructor.
+ FilePath GetName() const;
+
+ int64 GetSize() const;
+ Time GetLastModifiedTime() const;
+
+#if defined(OS_WIN)
+ const WIN32_FIND_DATA& find_data() const { return find_data_; }
+#elif defined(OS_POSIX)
+ const struct stat& stat() const { return stat_; }
+#endif
+
+ private:
+ friend class FileEnumerator;
+
+#if defined(OS_WIN)
+ WIN32_FIND_DATA find_data_;
+#elif defined(OS_POSIX)
+ struct stat stat_;
+ FilePath filename_;
+#endif
+ };
+
+ enum FileType {
+ FILES = 1 << 0,
+ DIRECTORIES = 1 << 1,
+ INCLUDE_DOT_DOT = 1 << 2,
+#if defined(OS_POSIX)
+ SHOW_SYM_LINKS = 1 << 4,
+#endif
+ };
+
+ // |root_path| is the starting directory to search for. It may or may not end
+ // in a slash.
+ //
+ // If |recursive| is true, this will enumerate all matches in any
+ // subdirectories matched as well. It does a breadth-first search, so all
+ // files in one directory will be returned before any files in a
+ // subdirectory.
+ //
+ // |file_type|, a bit mask of FileType, specifies whether the enumerator
+ // should match files, directories, or both.
+ //
+ // |pattern| is an optional pattern for which files to match. This
+ // works like shell globbing. For example, "*.txt" or "Foo???.doc".
+ // However, be careful in specifying patterns that aren't cross platform
+ // since the underlying code uses OS-specific matching routines. In general,
+ // Windows matching is less featureful than others, so test there first.
+ // If unspecified, this will match all files.
+ // NOTE: the pattern only matches the contents of root_path, not files in
+ // recursive subdirectories.
+ // TODO(erikkay): Fix the pattern matching to work at all levels.
+ FileEnumerator(const FilePath& root_path,
+ bool recursive,
+ int file_type);
+ FileEnumerator(const FilePath& root_path,
+ bool recursive,
+ int file_type,
+ const FilePath::StringType& pattern);
+ ~FileEnumerator();
+
+ // Returns the next file or an empty string if there are no more results.
+ //
+ // The returned path will incorporate the |root_path| passed in the
+ // constructor: "<root_path>/file_name.txt". If the |root_path| is absolute,
+ // then so will be the result of Next().
+ FilePath Next();
+
+ // Write the file info into |info|.
+ FileInfo GetInfo() const;
+
+ private:
+ // Returns true if the given path should be skipped in enumeration.
+ bool ShouldSkip(const FilePath& path);
+
+#if defined(OS_WIN)
+ // True when find_data_ is valid.
+ bool has_find_data_;
+ WIN32_FIND_DATA find_data_;
+ HANDLE find_handle_;
+#elif defined(OS_POSIX)
+
+ // Read the filenames in source into the vector of DirectoryEntryInfo's
+ static bool ReadDirectory(std::vector<FileInfo>* entries,
+ const FilePath& source, bool show_links);
+
+ // The files in the current directory
+ std::vector<FileInfo> directory_entries_;
+
+ // The next entry to use from the directory_entries_ vector
+ size_t current_directory_entry_;
+#endif
+
+ FilePath root_path_;
+ bool recursive_;
+ int file_type_;
+ FilePath::StringType pattern_; // Empty when we want to find everything.
+
+ // A stack that keeps track of which subdirectories we still need to
+ // enumerate in the breadth-first search.
+ std::stack<FilePath> pending_paths_;
+
+ DISALLOW_COPY_AND_ASSIGN(FileEnumerator);
+};
+
+} // namespace base
+
+#endif // BASE_FILES_FILE_ENUMERATOR_H_
diff --git a/base/files/file_enumerator_posix.cc b/base/files/file_enumerator_posix.cc
new file mode 100644
index 0000000..7533a24
--- /dev/null
+++ b/base/files/file_enumerator_posix.cc
@@ -0,0 +1,160 @@
+// Copyright (c) 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/files/file_enumerator.h"
+
+#include <dirent.h>
+#include <errno.h>
+#include <fnmatch.h>
+
+#include "base/logging.h"
+#include "base/threading/thread_restrictions.h"
+
+namespace base {
+
+// FileEnumerator::FileInfo ----------------------------------------------------
+
+FileEnumerator::FileInfo::FileInfo() {
+ memset(&stat_, 0, sizeof(stat_));
+}
+
+bool FileEnumerator::FileInfo::IsDirectory() const {
+ return S_ISDIR(stat_.st_mode);
+}
+
+FilePath FileEnumerator::FileInfo::GetName() const {
+ return filename_;
+}
+
+int64 FileEnumerator::FileInfo::GetSize() const {
+ return stat_.st_size;
+}
+
+base::Time FileEnumerator::FileInfo::GetLastModifiedTime() const {
+ return base::Time::FromTimeT(stat_.st_mtime);
+}
+
+// FileEnumerator --------------------------------------------------------------
+
+FileEnumerator::FileEnumerator(const FilePath& root_path,
+ bool recursive,
+ int file_type)
+ : current_directory_entry_(0),
+ root_path_(root_path),
+ recursive_(recursive),
+ file_type_(file_type) {
+ // INCLUDE_DOT_DOT must not be specified if recursive.
+ DCHECK(!(recursive && (INCLUDE_DOT_DOT & file_type_)));
+ pending_paths_.push(root_path);
+}
+
+FileEnumerator::FileEnumerator(const FilePath& root_path,
+ bool recursive,
+ int file_type,
+ const FilePath::StringType& pattern)
+ : current_directory_entry_(0),
+ root_path_(root_path),
+ recursive_(recursive),
+ file_type_(file_type),
+ pattern_(root_path.Append(pattern).value()) {
+ // INCLUDE_DOT_DOT must not be specified if recursive.
+ DCHECK(!(recursive && (INCLUDE_DOT_DOT & file_type_)));
+ // The Windows version of this code appends the pattern to the root_path,
+ // potentially only matching against items in the top-most directory.
+ // Do the same here.
+ if (pattern.empty())
+ pattern_ = FilePath::StringType();
+ pending_paths_.push(root_path);
+}
+
+FileEnumerator::~FileEnumerator() {
+}
+
+FilePath FileEnumerator::Next() {
+ ++current_directory_entry_;
+
+ // While we've exhausted the entries in the current directory, do the next
+ while (current_directory_entry_ >= directory_entries_.size()) {
+ if (pending_paths_.empty())
+ return FilePath();
+
+ root_path_ = pending_paths_.top();
+ root_path_ = root_path_.StripTrailingSeparators();
+ pending_paths_.pop();
+
+ std::vector<FileInfo> entries;
+ if (!ReadDirectory(&entries, root_path_, file_type_ & SHOW_SYM_LINKS))
+ continue;
+
+ directory_entries_.clear();
+ current_directory_entry_ = 0;
+ for (std::vector<FileInfo>::const_iterator i = entries.begin();
+ i != entries.end(); ++i) {
+ FilePath full_path = root_path_.Append(i->filename_);
+ if (ShouldSkip(full_path))
+ continue;
+
+ if (pattern_.size() &&
+ fnmatch(pattern_.c_str(), full_path.value().c_str(), FNM_NOESCAPE))
+ continue;
+
+ if (recursive_ && S_ISDIR(i->stat_.st_mode))
+ pending_paths_.push(full_path);
+
+ if ((S_ISDIR(i->stat_.st_mode) && (file_type_ & DIRECTORIES)) ||
+ (!S_ISDIR(i->stat_.st_mode) && (file_type_ & FILES)))
+ directory_entries_.push_back(*i);
+ }
+ }
+
+ return root_path_.Append(
+ directory_entries_[current_directory_entry_].filename_);
+}
+
+FileEnumerator::FileInfo FileEnumerator::GetInfo() const {
+ return directory_entries_[current_directory_entry_];
+}
+
+bool FileEnumerator::ReadDirectory(std::vector<FileInfo>* entries,
+ const FilePath& source, bool show_links) {
+ base::ThreadRestrictions::AssertIOAllowed();
+ DIR* dir = opendir(source.value().c_str());
+ if (!dir)
+ return false;
+
+#if !defined(OS_LINUX) && !defined(OS_MACOSX) && !defined(OS_BSD) && \
+ !defined(OS_SOLARIS) && !defined(OS_ANDROID)
+ #error Port warning: depending on the definition of struct dirent, \
+ additional space for pathname may be needed
+#endif
+
+ struct dirent dent_buf;
+ struct dirent* dent;
+ while (readdir_r(dir, &dent_buf, &dent) == 0 && dent) {
+ FileInfo info;
+ info.filename_ = FilePath(dent->d_name);
+
+ FilePath full_name = source.Append(dent->d_name);
+ int ret;
+ if (show_links)
+ ret = lstat(full_name.value().c_str(), &info.stat_);
+ else
+ ret = stat(full_name.value().c_str(), &info.stat_);
+ if (ret < 0) {
+ // Print the stat() error message unless it was ENOENT and we're
+ // following symlinks.
+ if (!(errno == ENOENT && !show_links)) {
+ DPLOG(ERROR) << "Couldn't stat "
+ << source.Append(dent->d_name).value();
+ }
+ memset(&info.stat_, 0, sizeof(info.stat_));
+ }
+ entries->push_back(info);
+ }
+
+ closedir(dir);
+ return true;
+}
+
+} // namespace base
diff --git a/base/files/file_enumerator_win.cc b/base/files/file_enumerator_win.cc
new file mode 100644
index 0000000..64c9845
--- /dev/null
+++ b/base/files/file_enumerator_win.cc
@@ -0,0 +1,149 @@
+// Copyright (c) 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/files/file_enumerator.h"
+
+#include <string.h>
+
+#include "base/logging.h"
+#include "base/threading/thread_restrictions.h"
+
+namespace base {
+
+// FileEnumerator::FileInfo ----------------------------------------------------
+
+FileEnumerator::FileInfo::FileInfo() {
+ memset(&find_data_, 0, sizeof(find_data_));
+}
+
+bool FileEnumerator::FileInfo::IsDirectory() const {
+ return (find_data_.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0;
+}
+
+FilePath FileEnumerator::FileInfo::GetName() const {
+ return FilePath(find_data_.cFileName);
+}
+
+int64 FileEnumerator::FileInfo::GetSize() const {
+ ULARGE_INTEGER size;
+ size.HighPart = find_data_.nFileSizeHigh;
+ size.LowPart = find_data_.nFileSizeLow;
+ DCHECK_LE(size.QuadPart, std::numeric_limits<int64>::max());
+ return static_cast<int64>(size.QuadPart);
+}
+
+base::Time FileEnumerator::FileInfo::GetLastModifiedTime() const {
+ return base::Time::FromFileTime(find_data_.ftLastWriteTime);
+}
+
+// FileEnumerator --------------------------------------------------------------
+
+FileEnumerator::FileEnumerator(const FilePath& root_path,
+ bool recursive,
+ int file_type)
+ : recursive_(recursive),
+ file_type_(file_type),
+ has_find_data_(false),
+ find_handle_(INVALID_HANDLE_VALUE) {
+ // INCLUDE_DOT_DOT must not be specified if recursive.
+ DCHECK(!(recursive && (INCLUDE_DOT_DOT & file_type_)));
+ memset(&find_data_, 0, sizeof(find_data_));
+ pending_paths_.push(root_path);
+}
+
+FileEnumerator::FileEnumerator(const FilePath& root_path,
+ bool recursive,
+ int file_type,
+ const FilePath::StringType& pattern)
+ : recursive_(recursive),
+ file_type_(file_type),
+ has_find_data_(false),
+ pattern_(pattern),
+ find_handle_(INVALID_HANDLE_VALUE) {
+ // INCLUDE_DOT_DOT must not be specified if recursive.
+ DCHECK(!(recursive && (INCLUDE_DOT_DOT & file_type_)));
+ memset(&find_data_, 0, sizeof(find_data_));
+ pending_paths_.push(root_path);
+}
+
+FileEnumerator::~FileEnumerator() {
+ if (find_handle_ != INVALID_HANDLE_VALUE)
+ FindClose(find_handle_);
+}
+
+FileEnumerator::FileInfo FileEnumerator::GetInfo() const {
+ if (!has_find_data_) {
+ NOTREACHED();
+ return FileInfo();
+ }
+ FileInfo ret;
+ memcpy(&ret.find_data_, &find_data_, sizeof(find_data_));
+ return ret;
+}
+
+FilePath FileEnumerator::Next() {
+ base::ThreadRestrictions::AssertIOAllowed();
+
+ while (has_find_data_ || !pending_paths_.empty()) {
+ if (!has_find_data_) {
+ // The last find FindFirstFile operation is done, prepare a new one.
+ root_path_ = pending_paths_.top();
+ pending_paths_.pop();
+
+ // Start a new find operation.
+ FilePath src = root_path_;
+
+ if (pattern_.empty())
+ src = src.Append(L"*"); // No pattern = match everything.
+ else
+ src = src.Append(pattern_);
+
+ find_handle_ = FindFirstFile(src.value().c_str(), &find_data_);
+ has_find_data_ = true;
+ } else {
+ // Search for the next file/directory.
+ if (!FindNextFile(find_handle_, &find_data_)) {
+ FindClose(find_handle_);
+ find_handle_ = INVALID_HANDLE_VALUE;
+ }
+ }
+
+ if (INVALID_HANDLE_VALUE == find_handle_) {
+ has_find_data_ = false;
+
+ // This is reached when we have finished a directory and are advancing to
+ // the next one in the queue. We applied the pattern (if any) to the files
+ // in the root search directory, but for those directories which were
+ // matched, we want to enumerate all files inside them. This will happen
+ // when the handle is empty.
+ pattern_ = FilePath::StringType();
+
+ continue;
+ }
+
+ FilePath cur_file(find_data_.cFileName);
+ if (ShouldSkip(cur_file))
+ continue;
+
+ // Construct the absolute filename.
+ cur_file = root_path_.Append(find_data_.cFileName);
+
+ if (find_data_.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
+ if (recursive_) {
+ // If |cur_file| is a directory, and we are doing recursive searching,
+ // add it to pending_paths_ so we scan it after we finish scanning this
+ // directory.
+ pending_paths_.push(cur_file);
+ }
+ if (file_type_ & FileEnumerator::DIRECTORIES)
+ return cur_file;
+ } else if (file_type_ & FileEnumerator::FILES) {
+ return cur_file;
+ }
+ }
+
+ return FilePath();
+}
+
+} // namespace base
diff --git a/base/test/test_file_util_posix.cc b/base/test/test_file_util_posix.cc
index 7c16cb18..d80a954 100644
--- a/base/test/test_file_util_posix.cc
+++ b/base/test/test_file_util_posix.cc
@@ -12,13 +12,12 @@
#include <string>
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/logging.h"
#include "base/string_util.h"
#include "base/utf_string_conversions.h"
-using base::MakeAbsoluteFilePath;
-
namespace file_util {
namespace {
diff --git a/chrome/browser/browsing_data/browsing_data_local_storage_helper_browsertest.cc b/chrome/browser/browsing_data/browsing_data_local_storage_helper_browsertest.cc
index b123b89..5b45199 100644
--- a/chrome/browser/browsing_data/browsing_data_local_storage_helper_browsertest.cc
+++ b/chrome/browser/browsing_data/browsing_data_local_storage_helper_browsertest.cc
@@ -9,6 +9,7 @@
#include "base/bind_helpers.h"
#include "base/callback.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/memory/ref_counted.h"
#include "base/test/thread_test_helper.h"
@@ -129,10 +130,10 @@ IN_PROC_BROWSER_TEST_F(BrowsingDataLocalStorageHelperTest, DeleteSingleFile) {
BrowserThread::GetBlockingPool()->FlushForTesting();
// Ensure the file has been deleted.
- file_util::FileEnumerator file_enumerator(
+ base::FileEnumerator file_enumerator(
GetLocalStoragePathForTestingProfile(),
false,
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator::FILES);
int num_files = 0;
for (base::FilePath file_path = file_enumerator.Next();
!file_path.empty();
diff --git a/chrome/browser/chromeos/camera_detector.cc b/chrome/browser/chromeos/camera_detector.cc
index e7fddb9..3d5d039 100644
--- a/chrome/browser/chromeos/camera_detector.cc
+++ b/chrome/browser/chromeos/camera_detector.cc
@@ -6,6 +6,7 @@
#include "base/bind.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/location.h"
#include "base/string_util.h"
#include "base/strings/string_split.h"
@@ -66,10 +67,9 @@ void CameraDetector::OnPresenceCheckDone(const base::Closure& callback,
bool CameraDetector::CheckPresence() {
// We do a quick check using udev database because opening each /dev/videoX
// device may trigger costly device initialization.
- using file_util::FileEnumerator;
- FileEnumerator file_enum(
+ base::FileEnumerator file_enum(
base::FilePath(kV4LSubsystemDir), false /* not recursive */,
- FileEnumerator::FILES | FileEnumerator::SHOW_SYM_LINKS);
+ base::FileEnumerator::FILES | base::FileEnumerator::SHOW_SYM_LINKS);
for (base::FilePath path = file_enum.Next(); !path.empty();
path = file_enum.Next()) {
std::string v4l_capabilities;
diff --git a/chrome/browser/chromeos/contacts/contact_database_unittest.cc b/chrome/browser/chromeos/contacts/contact_database_unittest.cc
index c32cad0..959d9eb 100644
--- a/chrome/browser/chromeos/contacts/contact_database_unittest.cc
+++ b/chrome/browser/chromeos/contacts/contact_database_unittest.cc
@@ -8,6 +8,7 @@
#include "base/bind.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/files/scoped_temp_dir.h"
#include "base/memory/scoped_ptr.h"
@@ -314,8 +315,8 @@ TEST_F(ContactDatabaseTest, FullAndIncrementalUpdates) {
TEST_F(ContactDatabaseTest, DeleteWhenCorrupt) {
DestroyDatabase();
// Overwrite all of the files in the database with a space character.
- file_util::FileEnumerator enumerator(
- database_path(), false, file_util::FileEnumerator::FILES);
+ base::FileEnumerator enumerator(
+ database_path(), false, base::FileEnumerator::FILES);
for (base::FilePath path = enumerator.Next(); !path.empty();
path = enumerator.Next()) {
file_util::WriteFile(path, " ", 1);
diff --git a/chrome/browser/chromeos/drive/file_cache.cc b/chrome/browser/chromeos/drive/file_cache.cc
index 6e312eb..dbbc40e 100644
--- a/chrome/browser/chromeos/drive/file_cache.cc
+++ b/chrome/browser/chromeos/drive/file_cache.cc
@@ -7,6 +7,7 @@
#include <vector>
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/logging.h"
#include "base/string_util.h"
#include "base/stringprintf.h"
@@ -62,10 +63,8 @@ bool InitCachePaths(const std::vector<base::FilePath>& cache_paths) {
// Do not remove recursively as we don't want to touch <gcache>/tmp/downloads,
// which is used for user initiated downloads like "Save As"
void RemoveAllFiles(const base::FilePath& directory) {
- using file_util::FileEnumerator;
-
- FileEnumerator enumerator(directory, false /* recursive */,
- FileEnumerator::FILES);
+ base::FileEnumerator enumerator(directory, false /* recursive */,
+ base::FileEnumerator::FILES);
for (base::FilePath file_path = enumerator.Next(); !file_path.empty();
file_path = enumerator.Next()) {
DVLOG(1) << "Removing " << file_path.value();
@@ -131,11 +130,9 @@ void DeleteFilesSelectively(const base::FilePath& path_to_delete_pattern,
// base name of |path_to_delete_pattern|.
// If a file is not |path_to_keep|, delete it.
bool success = true;
- file_util::FileEnumerator enumerator(
- path_to_delete_pattern.DirName(),
+ base::FileEnumerator enumerator(path_to_delete_pattern.DirName(),
false, // not recursive
- file_util::FileEnumerator::FILES |
- file_util::FileEnumerator::SHOW_SYM_LINKS,
+ base::FileEnumerator::FILES | base::FileEnumerator::SHOW_SYM_LINKS,
path_to_delete_pattern.BaseName().value());
for (base::FilePath current = enumerator.Next(); !current.empty();
current = enumerator.Next()) {
diff --git a/chrome/browser/chromeos/drive/file_cache_metadata.cc b/chrome/browser/chromeos/drive/file_cache_metadata.cc
index ae40aed..244df4b 100644
--- a/chrome/browser/chromeos/drive/file_cache_metadata.cc
+++ b/chrome/browser/chromeos/drive/file_cache_metadata.cc
@@ -6,6 +6,7 @@
#include "base/callback.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/metrics/histogram.h"
#include "base/sequenced_task_runner.h"
#include "chrome/browser/chromeos/drive/drive.pb.h"
@@ -70,11 +71,10 @@ void ScanCacheDirectory(
DCHECK(cache_map);
DCHECK(processed_file_map);
- file_util::FileEnumerator enumerator(
+ base::FileEnumerator enumerator(
cache_paths[sub_dir_type],
false, // not recursive
- file_util::FileEnumerator::FILES |
- file_util::FileEnumerator::SHOW_SYM_LINKS,
+ base::FileEnumerator::FILES | base::FileEnumerator::SHOW_SYM_LINKS,
util::kWildCard);
for (base::FilePath current = enumerator.Next(); !current.empty();
current = enumerator.Next()) {
diff --git a/chrome/browser/chromeos/drive/file_cache_unittest.cc b/chrome/browser/chromeos/drive/file_cache_unittest.cc
index 23de08e..0b943e0 100644
--- a/chrome/browser/chromeos/drive/file_cache_unittest.cc
+++ b/chrome/browser/chromeos/drive/file_cache_unittest.cc
@@ -8,6 +8,7 @@
#include <vector>
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/scoped_temp_dir.h"
#include "base/message_loop.h"
#include "base/threading/sequenced_worker_pool.h"
@@ -285,10 +286,9 @@ class FileCacheTest : public testing::Test {
FileCache::CACHED_FILE_FROM_SERVER), base::FilePath()));
if (!cache_entry_found) {
for (size_t i = 0; i < paths_to_verify.size(); ++i) {
- file_util::FileEnumerator enumerator(
+ base::FileEnumerator enumerator(
paths_to_verify[i].path_to_scan.DirName(), false /* not recursive*/,
- file_util::FileEnumerator::FILES |
- file_util::FileEnumerator::SHOW_SYM_LINKS,
+ base::FileEnumerator::FILES | base::FileEnumerator::SHOW_SYM_LINKS,
paths_to_verify[i].path_to_scan.BaseName().value());
EXPECT_TRUE(enumerator.Next().empty());
}
@@ -315,10 +315,9 @@ class FileCacheTest : public testing::Test {
for (size_t i = 0; i < paths_to_verify.size(); ++i) {
const struct PathToVerify& verify = paths_to_verify[i];
- file_util::FileEnumerator enumerator(
+ base::FileEnumerator enumerator(
verify.path_to_scan.DirName(), false /* not recursive */,
- file_util::FileEnumerator::FILES |
- file_util::FileEnumerator::SHOW_SYM_LINKS,
+ base::FileEnumerator::FILES | base::FileEnumerator::SHOW_SYM_LINKS,
verify.path_to_scan.BaseName().value());
size_t num_files_found = 0;
for (base::FilePath current = enumerator.Next(); !current.empty();
@@ -621,9 +620,9 @@ class FileCacheTest : public testing::Test {
FileCache::CACHE_TYPE_PERSISTENT :
FileCache::CACHE_TYPE_TMP),
FileCache::CACHED_FILE_FROM_SERVER);
- file_util::FileEnumerator enumerator(path.DirName(), false,
- file_util::FileEnumerator::FILES,
- path.BaseName().value());
+ base::FileEnumerator enumerator(path.DirName(), false,
+ base::FileEnumerator::FILES,
+ path.BaseName().value());
size_t num_files_found = 0;
for (base::FilePath current = enumerator.Next(); !current.empty();
current = enumerator.Next()) {
diff --git a/chrome/browser/chromeos/extensions/wallpaper_private_api.cc b/chrome/browser/chromeos/extensions/wallpaper_private_api.cc
index ac32448..d2a855e 100644
--- a/chrome/browser/chromeos/extensions/wallpaper_private_api.cc
+++ b/chrome/browser/chromeos/extensions/wallpaper_private_api.cc
@@ -10,6 +10,7 @@
#include "ash/wm/window_cycle_controller.h"
#include "ash/wm/window_util.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/json/json_writer.h"
#include "base/memory/scoped_ptr.h"
#include "base/path_service.h"
@@ -885,8 +886,8 @@ void WallpaperPrivateGetOfflineWallpaperListFunction::GetList(
base::FilePath wallpaper_dir;
CHECK(PathService::Get(chrome::DIR_CHROMEOS_WALLPAPERS, &wallpaper_dir));
if (file_util::DirectoryExists(wallpaper_dir)) {
- file_util::FileEnumerator files(wallpaper_dir, false,
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator files(wallpaper_dir, false,
+ base::FileEnumerator::FILES);
for (base::FilePath current = files.Next(); !current.empty();
current = files.Next()) {
std::string file_name = current.BaseName().RemoveExtension().value();
@@ -899,8 +900,8 @@ void WallpaperPrivateGetOfflineWallpaperListFunction::GetList(
base::FilePath custom_thumbnails_dir = chromeos::WallpaperManager::Get()->
GetCustomWallpaperPath(chromeos::kThumbnailWallpaperSubDir, email, "");
if (file_util::DirectoryExists(custom_thumbnails_dir)) {
- file_util::FileEnumerator files(custom_thumbnails_dir, false,
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator files(custom_thumbnails_dir, false,
+ base::FileEnumerator::FILES);
std::set<std::string> file_name_set;
for (base::FilePath current = files.Next(); !current.empty();
current = files.Next()) {
diff --git a/chrome/browser/chromeos/login/wallpaper_manager.cc b/chrome/browser/chromeos/login/wallpaper_manager.cc
index 0613513..95adc86 100644
--- a/chrome/browser/chromeos/login/wallpaper_manager.cc
+++ b/chrome/browser/chromeos/login/wallpaper_manager.cc
@@ -9,6 +9,7 @@
#include "ash/shell.h"
#include "base/command_line.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/logging.h"
#include "base/metrics/histogram.h"
@@ -684,8 +685,7 @@ void WallpaperManager::ClearObsoleteWallpaperPrefs() {
void WallpaperManager::DeleteAllExcept(const base::FilePath& path) {
base::FilePath dir = path.DirName();
if (file_util::DirectoryExists(dir)) {
- file_util::FileEnumerator files(dir, false,
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator files(dir, false, base::FileEnumerator::FILES);
for (base::FilePath current = files.Next(); !current.empty();
current = files.Next()) {
if (current != path)
diff --git a/chrome/browser/chromeos/policy/app_pack_updater.cc b/chrome/browser/chromeos/policy/app_pack_updater.cc
index 61fe56f..156402a5 100644
--- a/chrome/browser/chromeos/policy/app_pack_updater.cc
+++ b/chrome/browser/chromeos/policy/app_pack_updater.cc
@@ -7,6 +7,7 @@
#include "base/bind.h"
#include "base/bind_helpers.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/location.h"
#include "base/stl_util.h"
#include "base/string_util.h"
@@ -29,7 +30,6 @@
#include "content/public/browser/notification_source.h"
using content::BrowserThread;
-using file_util::FileEnumerator;
namespace policy {
@@ -250,18 +250,16 @@ void AppPackUpdater::BlockingCheckCacheInternal(
// Enumerate all the files in the cache |dir|, including directories
// and symlinks. Each unrecognized file will be erased.
- int types = FileEnumerator::FILES | FileEnumerator::DIRECTORIES |
- FileEnumerator::SHOW_SYM_LINKS;
- FileEnumerator enumerator(dir, false /* recursive */, types);
+ int types = base::FileEnumerator::FILES | base::FileEnumerator::DIRECTORIES |
+ base::FileEnumerator::SHOW_SYM_LINKS;
+ base::FileEnumerator enumerator(dir, false /* recursive */, types);
for (base::FilePath path = enumerator.Next();
!path.empty(); path = enumerator.Next()) {
- FileEnumerator::FindInfo info;
- enumerator.GetFindInfo(&info);
+ base::FileEnumerator::FileInfo info = enumerator.GetInfo();
std::string basename = path.BaseName().value();
- if (FileEnumerator::IsDirectory(info) ||
- file_util::IsLink(FileEnumerator::GetFilename(info))) {
+ if (info.IsDirectory() || file_util::IsLink(info.GetName())) {
LOG(ERROR) << "Erasing bad file in AppPack directory: " << basename;
file_util::Delete(path, true /* recursive */);
continue;
diff --git a/chrome/browser/component_updater/pepper_flash_component_installer.cc b/chrome/browser/component_updater/pepper_flash_component_installer.cc
index 2663824..0203a54 100644
--- a/chrome/browser/component_updater/pepper_flash_component_installer.cc
+++ b/chrome/browser/component_updater/pepper_flash_component_installer.cc
@@ -13,6 +13,7 @@
#include "base/command_line.h"
#include "base/compiler_specific.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/logging.h"
#include "base/path_service.h"
@@ -95,8 +96,8 @@ bool GetPepperFlashDirectory(base::FilePath* latest_dir,
std::vector<base::FilePath>* older_dirs) {
base::FilePath base_dir = GetPepperFlashBaseDirectory();
bool found = false;
- file_util::FileEnumerator
- file_enumerator(base_dir, false, file_util::FileEnumerator::DIRECTORIES);
+ base::FileEnumerator
+ file_enumerator(base_dir, false, base::FileEnumerator::DIRECTORIES);
for (base::FilePath path = file_enumerator.Next(); !path.value().empty();
path = file_enumerator.Next()) {
Version version(path.BaseName().MaybeAsASCII());
diff --git a/chrome/browser/component_updater/pnacl/pnacl_component_installer.cc b/chrome/browser/component_updater/pnacl/pnacl_component_installer.cc
index f66b8a9..07e5abc 100644
--- a/chrome/browser/component_updater/pnacl/pnacl_component_installer.cc
+++ b/chrome/browser/component_updater/pnacl/pnacl_component_installer.cc
@@ -9,6 +9,7 @@
#include "base/command_line.h"
#include "base/compiler_specific.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/json/json_file_value_serializer.h"
#include "base/logging.h"
@@ -126,8 +127,8 @@ bool GetLatestPnaclDirectory(PnaclComponentInstaller* pci,
// Enumerate all versions starting from the base directory.
base::FilePath base_dir = pci->GetPnaclBaseDirectory();
bool found = false;
- file_util::FileEnumerator
- file_enumerator(base_dir, false, file_util::FileEnumerator::DIRECTORIES);
+ base::FileEnumerator
+ file_enumerator(base_dir, false, base::FileEnumerator::DIRECTORIES);
for (base::FilePath path = file_enumerator.Next(); !path.value().empty();
path = file_enumerator.Next()) {
Version version(path.BaseName().MaybeAsASCII());
diff --git a/chrome/browser/component_updater/swiftshader_component_installer.cc b/chrome/browser/component_updater/swiftshader_component_installer.cc
index 8e365da..f71fd5a 100644
--- a/chrome/browser/component_updater/swiftshader_component_installer.cc
+++ b/chrome/browser/component_updater/swiftshader_component_installer.cc
@@ -9,6 +9,7 @@
#include "base/compiler_specific.h"
#include "base/cpu.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/logging.h"
#include "base/path_service.h"
@@ -63,8 +64,8 @@ bool GetLatestSwiftShaderDirectory(base::FilePath* result,
std::vector<base::FilePath>* older_dirs) {
base::FilePath base_dir = GetSwiftShaderBaseDirectory();
bool found = false;
- file_util::FileEnumerator
- file_enumerator(base_dir, false, file_util::FileEnumerator::DIRECTORIES);
+ base::FileEnumerator
+ file_enumerator(base_dir, false, base::FileEnumerator::DIRECTORIES);
for (base::FilePath path = file_enumerator.Next(); !path.value().empty();
path = file_enumerator.Next()) {
Version version(path.BaseName().MaybeAsASCII());
diff --git a/chrome/browser/component_updater/widevine_cdm_component_installer.cc b/chrome/browser/component_updater/widevine_cdm_component_installer.cc
index f43c28a..123c5fc 100644
--- a/chrome/browser/component_updater/widevine_cdm_component_installer.cc
+++ b/chrome/browser/component_updater/widevine_cdm_component_installer.cc
@@ -13,6 +13,7 @@
#include "base/command_line.h"
#include "base/compiler_specific.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/logging.h"
#include "base/path_service.h"
@@ -93,8 +94,8 @@ bool GetWidevineCdmDirectory(base::FilePath* latest_dir,
std::vector<base::FilePath>* older_dirs) {
base::FilePath base_dir = GetWidevineCdmBaseDirectory();
bool found = false;
- file_util::FileEnumerator file_enumerator(
- base_dir, false, file_util::FileEnumerator::DIRECTORIES);
+ base::FileEnumerator file_enumerator(
+ base_dir, false, base::FileEnumerator::DIRECTORIES);
for (base::FilePath path = file_enumerator.Next(); !path.value().empty();
path = file_enumerator.Next()) {
base::Version version(path.BaseName().MaybeAsASCII());
diff --git a/chrome/browser/extensions/api/developer_private/developer_private_api.cc b/chrome/browser/extensions/api/developer_private/developer_private_api.cc
index 5251024..85a7822 100644
--- a/chrome/browser/extensions/api/developer_private/developer_private_api.cc
+++ b/chrome/browser/extensions/api/developer_private/developer_private_api.cc
@@ -6,6 +6,7 @@
#include "base/base64.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/i18n/file_util_icu.h"
#include "base/strings/string_number_conversions.h"
#include "base/utf_string_conversions.h"
@@ -79,9 +80,8 @@ GURL ToDataURL(const base::FilePath& path) {
}
std::vector<base::FilePath> ListFolder(const base::FilePath path) {
- file_util::FileEnumerator files(path, false,
- file_util::FileEnumerator::DIRECTORIES
- | file_util::FileEnumerator::FILES);
+ base::FileEnumerator files(path, false,
+ base::FileEnumerator::DIRECTORIES | base::FileEnumerator::FILES);
std::vector<base::FilePath> paths;
for (base::FilePath current_path = files.Next(); !current_path.empty();
diff --git a/chrome/browser/extensions/api/serial/serial_port_enumerator_posix.cc b/chrome/browser/extensions/api/serial/serial_port_enumerator_posix.cc
index ce29ea5..505d8b0 100644
--- a/chrome/browser/extensions/api/serial/serial_port_enumerator_posix.cc
+++ b/chrome/browser/extensions/api/serial/serial_port_enumerator_posix.cc
@@ -5,6 +5,7 @@
#include "chrome/browser/extensions/api/serial/serial_port_enumerator.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/string_util.h"
#include "content/public/browser/browser_thread.h"
@@ -67,13 +68,12 @@ SerialPortEnumerator::GenerateValidSerialPortNames() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
const base::FilePath kDevRoot("/dev");
const int kFilesAndSymLinks =
- file_util::FileEnumerator::FILES |
- file_util::FileEnumerator::SHOW_SYM_LINKS;
+ base::FileEnumerator::FILES |
+ base::FileEnumerator::SHOW_SYM_LINKS;
StringSet valid_patterns = GenerateValidPatterns();
StringSet name_set;
- file_util::FileEnumerator enumerator(
- kDevRoot, false, kFilesAndSymLinks);
+ base::FileEnumerator enumerator(kDevRoot, false, kFilesAndSymLinks);
do {
const base::FilePath next_device_path(enumerator.Next());
const std::string next_device = next_device_path.value();
diff --git a/chrome/browser/extensions/api/storage/settings_backend.cc b/chrome/browser/extensions/api/storage/settings_backend.cc
index 369446a..26a15629 100644
--- a/chrome/browser/extensions/api/storage/settings_backend.cc
+++ b/chrome/browser/extensions/api/storage/settings_backend.cc
@@ -4,7 +4,7 @@
#include "chrome/browser/extensions/api/storage/settings_backend.h"
-#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/logging.h"
#include "chrome/browser/extensions/api/storage/settings_sync_processor.h"
#include "chrome/browser/extensions/api/storage/settings_sync_util.h"
@@ -105,13 +105,10 @@ std::set<std::string> SettingsBackend::GetKnownExtensionIDs() const {
}
// Leveldb databases are directories inside base_path_.
- file_util::FileEnumerator::FindInfo find_info;
- file_util::FileEnumerator extension_dirs(
- base_path_, false, file_util::FileEnumerator::DIRECTORIES);
+ base::FileEnumerator extension_dirs(
+ base_path_, false, base::FileEnumerator::DIRECTORIES);
while (!extension_dirs.Next().empty()) {
- extension_dirs.GetFindInfo(&find_info);
- base::FilePath extension_dir(
- file_util::FileEnumerator::GetFilename(find_info));
+ base::FilePath extension_dir = extension_dirs.GetInfo().GetName();
DCHECK(!extension_dir.IsAbsolute());
// Extension IDs are created as std::strings so they *should* be ASCII.
std::string maybe_as_ascii(extension_dir.MaybeAsASCII());
diff --git a/chrome/browser/extensions/extension_service_unittest.cc b/chrome/browser/extensions/extension_service_unittest.cc
index 7a79998..b070653 100644
--- a/chrome/browser/extensions/extension_service_unittest.cc
+++ b/chrome/browser/extensions/extension_service_unittest.cc
@@ -13,6 +13,7 @@
#include "base/bind.h"
#include "base/command_line.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/scoped_temp_dir.h"
#include "base/json/json_file_value_serializer.h"
#include "base/json/json_reader.h"
@@ -1317,8 +1318,8 @@ TEST_F(ExtensionServiceTest, CleanupOnStartup) {
// Wait for GarbageCollectExtensions task to complete.
loop_.RunUntilIdle();
- file_util::FileEnumerator dirs(extensions_install_dir_, false,
- file_util::FileEnumerator::DIRECTORIES);
+ base::FileEnumerator dirs(extensions_install_dir_, false,
+ base::FileEnumerator::DIRECTORIES);
size_t count = 0;
while (!dirs.Next().empty())
count++;
diff --git a/chrome/browser/extensions/external_pref_loader.cc b/chrome/browser/extensions/external_pref_loader.cc
index 32cb24c..46eeb0d 100644
--- a/chrome/browser/extensions/external_pref_loader.cc
+++ b/chrome/browser/extensions/external_pref_loader.cc
@@ -6,6 +6,7 @@
#include "base/bind.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/json/json_file_value_serializer.h"
#include "base/json/json_string_value_serializer.h"
@@ -35,10 +36,10 @@ std::set<base::FilePath> GetPrefsCandidateFilesFromFolder(
return external_extension_paths;
}
- file_util::FileEnumerator json_files(
+ base::FileEnumerator json_files(
external_extension_search_path,
false, // Recursive.
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator::FILES);
#if defined(OS_WIN)
base::FilePath::StringType extension = UTF8ToWide(std::string(".json"));
#elif defined(OS_POSIX)
diff --git a/chrome/browser/extensions/sandboxed_unpacker_unittest.cc b/chrome/browser/extensions/sandboxed_unpacker_unittest.cc
index ddb56c01..968d13a 100644
--- a/chrome/browser/extensions/sandboxed_unpacker_unittest.cc
+++ b/chrome/browser/extensions/sandboxed_unpacker_unittest.cc
@@ -3,6 +3,7 @@
// found in the LICENSE file.
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/scoped_temp_dir.h"
#include "base/memory/ref_counted.h"
#include "base/message_loop.h"
@@ -132,10 +133,10 @@ class SandboxedUnpackerTest : public testing::Test {
bool TempFilesRemoved() {
// Check that temporary files were cleaned up.
- int files_and_dirs = file_util::FileEnumerator::DIRECTORIES |
- file_util::FileEnumerator::FILES;
+ int files_and_dirs = base::FileEnumerator::DIRECTORIES |
+ base::FileEnumerator::FILES;
- file_util::FileEnumerator temp_iterator(
+ base::FileEnumerator temp_iterator(
temp_path_,
true, // recursive
files_and_dirs
diff --git a/chrome/browser/file_select_helper.cc b/chrome/browser/file_select_helper.cc
index 48cf490..e4d5093 100644
--- a/chrome/browser/file_select_helper.cc
+++ b/chrome/browser/file_select_helper.cc
@@ -8,6 +8,7 @@
#include "base/bind.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/platform_file.h"
#include "base/string_util.h"
#include "base/strings/string_split.h"
@@ -219,7 +220,7 @@ void FileSelectHelper::OnListFile(
// Directory upload returns directories via a "." file, so that
// empty directories are included. This util call just checks
// the flags in the structure; there's no file I/O going on.
- if (file_util::FileEnumerator::IsDirectory(data.info))
+ if (data.info.IsDirectory())
entry->results_.push_back(data.path.Append(FILE_PATH_LITERAL(".")));
else
entry->results_.push_back(data.path);
diff --git a/chrome/browser/history/expire_history_backend.cc b/chrome/browser/history/expire_history_backend.cc
index 51cfaea..d21cb0a 100644
--- a/chrome/browser/history/expire_history_backend.cc
+++ b/chrome/browser/history/expire_history_backend.cc
@@ -11,6 +11,7 @@
#include "base/bind.h"
#include "base/compiler_specific.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/logging.h"
#include "base/message_loop.h"
#include "chrome/browser/bookmarks/bookmark_service.h"
@@ -754,8 +755,8 @@ void ExpireHistoryBackend::DoExpireHistoryIndexFiles() {
base::FilePath::StringType history_index_files_pattern =
TextDatabase::file_base();
history_index_files_pattern.append(FILE_PATH_LITERAL("*"));
- file_util::FileEnumerator file_enumerator(
- text_db_->GetDir(), false, file_util::FileEnumerator::FILES,
+ base::FileEnumerator file_enumerator(
+ text_db_->GetDir(), false, base::FileEnumerator::FILES,
history_index_files_pattern);
for (base::FilePath file = file_enumerator.Next(); !file.empty();
file = file_enumerator.Next()) {
diff --git a/chrome/browser/history/text_database_manager.cc b/chrome/browser/history/text_database_manager.cc
index 97f6555..1696610 100644
--- a/chrome/browser/history/text_database_manager.cc
+++ b/chrome/browser/history/text_database_manager.cc
@@ -10,6 +10,7 @@
#include "base/bind.h"
#include "base/compiler_specific.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/metrics/histogram.h"
#include "base/logging.h"
#include "base/message_loop.h"
@@ -160,8 +161,8 @@ void TextDatabaseManager::InitDBList() {
// Find files on disk matching our pattern so we can quickly test for them.
base::FilePath::StringType filepattern(TextDatabase::file_base());
filepattern.append(FILE_PATH_LITERAL("*"));
- file_util::FileEnumerator enumerator(
- dir_, false, file_util::FileEnumerator::FILES, filepattern);
+ base::FileEnumerator enumerator(
+ dir_, false, base::FileEnumerator::FILES, filepattern);
base::FilePath cur_file;
while (!(cur_file = enumerator.Next()).empty()) {
// Convert to the number representing this file.
diff --git a/chrome/browser/importer/firefox2_importer.cc b/chrome/browser/importer/firefox2_importer.cc
index 9d70c53..72ce2c6 100644
--- a/chrome/browser/importer/firefox2_importer.cc
+++ b/chrome/browser/importer/firefox2_importer.cc
@@ -8,6 +8,7 @@
#include <vector>
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/i18n/icu_string_conversions.h"
#include "base/message_loop.h"
@@ -624,9 +625,9 @@ void Firefox2Importer::HTMLUnescape(string16* text) {
void Firefox2Importer::FindXMLFilesInDir(
const base::FilePath& dir,
std::vector<base::FilePath>* xml_files) {
- file_util::FileEnumerator file_enum(dir, false,
- file_util::FileEnumerator::FILES,
- FILE_PATH_LITERAL("*.xml"));
+ base::FileEnumerator file_enum(dir, false,
+ base::FileEnumerator::FILES,
+ FILE_PATH_LITERAL("*.xml"));
base::FilePath file(file_enum.Next());
while (!file.empty()) {
xml_files->push_back(file);
diff --git a/chrome/browser/importer/firefox3_importer.cc b/chrome/browser/importer/firefox3_importer.cc
index 2cab2ca..03fa5e2 100644
--- a/chrome/browser/importer/firefox3_importer.cc
+++ b/chrome/browser/importer/firefox3_importer.cc
@@ -7,6 +7,7 @@
#include <set>
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/memory/scoped_ptr.h"
#include "base/message_loop.h"
#include "base/stl_util.h"
@@ -419,8 +420,7 @@ void Firefox3Importer::GetSearchEnginesXMLFiles(
#endif
// Get search engine definition from file system.
- file_util::FileEnumerator engines(app_path, false,
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator engines(app_path, false, base::FileEnumerator::FILES);
for (base::FilePath engine_path = engines.Next();
!engine_path.value().empty(); engine_path = engines.Next()) {
files->push_back(engine_path);
diff --git a/chrome/browser/importer/ie_importer.cc b/chrome/browser/importer/ie_importer.cc
index bfcfd01..904f54e 100644
--- a/chrome/browser/importer/ie_importer.cc
+++ b/chrome/browser/importer/ie_importer.cc
@@ -16,6 +16,7 @@
#include <vector>
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/string16.h"
#include "base/string_util.h"
@@ -816,8 +817,8 @@ void IEImporter::ParseFavoritesFolder(
// Favorites path length. Make sure it doesn't include the trailing \.
size_t favorites_path_len =
favorites_path.StripTrailingSeparators().value().size();
- file_util::FileEnumerator file_enumerator(
- favorites_path, true, file_util::FileEnumerator::FILES);
+ base::FileEnumerator file_enumerator(
+ favorites_path, true, base::FileEnumerator::FILES);
while (!(file = file_enumerator.Next()).value().empty() && !cancelled())
file_list.push_back(file.value());
diff --git a/chrome/browser/policy/config_dir_policy_loader.cc b/chrome/browser/policy/config_dir_policy_loader.cc
index 572a82d..56b079d 100644
--- a/chrome/browser/policy/config_dir_policy_loader.cc
+++ b/chrome/browser/policy/config_dir_policy_loader.cc
@@ -11,6 +11,7 @@
#include "base/bind.h"
#include "base/bind_helpers.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/json/json_file_value_serializer.h"
#include "base/json/json_reader.h"
#include "base/logging.h"
@@ -100,8 +101,8 @@ base::Time ConfigDirPolicyLoader::LastModificationTime() {
continue;
// Enumerate the files and find the most recent modification timestamp.
- file_util::FileEnumerator file_enumerator(path, false,
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator file_enumerator(path, false,
+ base::FileEnumerator::FILES);
for (base::FilePath config_file = file_enumerator.Next();
!config_file.empty();
config_file = file_enumerator.Next()) {
@@ -118,8 +119,8 @@ void ConfigDirPolicyLoader::LoadFromPath(const base::FilePath& path,
PolicyBundle* bundle) {
// Enumerate the files and sort them lexicographically.
std::set<base::FilePath> files;
- file_util::FileEnumerator file_enumerator(path, false,
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator file_enumerator(path, false,
+ base::FileEnumerator::FILES);
for (base::FilePath config_file_path = file_enumerator.Next();
!config_file_path.empty(); config_file_path = file_enumerator.Next())
files.insert(config_file_path);
diff --git a/chrome/browser/policy/policy_browsertest.cc b/chrome/browser/policy/policy_browsertest.cc
index 3a7a78d..841f9d9 100644
--- a/chrome/browser/policy/policy_browsertest.cc
+++ b/chrome/browser/policy/policy_browsertest.cc
@@ -10,6 +10,7 @@
#include "base/bind_helpers.h"
#include "base/command_line.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/files/scoped_temp_dir.h"
#include "base/memory/ref_counted.h"
@@ -277,8 +278,7 @@ void DownloadAndVerifyFile(
EXPECT_EQ(
1u, observer.NumDownloadsSeenInState(content::DownloadItem::COMPLETE));
EXPECT_TRUE(file_util::PathExists(downloaded));
- file_util::FileEnumerator enumerator(
- dir, false, file_util::FileEnumerator::FILES);
+ base::FileEnumerator enumerator(dir, false, base::FileEnumerator::FILES);
EXPECT_EQ(file, enumerator.Next().BaseName());
EXPECT_EQ(base::FilePath(), enumerator.Next());
}
@@ -287,9 +287,9 @@ void DownloadAndVerifyFile(
int CountScreenshots() {
DownloadPrefs* download_prefs = DownloadPrefs::FromBrowserContext(
ash::Shell::GetInstance()->delegate()->GetCurrentBrowserContext());
- file_util::FileEnumerator enumerator(download_prefs->DownloadPath(),
- false, file_util::FileEnumerator::FILES,
- "Screenshot*");
+ base::FileEnumerator enumerator(download_prefs->DownloadPath(),
+ false, base::FileEnumerator::FILES,
+ "Screenshot*");
int count = 0;
while (!enumerator.Next().empty())
count++;
diff --git a/chrome/browser/printing/printing_layout_browsertest.cc b/chrome/browser/printing/printing_layout_browsertest.cc
index 2e00618..23ee6a7 100644
--- a/chrome/browser/printing/printing_layout_browsertest.cc
+++ b/chrome/browser/printing/printing_layout_browsertest.cc
@@ -4,6 +4,7 @@
#include "base/command_line.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/message_loop.h"
#include "base/path_service.h"
@@ -195,8 +196,8 @@ class PrintingLayoutTest : public PrintingTest<InProcessBrowserTest>,
bool found_emf = false;
bool found_prn = false;
for (int i = 0; i < 100; ++i) {
- file_util::FileEnumerator enumerator(emf_path_, false,
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator enumerator(emf_path_, false,
+ base::FileEnumerator::FILES);
emf_file.clear();
prn_file.clear();
found_emf = false;
diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc
index a1ed001..12ae9e3 100644
--- a/chrome/browser/profiles/profile_manager.cc
+++ b/chrome/browser/profiles/profile_manager.cc
@@ -10,6 +10,7 @@
#include "base/command_line.h"
#include "base/deferred_sequenced_task_runner.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/metrics/histogram.h"
#include "base/prefs/pref_registry_simple.h"
@@ -94,14 +95,10 @@ std::vector<base::FilePath>& ProfilesToDelete() {
int64 ComputeFilesSize(const base::FilePath& directory,
const base::FilePath::StringType& pattern) {
int64 running_size = 0;
- file_util::FileEnumerator iter(directory, false,
- file_util::FileEnumerator::FILES,
- pattern);
- while (!iter.Next().empty()) {
- file_util::FileEnumerator::FindInfo info;
- iter.GetFindInfo(&info);
- running_size += file_util::FileEnumerator::GetFilesize(info);
- }
+ base::FileEnumerator iter(directory, false, base::FileEnumerator::FILES,
+ pattern);
+ while (!iter.Next().empty())
+ running_size += iter.GetInfo().GetSize();
return running_size;
}
diff --git a/chrome/browser/profiles/profile_shortcut_manager_win.cc b/chrome/browser/profiles/profile_shortcut_manager_win.cc
index 92ac0ea..d0b0b94 100644
--- a/chrome/browser/profiles/profile_shortcut_manager_win.cc
+++ b/chrome/browser/profiles/profile_shortcut_manager_win.cc
@@ -12,6 +12,7 @@
#include "base/bind.h"
#include "base/command_line.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/path_service.h"
#include "base/string16.h"
#include "base/string_util.h"
@@ -232,8 +233,8 @@ void ListDesktopShortcutsWithCommandLine(const base::FilePath& chrome_exe,
if (!GetDesktopShortcutsDirectories(&user_shortcuts_directory, NULL))
return;
- file_util::FileEnumerator enumerator(user_shortcuts_directory, false,
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator enumerator(user_shortcuts_directory, false,
+ base::FileEnumerator::FILES);
for (base::FilePath path = enumerator.Next(); !path.empty();
path = enumerator.Next()) {
string16 shortcut_command_line;
@@ -399,8 +400,8 @@ bool ChromeDesktopShortcutsExist(const base::FilePath& chrome_exe) {
if (!GetDesktopShortcutsDirectories(&user_shortcuts_directory, NULL))
return false;
- file_util::FileEnumerator enumerator(user_shortcuts_directory, false,
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator enumerator(user_shortcuts_directory, false,
+ base::FileEnumerator::FILES);
for (base::FilePath path = enumerator.Next(); !path.empty();
path = enumerator.Next()) {
if (IsChromeShortcut(path, chrome_exe, NULL))
diff --git a/chrome/browser/shell_integration_win.cc b/chrome/browser/shell_integration_win.cc
index fb1bd64..c73fc2c 100644
--- a/chrome/browser/shell_integration_win.cc
+++ b/chrome/browser/shell_integration_win.cc
@@ -11,6 +11,7 @@
#include "base/bind.h"
#include "base/command_line.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/message_loop.h"
#include "base/path_service.h"
#include "base/string_util.h"
@@ -392,9 +393,9 @@ int ShellIntegration::MigrateShortcutsInPathInternal(
DCHECK(base::win::GetVersion() >= base::win::VERSION_WIN7);
// Enumerate all pinned shortcuts in the given path directly.
- file_util::FileEnumerator shortcuts_enum(
+ base::FileEnumerator shortcuts_enum(
path, false, // not recursive
- file_util::FileEnumerator::FILES, FILE_PATH_LITERAL("*.lnk"));
+ base::FileEnumerator::FILES, FILE_PATH_LITERAL("*.lnk"));
bool is_per_user_install =
InstallUtil::IsPerUserInstall(chrome_exe.value().c_str());
diff --git a/chrome/browser/ui/pdf/pdf_browsertest.cc b/chrome/browser/ui/pdf/pdf_browsertest.cc
index f73fefb..fe95498 100644
--- a/chrome/browser/ui/pdf/pdf_browsertest.cc
+++ b/chrome/browser/ui/pdf/pdf_browsertest.cc
@@ -3,6 +3,7 @@
// found in the LICENSE file.
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/hash.h"
#include "base/path_service.h"
#include "base/string_util.h"
@@ -314,10 +315,10 @@ IN_PROC_BROWSER_TEST_P(PDFBrowserTest, Loading) {
content::Source<NavigationController>(controller));
std::string base_url = std::string("files/");
- file_util::FileEnumerator file_enumerator(
+ base::FileEnumerator file_enumerator(
ui_test_utils::GetTestFilePath(GetPDFTestDir(), base::FilePath()),
false,
- file_util::FileEnumerator::FILES,
+ base::FileEnumerator::FILES,
FILE_PATH_LITERAL("*.pdf"));
for (base::FilePath file_path = file_enumerator.Next();
!file_path.empty();
diff --git a/chrome/browser/ui/webui/chromeos/drive_internals_ui.cc b/chrome/browser/ui/webui/chromeos/drive_internals_ui.cc
index 6483cd7..90a2ca9 100644
--- a/chrome/browser/ui/webui/chromeos/drive_internals_ui.cc
+++ b/chrome/browser/ui/webui/chromeos/drive_internals_ui.cc
@@ -7,6 +7,7 @@
#include "base/bind.h"
#include "base/command_line.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/format_macros.h"
#include "base/memory/scoped_vector.h"
#include "base/memory/weak_ptr.h"
@@ -60,26 +61,22 @@ namespace {
void GetGCacheContents(const base::FilePath& root_path,
base::ListValue* gcache_contents,
base::DictionaryValue* gcache_summary) {
- using file_util::FileEnumerator;
// Use this map to sort the result list by the path.
std::map<base::FilePath, DictionaryValue*> files;
- const int options = (file_util::FileEnumerator::FILES |
- file_util::FileEnumerator::DIRECTORIES |
- file_util::FileEnumerator::SHOW_SYM_LINKS);
- FileEnumerator enumerator(root_path, true /* recursive */, options);
+ const int options = (base::FileEnumerator::FILES |
+ base::FileEnumerator::DIRECTORIES |
+ base::FileEnumerator::SHOW_SYM_LINKS);
+ base::FileEnumerator enumerator(root_path, true /* recursive */, options);
int64 total_size = 0;
for (base::FilePath current = enumerator.Next(); !current.empty();
current = enumerator.Next()) {
- FileEnumerator::FindInfo find_info;
- enumerator.GetFindInfo(&find_info);
- int64 size = FileEnumerator::GetFilesize(find_info);
- const bool is_directory = FileEnumerator::IsDirectory(find_info);
- const bool is_symbolic_link =
- file_util::IsLink(FileEnumerator::GetFilename(find_info));
- const base::Time last_modified =
- FileEnumerator::GetLastModifiedTime(find_info);
+ base::FileEnumerator::FileInfo find_info = enumerator.GetInfo();
+ int64 size = find_info.GetSize();
+ const bool is_directory = find_info.IsDirectory();
+ const bool is_symbolic_link = file_util::IsLink(find_info.GetName());
+ const base::Time last_modified = find_info.GetLastModifiedTime();
base::DictionaryValue* entry = new base::DictionaryValue;
entry->SetString("path", current.value());
@@ -93,7 +90,7 @@ void GetGCacheContents(const base::FilePath& root_path,
// Print lower 9 bits in octal format.
entry->SetString(
"permission",
- base::StringPrintf("%03o", find_info.stat.st_mode & 0x1ff));
+ base::StringPrintf("%03o", find_info.stat().st_mode & 0x1ff));
files[current] = entry;
total_size += size;
diff --git a/chrome/browser/ui/webui/feedback_ui.cc b/chrome/browser/ui/webui/feedback_ui.cc
index 1d09ab9..30b12d0 100644
--- a/chrome/browser/ui/webui/feedback_ui.cc
+++ b/chrome/browser/ui/webui/feedback_ui.cc
@@ -10,6 +10,7 @@
#include "base/base64.h"
#include "base/bind.h"
#include "base/bind_helpers.h"
+#include "base/files/file_enumerator.h"
#include "base/logging.h"
#include "base/memory/weak_ptr.h"
#include "base/message_loop.h"
@@ -704,9 +705,8 @@ void FeedbackUI::GetMostRecentScreenshots(
std::string pattern =
std::string(ScreenshotSource::kScreenshotPrefix) + "*" +
ScreenshotSource::kScreenshotSuffix;
- file_util::FileEnumerator screenshots(filepath, false,
- file_util::FileEnumerator::FILES,
- pattern);
+ base::FileEnumerator screenshots(filepath, false,
+ base::FileEnumerator::FILES, pattern);
base::FilePath screenshot = screenshots.Next();
std::vector<std::string> screenshot_filepaths;
diff --git a/chrome/common/extensions/api/i18n/default_locale_handler.cc b/chrome/common/extensions/api/i18n/default_locale_handler.cc
index a8cd544..7221b8f 100644
--- a/chrome/common/extensions/api/i18n/default_locale_handler.cc
+++ b/chrome/common/extensions/api/i18n/default_locale_handler.cc
@@ -5,6 +5,7 @@
#include "chrome/common/extensions/api/i18n/default_locale_handler.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/memory/scoped_ptr.h"
#include "base/string_util.h"
#include "base/stringprintf.h"
@@ -71,9 +72,7 @@ bool DefaultLocaleHandler::Validate(
}
// Treat all folders under _locales as valid locales.
- file_util::FileEnumerator locales(path,
- false,
- file_util::FileEnumerator::DIRECTORIES);
+ base::FileEnumerator locales(path, false, base::FileEnumerator::DIRECTORIES);
std::set<std::string> all_locales;
extension_l10n_util::GetAllLocales(&all_locales);
diff --git a/chrome/common/extensions/extension_file_util.cc b/chrome/common/extensions/extension_file_util.cc
index 566779b..d277b47 100644
--- a/chrome/common/extensions/extension_file_util.cc
+++ b/chrome/common/extensions/extension_file_util.cc
@@ -8,6 +8,7 @@
#include <vector>
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/files/scoped_temp_dir.h"
#include "base/json/json_file_value_serializer.h"
@@ -202,8 +203,8 @@ std::vector<base::FilePath> FindPrivateKeyFiles(
const base::FilePath& extension_dir) {
std::vector<base::FilePath> result;
// Pattern matching only works at the root level, so filter manually.
- file_util::FileEnumerator traversal(extension_dir, /*recursive=*/true,
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator traversal(extension_dir, /*recursive=*/true,
+ base::FileEnumerator::FILES);
for (base::FilePath current = traversal.Next(); !current.empty();
current = traversal.Next()) {
if (!current.MatchesExtension(chrome::kExtensionKeyFileExtension))
@@ -331,9 +332,9 @@ void GarbageCollectExtensions(
return;
DVLOG(1) << "Garbage collecting extensions...";
- file_util::FileEnumerator enumerator(install_directory,
- false, // Not recursive.
- file_util::FileEnumerator::DIRECTORIES);
+ base::FileEnumerator enumerator(install_directory,
+ false, // Not recursive.
+ base::FileEnumerator::DIRECTORIES);
base::FilePath extension_path;
for (extension_path = enumerator.Next(); !extension_path.value().empty();
extension_path = enumerator.Next()) {
@@ -378,10 +379,10 @@ void GarbageCollectExtensions(
}
// Clean up old version directories.
- file_util::FileEnumerator versions_enumerator(
+ base::FileEnumerator versions_enumerator(
extension_path,
false, // Not recursive.
- file_util::FileEnumerator::DIRECTORIES);
+ base::FileEnumerator::DIRECTORIES);
for (base::FilePath version_dir = versions_enumerator.Next();
!version_dir.value().empty();
version_dir = versions_enumerator.Next()) {
@@ -471,9 +472,8 @@ bool CheckForIllegalFilenames(const base::FilePath& extension_path,
// There is a problem when using pattern "_*" with FileEnumerator, so we have
// to cheat with find_first_of and match all.
const int kFilesAndDirectories =
- file_util::FileEnumerator::DIRECTORIES | file_util::FileEnumerator::FILES;
- file_util::FileEnumerator all_files(
- extension_path, false, kFilesAndDirectories);
+ base::FileEnumerator::DIRECTORIES | base::FileEnumerator::FILES;
+ base::FileEnumerator all_files(extension_path, false, kFilesAndDirectories);
base::FilePath file;
while (!(file = all_files.Next()).empty()) {
diff --git a/chrome/common/extensions/extension_l10n_util.cc b/chrome/common/extensions/extension_l10n_util.cc
index d2dada0..add1354 100644
--- a/chrome/common/extensions/extension_l10n_util.cc
+++ b/chrome/common/extensions/extension_l10n_util.cc
@@ -10,6 +10,7 @@
#include <vector>
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/json/json_file_value_serializer.h"
#include "base/logging.h"
#include "base/memory/linked_ptr.h"
@@ -286,9 +287,9 @@ bool GetValidLocales(const base::FilePath& locale_path,
GetAllLocales(&chrome_locales);
// Enumerate all supplied locales in the extension.
- file_util::FileEnumerator locales(locale_path,
- false,
- file_util::FileEnumerator::DIRECTORIES);
+ base::FileEnumerator locales(locale_path,
+ false,
+ base::FileEnumerator::DIRECTORIES);
base::FilePath locale_folder;
while (!(locale_folder = locales.Next()).empty()) {
std::string locale_name = locale_folder.BaseName().MaybeAsASCII();
diff --git a/chrome/common/extensions/unpacker.cc b/chrome/common/extensions/unpacker.cc
index 0cf8d94..b326f46 100644
--- a/chrome/common/extensions/unpacker.cc
+++ b/chrome/common/extensions/unpacker.cc
@@ -7,6 +7,7 @@
#include <set>
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/scoped_temp_dir.h"
#include "base/i18n/rtl.h"
#include "base/json/json_file_value_serializer.h"
@@ -127,9 +128,9 @@ bool Unpacker::ReadAllMessageCatalogs(const std::string& default_locale) {
temp_install_dir_.Append(kLocaleFolder);
// Not all folders under _locales have to be valid locales.
- file_util::FileEnumerator locales(locales_path,
- false,
- file_util::FileEnumerator::DIRECTORIES);
+ base::FileEnumerator locales(locales_path,
+ false,
+ base::FileEnumerator::DIRECTORIES);
std::set<std::string> all_locales;
extension_l10n_util::GetAllLocales(&all_locales);
diff --git a/chrome/installer/setup/setup_util.cc b/chrome/installer/setup/setup_util.cc
index 9f112c0..8b94c01 100644
--- a/chrome/installer/setup/setup_util.cc
+++ b/chrome/installer/setup/setup_util.cc
@@ -10,6 +10,7 @@
#include "base/command_line.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/logging.h"
#include "base/process_util.h"
@@ -124,8 +125,8 @@ int ApplyDiffPatch(const base::FilePath& src,
Version* GetMaxVersionFromArchiveDir(const base::FilePath& chrome_path) {
VLOG(1) << "Looking for Chrome version folder under " << chrome_path.value();
Version* version = NULL;
- file_util::FileEnumerator version_enum(chrome_path, false,
- file_util::FileEnumerator::DIRECTORIES);
+ base::FileEnumerator version_enum(chrome_path, false,
+ base::FileEnumerator::DIRECTORIES);
// TODO(tommi): The version directory really should match the version of
// setup.exe. To begin with, we should at least DCHECK that that's true.
@@ -133,12 +134,11 @@ Version* GetMaxVersionFromArchiveDir(const base::FilePath& chrome_path) {
bool version_found = false;
while (!version_enum.Next().empty()) {
- file_util::FileEnumerator::FindInfo find_data = {0};
- version_enum.GetFindInfo(&find_data);
- VLOG(1) << "directory found: " << find_data.cFileName;
+ base::FileEnumerator::FileInfo find_data = version_enum.GetInfo();
+ VLOG(1) << "directory found: " << find_data.GetName().value();
scoped_ptr<Version> found_version(
- new Version(WideToASCII(find_data.cFileName)));
+ new Version(WideToASCII(find_data.GetName().value())));
if (found_version->IsValid() &&
found_version->CompareTo(*max_version.get()) > 0) {
max_version.reset(found_version.release());
diff --git a/chrome/installer/setup/uninstall.cc b/chrome/installer/setup/uninstall.cc
index 295028c..27bb823 100644
--- a/chrome/installer/setup/uninstall.cc
+++ b/chrome/installer/setup/uninstall.cc
@@ -11,6 +11,7 @@
#include <vector>
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/path_service.h"
#include "base/process_util.h"
#include "base/string16.h"
@@ -252,11 +253,10 @@ void CheckShouldRemoveSetupAndArchive(
// Returns false in case of an error.
bool RemoveInstallerFiles(const base::FilePath& installer_directory,
bool remove_setup) {
- using file_util::FileEnumerator;
- FileEnumerator file_enumerator(
+ base::FileEnumerator file_enumerator(
installer_directory,
false,
- FileEnumerator::FILES | FileEnumerator::DIRECTORIES);
+ base::FileEnumerator::FILES | base::FileEnumerator::DIRECTORIES);
bool success = true;
base::FilePath setup_exe_base_name(installer::kSetupExe);
@@ -572,9 +572,8 @@ DeleteResult DeleteChromeFilesAndFolders(const InstallerState& installer_state,
// directory. For parents of the installer directory, we will later recurse
// and delete all the children (that are not also parents/children of the
// installer directory).
- using file_util::FileEnumerator;
- FileEnumerator file_enumerator(
- target_path, true, FileEnumerator::FILES | FileEnumerator::DIRECTORIES);
+ base::FileEnumerator file_enumerator(target_path, true,
+ base::FileEnumerator::FILES | base::FileEnumerator::DIRECTORIES);
while (true) {
base::FilePath to_delete(file_enumerator.Next());
if (to_delete.empty())
@@ -595,9 +594,8 @@ DeleteResult DeleteChromeFilesAndFolders(const InstallerState& installer_state,
// We don't try killing Chrome processes for Chrome Frame builds since
// that is unlikely to help. Instead, schedule files for deletion and
// return a value that will trigger a reboot prompt.
- FileEnumerator::FindInfo find_info;
- file_enumerator.GetFindInfo(&find_info);
- if (FileEnumerator::IsDirectory(find_info))
+ base::FileEnumerator::FileInfo find_info = file_enumerator.GetInfo();
+ if (find_info.IsDirectory())
ScheduleDirectoryForDeletion(to_delete.value().c_str());
else
ScheduleFileSystemEntityForDeletion(to_delete.value().c_str());
diff --git a/chrome/installer/test/alternate_version_generator.cc b/chrome/installer/test/alternate_version_generator.cc
index 7811be4..8222ba9 100644
--- a/chrome/installer/test/alternate_version_generator.cc
+++ b/chrome/installer/test/alternate_version_generator.cc
@@ -34,6 +34,7 @@
#include "base/basictypes.h"
#include "base/command_line.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/logging.h"
#include "base/path_service.h"
@@ -432,8 +433,7 @@ bool ApplyAlternateVersion(const base::FilePath& work_dir,
// Modify all .dll and .exe files with the current version.
bool doing_great = true;
- file_util::FileEnumerator all_files(work_dir, true,
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator all_files(work_dir, true, base::FileEnumerator::FILES);
do {
base::FilePath file = all_files.Next();
if (file.empty()) {
diff --git a/chrome/installer/util/delete_after_reboot_helper.cc b/chrome/installer/util/delete_after_reboot_helper.cc
index cc76b0e..3fff620 100644
--- a/chrome/installer/util/delete_after_reboot_helper.cc
+++ b/chrome/installer/util/delete_after_reboot_helper.cc
@@ -16,6 +16,7 @@
#include <vector>
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/win/registry.h"
#include "base/string_util.h"
@@ -116,8 +117,8 @@ bool ScheduleDirectoryForDeletion(const wchar_t* dir_name) {
// First schedule all the normal files for deletion.
{
bool success = true;
- file_util::FileEnumerator file_enum(base::FilePath(dir_name), false,
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator file_enum(base::FilePath(dir_name), false,
+ base::FileEnumerator::FILES);
for (base::FilePath file = file_enum.Next(); !file.empty();
file = file_enum.Next()) {
success = ScheduleFileSystemEntityForDeletion(file.value().c_str());
@@ -131,8 +132,8 @@ bool ScheduleDirectoryForDeletion(const wchar_t* dir_name) {
// Then recurse to all the subdirectories.
{
bool success = true;
- file_util::FileEnumerator dir_enum(base::FilePath(dir_name), false,
- file_util::FileEnumerator::DIRECTORIES);
+ base::FileEnumerator dir_enum(base::FilePath(dir_name), false,
+ base::FileEnumerator::DIRECTORIES);
for (base::FilePath sub_dir = dir_enum.Next(); !sub_dir.empty();
sub_dir = dir_enum.Next()) {
success = ScheduleDirectoryForDeletion(sub_dir.value().c_str());
diff --git a/chrome/installer/util/duplicate_tree_detector.cc b/chrome/installer/util/duplicate_tree_detector.cc
index ff4df32..62d9b51 100644
--- a/chrome/installer/util/duplicate_tree_detector.cc
+++ b/chrome/installer/util/duplicate_tree_detector.cc
@@ -6,13 +6,13 @@
#include "chrome/installer/util/duplicate_tree_detector.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/logging.h"
namespace installer {
bool IsIdenticalFileHierarchy(const base::FilePath& src_path,
const base::FilePath& dest_path) {
- using file_util::FileEnumerator;
base::PlatformFileInfo src_info;
base::PlatformFileInfo dest_info;
@@ -35,8 +35,8 @@ bool IsIdenticalFileHierarchy(const base::FilePath& src_path,
// "identical" to all the entries in src_path.
is_identical = true;
- FileEnumerator path_enum(src_path, false /* not recursive */,
- FileEnumerator::FILES | FileEnumerator::DIRECTORIES);
+ base::FileEnumerator path_enum(src_path, false /* not recursive */,
+ base::FileEnumerator::FILES | base::FileEnumerator::DIRECTORIES);
for (base::FilePath path = path_enum.Next();
is_identical && !path.empty();
path = path_enum.Next()) {
diff --git a/chrome/installer/util/installer_state.cc b/chrome/installer/util/installer_state.cc
index 0090629..b3ccfc3 100644
--- a/chrome/installer/util/installer_state.cc
+++ b/chrome/installer/util/installer_state.cc
@@ -11,6 +11,7 @@
#include "base/command_line.h"
#include "base/file_util.h"
#include "base/file_version_info.h"
+#include "base/files/file_enumerator.h"
#include "base/logging.h"
#include "base/memory/scoped_ptr.h"
#include "base/string_util.h"
@@ -649,8 +650,8 @@ void InstallerState::RemoveOldVersionDirectories(
GetExistingExeVersions(&existing_version_strings);
// Try to delete all directories that are not in the set we care to keep.
- file_util::FileEnumerator version_enum(target_path(), false,
- file_util::FileEnumerator::DIRECTORIES);
+ base::FileEnumerator version_enum(target_path(), false,
+ base::FileEnumerator::DIRECTORIES);
for (base::FilePath next_version = version_enum.Next(); !next_version.empty();
next_version = version_enum.Next()) {
base::FilePath dir_name(next_version.BaseName());
diff --git a/chrome/installer/util/installer_state_unittest.cc b/chrome/installer/util/installer_state_unittest.cc
index 0f985f8..f07564c 100644
--- a/chrome/installer/util/installer_state_unittest.cc
+++ b/chrome/installer/util/installer_state_unittest.cc
@@ -9,6 +9,7 @@
#include "base/base_paths.h"
#include "base/command_line.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/files/scoped_temp_dir.h"
#include "base/path_service.h"
@@ -584,8 +585,8 @@ TEST_F(InstallerStateTest, RemoveOldVersionDirs) {
expected_remaining_dirs.insert(kNewChromeExeVersion);
// Enumerate dirs in target_path(), ensure only desired remain.
- file_util::FileEnumerator version_enum(installer_state.target_path(), false,
- file_util::FileEnumerator::DIRECTORIES);
+ base::FileEnumerator version_enum(installer_state.target_path(), false,
+ base::FileEnumerator::DIRECTORIES);
for (base::FilePath next_version = version_enum.Next(); !next_version.empty();
next_version = version_enum.Next()) {
base::FilePath dir_name(next_version.BaseName());
diff --git a/chrome/installer/util/shell_util.cc b/chrome/installer/util/shell_util.cc
index 273c7f0..611aeb2 100644
--- a/chrome/installer/util/shell_util.cc
+++ b/chrome/installer/util/shell_util.cc
@@ -18,6 +18,7 @@
#include "base/bind.h"
#include "base/command_line.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/lazy_instance.h"
#include "base/logging.h"
@@ -1231,8 +1232,8 @@ bool BatchShortcutAction(const FileOperationCallback& shortcut_operation,
bool success = true;
InstallUtil::ProgramCompare target_compare(target_exe);
- file_util::FileEnumerator enumerator(
- shortcut_folder, false, file_util::FileEnumerator::FILES,
+ base::FileEnumerator enumerator(
+ shortcut_folder, false, base::FileEnumerator::FILES,
string16(L"*") + installer::kLnkExt);
base::FilePath target_path;
for (base::FilePath shortcut_path = enumerator.Next();
diff --git a/chrome/installer/util/shell_util_unittest.cc b/chrome/installer/util/shell_util_unittest.cc
index aa3d8e9..db38ed8 100644
--- a/chrome/installer/util/shell_util_unittest.cc
+++ b/chrome/installer/util/shell_util_unittest.cc
@@ -9,6 +9,7 @@
#include "base/base_paths.h"
#include "base/base_paths_win.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/scoped_temp_dir.h"
#include "base/md5.h"
#include "base/memory/scoped_ptr.h"
@@ -526,8 +527,8 @@ TEST_F(ShellUtilShortcutTest, CreateMultipleStartMenuShortcutsAndRemoveFolder) {
base::FilePath shortcut_folder(
fake_start_menu_.path().Append(dist_->GetAppShortCutName()));
- file_util::FileEnumerator file_counter(shortcut_folder, false,
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator file_counter(shortcut_folder, false,
+ base::FileEnumerator::FILES);
int count = 0;
while (!file_counter.Next().empty())
++count;
diff --git a/chrome/test/automation/proxy_launcher.cc b/chrome/test/automation/proxy_launcher.cc
index 8a932b5..9619ced 100644
--- a/chrome/test/automation/proxy_launcher.cc
+++ b/chrome/test/automation/proxy_launcher.cc
@@ -8,6 +8,7 @@
#include "base/environment.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/stringprintf.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_split.h"
@@ -49,13 +50,11 @@ const char kUITestType[] = "ui";
// startup tests other than the "cold" ones run more slowly than necessary.
bool CopyDirectoryContentsNoCache(const base::FilePath& source,
const base::FilePath& dest) {
- file_util::FileEnumerator en(source, false,
- file_util::FileEnumerator::FILES |
- file_util::FileEnumerator::DIRECTORIES);
+ base::FileEnumerator en(source, false,
+ base::FileEnumerator::FILES | base::FileEnumerator::DIRECTORIES);
for (base::FilePath cur = en.Next(); !cur.empty(); cur = en.Next()) {
- file_util::FileEnumerator::FindInfo info;
- en.GetFindInfo(&info);
- if (file_util::FileEnumerator::IsDirectory(info)) {
+ base::FileEnumerator::FileInfo info = en.GetInfo();
+ if (info.IsDirectory()) {
if (!file_util::CopyDirectory(cur, dest, true))
return false;
} else {
@@ -67,8 +66,7 @@ bool CopyDirectoryContentsNoCache(const base::FilePath& source,
// Kick out the profile files, this must happen after SetUp which creates the
// profile. It might be nicer to use EvictFileFromSystemCacheWrapper from
// UITest which will retry on failure.
- file_util::FileEnumerator kickout(dest, true,
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator kickout(dest, true, base::FileEnumerator::FILES);
for (base::FilePath cur = kickout.Next(); !cur.empty(); cur = kickout.Next())
base::EvictFileFromSystemCacheWithRetry(cur);
return true;
diff --git a/chrome/test/chromedriver/chrome/zip.cc b/chrome/test/chromedriver/chrome/zip.cc
index cbebc20..d717bf5 100644
--- a/chrome/test/chromedriver/chrome/zip.cc
+++ b/chrome/test/chromedriver/chrome/zip.cc
@@ -6,6 +6,7 @@
#include "base/bind.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/logging.h"
#include "base/string16.h"
#include "base/string_util.h"
@@ -137,9 +138,8 @@ bool ZipWithFilterCallback(const base::FilePath& src_dir,
}
bool success = true;
- file_util::FileEnumerator file_enumerator(src_dir, true /* recursive */,
- file_util::FileEnumerator::FILES |
- file_util::FileEnumerator::DIRECTORIES);
+ base::FileEnumerator file_enumerator(src_dir, true /* recursive */,
+ base::FileEnumerator::FILES | base::FileEnumerator::DIRECTORIES);
for (base::FilePath path = file_enumerator.Next(); !path.value().empty();
path = file_enumerator.Next()) {
if (!filter_cb.Run(path)) {
diff --git a/chrome/test/chromedriver/util.cc b/chrome/test/chromedriver/util.cc
index 60919ab..e4907b1 100644
--- a/chrome/test/chromedriver/util.cc
+++ b/chrome/test/chromedriver/util.cc
@@ -6,6 +6,7 @@
#include "base/base64.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/scoped_temp_dir.h"
#include "base/format_macros.h"
#include "base/rand_util.h"
@@ -383,9 +384,8 @@ Status UnzipSoleFile(const base::FilePath& unzip_dir,
}
}
- file_util::FileEnumerator enumerator(unzip_dir, false /* recursive */,
- file_util::FileEnumerator::FILES |
- file_util::FileEnumerator::DIRECTORIES);
+ base::FileEnumerator enumerator(unzip_dir, false /* recursive */,
+ base::FileEnumerator::FILES | base::FileEnumerator::DIRECTORIES);
base::FilePath first_file = enumerator.Next();
if (first_file.empty())
return Status(kUnknownError, "contained 0 files");
diff --git a/chrome/test/gpu/gpu_pixel_browsertest.cc b/chrome/test/gpu/gpu_pixel_browsertest.cc
index 1752713..82e997e 100644
--- a/chrome/test/gpu/gpu_pixel_browsertest.cc
+++ b/chrome/test/gpu/gpu_pixel_browsertest.cc
@@ -4,6 +4,7 @@
#include "base/command_line.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/path_service.h"
#include "base/string_util.h"
@@ -420,10 +421,10 @@ class GpuPixelBrowserTest : public InProcessBrowserTest {
void ObtainLocalRefImageRevision() {
base::FilePath filter;
filter = filter.AppendASCII(test_name_ + "_*.rev");
- file_util::FileEnumerator locator(ref_img_dir_,
- false, // non recursive
- file_util::FileEnumerator::FILES,
- filter.value());
+ base::FileEnumerator locator(ref_img_dir_,
+ false, // non recursive
+ base::FileEnumerator::FILES,
+ filter.value());
int64 max_revision = 0;
std::vector<base::FilePath> outdated_revs;
for (base::FilePath full_path = locator.Next();
diff --git a/chrome/test/mini_installer_test/installer_path_provider.cc b/chrome/test/mini_installer_test/installer_path_provider.cc
index 02f7abe..b751153 100644
--- a/chrome/test/mini_installer_test/installer_path_provider.cc
+++ b/chrome/test/mini_installer_test/installer_path_provider.cc
@@ -8,6 +8,7 @@
#include "base/command_line.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/path_service.h"
#include "base/process_util.h"
#include "base/string_util.h"
@@ -19,24 +20,12 @@
namespace {
struct FilePathInfo {
- file_util::FileEnumerator::FindInfo info;
+ base::FileEnumerator::FileInfo info;
base::FilePath path;
};
-bool CompareDate(const FilePathInfo& a,
- const FilePathInfo& b) {
-#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
+bool CompareDate(const FilePathInfo& a, const FilePathInfo& b) {
+ return a.info.GetLastModifiedTime() > b.info.GetLastModifiedTime();
}
// Get list of file |type| matching |pattern| in |root|.
@@ -44,15 +33,15 @@ bool CompareDate(const FilePathInfo& a,
// Return true if files/directories are found.
bool FindMatchingFiles(const base::FilePath& root,
const std::string& pattern,
- file_util::FileEnumerator::FileType type,
+ base::FileEnumerator::FileType type,
std::vector<base::FilePath>* paths) {
- file_util::FileEnumerator files(root, false, type,
+ base::FileEnumerator files(root, false, type,
base::FilePath().AppendASCII(pattern).value());
std::vector<FilePathInfo> matches;
for (base::FilePath current = files.Next(); !current.empty();
current = files.Next()) {
FilePathInfo entry;
- files.GetFindInfo(&entry.info);
+ entry.info = files.GetInfo();
entry.path = current;
matches.push_back(entry);
}
@@ -70,7 +59,7 @@ bool FindMatchingFiles(const base::FilePath& root,
bool FindNewestMatchingFile(const base::FilePath& root,
const std::string& pattern,
- file_util::FileEnumerator::FileType type,
+ base::FileEnumerator::FileType type,
base::FilePath* path) {
std::vector<base::FilePath> paths;
if (FindMatchingFiles(root, pattern, type, &paths)) {
@@ -144,12 +133,12 @@ bool InstallerPathProvider::GetPreviousInstaller(base::FilePath* path) {
"*%s", tokenized_name[2].c_str());
std::vector<base::FilePath> previous_build;
if (FindMatchingFiles(diff_installer.DirName().DirName().DirName(),
- build_pattern, file_util::FileEnumerator::DIRECTORIES,
+ build_pattern, base::FileEnumerator::DIRECTORIES,
&previous_build)) {
base::FilePath windir = previous_build.at(0).Append(
mini_installer_constants::kWinFolder);
FindNewestMatchingFile(windir, full_installer_pattern,
- file_util::FileEnumerator::FILES, &previous_installer);
+ base::FileEnumerator::FILES, &previous_installer);
}
if (previous_installer.empty())
@@ -215,7 +204,7 @@ bool InstallerPathProvider::GetInstaller(const std::string& pattern,
base::FilePath root(mini_installer_constants::kChromeInstallersLocation);
std::vector<base::FilePath> paths;
if (!FindMatchingFiles(root, current_build_,
- file_util::FileEnumerator::DIRECTORIES, &paths)) {
+ base::FileEnumerator::DIRECTORIES, &paths)) {
return false;
}
@@ -223,8 +212,8 @@ bool InstallerPathProvider::GetInstaller(const std::string& pattern,
for (dir = paths.begin(); dir != paths.end(); ++dir) {
base::FilePath windir = dir->Append(
mini_installer_constants::kWinFolder);
- if (FindNewestMatchingFile(windir, pattern,
- file_util::FileEnumerator::FILES, &installer)) {
+ if (FindNewestMatchingFile(windir, pattern, base::FileEnumerator::FILES,
+ &installer)) {
break;
}
}
diff --git a/chrome/test/perf/page_cycler_test.cc b/chrome/test/perf/page_cycler_test.cc
index 9d13000..b386fdd 100644
--- a/chrome/test/perf/page_cycler_test.cc
+++ b/chrome/test/perf/page_cycler_test.cc
@@ -5,6 +5,7 @@
#include "base/basictypes.h"
#include "base/command_line.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/path_service.h"
#include "base/process_util.h"
@@ -68,8 +69,8 @@ void PopulateBufferCache(const base::FilePath& test_dir) {
const base::FilePath svn_dir(FILE_PATH_LITERAL(".svn"));
for (size_t idx = 0; idx < dirs.size(); ++idx) {
- file_util::FileEnumerator dir_enumerator(dirs[idx], false,
- file_util::FileEnumerator::DIRECTORIES);
+ base::FileEnumerator dir_enumerator(dirs[idx], false,
+ base::FileEnumerator::DIRECTORIES);
base::FilePath path;
for (path = dir_enumerator.Next();
!path.empty();
@@ -89,8 +90,8 @@ void PopulateBufferCache(const base::FilePath& test_dir) {
std::vector<base::FilePath>::const_iterator iter;
for (iter = dirs.begin(); iter != dirs.end(); ++iter) {
- file_util::FileEnumerator file_enumerator(*iter, false,
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator file_enumerator(*iter, false,
+ base::FileEnumerator::FILES);
base::FilePath path;
for (path = file_enumerator.Next();
!path.empty();
diff --git a/chrome/test/perf/startup_test.cc b/chrome/test/perf/startup_test.cc
index f8ab9f8..c5d2083 100644
--- a/chrome/test/perf/startup_test.cc
+++ b/chrome/test/perf/startup_test.cc
@@ -4,6 +4,7 @@
#include "base/environment.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/path_service.h"
#include "base/string_util.h"
#include "base/stringprintf.h"
diff --git a/chrome/test/reliability/automated_ui_tests.cc b/chrome/test/reliability/automated_ui_tests.cc
index 4654082..4ea9509 100644
--- a/chrome/test/reliability/automated_ui_tests.cc
+++ b/chrome/test/reliability/automated_ui_tests.cc
@@ -10,6 +10,7 @@
#include "base/environment.h"
#include "base/file_util.h"
#include "base/file_version_info.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/i18n/time_formatting.h"
#include "base/logging.h"
@@ -771,9 +772,9 @@ base::FilePath AutomatedUITest::GetMostRecentCrashDump() {
bool first_file = true;
- file_util::FileEnumerator enumerator(crash_dump_path,
- false, // not recursive
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator enumerator(crash_dump_path,
+ false, // not recursive
+ base::FileEnumerator::FILES);
for (base::FilePath path = enumerator.Next(); !path.value().empty();
path = enumerator.Next()) {
base::PlatformFileInfo file_info;
diff --git a/chrome/test/reliability/page_load_test.cc b/chrome/test/reliability/page_load_test.cc
index 99429b8..e3b546a 100644
--- a/chrome/test/reliability/page_load_test.cc
+++ b/chrome/test/reliability/page_load_test.cc
@@ -41,6 +41,7 @@
#include "base/environment.h"
#include "base/file_util.h"
#include "base/file_version_info.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/i18n/time_formatting.h"
#include "base/memory/scoped_ptr.h"
@@ -636,9 +637,9 @@ class PageLoadTest : public UITest {
PathService::Get(chrome::DIR_CRASH_DUMPS, &crash_dumps_dir_path_);
}
- file_util::FileEnumerator enumerator(crash_dumps_dir_path_,
- false, // not recursive
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator enumerator(crash_dumps_dir_path_,
+ false, // not recursive
+ base::FileEnumerator::FILES);
for (base::FilePath path = enumerator.Next(); !path.value().empty();
path = enumerator.Next()) {
if (path.MatchesExtension(FILE_PATH_LITERAL(".dmp")))
@@ -687,9 +688,9 @@ class PageLoadTest : public UITest {
}
bool HasNewCrashDumps() {
- file_util::FileEnumerator enumerator(crash_dumps_dir_path_,
- false, // not recursive
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator enumerator(crash_dumps_dir_path_,
+ false, // not recursive
+ base::FileEnumerator::FILES);
for (base::FilePath path = enumerator.Next(); !path.value().empty();
path = enumerator.Next()) {
if (path.MatchesExtension(FILE_PATH_LITERAL(".dmp")) &&
@@ -707,9 +708,9 @@ class PageLoadTest : public UITest {
NavigationMetrics* metrics,
bool delete_dumps) {
int num_dumps = 0;
- file_util::FileEnumerator enumerator(crash_dumps_dir_path_,
- false, // not recursive
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator enumerator(crash_dumps_dir_path_,
+ false, // not recursive
+ base::FileEnumerator::FILES);
for (base::FilePath path = enumerator.Next(); !path.value().empty();
path = enumerator.Next()) {
if (path.MatchesExtension(FILE_PATH_LITERAL(".dmp")) &&
diff --git a/chrome/test/ui/ui_test.cc b/chrome/test/ui/ui_test.cc
index 87c5679..b471715 100644
--- a/chrome/test/ui/ui_test.cc
+++ b/chrome/test/ui/ui_test.cc
@@ -17,6 +17,7 @@
#include "base/command_line.h"
#include "base/environment.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/files/scoped_temp_dir.h"
#include "base/json/json_file_value_serializer.h"
@@ -447,11 +448,9 @@ int UITestBase::GetCrashCount() const {
PathService::Get(chrome::DIR_CRASH_DUMPS, &crash_dump_path);
int files_found = 0;
- file_util::FileEnumerator en(crash_dump_path, false,
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator en(crash_dump_path, false, base::FileEnumerator::FILES);
while (!en.Next().empty()) {
- file_util::FileEnumerator::FindInfo info;
- if (file_util::FileEnumerator::GetLastModifiedTime(info) > test_start_time_)
+ if (en.GetInfo().GetLastModifiedTime() > test_start_time_)
files_found++;
}
@@ -460,7 +459,7 @@ int UITestBase::GetCrashCount() const {
return files_found / 2;
#else
return files_found;
- #endif
+#endif
}
std::string UITestBase::CheckErrorsAndCrashes() const {
diff --git a/chrome/test/webdriver/webdriver_util.cc b/chrome/test/webdriver/webdriver_util.cc
index 274144c..54833a8 100644
--- a/chrome/test/webdriver/webdriver_util.cc
+++ b/chrome/test/webdriver/webdriver_util.cc
@@ -7,6 +7,7 @@
#include "base/base64.h"
#include "base/basictypes.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/scoped_temp_dir.h"
#include "base/format_macros.h"
#include "base/json/json_reader.h"
@@ -372,9 +373,8 @@ bool UnzipSoleFile(const base::FilePath& unzip_dir,
return false;
}
- file_util::FileEnumerator enumerator(unzip_dir, false /* recursive */,
- file_util::FileEnumerator::FILES |
- file_util::FileEnumerator::DIRECTORIES);
+ base::FileEnumerator enumerator(unzip_dir, false /* recursive */,
+ base::FileEnumerator::FILES | base::FileEnumerator::DIRECTORIES);
base::FilePath first_file = enumerator.Next();
if (first_file.empty()) {
*error_msg = "Zip contained 0 files";
diff --git a/chrome/tools/profiles/generate_profile.cc b/chrome/tools/profiles/generate_profile.cc
index fbd761e..afb620e 100644
--- a/chrome/tools/profiles/generate_profile.cc
+++ b/chrome/tools/profiles/generate_profile.cc
@@ -10,6 +10,7 @@
#include "base/at_exit.h"
#include "base/command_line.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/i18n/icu_util.h"
#include "base/logging.h"
@@ -290,8 +291,8 @@ int main(int argc, char* argv[]) {
message_loop.RunUntilIdle();
- file_util::FileEnumerator file_iterator(profile.GetPath(), false,
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator file_iterator(profile.GetPath(), false,
+ base::FileEnumerator::FILES);
base::FilePath path = file_iterator.Next();
while (!path.empty()) {
base::FilePath dst_file = dst_dir.Append(path.BaseName());
diff --git a/chrome_frame/test/reliability/page_load_test.cc b/chrome_frame/test/reliability/page_load_test.cc
index 59212a6..07af04d 100644
--- a/chrome_frame/test/reliability/page_load_test.cc
+++ b/chrome_frame/test/reliability/page_load_test.cc
@@ -25,6 +25,7 @@
#include "base/command_line.h"
#include "base/file_util.h"
#include "base/file_version_info.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/i18n/time_formatting.h"
#include "base/path_service.h"
@@ -332,9 +333,9 @@ class PageLoadTest : public testing::Test {
virtual void SetUp() {
// Initialize crash_dumps_dir_path_.
PathService::Get(chrome::DIR_CRASH_DUMPS, &crash_dumps_dir_path_);
- file_util::FileEnumerator enumerator(crash_dumps_dir_path_,
- false, // not recursive
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator enumerator(crash_dumps_dir_path_,
+ false, // not recursive
+ base::FileEnumerator::FILES);
for (base::FilePath path = enumerator.Next(); !path.value().empty();
path = enumerator.Next()) {
if (path.MatchesExtension(FILE_PATH_LITERAL(".dmp")))
@@ -411,9 +412,9 @@ class PageLoadTest : public testing::Test {
NavigationMetrics* metrics) {
int num_dumps = 0;
- file_util::FileEnumerator enumerator(crash_dumps_dir_path_,
- false, // not recursive
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator enumerator(crash_dumps_dir_path_,
+ false, // not recursive
+ base::FileEnumerator::FILES);
for (base::FilePath path = enumerator.Next(); !path.value().empty();
path = enumerator.Next()) {
if (path.MatchesExtension(FILE_PATH_LITERAL(".dmp")) &&
diff --git a/cloud_print/virtual_driver/win/port_monitor/port_monitor.cc b/cloud_print/virtual_driver/win/port_monitor/port_monitor.cc
index c13228a..9008285 100644
--- a/cloud_print/virtual_driver/win/port_monitor/port_monitor.cc
+++ b/cloud_print/virtual_driver/win/port_monitor/port_monitor.cc
@@ -15,6 +15,7 @@
#include "base/at_exit.h"
#include "base/command_line.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/logging.h"
#include "base/path_service.h"
#include "base/process.h"
@@ -119,14 +120,11 @@ base::FilePath GetAppDataDir() {
// Delete files which where not deleted by chrome.
void DeleteLeakedFiles(const base::FilePath& dir) {
- using file_util::FileEnumerator;
base::Time delete_before = base::Time::Now() - base::TimeDelta::FromDays(1);
- FileEnumerator enumerator(dir, false, FileEnumerator::FILES);
+ base::FileEnumerator enumerator(dir, false, base::FileEnumerator::FILES);
for (base::FilePath file_path = enumerator.Next(); !file_path.empty();
file_path = enumerator.Next()) {
- FileEnumerator::FindInfo info;
- enumerator.GetFindInfo(&info);
- if (FileEnumerator::GetLastModifiedTime(info) < delete_before)
+ if (enumerator.GetInfo().GetLastModifiedTime() < delete_before)
file_util::Delete(file_path, false);
}
}
diff --git a/cloud_print/virtual_driver/win/virtual_driver.gypi b/cloud_print/virtual_driver/win/virtual_driver.gypi
index 80c0ffb..26dc308 100644
--- a/cloud_print/virtual_driver/win/virtual_driver.gypi
+++ b/cloud_print/virtual_driver/win/virtual_driver.gypi
@@ -35,6 +35,7 @@
'port_monitor/port_monitor.h',
],
'dependencies': [
+ '<(DEPTH)/base/base.gyp:base',
'virtual_driver_lib<(virtual_driver_suffix)',
],
},
diff --git a/components/autofill/browser/data_driven_test.cc b/components/autofill/browser/data_driven_test.cc
index 7717cf7..9d0399e 100644
--- a/components/autofill/browser/data_driven_test.cc
+++ b/components/autofill/browser/data_driven_test.cc
@@ -5,6 +5,7 @@
#include "components/autofill/browser/data_driven_test.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/path_service.h"
#include "base/string_util.h"
#include "chrome/common/chrome_paths.h"
@@ -36,10 +37,10 @@ void DataDrivenTest::RunDataDrivenTest(
const base::FilePath& input_directory,
const base::FilePath& output_directory,
const base::FilePath::StringType& file_name_pattern) {
- file_util::FileEnumerator input_files(input_directory,
- false,
- file_util::FileEnumerator::FILES,
- file_name_pattern);
+ base::FileEnumerator input_files(input_directory,
+ false,
+ base::FileEnumerator::FILES,
+ file_name_pattern);
for (base::FilePath input_file = input_files.Next();
!input_file.empty();
diff --git a/content/browser/gpu/gpu_pixel_browsertest.cc b/content/browser/gpu/gpu_pixel_browsertest.cc
index fb93076..f7f2254 100644
--- a/content/browser/gpu/gpu_pixel_browsertest.cc
+++ b/content/browser/gpu/gpu_pixel_browsertest.cc
@@ -4,6 +4,7 @@
#include "base/command_line.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/path_service.h"
#include "base/string_number_conversions.h"
@@ -398,10 +399,10 @@ class GpuPixelBrowserTest : public ContentBrowserTest {
void ObtainLocalRefImageRevision() {
base::FilePath filter;
filter = filter.AppendASCII(test_name_ + "_*.rev");
- file_util::FileEnumerator locator(ref_img_dir_,
- false, // non recursive
- file_util::FileEnumerator::FILES,
- filter.value());
+ base::FileEnumerator locator(ref_img_dir_,
+ false, // non recursive
+ base::FileEnumerator::FILES,
+ filter.value());
int64 max_revision = 0;
std::vector<base::FilePath> outdated_revs;
for (base::FilePath full_path = locator.Next();
diff --git a/content/browser/indexed_db/indexed_db_context_impl.cc b/content/browser/indexed_db/indexed_db_context_impl.cc
index b95be28..a0b945b 100644
--- a/content/browser/indexed_db/indexed_db_context_impl.cc
+++ b/content/browser/indexed_db/indexed_db_context_impl.cc
@@ -9,6 +9,7 @@
#include "base/bind.h"
#include "base/command_line.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/logging.h"
#include "base/message_loop_proxy.h"
#include "base/string_util.h"
@@ -46,8 +47,8 @@ void GetAllOriginsAndPaths(
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED));
if (indexeddb_path.empty())
return;
- file_util::FileEnumerator file_enumerator(indexeddb_path,
- false, file_util::FileEnumerator::DIRECTORIES);
+ base::FileEnumerator file_enumerator(indexeddb_path,
+ false, base::FileEnumerator::DIRECTORIES);
for (base::FilePath file_path = file_enumerator.Next(); !file_path.empty();
file_path = file_enumerator.Next()) {
if (file_path.Extension() == IndexedDBContextImpl::kIndexedDBExtension) {
diff --git a/content/browser/renderer_host/pepper/pepper_flash_file_message_filter.cc b/content/browser/renderer_host/pepper/pepper_flash_file_message_filter.cc
index e051d97..130cf08 100644
--- a/content/browser/renderer_host/pepper/pepper_flash_file_message_filter.cc
+++ b/content/browser/renderer_host/pepper/pepper_flash_file_message_filter.cc
@@ -6,6 +6,7 @@
#include "base/bind.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/threading/sequenced_worker_pool.h"
#include "content/browser/child_process_security_policy_impl.h"
#include "content/public/browser/browser_ppapi_host.h"
@@ -219,17 +220,16 @@ int32_t PepperFlashFileMessageFilter::OnGetDirContents(
}
ppapi::DirContents contents;
- file_util::FileEnumerator enumerator(full_path, false,
- file_util::FileEnumerator::FILES |
- file_util::FileEnumerator::DIRECTORIES |
- file_util::FileEnumerator::INCLUDE_DOT_DOT);
+ base::FileEnumerator enumerator(full_path, false,
+ base::FileEnumerator::FILES |
+ base::FileEnumerator::DIRECTORIES |
+ base::FileEnumerator::INCLUDE_DOT_DOT);
while (!enumerator.Next().empty()) {
- file_util::FileEnumerator::FindInfo info;
- enumerator.GetFindInfo(&info);
+ base::FileEnumerator::FileInfo info = enumerator.GetInfo();
ppapi::DirEntry entry = {
- file_util::FileEnumerator::GetFilename(info),
- file_util::FileEnumerator::IsDirectory(info)
+ info.GetName(),
+ info.IsDirectory()
};
contents.push_back(entry);
}
diff --git a/content/browser/storage_partition_impl_map.cc b/content/browser/storage_partition_impl_map.cc
index 94141d61..9c95e32 100644
--- a/content/browser/storage_partition_impl_map.cc
+++ b/content/browser/storage_partition_impl_map.cc
@@ -7,6 +7,7 @@
#include "base/bind.h"
#include "base/callback.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/stl_util.h"
#include "base/string_number_conversions.h"
@@ -182,12 +183,12 @@ const int kPartitionNameHashBytes = 6;
// Needed for selecting all files in ObliterateOneDirectory() below.
#if defined(OS_POSIX)
-const int kAllFileTypes = file_util::FileEnumerator::FILES |
- file_util::FileEnumerator::DIRECTORIES |
- file_util::FileEnumerator::SHOW_SYM_LINKS;
+const int kAllFileTypes = base::FileEnumerator::FILES |
+ base::FileEnumerator::DIRECTORIES |
+ base::FileEnumerator::SHOW_SYM_LINKS;
#else
-const int kAllFileTypes = file_util::FileEnumerator::FILES |
- file_util::FileEnumerator::DIRECTORIES;
+const int kAllFileTypes = base::FileEnumerator::FILES |
+ base::FileEnumerator::DIRECTORIES;
#endif
base::FilePath GetStoragePartitionDomainPath(
@@ -208,7 +209,7 @@ void ObliterateOneDirectory(const base::FilePath& current_dir,
std::vector<base::FilePath>* paths_to_consider) {
CHECK(current_dir.IsAbsolute());
- file_util::FileEnumerator enumerator(current_dir, false, kAllFileTypes);
+ base::FileEnumerator enumerator(current_dir, false, kAllFileTypes);
for (base::FilePath to_delete = enumerator.Next(); !to_delete.empty();
to_delete = enumerator.Next()) {
// Enum tracking which of the 3 possible actions to take for |to_delete|.
@@ -322,7 +323,7 @@ void BlockingGarbageCollect(
scoped_ptr<base::hash_set<base::FilePath> > active_paths) {
CHECK(storage_root.IsAbsolute());
- file_util::FileEnumerator enumerator(storage_root, false, kAllFileTypes);
+ base::FileEnumerator enumerator(storage_root, false, kAllFileTypes);
base::FilePath trash_directory;
if (!file_util::CreateTemporaryDirInDir(storage_root, kTrashDirname,
&trash_directory)) {
diff --git a/content/browser/zygote_host/zygote_host_impl_linux.cc b/content/browser/zygote_host/zygote_host_impl_linux.cc
index ba7884f8..c429a82 100644
--- a/content/browser/zygote_host/zygote_host_impl_linux.cc
+++ b/content/browser/zygote_host/zygote_host_impl_linux.cc
@@ -13,6 +13,7 @@
#include "base/command_line.h"
#include "base/environment.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/linux_util.h"
#include "base/logging.h"
#include "base/memory/linked_ptr.h"
@@ -371,8 +372,7 @@ void ZygoteHostImpl::AdjustRendererOOMScore(base::ProcessHandle pid,
if (!selinux_valid) {
const base::FilePath kSelinuxPath("/selinux");
- file_util::FileEnumerator en(kSelinuxPath, false,
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator en(kSelinuxPath, false, base::FileEnumerator::FILES);
bool has_selinux_files = !en.Next().empty();
selinux = access(kSelinuxPath.value().c_str(), X_OK) == 0 &&
diff --git a/content/gpu/gpu_info_collector_win.cc b/content/gpu/gpu_info_collector_win.cc
index 402a4b1..7269883 100644
--- a/content/gpu/gpu_info_collector_win.cc
+++ b/content/gpu/gpu_info_collector_win.cc
@@ -16,6 +16,7 @@
#include "base/command_line.h"
#include "base/debug/trace_event.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/logging.h"
#include "base/message_loop.h"
@@ -77,10 +78,10 @@ content::GpuPerformanceStats RetrieveGpuPerformanceStats() {
}
// Find most recent formal assessment results.
- file_util::FileEnumerator file_enumerator(
+ base::FileEnumerator file_enumerator(
base::FilePath(winsat_results_path),
false, // not recursive
- file_util::FileEnumerator::FILES,
+ base::FileEnumerator::FILES,
FILE_PATH_LITERAL("* * Formal.Assessment (*).WinSAT.xml"));
base::FilePath current_results;
diff --git a/content/test/image_decoder_test.cc b/content/test/image_decoder_test.cc
index b52c5c8..4d7ffa4 100644
--- a/content/test/image_decoder_test.cc
+++ b/content/test/image_decoder_test.cc
@@ -5,6 +5,7 @@
#include "content/test/image_decoder_test.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/md5.h"
#include "base/memory/scoped_ptr.h"
@@ -121,9 +122,9 @@ void ImageDecoderTest::SetUp() {
std::vector<base::FilePath> ImageDecoderTest::GetImageFiles() const {
std::string pattern = "*." + format_;
- file_util::FileEnumerator enumerator(data_dir_,
- false,
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator enumerator(data_dir_,
+ false,
+ base::FileEnumerator::FILES);
std::vector<base::FilePath> image_files;
base::FilePath next_file_name;
diff --git a/gpu/tools/compositor_model_bench/compositor_model_bench.cc b/gpu/tools/compositor_model_bench/compositor_model_bench.cc
index 6a7c834..613ee7f 100644
--- a/gpu/tools/compositor_model_bench/compositor_model_bench.cc
+++ b/gpu/tools/compositor_model_bench/compositor_model_bench.cc
@@ -26,6 +26,7 @@
#include "base/bind.h"
#include "base/command_line.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/memory/scoped_ptr.h"
#include "base/message_loop.h"
@@ -39,7 +40,6 @@
using base::TimeTicks;
using file_util::CloseFile;
using file_util::DirectoryExists;
-using file_util::FileEnumerator;
using file_util::OpenFile;
using file_util::PathExists;
using std::queue;
@@ -389,7 +389,7 @@ int main(int argc, char* argv[]) {
if (DirectoryExists(inPath)) {
LOG(INFO) << "(input path is a directory)";
- FileEnumerator dirItr(inPath, true, FileEnumerator::FILES);
+ base::FileEnumerator dirItr(inPath, true, base::FileEnumerator::FILES);
for (base::FilePath f = dirItr.Next(); !f.empty(); f = dirItr.Next()) {
sim.QueueTest(f);
}
diff --git a/media/video/capture/linux/video_capture_device_linux.cc b/media/video/capture/linux/video_capture_device_linux.cc
index cf53ce0..6c9047e 100644
--- a/media/video/capture/linux/video_capture_device_linux.cc
+++ b/media/video/capture/linux/video_capture_device_linux.cc
@@ -19,6 +19,7 @@
#include "base/bind.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/stringprintf.h"
namespace media {
@@ -100,15 +101,14 @@ void VideoCaptureDevice::GetDeviceNames(Names* device_names) {
device_names->clear();
base::FilePath path("/dev/");
- file_util::FileEnumerator enumerator(
- path, false, file_util::FileEnumerator::FILES, "video*");
+ base::FileEnumerator enumerator(
+ path, false, base::FileEnumerator::FILES, "video*");
while (!enumerator.Next().empty()) {
- file_util::FileEnumerator::FindInfo info;
- enumerator.GetFindInfo(&info);
+ base::FileEnumerator::FileInfo info = enumerator.GetInfo();
Name name;
- name.unique_id = path.value() + info.filename;
+ name.unique_id = path.value() + info.GetName().value();
if ((fd = open(name.unique_id.c_str() , O_RDONLY)) < 0) {
// Failed to open this device.
continue;
@@ -123,7 +123,7 @@ void VideoCaptureDevice::GetDeviceNames(Names* device_names) {
name.device_name = base::StringPrintf("%s", cap.card);
device_names->push_back(name);
} else {
- DVLOG(1) << "No usable formats reported by " << info.filename;
+ DVLOG(1) << "No usable formats reported by " << info.GetName().value();
}
}
close(fd);
diff --git a/net/base/directory_lister.cc b/net/base/directory_lister.cc
index c01289e..2f7e473 100644
--- a/net/base/directory_lister.cc
+++ b/net/base/directory_lister.cc
@@ -9,6 +9,7 @@
#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"
@@ -31,47 +32,35 @@ bool IsDotDot(const base::FilePath& path) {
bool CompareAlphaDirsFirst(const DirectoryLister::DirectoryListerData& a,
const DirectoryLister::DirectoryListerData& b) {
// Parent directory before all else.
- if (IsDotDot(file_util::FileEnumerator::GetFilename(a.info)))
+ if (IsDotDot(a.info.GetName()))
return true;
- if (IsDotDot(file_util::FileEnumerator::GetFilename(b.info)))
+ if (IsDotDot(b.info.GetName()))
return false;
// Directories before regular files.
- bool a_is_directory = file_util::FileEnumerator::IsDirectory(a.info);
- bool b_is_directory = file_util::FileEnumerator::IsDirectory(b.info);
+ bool a_is_directory = a.info.IsDirectory();
+ bool b_is_directory = b.info.IsDirectory();
if (a_is_directory != b_is_directory)
return a_is_directory;
- return file_util::LocaleAwareCompareFilenames(
- file_util::FileEnumerator::GetFilename(a.info),
- file_util::FileEnumerator::GetFilename(b.info));
+ return file_util::LocaleAwareCompareFilenames(a.info.GetName(),
+ b.info.GetName());
}
bool CompareDate(const DirectoryLister::DirectoryListerData& a,
const DirectoryLister::DirectoryListerData& b) {
// Parent directory before all else.
- if (IsDotDot(file_util::FileEnumerator::GetFilename(a.info)))
+ if (IsDotDot(a.info.GetName()))
return true;
- if (IsDotDot(file_util::FileEnumerator::GetFilename(b.info)))
+ if (IsDotDot(b.info.GetName()))
return false;
// Directories before regular files.
- bool a_is_directory = file_util::FileEnumerator::IsDirectory(a.info);
- bool b_is_directory = file_util::FileEnumerator::IsDirectory(b.info);
+ bool a_is_directory = a.info.IsDirectory();
+ bool b_is_directory = b.info.IsDirectory();
if (a_is_directory != b_is_directory)
return a_is_directory;
-#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
+ return a.info.GetLastModifiedTime() > b.info.GetLastModifiedTime();
}
// Comparator for sorting find result by paths. This uses the locale-aware
@@ -161,18 +150,17 @@ void DirectoryLister::Core::StartInternal() {
return;
}
- int types = file_util::FileEnumerator::FILES |
- file_util::FileEnumerator::DIRECTORIES;
+ int types = base::FileEnumerator::FILES | base::FileEnumerator::DIRECTORIES;
if (!recursive_)
- types |= file_util::FileEnumerator::INCLUDE_DOT_DOT;
+ types |= base::FileEnumerator::INCLUDE_DOT_DOT;
- file_util::FileEnumerator file_enum(dir_, recursive_, types);
+ base::FileEnumerator file_enum(dir_, recursive_, types);
base::FilePath path;
std::vector<DirectoryListerData> file_data;
while (lister_ && !(path = file_enum.Next()).empty()) {
DirectoryListerData data;
- file_enum.GetFindInfo(&data.info);
+ data.info = file_enum.GetInfo();
data.path = path;
file_data.push_back(data);
diff --git a/net/base/directory_lister.h b/net/base/directory_lister.h
index 999b857..e8de0ab 100644
--- a/net/base/directory_lister.h
+++ b/net/base/directory_lister.h
@@ -7,7 +7,7 @@
#include <vector>
-#include "base/file_util.h"
+#include "base/files/file_enumerator.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 {
- file_util::FileEnumerator::FindInfo info;
+ base::FileEnumerator::FileInfo info;
base::FilePath path;
};
diff --git a/net/base/directory_lister_unittest.cc b/net/base/directory_lister_unittest.cc
index b088c8e..bc4cb3a 100644
--- a/net/base/directory_lister_unittest.cc
+++ b/net/base/directory_lister_unittest.cc
@@ -5,6 +5,7 @@
#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"
@@ -63,18 +64,17 @@ class ListerDelegate : public DirectoryLister::DirectoryListerDelegate {
current < file_list_.size();
previous++, current++) {
// Directories should come before files.
- if (file_util::FileEnumerator::IsDirectory(file_list_[previous]) &&
- !file_util::FileEnumerator::IsDirectory(file_list_[current])) {
+ if (file_list_[previous].IsDirectory() &&
+ !file_list_[current].IsDirectory()) {
continue;
}
EXPECT_NE(FILE_PATH_LITERAL(".."),
- 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]));
+ file_list_[current].GetName().BaseName().value());
+ EXPECT_EQ(file_list_[previous].IsDirectory(),
+ file_list_[current].IsDirectory());
EXPECT_TRUE(file_util::LocaleAwareCompareFilenames(
- file_util::FileEnumerator::GetFilename(file_list_[previous]),
- file_util::FileEnumerator::GetFilename(file_list_[current])));
+ file_list_[previous].GetName(),
+ file_list_[current].GetName()));
}
}
}
@@ -87,7 +87,7 @@ class ListerDelegate : public DirectoryLister::DirectoryListerDelegate {
int error_;
bool recursive_;
bool quit_loop_after_each_file_;
- std::vector<file_util::FileEnumerator::FindInfo> file_list_;
+ std::vector<base::FileEnumerator::FileInfo> 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 781c69b..fa7c5db 100644
--- a/net/disk_cache/block_files_unittest.cc
+++ b/net/disk_cache/block_files_unittest.cc
@@ -3,6 +3,7 @@
// 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"
@@ -15,7 +16,7 @@ namespace {
// Returns the number of files in this folder.
int NumberOfFiles(const base::FilePath& path) {
- file_util::FileEnumerator iter(path, false, file_util::FileEnumerator::FILES);
+ base::FileEnumerator iter(path, false, base::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 3cc9f3b..ffd8107 100644
--- a/net/disk_cache/cache_util_posix.cc
+++ b/net/disk_cache/cache_util_posix.cc
@@ -5,6 +5,7 @@
#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"
@@ -22,9 +23,8 @@ bool MoveCache(const base::FilePath& from_path, const base::FilePath& to_path) {
LOG(ERROR) << "Unable to create destination cache directory.";
return false;
}
- file_util::FileEnumerator iter(from_path, false /* not recursive */,
- file_util::FileEnumerator::DIRECTORIES |
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator iter(from_path, false /* not recursive */,
+ base::FileEnumerator::DIRECTORIES | base::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) {
- file_util::FileEnumerator iter(path,
- /* recursive */ false,
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator iter(path,
+ /* recursive */ false,
+ base::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 7effb1b..eb56a63 100644
--- a/net/disk_cache/simple/simple_index.cc
+++ b/net/disk_cache/simple/simple_index.cc
@@ -9,6 +9,7 @@
#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"
@@ -447,7 +448,6 @@ 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]");
- FileEnumerator enumerator(index_filename.DirName(),
- false /* recursive */,
- FileEnumerator::FILES,
- file_pattern);
+ base::FileEnumerator enumerator(index_filename.DirName(),
+ false /* recursive */,
+ base::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,18 +480,17 @@ scoped_ptr<SimpleIndex::EntrySet> SimpleIndex::RestoreFromDisk(
continue;
}
- FileEnumerator::FindInfo find_info = {};
- enumerator.GetFindInfo(&find_info);
+ base::FileEnumerator::FileInfo find_info = enumerator.GetInfo();
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 = FileEnumerator::GetLastModifiedTime(find_info);
+ last_used_time = find_info.GetLastModifiedTime();
- int64 file_size = FileEnumerator::GetFilesize(find_info);
+ int64 file_size = find_info.GetSize();
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 b43ca04..061634bc 100644
--- a/net/tools/dump_cache/dump_files.cc
+++ b/net/tools/dump_cache/dump_files.cc
@@ -14,6 +14,7 @@
#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"
@@ -339,9 +340,9 @@ int DumpHeaders(const base::FilePath& input_path) {
disk_cache::CacheAddr stats_addr = 0;
DumpIndexHeader(index_name, &stats_addr);
- file_util::FileEnumerator iter(input_path, false,
- file_util::FileEnumerator::FILES,
- FILE_PATH_LITERAL("data_*"));
+ base::FileEnumerator iter(input_path, false,
+ base::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 9d086e2..7a1906b 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);
- FileEnumerator file_list(directory,
- true,
- FileEnumerator::FILES);
+ base::FileEnumerator file_list(directory,
+ true,
+ base::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 421c62a..7add3a0 100644
--- a/net/url_request/url_request_file_dir_job.cc
+++ b/net/url_request/url_request_file_dir_job.cc
@@ -116,27 +116,17 @@ void URLRequestFileDirJob::OnListFile(
}
#if defined(OS_WIN)
- 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)));
+ std::string raw_bytes; // Empty on Windows means UTF-8 encoded name.
#elif defined(OS_POSIX)
// TOOD(jungshik): The same issue as for the directory name.
- data_.append(GetDirectoryListingEntry(
- 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)));
+ 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()));
// TODO(darin): coalesce more?
CompleteRead();
diff --git a/remoting/host/policy_hack/policy_watcher_linux.cc b/remoting/host/policy_hack/policy_watcher_linux.cc
index 641af9c..cb63ef0 100644
--- a/remoting/host/policy_hack/policy_watcher_linux.cc
+++ b/remoting/host/policy_hack/policy_watcher_linux.cc
@@ -17,6 +17,7 @@
#include "base/bind.h"
#include "base/compiler_specific.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/files/file_path_watcher.h"
#include "base/json/json_file_value_serializer.h"
@@ -110,9 +111,9 @@ class PolicyWatcherLinux : public PolicyWatcher {
}
// Enumerate the files and find the most recent modification timestamp.
- file_util::FileEnumerator file_enumerator(config_dir_,
- false,
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator file_enumerator(config_dir_,
+ false,
+ base::FileEnumerator::FILES);
for (base::FilePath config_file = file_enumerator.Next();
!config_file.empty();
config_file = file_enumerator.Next()) {
@@ -131,8 +132,8 @@ class PolicyWatcherLinux : public PolicyWatcher {
DCHECK(OnPolicyWatcherThread());
// Enumerate the files and sort them lexicographically.
std::set<base::FilePath> files;
- file_util::FileEnumerator file_enumerator(config_dir_, false,
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator file_enumerator(config_dir_, false,
+ base::FileEnumerator::FILES);
for (base::FilePath config_file_path = file_enumerator.Next();
!config_file_path.empty(); config_file_path = file_enumerator.Next())
files.insert(config_file_path);
diff --git a/third_party/leveldatabase/env_chromium.cc b/third_party/leveldatabase/env_chromium.cc
index a512e31..2607dbe 100644
--- a/third_party/leveldatabase/env_chromium.cc
+++ b/third_party/leveldatabase/env_chromium.cc
@@ -10,6 +10,7 @@
#include "base/at_exit.h"
#include "base/debug/trace_event.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/lazy_instance.h"
#include "base/memory/ref_counted.h"
@@ -454,8 +455,8 @@ class ChromiumEnv : public Env, public UMALogger {
virtual Status GetChildren(const std::string& dir,
std::vector<std::string>* result) {
result->clear();
- ::file_util::FileEnumerator iter(
- CreateFilePath(dir), false, ::file_util::FileEnumerator::FILES);
+ base::FileEnumerator iter(
+ CreateFilePath(dir), false, base::FileEnumerator::FILES);
base::FilePath current = iter.Next();
while (!current.empty()) {
result->push_back(FilePathToString(current.BaseName()));
diff --git a/third_party/zlib/google/zip.cc b/third_party/zlib/google/zip.cc
index e24449b..2e46bed 100644
--- a/third_party/zlib/google/zip.cc
+++ b/third_party/zlib/google/zip.cc
@@ -6,6 +6,7 @@
#include "base/bind.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/logging.h"
#include "base/string16.h"
#include "base/string_util.h"
@@ -137,9 +138,8 @@ bool ZipWithFilterCallback(const base::FilePath& src_dir,
}
bool success = true;
- file_util::FileEnumerator file_enumerator(src_dir, true /* recursive */,
- file_util::FileEnumerator::FILES |
- file_util::FileEnumerator::DIRECTORIES);
+ base::FileEnumerator file_enumerator(src_dir, true /* recursive */,
+ base::FileEnumerator::FILES | base::FileEnumerator::DIRECTORIES);
for (base::FilePath path = file_enumerator.Next(); !path.value().empty();
path = file_enumerator.Next()) {
if (!filter_cb.Run(path)) {
diff --git a/third_party/zlib/google/zip_unittest.cc b/third_party/zlib/google/zip_unittest.cc
index 3f7911e..e5d800b 100644
--- a/third_party/zlib/google/zip_unittest.cc
+++ b/third_party/zlib/google/zip_unittest.cc
@@ -6,6 +6,7 @@
#include <vector>
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/files/scoped_temp_dir.h"
#include "base/path_service.h"
@@ -73,9 +74,8 @@ class ZipTest : public PlatformTest {
ASSERT_TRUE(file_util::PathExists(path)) << "no file " << path.value();
ASSERT_TRUE(zip::Unzip(path, test_dir_));
- file_util::FileEnumerator files(test_dir_, true,
- file_util::FileEnumerator::FILES |
- file_util::FileEnumerator::DIRECTORIES);
+ base::FileEnumerator files(test_dir_, true,
+ base::FileEnumerator::FILES | base::FileEnumerator::DIRECTORIES);
base::FilePath next_path = files.Next();
size_t count = 0;
while (!next_path.value().empty()) {
diff --git a/tools/android/md5sum/md5sum.cc b/tools/android/md5sum/md5sum.cc
index ceee7d5..8543fb6 100644
--- a/tools/android/md5sum/md5sum.cc
+++ b/tools/android/md5sum/md5sum.cc
@@ -11,6 +11,7 @@
#include <string>
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/logging.h"
#include "base/md5.h"
@@ -53,8 +54,8 @@ std::set<std::string> MakeFileSet(const char** files) {
for (const char** file = files; *file; ++file) {
base::FilePath file_path(*file);
if (file_util::DirectoryExists(file_path)) {
- file_util::FileEnumerator file_enumerator(
- file_path, true /* recurse */, file_util::FileEnumerator::FILES);
+ base::FileEnumerator file_enumerator(
+ file_path, true /* recurse */, base::FileEnumerator::FILES);
for (base::FilePath child, empty;
(child = file_enumerator.Next()) != empty; ) {
// If the path contains /.svn/, ignore it.
diff --git a/tools/heapcheck/suppressions.txt b/tools/heapcheck/suppressions.txt
index d9320f8..5f3de13 100644
--- a/tools/heapcheck/suppressions.txt
+++ b/tools/heapcheck/suppressions.txt
@@ -595,8 +595,8 @@
fun:std::string::_S_construct_aux
fun:std::string::_S_construct
fun:*basic_string*
- fun:file_util::FileEnumerator::ReadDirectory
- fun:file_util::FileEnumerator::Next
+ fun:base::FileEnumerator::ReadDirectory
+ fun:base::FileEnumerator::Next
fun:::RelayReadDirectory::RunWork
fun:::MessageLoopRelay::ProcessOnTargetThread
}
@@ -1859,4 +1859,4 @@
fun:net::URLRequest::StartJob
fun:net::URLRequest::BeforeRequestComplete
fun:net::URLRequest::Start
-} \ No newline at end of file
+}
diff --git a/tools/valgrind/tsan/suppressions.txt b/tools/valgrind/tsan/suppressions.txt
index 9d20cef..5d57017 100644
--- a/tools/valgrind/tsan/suppressions.txt
+++ b/tools/valgrind/tsan/suppressions.txt
@@ -901,8 +901,8 @@
ThreadSanitizer:Race
fun:__alloc_dir
fun:opendir
- fun:file_util::FileEnumerator::ReadDirectory
- fun:file_util::FileEnumerator::Next
+ fun:base::FileEnumerator::ReadDirectory
+ fun:base::FileEnumerator::Next
fun:::GetPrefsCandidateFilesFromFolder
fun:ExternalPrefLoader::ReadStandaloneExtensionPrefFiles
fun:ExternalPrefLoader::LoadOnFileThread
diff --git a/webkit/database/database_tracker.cc b/webkit/database/database_tracker.cc
index 85fa262..ed217f8 100644
--- a/webkit/database/database_tracker.cc
+++ b/webkit/database/database_tracker.cc
@@ -10,6 +10,7 @@
#include "base/basictypes.h"
#include "base/bind.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/message_loop_proxy.h"
#include "base/platform_file.h"
#include "base/strings/string_number_conversions.h"
@@ -412,10 +413,10 @@ bool DatabaseTracker::DeleteOrigin(const base::string16& origin_identifier,
file_util::CreateTemporaryDirInDir(db_dir_,
kTemporaryDirectoryPrefix,
&new_origin_dir);
- file_util::FileEnumerator databases(
+ base::FileEnumerator databases(
origin_dir,
false,
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator::FILES);
for (base::FilePath database = databases.Next(); !database.empty();
database = databases.Next()) {
base::FilePath new_file = new_origin_dir.Append(database.BaseName());
@@ -457,10 +458,10 @@ bool DatabaseTracker::LazyInit() {
// If there are left-over directories from failed deletion attempts, clean
// them up.
if (file_util::DirectoryExists(db_dir_)) {
- file_util::FileEnumerator directories(
+ base::FileEnumerator directories(
db_dir_,
false,
- file_util::FileEnumerator::DIRECTORIES,
+ base::FileEnumerator::DIRECTORIES,
kTemporaryDirectoryPattern);
for (base::FilePath directory = directories.Next(); !directory.empty();
directory = directories.Next()) {
diff --git a/webkit/dom_storage/dom_storage_context.cc b/webkit/dom_storage/dom_storage_context.cc
index 80df009..e169e41 100644
--- a/webkit/dom_storage/dom_storage_context.cc
+++ b/webkit/dom_storage/dom_storage_context.cc
@@ -7,6 +7,7 @@
#include "base/bind.h"
#include "base/bind_helpers.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/guid.h"
#include "base/location.h"
#include "base/time.h"
@@ -18,8 +19,6 @@
#include "webkit/dom_storage/session_storage_database.h"
#include "webkit/quota/special_storage_policy.h"
-using file_util::FileEnumerator;
-
namespace dom_storage {
static const int kSessionStoraceScavengingSeconds = 60;
@@ -87,18 +86,17 @@ void DomStorageContext::GetLocalStorageUsage(
bool include_file_info) {
if (localstorage_directory_.empty())
return;
- FileEnumerator enumerator(localstorage_directory_, false,
- FileEnumerator::FILES);
+ base::FileEnumerator enumerator(localstorage_directory_, false,
+ base::FileEnumerator::FILES);
for (base::FilePath path = enumerator.Next(); !path.empty();
path = enumerator.Next()) {
if (path.MatchesExtension(DomStorageArea::kDatabaseFileExtension)) {
LocalStorageUsageInfo info;
info.origin = DomStorageArea::OriginFromDatabaseFileName(path);
if (include_file_info) {
- FileEnumerator::FindInfo find_info;
- enumerator.GetFindInfo(&find_info);
- info.data_size = FileEnumerator::GetFilesize(find_info);
- info.last_modified = FileEnumerator::GetLastModifiedTime(find_info);
+ base::FileEnumerator::FileInfo find_info = enumerator.GetInfo();
+ info.data_size = find_info.GetSize();
+ info.last_modified = find_info.GetLastModifiedTime();
}
infos->push_back(info);
}
diff --git a/webkit/fileapi/file_system_database_test_helper.cc b/webkit/fileapi/file_system_database_test_helper.cc
index a8da1a7..2c711f5 100644
--- a/webkit/fileapi/file_system_database_test_helper.cc
+++ b/webkit/fileapi/file_system_database_test_helper.cc
@@ -9,6 +9,7 @@
#include <vector>
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/stl_util.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "webkit/fileapi/file_system_util.h"
@@ -19,9 +20,8 @@ void CorruptDatabase(const base::FilePath& db_path,
leveldb::FileType type,
ptrdiff_t offset,
size_t size) {
- file_util::FileEnumerator file_enum(db_path, false /* not recursive */,
- file_util::FileEnumerator::DIRECTORIES |
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator file_enum(db_path, false /* not recursive */,
+ base::FileEnumerator::DIRECTORIES | base::FileEnumerator::FILES);
base::FilePath file_path;
base::FilePath picked_file_path;
uint64 picked_file_number = kuint64max;
@@ -81,9 +81,8 @@ void CorruptDatabase(const base::FilePath& db_path,
void DeleteDatabaseFile(const base::FilePath& db_path,
leveldb::FileType type) {
- file_util::FileEnumerator file_enum(db_path, false /* not recursive */,
- file_util::FileEnumerator::DIRECTORIES |
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator file_enum(db_path, false /* not recursive */,
+ base::FileEnumerator::DIRECTORIES | base::FileEnumerator::FILES);
base::FilePath file_path;
while (!(file_path = file_enum.Next()).empty()) {
uint64 number = kuint64max;
diff --git a/webkit/fileapi/file_system_directory_database.cc b/webkit/fileapi/file_system_directory_database.cc
index 95bd88f..8ee3ada 100644
--- a/webkit/fileapi/file_system_directory_database.cc
+++ b/webkit/fileapi/file_system_directory_database.cc
@@ -10,6 +10,7 @@
#include <stack>
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/location.h"
#include "base/metrics/histogram.h"
#include "base/pickle.h"
@@ -281,17 +282,13 @@ bool DatabaseCheckHelper::ScanDirectory() {
base::FilePath dir_path = pending_directories.top();
pending_directories.pop();
- file_util::FileEnumerator file_enum(
+ base::FileEnumerator file_enum(
dir_path.empty() ? path_ : path_.Append(dir_path),
false /* not recursive */,
- file_util::FileEnumerator::DIRECTORIES |
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator::DIRECTORIES | base::FileEnumerator::FILES);
base::FilePath absolute_file_path;
while (!(absolute_file_path = file_enum.Next()).empty()) {
- file_util::FileEnumerator::FindInfo find_info;
- file_enum.GetFindInfo(&find_info);
-
base::FilePath relative_file_path;
if (!path_.AppendRelativePath(absolute_file_path, &relative_file_path))
return false;
@@ -300,7 +297,7 @@ bool DatabaseCheckHelper::ScanDirectory() {
relative_file_path) != kExcludes + arraysize(kExcludes))
continue;
- if (file_util::FileEnumerator::IsDirectory(find_info)) {
+ if (file_enum.GetInfo().IsDirectory()) {
pending_directories.push(relative_file_path);
continue;
}
diff --git a/webkit/fileapi/file_system_origin_database.cc b/webkit/fileapi/file_system_origin_database.cc
index 6853587..5a1caea 100644
--- a/webkit/fileapi/file_system_origin_database.cc
+++ b/webkit/fileapi/file_system_origin_database.cc
@@ -7,6 +7,7 @@
#include <set>
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/format_macros.h"
#include "base/location.h"
#include "base/logging.h"
@@ -133,9 +134,9 @@ bool FileSystemOriginDatabase::RepairDatabase(const std::string& db_path) {
// See if the repaired entries match with what we have on disk.
std::set<base::FilePath> directories;
- file_util::FileEnumerator file_enum(file_system_directory_,
- false /* recursive */,
- file_util::FileEnumerator::DIRECTORIES);
+ base::FileEnumerator file_enum(file_system_directory_,
+ false /* recursive */,
+ base::FileEnumerator::DIRECTORIES);
base::FilePath path_each;
while (!(path_each = file_enum.Next()).empty())
directories.insert(path_each.BaseName());
diff --git a/webkit/fileapi/isolated_file_util_unittest.cc b/webkit/fileapi/isolated_file_util_unittest.cc
index 7452a31..92b9f8c 100644
--- a/webkit/fileapi/isolated_file_util_unittest.cc
+++ b/webkit/fileapi/isolated_file_util_unittest.cc
@@ -9,6 +9,7 @@
#include <vector>
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/scoped_temp_dir.h"
#include "base/logging.h"
#include "base/message_loop.h"
@@ -28,8 +29,6 @@
#include "webkit/fileapi/native_file_util.h"
#include "webkit/fileapi/test_file_set.h"
-using file_util::FileEnumerator;
-
namespace fileapi {
namespace {
@@ -365,18 +364,17 @@ TEST_F(IsolatedFileUtilTest, ReadDirectoryTest) {
EntryMap expected_entry_map;
base::FilePath dir_path = GetTestCasePlatformPath(test_case.path);
- FileEnumerator file_enum(
+ base::FileEnumerator file_enum(
dir_path, false /* not recursive */,
- FileEnumerator::FILES | FileEnumerator::DIRECTORIES);
+ base::FileEnumerator::FILES | base::FileEnumerator::DIRECTORIES);
base::FilePath current;
while (!(current = file_enum.Next()).empty()) {
- FileEnumerator::FindInfo file_info;
- file_enum.GetFindInfo(&file_info);
+ base::FileEnumerator::FileInfo file_info = file_enum.GetInfo();
base::FileUtilProxy::Entry entry;
- entry.is_directory = FileEnumerator::IsDirectory(file_info);
+ entry.is_directory = file_info.IsDirectory();
entry.name = current.BaseName().value();
- entry.size = FileEnumerator::GetFilesize(file_info);
- entry.last_modified_time = FileEnumerator::GetLastModifiedTime(file_info);
+ entry.size = file_info.GetSize();
+ entry.last_modified_time = file_info.GetLastModifiedTime();
expected_entry_map[entry.name] = entry;
#if defined(OS_POSIX)
diff --git a/webkit/fileapi/local_file_util.cc b/webkit/fileapi/local_file_util.cc
index 4760423..645856c 100644
--- a/webkit/fileapi/local_file_util.cc
+++ b/webkit/fileapi/local_file_util.cc
@@ -4,6 +4,7 @@
#include "webkit/fileapi/local_file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/files/file_util_proxy.h"
#include "googleurl/src/gurl.h"
#include "webkit/fileapi/file_system_context.h"
@@ -39,8 +40,8 @@ class LocalFileEnumerator : public FileSystemFileUtil::AbstractFileEnumerator {
virtual bool IsDirectory() OVERRIDE;
private:
- file_util::FileEnumerator file_enum_;
- file_util::FileEnumerator::FindInfo file_util_info_;
+ base::FileEnumerator file_enum_;
+ base::FileEnumerator::FileInfo file_util_info_;
base::FilePath platform_root_path_;
base::FilePath virtual_root_path_;
};
@@ -52,7 +53,7 @@ base::FilePath LocalFileEnumerator::Next() {
next = file_enum_.Next();
if (next.empty())
return next;
- file_enum_.GetFindInfo(&file_util_info_);
+ file_util_info_ = file_enum_.GetInfo();
base::FilePath path;
platform_root_path_.AppendRelativePath(next, &path);
@@ -60,15 +61,15 @@ base::FilePath LocalFileEnumerator::Next() {
}
int64 LocalFileEnumerator::Size() {
- return file_util::FileEnumerator::GetFilesize(file_util_info_);
+ return file_util_info_.GetSize();
}
base::Time LocalFileEnumerator::LastModifiedTime() {
- return file_util::FileEnumerator::GetLastModifiedTime(file_util_info_);
+ return file_util_info_.GetLastModifiedTime();
}
bool LocalFileEnumerator::IsDirectory() {
- return file_util::FileEnumerator::IsDirectory(file_util_info_);
+ return file_util_info_.IsDirectory();
}
LocalFileUtil::LocalFileUtil() {
@@ -151,8 +152,7 @@ scoped_ptr<FileSystemFileUtil::AbstractFileEnumerator> LocalFileUtil::
}
return make_scoped_ptr(new LocalFileEnumerator(
file_path, root_url.path(),
- file_util::FileEnumerator::FILES |
- file_util::FileEnumerator::DIRECTORIES))
+ base::FileEnumerator::FILES | base::FileEnumerator::DIRECTORIES))
.PassAs<FileSystemFileUtil::AbstractFileEnumerator>();
}
diff --git a/webkit/fileapi/native_file_util.cc b/webkit/fileapi/native_file_util.cc
index e64fa05..d9b109f 100644
--- a/webkit/fileapi/native_file_util.cc
+++ b/webkit/fileapi/native_file_util.cc
@@ -5,6 +5,7 @@
#include "webkit/fileapi/native_file_util.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/memory/scoped_ptr.h"
#include "webkit/fileapi/file_system_operation_context.h"
@@ -55,27 +56,27 @@ class NativeFileEnumerator : public FileSystemFileUtil::AbstractFileEnumerator {
virtual bool IsDirectory() OVERRIDE;
private:
- file_util::FileEnumerator file_enum_;
- file_util::FileEnumerator::FindInfo file_util_info_;
+ base::FileEnumerator file_enum_;
+ base::FileEnumerator::FileInfo file_util_info_;
};
base::FilePath NativeFileEnumerator::Next() {
base::FilePath rv = file_enum_.Next();
if (!rv.empty())
- file_enum_.GetFindInfo(&file_util_info_);
+ file_util_info_ = file_enum_.GetInfo();
return rv;
}
int64 NativeFileEnumerator::Size() {
- return file_util::FileEnumerator::GetFilesize(file_util_info_);
+ return file_util_info_.GetSize();
}
base::Time NativeFileEnumerator::LastModifiedTime() {
- return file_util::FileEnumerator::GetLastModifiedTime(file_util_info_);
+ return file_util_info_.GetLastModifiedTime();
}
bool NativeFileEnumerator::IsDirectory() {
- return file_util::FileEnumerator::IsDirectory(file_util_info_);
+ return file_util_info_.IsDirectory();
}
PlatformFileError NativeFileUtil::CreateOrOpen(
@@ -163,8 +164,7 @@ scoped_ptr<FileSystemFileUtil::AbstractFileEnumerator>
bool recursive) {
return make_scoped_ptr(new NativeFileEnumerator(
root_path, recursive,
- file_util::FileEnumerator::FILES |
- file_util::FileEnumerator::DIRECTORIES))
+ base::FileEnumerator::FILES | base::FileEnumerator::DIRECTORIES))
.PassAs<FileSystemFileUtil::AbstractFileEnumerator>();
}
diff --git a/webkit/plugins/npapi/plugin_list_mac.mm b/webkit/plugins/npapi/plugin_list_mac.mm
index 66f3296..922962a 100644
--- a/webkit/plugins/npapi/plugin_list_mac.mm
+++ b/webkit/plugins/npapi/plugin_list_mac.mm
@@ -7,6 +7,7 @@
#import <Foundation/Foundation.h>
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/mac/mac_util.h"
#include "base/string_util.h"
#include "base/strings/string_number_conversions.h"
@@ -78,9 +79,9 @@ void PluginList::GetPluginDirectories(std::vector<base::FilePath>* plugin_dirs)
void PluginList::GetPluginsInDir(
const base::FilePath& path, std::vector<base::FilePath>* plugins) {
- file_util::FileEnumerator enumerator(path,
- false, // not recursive
- file_util::FileEnumerator::DIRECTORIES);
+ base::FileEnumerator enumerator(path,
+ false, // not recursive
+ base::FileEnumerator::DIRECTORIES);
for (base::FilePath path = enumerator.Next(); !path.value().empty();
path = enumerator.Next()) {
plugins->push_back(path);
diff --git a/webkit/plugins/npapi/plugin_list_posix.cc b/webkit/plugins/npapi/plugin_list_posix.cc
index 43d5056..913abd3 100644
--- a/webkit/plugins/npapi/plugin_list_posix.cc
+++ b/webkit/plugins/npapi/plugin_list_posix.cc
@@ -8,6 +8,7 @@
#include "base/cpu.h"
#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
#include "base/path_service.h"
#include "base/sha1.h"
#include "base/string_util.h"
@@ -205,9 +206,9 @@ void PluginList::GetPluginsInDir(
// Construct and stat a list of all filenames under consideration, for
// later sorting by mtime.
FileTimeList files;
- file_util::FileEnumerator enumerator(dir_path,
- false, // not recursive
- file_util::FileEnumerator::FILES);
+ base::FileEnumerator enumerator(dir_path,
+ false, // not recursive
+ base::FileEnumerator::FILES);
for (base::FilePath path = enumerator.Next(); !path.value().empty();
path = enumerator.Next()) {
// Skip over Mozilla .xpt files.