| // Copyright (c) 2011 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 CHROME_INSTALLER_UTIL_FAKE_INSTALLATION_STATE_H_ |
| #define CHROME_INSTALLER_UTIL_FAKE_INSTALLATION_STATE_H_ |
| |
| #include "base/files/file_path.h" |
| #include "base/version.h" |
| #include "chrome/installer/util/fake_product_state.h" |
| #include "chrome/installer/util/helper.h" |
| #include "chrome/installer/util/installation_state.h" |
| #include "chrome/installer/util/util_constants.h" |
| |
| namespace installer { |
| |
| // An InstallationState helper for use by unit tests. |
| class FakeInstallationState : public InstallationState { |
| public: |
| // Takes ownership of |version|. |
| void AddChrome(bool system_install, base::Version* version) { |
| FakeProductState chrome_state; |
| chrome_state.set_version(version); |
| base::FilePath setup_exe(GetChromeInstallPath(system_install)); |
| setup_exe = setup_exe |
| .AppendASCII(version->GetString()) |
| .Append(kInstallerDir) |
| .Append(kSetupExe); |
| chrome_state.SetUninstallProgram(setup_exe); |
| chrome_state.AddUninstallSwitch(switches::kUninstall); |
| SetProductState(system_install, chrome_state); |
| } |
| |
| void SetProductState(bool system_install, const ProductState& product_state) { |
| GetProduct(system_install)->CopyFrom(product_state); |
| } |
| |
| protected: |
| ProductState* GetProduct(bool system_install) { |
| return system_install ? &system_chrome_ : &user_chrome_; |
| } |
| }; |
| |
| } // namespace installer |
| |
| #endif // CHROME_INSTALLER_UTIL_FAKE_INSTALLATION_STATE_H_ |