| Index: chrome/installer/setup/install_worker_unittest.cc
|
| ===================================================================
|
| --- chrome/installer/setup/install_worker_unittest.cc (revision 72487)
|
| +++ chrome/installer/setup/install_worker_unittest.cc (working copy)
|
| @@ -8,19 +8,13 @@
|
| #include "base/version.h"
|
| #include "chrome/installer/util/installation_state.h"
|
| #include "chrome/installer/util/installer_state.h"
|
| -#include "chrome/installer/util/package.h"
|
| -#include "chrome/installer/util/package_properties.h"
|
| #include "chrome/installer/util/work_item_list.h"
|
|
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| #include "testing/gmock/include/gmock/gmock.h"
|
|
|
| -using installer::ChromiumPackageProperties;
|
| using installer::InstallationState;
|
| using installer::InstallerState;
|
| -using installer::Package;
|
| -using installer::PackageProperties;
|
| -using installer::PackagePropertiesImpl;
|
| using installer::ProductState;
|
|
|
| using ::testing::_;
|
| @@ -66,20 +60,17 @@
|
| bool));
|
| };
|
|
|
| +class MockProductState : public ProductState {
|
| + public:
|
| + // Takes ownership of |version|.
|
| + void set_version(Version* version) { version_.reset(version); }
|
| +};
|
| +
|
| // Okay, so this isn't really a mock as such, but it does add setter methods
|
| // to make it easier to build custom InstallationStates.
|
| class MockInstallationState : public InstallationState {
|
| public:
|
| // Included for testing.
|
| - void SetMultiPackageState(bool system_install,
|
| - const ProductState& package_state) {
|
| - ProductState& target =
|
| - (system_install ? system_products_ : user_products_)
|
| - [MULTI_PACKAGE_INDEX];
|
| - target.CopyFrom(package_state);
|
| - }
|
| -
|
| - // Included for testing.
|
| void SetProductState(bool system_install,
|
| BrowserDistribution::Type type,
|
| const ProductState& product_state) {
|
| @@ -91,8 +82,8 @@
|
|
|
| class MockInstallerState : public InstallerState {
|
| public:
|
| - void set_system_install(bool system_install) {
|
| - system_install_ = system_install;
|
| + void set_level(Level level) {
|
| + level_ = level;
|
| }
|
|
|
| void set_operation(Operation operation) { operation_ = operation; }
|
| @@ -125,14 +116,13 @@
|
| }
|
|
|
| virtual void TearDown() {
|
| -
|
| }
|
|
|
| MockInstallationState* BuildChromeSingleSystemInstallationState() {
|
| scoped_ptr<MockInstallationState> installation_state(
|
| new MockInstallationState());
|
|
|
| - ProductState product_state;
|
| + MockProductState product_state;
|
| product_state.set_version(current_version_->Clone());
|
| // Do not call SetMultiPackageState since this is a single install.
|
| installation_state->SetProductState(true,
|
| @@ -142,14 +132,19 @@
|
| return installation_state.release();
|
| }
|
|
|
| - MockInstallerState* BuildChromeSingleSystemInstallerState() {
|
| + MockInstallerState* BuildChromeSingleSystemInstallerState(
|
| + const InstallationState& machine_state) {
|
| scoped_ptr<MockInstallerState> installer_state(new MockInstallerState());
|
|
|
| - installer_state->set_system_install(true);
|
| + installer_state->set_level(InstallerState::SYSTEM_LEVEL);
|
| installer_state->set_operation(InstallerState::SINGLE_INSTALL_OR_UPDATE);
|
| // Hope this next one isn't checked for now.
|
| installer_state->set_state_key(L"PROBABLY_INVALID_REG_PATH");
|
| -
|
| + const ProductState* chrome =
|
| + machine_state.GetProductState(true,
|
| + BrowserDistribution::CHROME_BROWSER);
|
| + installer_state->AddProductFromState(BrowserDistribution::CHROME_BROWSER,
|
| + *chrome);
|
| return installer_state.release();
|
| }
|
|
|
| @@ -173,19 +168,8 @@
|
| BuildChromeSingleSystemInstallationState());
|
|
|
| scoped_ptr<InstallerState> installer_state(
|
| - BuildChromeSingleSystemInstallerState());
|
| + BuildChromeSingleSystemInstallerState(*installation_state));
|
|
|
| - // This MUST outlive the package, since the package doesn't assume ownership
|
| - // of it. Note: This feels like an implementation bug:
|
| - // The PackageProperties <-> Package relationship is 1:1 and nothing else
|
| - // uses the PackageProperties. I have the feeling that PackageProperties, and
|
| - // perhaps Package itself should not exist at all.
|
| - scoped_ptr<PackageProperties> package_properties(
|
| - new ChromiumPackageProperties());
|
| -
|
| - scoped_refptr<Package> package(
|
| - new Package(false, true, installation_path_, package_properties.get()));
|
| -
|
| // Set up some expectations.
|
| // TODO(robertshield): Set up some real expectations.
|
| EXPECT_CALL(work_item_list, AddCopyTreeWorkItem(_,_,_,_,_))
|
| @@ -193,13 +177,11 @@
|
|
|
| AddInstallWorkItems(*installation_state.get(),
|
| *installer_state.get(),
|
| - false,
|
| setup_path_,
|
| archive_path_,
|
| src_path_,
|
| temp_dir_,
|
| *new_version_.get(),
|
| ¤t_version_,
|
| - *package.get(),
|
| &work_item_list);
|
| }
|
|
|