fake_installation_state.h revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
1// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_INSTALLER_UTIL_FAKE_INSTALLATION_STATE_H_ 6#define CHROME_INSTALLER_UTIL_FAKE_INSTALLATION_STATE_H_ 7 8#include "base/files/file_path.h" 9#include "base/version.h" 10#include "chrome/installer/util/fake_product_state.h" 11#include "chrome/installer/util/helper.h" 12#include "chrome/installer/util/installation_state.h" 13#include "chrome/installer/util/util_constants.h" 14 15namespace installer { 16 17// An InstallationState helper for use by unit tests. 18class FakeInstallationState : public InstallationState { 19 public: 20 // Takes ownership of |version|. 21 void AddChrome(bool system_install, bool multi_install, Version* version) { 22 FakeProductState chrome_state; 23 chrome_state.set_version(version); 24 chrome_state.set_multi_install(multi_install); 25 base::FilePath setup_exe( 26 GetChromeInstallPath(system_install, 27 BrowserDistribution::GetSpecificDistribution( 28 BrowserDistribution::CHROME_BROWSER))); 29 setup_exe = setup_exe 30 .AppendASCII(version->GetString()) 31 .Append(kInstallerDir) 32 .Append(kSetupExe); 33 chrome_state.SetUninstallProgram(setup_exe); 34 chrome_state.AddUninstallSwitch(switches::kUninstall); 35 if (multi_install) { 36 chrome_state.AddUninstallSwitch(switches::kMultiInstall); 37 chrome_state.AddUninstallSwitch(switches::kChrome); 38 } 39 SetProductState(system_install, BrowserDistribution::CHROME_BROWSER, 40 chrome_state); 41 } 42 43 void SetProductState(bool system_install, 44 BrowserDistribution::Type type, 45 const ProductState& product_state) { 46 ProductState& target = GetProducts(system_install)[IndexFromDistType(type)]; 47 target.CopyFrom(product_state); 48 } 49 50 protected: 51 ProductState* GetProducts(bool system_install) { 52 return system_install ? system_products_ : user_products_; 53 } 54}; 55 56} // namespace installer 57 58#endif // CHROME_INSTALLER_UTIL_FAKE_INSTALLATION_STATE_H_ 59