diff options
author | brettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-08 04:53:36 +0000 |
---|---|---|
committer | brettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-08 04:53:36 +0000 |
commit | 25a4c1ccaee2b032ee368d733b79ac814efd7c37 (patch) | |
tree | 589cd0233167acf4a3fe7bdaf50cea24ad505b7b /chrome/installer | |
parent | aff39ac8a8ea09920b9180ebc09d72c15832f3ad (diff) | |
download | chromium_src-25a4c1ccaee2b032ee368d733b79ac814efd7c37.zip chromium_src-25a4c1ccaee2b032ee368d733b79ac814efd7c37.tar.gz chromium_src-25a4c1ccaee2b032ee368d733b79ac814efd7c37.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
Reland of 198820 and 298824
Original review = https://codereview.chromium.org/13165005
R=rvargas@chromium.org
Review URL: https://codereview.chromium.org/16392011
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@205019 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/installer')
-rw-r--r-- | chrome/installer/setup/setup_util.cc | 12 | ||||
-rw-r--r-- | chrome/installer/setup/uninstall.cc | 16 | ||||
-rw-r--r-- | chrome/installer/test/alternate_version_generator.cc | 4 | ||||
-rw-r--r-- | chrome/installer/util/delete_after_reboot_helper.cc | 9 | ||||
-rw-r--r-- | chrome/installer/util/duplicate_tree_detector.cc | 6 | ||||
-rw-r--r-- | chrome/installer/util/installer_state.cc | 5 | ||||
-rw-r--r-- | chrome/installer/util/installer_state_unittest.cc | 5 | ||||
-rw-r--r-- | chrome/installer/util/shell_util.cc | 5 | ||||
-rw-r--r-- | chrome/installer/util/shell_util_unittest.cc | 5 |
9 files changed, 35 insertions, 32 deletions
diff --git a/chrome/installer/setup/setup_util.cc b/chrome/installer/setup/setup_util.cc index 55a4a8b..768755a 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" @@ -125,8 +126,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. @@ -134,12 +135,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 3ecfdc6..ac558b4 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" @@ -253,11 +254,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); @@ -573,9 +573,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()) @@ -596,9 +595,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 e951571..ea1915d 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 f4fa43e..bf87782 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 37876e5..59a9dce 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; |