// Copyright 2013 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 COMPONENTS_UPDATE_CLIENT_TEST_INSTALLER_H_ #define COMPONENTS_UPDATE_CLIENT_TEST_INSTALLER_H_ #include #include #include #include "base/callback_forward.h" #include "base/files/file_path.h" #include "components/update_client/update_client.h" namespace base { class SequencedTaskRunner; } namespace update_client { // TODO(sorin): consider reducing the number of the installer mocks. // A TestInstaller is an installer that does nothing for installation except // increment a counter. class TestInstaller : public CrxInstaller { public: TestInstaller(); void OnUpdateError(int error) override; void Install(const base::FilePath& unpack_path, const std::string& public_key, std::unique_ptr install_params, ProgressCallback progress_callback, Callback callback) override; bool GetInstalledFile(const std::string& file, base::FilePath* installed_file) override; bool Uninstall() override; int error() const { return error_; } int install_count() const { return install_count_; } const InstallParams* install_params() const { return install_params_.get(); } void set_installer_progress_samples( std::vector installer_progress_samples) { installer_progress_samples_.swap(installer_progress_samples); } protected: ~TestInstaller() override; void InstallComplete(Callback callback, ProgressCallback progress_callback, const Result& result); int error_; int install_count_; private: // Contains the |unpack_path| argument of the Install call. base::FilePath unpack_path_; // Contains the |install_params| argument of the Install call. std::unique_ptr install_params_; // Constains values to be posted as install progress. std::vector installer_progress_samples_; scoped_refptr task_runner_; }; // A ReadOnlyTestInstaller is an installer that knows about files in an existing // directory. It will not write to the directory. class ReadOnlyTestInstaller : public TestInstaller { public: explicit ReadOnlyTestInstaller(const base::FilePath& installed_path); bool GetInstalledFile(const std::string& file, base::FilePath* installed_file) override; private: ~ReadOnlyTestInstaller() override; base::FilePath install_directory_; }; // A VersionedTestInstaller is an installer that installs files into versioned // directories (e.g. somedir/25.23.89.141/). class VersionedTestInstaller : public TestInstaller { public: VersionedTestInstaller(); void Install(const base::FilePath& unpack_path, const std::string& public_key, std::unique_ptr install_params, ProgressCallback progress_callback, Callback callback) override; bool GetInstalledFile(const std::string& file, base::FilePath* installed_file) override; private: ~VersionedTestInstaller() override; base::FilePath install_directory_; base::Version current_version_; }; } // namespace update_client #endif // COMPONENTS_UPDATE_CLIENT_TEST_INSTALLER_H_