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"
17 // An InstallationState helper for use by unit tests.
18 class FakeInstallationState
: public InstallationState
{
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
)));
30 .AppendASCII(version
->GetString())
31 .Append(kInstallerDir
)
33 chrome_state
.SetUninstallProgram(setup_exe
);
34 chrome_state
.AddUninstallSwitch(switches::kUninstall
);
36 chrome_state
.AddUninstallSwitch(switches::kMultiInstall
);
37 chrome_state
.AddUninstallSwitch(switches::kChrome
);
39 SetProductState(system_install
, BrowserDistribution::CHROME_BROWSER
,
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
);
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_