| Index: chrome/test/mini_installer_test/installer_path_provider.cc
|
| diff --git a/chrome/test/mini_installer_test/installer_path_provider.cc b/chrome/test/mini_installer_test/installer_path_provider.cc
|
| deleted file mode 100644
|
| index 6602cabce13750b619e625d9dfe9f49c3291c3c0..0000000000000000000000000000000000000000
|
| --- a/chrome/test/mini_installer_test/installer_path_provider.cc
|
| +++ /dev/null
|
| @@ -1,237 +0,0 @@
|
| -// 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.
|
| -
|
| -#include "chrome/test/mini_installer_test/installer_path_provider.h"
|
| -
|
| -#include <algorithm>
|
| -
|
| -#include "base/command_line.h"
|
| -#include "base/file_util.h"
|
| -#include "base/files/file_enumerator.h"
|
| -#include "base/path_service.h"
|
| -#include "base/strings/string_util.h"
|
| -#include "base/strings/stringprintf.h"
|
| -#include "chrome/test/mini_installer_test/installer_test_util.h"
|
| -#include "chrome/test/mini_installer_test/mini_installer_test_constants.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace {
|
| -
|
| -struct FilePathInfo {
|
| - base::FileEnumerator::FileInfo info;
|
| - base::FilePath path;
|
| -};
|
| -
|
| -bool CompareDate(const FilePathInfo& a, const FilePathInfo& b) {
|
| - return a.info.GetLastModifiedTime() > b.info.GetLastModifiedTime();
|
| -}
|
| -
|
| -// Get list of file |type| matching |pattern| in |root|.
|
| -// The list is sorted in last modified date order.
|
| -// Return true if files/directories are found.
|
| -bool FindMatchingFiles(const base::FilePath& root,
|
| - const std::string& pattern,
|
| - base::FileEnumerator::FileType type,
|
| - std::vector<base::FilePath>* paths) {
|
| - 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;
|
| - entry.info = files.GetInfo();
|
| - entry.path = current;
|
| - matches.push_back(entry);
|
| - }
|
| -
|
| - if (matches.empty())
|
| - return false;
|
| -
|
| - std::sort(matches.begin(), matches.end(), CompareDate);
|
| - std::vector<FilePathInfo>::iterator current;
|
| - for (current = matches.begin(); current != matches.end(); ++current) {
|
| - paths->push_back(current->path);
|
| - }
|
| - return true;
|
| -}
|
| -
|
| -bool FindNewestMatchingFile(const base::FilePath& root,
|
| - const std::string& pattern,
|
| - base::FileEnumerator::FileType type,
|
| - base::FilePath* path) {
|
| - std::vector<base::FilePath> paths;
|
| - if (FindMatchingFiles(root, pattern, type, &paths)) {
|
| - *path = paths[0];
|
| - return true;
|
| - }
|
| - return false;
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -namespace installer_test {
|
| -
|
| -InstallerPathProvider::InstallerPathProvider() {
|
| - base::FilePath full_installer, previous_installer;
|
| - if (!GetFullInstaller(&full_installer) ||
|
| - !GetPreviousInstaller(&previous_installer))
|
| - return;
|
| - current_build_ =
|
| - full_installer.DirName().DirName().BaseName().MaybeAsASCII();
|
| - previous_build_ =
|
| - previous_installer.DirName().DirName().BaseName().MaybeAsASCII();
|
| -}
|
| -
|
| -InstallerPathProvider::InstallerPathProvider(
|
| - const std::string& build_under_test) : current_build_(build_under_test) {
|
| - base::FilePath full_installer, previous_installer;
|
| - if (!GetFullInstaller(&full_installer) ||
|
| - !GetPreviousInstaller(&previous_installer))
|
| - return;
|
| - previous_build_ =
|
| - previous_installer.DirName().DirName().BaseName().MaybeAsASCII();
|
| -}
|
| -
|
| -InstallerPathProvider::~InstallerPathProvider() {}
|
| -
|
| -bool InstallerPathProvider::GetFullInstaller(base::FilePath* path) {
|
| - std::string full_installer_pattern("*_chrome_installer*");
|
| - return GetInstaller(full_installer_pattern, path);
|
| -}
|
| -
|
| -bool InstallerPathProvider::GetDiffInstaller(base::FilePath* path) {
|
| - std::string diff_installer_pattern("*_from_*");
|
| - return GetInstaller(diff_installer_pattern, path);
|
| -}
|
| -
|
| -bool InstallerPathProvider::GetMiniInstaller(base::FilePath* path) {
|
| - // Use local copy of installer, else fall back to filer.
|
| - base::FilePath mini_installer = PathFromExeDir(
|
| - mini_installer_constants::kChromeMiniInstallerExecutable);
|
| - if (base::PathExists(mini_installer)) {
|
| - *path = mini_installer;
|
| - return true;
|
| - }
|
| - std::string mini_installer_pattern("mini_installer.exe");
|
| - return GetInstaller(mini_installer_pattern, path);
|
| -}
|
| -
|
| -bool InstallerPathProvider::GetPreviousInstaller(base::FilePath* path) {
|
| - std::string diff_installer_pattern("*_from_*");
|
| - std::string full_installer_pattern("*_chrome_installer*");
|
| - base::FilePath diff_installer;
|
| - if (!GetInstaller(diff_installer_pattern, &diff_installer))
|
| - return false;
|
| -
|
| - base::FilePath previous_installer;
|
| - std::vector<std::string> tokenized_name;
|
| - Tokenize(diff_installer.BaseName().MaybeAsASCII(),
|
| - "_", &tokenized_name);
|
| - std::string build_pattern = base::StringPrintf(
|
| - "*%s", tokenized_name[2].c_str());
|
| - std::vector<base::FilePath> previous_build;
|
| - if (FindMatchingFiles(diff_installer.DirName().DirName().DirName(),
|
| - build_pattern, base::FileEnumerator::DIRECTORIES,
|
| - &previous_build)) {
|
| - base::FilePath windir = previous_build.at(0).Append(
|
| - mini_installer_constants::kWinFolder);
|
| - FindNewestMatchingFile(windir, full_installer_pattern,
|
| - base::FileEnumerator::FILES, &previous_installer);
|
| - }
|
| -
|
| - if (previous_installer.empty())
|
| - return false;
|
| - *path = previous_installer;
|
| - return true;
|
| -}
|
| -
|
| -bool InstallerPathProvider::GetStandaloneInstaller(base::FilePath* path) {
|
| - // Get standalone installer.
|
| - base::FilePath standalone_installer(
|
| - mini_installer_constants::kChromeStandAloneInstallerLocation);
|
| - // Get the file name.
|
| - std::vector<std::string> tokenized_build_number;
|
| - if (current_build_.empty())
|
| - return false;
|
| - Tokenize(current_build_, ".", &tokenized_build_number);
|
| - std::string standalone_installer_filename = base::StringPrintf(
|
| - "%s%s_%s.exe",
|
| - base::FilePath(mini_installer_constants::kUntaggedInstallerPattern)
|
| - .MaybeAsASCII().c_str(),
|
| - tokenized_build_number[2].c_str(),
|
| - tokenized_build_number[3].c_str());
|
| - standalone_installer = standalone_installer.AppendASCII(current_build_)
|
| - .Append(mini_installer_constants::kWinFolder)
|
| - .AppendASCII(standalone_installer_filename);
|
| - *path = standalone_installer;
|
| - return base::PathExists(standalone_installer);
|
| -}
|
| -
|
| -bool InstallerPathProvider::GetSignedStandaloneInstaller(base::FilePath* path) {
|
| - base::FilePath standalone_installer;
|
| - if (!GetStandaloneInstaller(&standalone_installer))
|
| - return false;
|
| - base::FilePath tagged_installer = PathFromExeDir(
|
| - mini_installer_constants::kStandaloneInstaller);
|
| - CommandLine sign_command = CommandLine::FromString(
|
| - base::StringPrintf(L"%ls %ls %ls %ls",
|
| - mini_installer_constants::kChromeApplyTagExe,
|
| - standalone_installer.value().c_str(),
|
| - tagged_installer.value().c_str(),
|
| - mini_installer_constants::kChromeApplyTagParameters));
|
| -
|
| - if (!installer_test::RunAndWaitForCommandToFinish(sign_command))
|
| - return false;
|
| -
|
| - *path = PathFromExeDir(mini_installer_constants::kStandaloneInstaller);
|
| - return true;
|
| -}
|
| -
|
| -base::FilePath InstallerPathProvider::PathFromExeDir(
|
| - const base::FilePath::StringType& name) {
|
| - base::FilePath path;
|
| - PathService::Get(base::DIR_EXE, &path);
|
| - path = path.Append(name);
|
| - return path;
|
| -}
|
| -
|
| -bool InstallerPathProvider::GetInstaller(const std::string& pattern,
|
| - base::FilePath* path) {
|
| - base::FilePath installer;
|
| - // Search filer for installer binary.
|
| - base::FilePath root(mini_installer_constants::kChromeInstallersLocation);
|
| - std::vector<base::FilePath> paths;
|
| - if (!FindMatchingFiles(root, current_build_,
|
| - base::FileEnumerator::DIRECTORIES, &paths)) {
|
| - return false;
|
| - }
|
| -
|
| - std::vector<base::FilePath>::const_iterator dir;
|
| - for (dir = paths.begin(); dir != paths.end(); ++dir) {
|
| - base::FilePath windir = dir->Append(
|
| - mini_installer_constants::kWinFolder);
|
| - if (FindNewestMatchingFile(windir, pattern, base::FileEnumerator::FILES,
|
| - &installer)) {
|
| - break;
|
| - }
|
| - }
|
| -
|
| - if (installer.empty()) {
|
| - LOG(WARNING) << "Failed to find installer with pattern: " << pattern;
|
| - return false;
|
| - }
|
| -
|
| - *path = installer;
|
| - return true;
|
| -}
|
| -
|
| -std::string InstallerPathProvider::GetCurrentBuild() {
|
| - return current_build_;
|
| -}
|
| -
|
| -std::string InstallerPathProvider::GetPreviousBuild() {
|
| - return previous_build_;
|
| -}
|
| -
|
| -} // namespace
|
|
|