Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(216)

Side by Side Diff: trunk/src/chrome/test/mini_installer_test/installer_path_provider.cc

Issue 14824006: Revert 198820 "Move FileEnumerator to its own file, do some refa..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/test/mini_installer_test/installer_path_provider.h" 5 #include "chrome/test/mini_installer_test/installer_path_provider.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/file_util.h" 10 #include "base/file_util.h"
11 #include "base/files/file_enumerator.h"
12 #include "base/path_service.h" 11 #include "base/path_service.h"
13 #include "base/process_util.h" 12 #include "base/process_util.h"
14 #include "base/string_util.h" 13 #include "base/string_util.h"
15 #include "base/stringprintf.h" 14 #include "base/stringprintf.h"
16 #include "chrome/test/mini_installer_test/mini_installer_test_constants.h" 15 #include "chrome/test/mini_installer_test/mini_installer_test_constants.h"
17 #include "chrome/test/mini_installer_test/installer_test_util.h" 16 #include "chrome/test/mini_installer_test/installer_test_util.h"
18 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
19 18
20 namespace { 19 namespace {
21 20
22 struct FilePathInfo { 21 struct FilePathInfo {
23 base::FileEnumerator::FileInfo info; 22 file_util::FileEnumerator::FindInfo info;
24 base::FilePath path; 23 base::FilePath path;
25 }; 24 };
26 25
27 bool CompareDate(const FilePathInfo& a, const FilePathInfo& b) { 26 bool CompareDate(const FilePathInfo& a,
28 return a.info.GetLastModifiedTime() > b.info.GetLastModifiedTime(); 27 const FilePathInfo& b) {
28 #if defined(OS_POSIX)
29 return a.info.stat.st_mtime > b.info.stat.st_mtime;
30 #elif defined(OS_WIN)
31 if (a.info.ftLastWriteTime.dwHighDateTime ==
32 b.info.ftLastWriteTime.dwHighDateTime) {
33 return a.info.ftLastWriteTime.dwLowDateTime >
34 b.info.ftLastWriteTime.dwLowDateTime;
35 } else {
36 return a.info.ftLastWriteTime.dwHighDateTime >
37 b.info.ftLastWriteTime.dwHighDateTime;
38 }
39 #endif
29 } 40 }
30 41
31 // Get list of file |type| matching |pattern| in |root|. 42 // Get list of file |type| matching |pattern| in |root|.
32 // The list is sorted in last modified date order. 43 // The list is sorted in last modified date order.
33 // Return true if files/directories are found. 44 // Return true if files/directories are found.
34 bool FindMatchingFiles(const base::FilePath& root, 45 bool FindMatchingFiles(const base::FilePath& root,
35 const std::string& pattern, 46 const std::string& pattern,
36 base::FileEnumerator::FileType type, 47 file_util::FileEnumerator::FileType type,
37 std::vector<base::FilePath>* paths) { 48 std::vector<base::FilePath>* paths) {
38 base::FileEnumerator files(root, false, type, 49 file_util::FileEnumerator files(root, false, type,
39 base::FilePath().AppendASCII(pattern).value()); 50 base::FilePath().AppendASCII(pattern).value());
40 std::vector<FilePathInfo> matches; 51 std::vector<FilePathInfo> matches;
41 for (base::FilePath current = files.Next(); !current.empty(); 52 for (base::FilePath current = files.Next(); !current.empty();
42 current = files.Next()) { 53 current = files.Next()) {
43 FilePathInfo entry; 54 FilePathInfo entry;
44 entry.info = files.GetInfo(); 55 files.GetFindInfo(&entry.info);
45 entry.path = current; 56 entry.path = current;
46 matches.push_back(entry); 57 matches.push_back(entry);
47 } 58 }
48 59
49 if (matches.empty()) 60 if (matches.empty())
50 return false; 61 return false;
51 62
52 std::sort(matches.begin(), matches.end(), CompareDate); 63 std::sort(matches.begin(), matches.end(), CompareDate);
53 std::vector<FilePathInfo>::iterator current; 64 std::vector<FilePathInfo>::iterator current;
54 for (current = matches.begin(); current != matches.end(); ++current) { 65 for (current = matches.begin(); current != matches.end(); ++current) {
55 paths->push_back(current->path); 66 paths->push_back(current->path);
56 } 67 }
57 return true; 68 return true;
58 } 69 }
59 70
60 bool FindNewestMatchingFile(const base::FilePath& root, 71 bool FindNewestMatchingFile(const base::FilePath& root,
61 const std::string& pattern, 72 const std::string& pattern,
62 base::FileEnumerator::FileType type, 73 file_util::FileEnumerator::FileType type,
63 base::FilePath* path) { 74 base::FilePath* path) {
64 std::vector<base::FilePath> paths; 75 std::vector<base::FilePath> paths;
65 if (FindMatchingFiles(root, pattern, type, &paths)) { 76 if (FindMatchingFiles(root, pattern, type, &paths)) {
66 *path = paths[0]; 77 *path = paths[0];
67 return true; 78 return true;
68 } 79 }
69 return false; 80 return false;
70 } 81 }
71 82
72 } // namespace 83 } // namespace
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 return false; 137 return false;
127 138
128 base::FilePath previous_installer; 139 base::FilePath previous_installer;
129 std::vector<std::string> tokenized_name; 140 std::vector<std::string> tokenized_name;
130 Tokenize(diff_installer.BaseName().MaybeAsASCII(), 141 Tokenize(diff_installer.BaseName().MaybeAsASCII(),
131 "_", &tokenized_name); 142 "_", &tokenized_name);
132 std::string build_pattern = base::StringPrintf( 143 std::string build_pattern = base::StringPrintf(
133 "*%s", tokenized_name[2].c_str()); 144 "*%s", tokenized_name[2].c_str());
134 std::vector<base::FilePath> previous_build; 145 std::vector<base::FilePath> previous_build;
135 if (FindMatchingFiles(diff_installer.DirName().DirName().DirName(), 146 if (FindMatchingFiles(diff_installer.DirName().DirName().DirName(),
136 build_pattern, base::FileEnumerator::DIRECTORIES, 147 build_pattern, file_util::FileEnumerator::DIRECTORIES,
137 &previous_build)) { 148 &previous_build)) {
138 base::FilePath windir = previous_build.at(0).Append( 149 base::FilePath windir = previous_build.at(0).Append(
139 mini_installer_constants::kWinFolder); 150 mini_installer_constants::kWinFolder);
140 FindNewestMatchingFile(windir, full_installer_pattern, 151 FindNewestMatchingFile(windir, full_installer_pattern,
141 base::FileEnumerator::FILES, &previous_installer); 152 file_util::FileEnumerator::FILES, &previous_installer);
142 } 153 }
143 154
144 if (previous_installer.empty()) 155 if (previous_installer.empty())
145 return false; 156 return false;
146 *path = previous_installer; 157 *path = previous_installer;
147 return true; 158 return true;
148 } 159 }
149 160
150 bool InstallerPathProvider::GetStandaloneInstaller(base::FilePath* path) { 161 bool InstallerPathProvider::GetStandaloneInstaller(base::FilePath* path) {
151 // Get standalone installer. 162 // Get standalone installer.
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 return path; 208 return path;
198 } 209 }
199 210
200 bool InstallerPathProvider::GetInstaller(const std::string& pattern, 211 bool InstallerPathProvider::GetInstaller(const std::string& pattern,
201 base::FilePath* path) { 212 base::FilePath* path) {
202 base::FilePath installer; 213 base::FilePath installer;
203 // Search filer for installer binary. 214 // Search filer for installer binary.
204 base::FilePath root(mini_installer_constants::kChromeInstallersLocation); 215 base::FilePath root(mini_installer_constants::kChromeInstallersLocation);
205 std::vector<base::FilePath> paths; 216 std::vector<base::FilePath> paths;
206 if (!FindMatchingFiles(root, current_build_, 217 if (!FindMatchingFiles(root, current_build_,
207 base::FileEnumerator::DIRECTORIES, &paths)) { 218 file_util::FileEnumerator::DIRECTORIES, &paths)) {
208 return false; 219 return false;
209 } 220 }
210 221
211 std::vector<base::FilePath>::const_iterator dir; 222 std::vector<base::FilePath>::const_iterator dir;
212 for (dir = paths.begin(); dir != paths.end(); ++dir) { 223 for (dir = paths.begin(); dir != paths.end(); ++dir) {
213 base::FilePath windir = dir->Append( 224 base::FilePath windir = dir->Append(
214 mini_installer_constants::kWinFolder); 225 mini_installer_constants::kWinFolder);
215 if (FindNewestMatchingFile(windir, pattern, base::FileEnumerator::FILES, 226 if (FindNewestMatchingFile(windir, pattern,
216 &installer)) { 227 file_util::FileEnumerator::FILES, &installer)) {
217 break; 228 break;
218 } 229 }
219 } 230 }
220 231
221 if (installer.empty()) { 232 if (installer.empty()) {
222 LOG(WARNING) << "Failed to find installer with pattern: " << pattern; 233 LOG(WARNING) << "Failed to find installer with pattern: " << pattern;
223 return false; 234 return false;
224 } 235 }
225 236
226 *path = installer; 237 *path = installer;
227 return true; 238 return true;
228 } 239 }
229 240
230 std::string InstallerPathProvider::GetCurrentBuild() { 241 std::string InstallerPathProvider::GetCurrentBuild() {
231 return current_build_; 242 return current_build_;
232 } 243 }
233 244
234 std::string InstallerPathProvider::GetPreviousBuild() { 245 std::string InstallerPathProvider::GetPreviousBuild() {
235 return previous_build_; 246 return previous_build_;
236 } 247 }
237 248
238 } // namespace 249 } // namespace
OLDNEW
« no previous file with comments | « trunk/src/chrome/test/gpu/gpu_pixel_browsertest.cc ('k') | trunk/src/chrome/test/perf/page_cycler_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698