15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_INSTALLER_UTIL_FAKE_INSTALLATION_STATE_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_INSTALLER_UTIL_FAKE_INSTALLATION_STATE_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/files/file_path.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/version.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/installer/util/fake_product_state.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/installer/util/helper.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/installer/util/installation_state.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/installer/util/util_constants.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace installer { 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// An InstallationState helper for use by unit tests. 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class FakeInstallationState : public InstallationState { 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Takes ownership of |version|. 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void AddChrome(bool system_install, bool multi_install, Version* version) { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FakeProductState chrome_state; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome_state.set_version(version); 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome_state.set_multi_install(multi_install); 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath setup_exe( 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetChromeInstallPath(system_install, 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowserDistribution::GetSpecificDistribution( 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowserDistribution::CHROME_BROWSER))); 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setup_exe = setup_exe 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .AppendASCII(version->GetString()) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .Append(kInstallerDir) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .Append(kSetupExe); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome_state.SetUninstallProgram(setup_exe); 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome_state.AddUninstallSwitch(switches::kUninstall); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (multi_install) { 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome_state.AddUninstallSwitch(switches::kMultiInstall); 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome_state.AddUninstallSwitch(switches::kChrome); 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetProductState(system_install, BrowserDistribution::CHROME_BROWSER, 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome_state); 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetProductState(bool system_install, 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowserDistribution::Type type, 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const ProductState& product_state) { 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ProductState& target = GetProducts(system_install)[IndexFromDistType(type)]; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) target.CopyFrom(product_state); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ProductState* GetProducts(bool system_install) { 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return system_install ? system_products_ : user_products_; 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace installer 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROME_INSTALLER_UTIL_FAKE_INSTALLATION_STATE_H_ 59