Roll src/third_party/WebKit 116cf7f:79abaa8 (svn 189234:189235)
[chromium-blink-merge.git] / chrome / installer / util / fake_installation_state.h
blobc81cc5b5cfe44cba51638fc064dff529e3470982
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.
5 #ifndef CHROME_INSTALLER_UTIL_FAKE_INSTALLATION_STATE_H_
6 #define CHROME_INSTALLER_UTIL_FAKE_INSTALLATION_STATE_H_
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"
15 namespace installer {
17 // An InstallationState helper for use by unit tests.
18 class 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);
39 SetProductState(system_install, BrowserDistribution::CHROME_BROWSER,
40 chrome_state);
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);
50 protected:
51 ProductState* GetProducts(bool system_install) {
52 return system_install ? system_products_ : user_products_;
56 } // namespace installer
58 #endif // CHROME_INSTALLER_UTIL_FAKE_INSTALLATION_STATE_H_