Chromium Code Reviews| Index: chrome/installer/setup/installer_state.h |
| diff --git a/chrome/installer/setup/installer_state.h b/chrome/installer/setup/installer_state.h |
| index 2c25f3c1c0de7ff27c831cc4e71d26d96f32fc02..a4c81c732fd89abae40db3985e2cc2bf9f583c41 100644 |
| --- a/chrome/installer/setup/installer_state.h |
| +++ b/chrome/installer/setup/installer_state.h |
| @@ -5,15 +5,11 @@ |
| #ifndef CHROME_INSTALLER_SETUP_INSTALLER_STATE_H_ |
| #define CHROME_INSTALLER_SETUP_INSTALLER_STATE_H_ |
| -#include <stdint.h> |
| - |
| #include <memory> |
| -#include <vector> |
| #include "base/files/file_path.h" |
| #include "base/logging.h" |
| #include "base/macros.h" |
| -#include "base/memory/scoped_vector.h" |
| #include "base/strings/string16.h" |
| #include "base/version.h" |
| #include "build/build_config.h" |
| @@ -37,17 +33,9 @@ class MasterPreferences; |
| class ProductState; |
| -typedef std::vector<Product*> Products; |
| - |
| -// Encapsulates the state of the current installation operation. Only valid |
| -// for installs and upgrades (not for uninstalls or non-install commands). |
| -// This class interprets the command-line arguments and master preferences and |
| -// determines the operations to be performed. For example, the Chrome Binaries |
| -// are automatically added if required in multi-install mode. |
| -// TODO(erikwright): This is now used a fair bit during uninstall, and |
| -// InstallerState::Initialize() contains a lot of code for uninstall. The class |
| -// comment should probably be updated. |
| -// TODO(grt): Rename to InstallerEngine/Conductor or somesuch? |
| +// Encapsulates the state of the current installation operation. This class |
| +// interprets the command-line arguments and master preferences and determines |
| +// the operations to be performed. |
| class InstallerState { |
| public: |
| enum Level { |
| @@ -56,17 +44,9 @@ class InstallerState { |
| SYSTEM_LEVEL |
| }; |
| - enum PackageType { |
| - UNKNOWN_PACKAGE_TYPE, |
| - SINGLE_PACKAGE, |
| - MULTI_PACKAGE |
| - }; |
| - |
| enum Operation { |
| UNINITIALIZED, |
| SINGLE_INSTALL_OR_UPDATE, |
| - MULTI_INSTALL, |
| - MULTI_UPDATE, |
| UNINSTALL |
| }; |
| @@ -95,26 +75,15 @@ class InstallerState { |
| // ownership of the return value is not passed to the caller. |
| Product* AddProduct(std::unique_ptr<Product>* product); |
| - // Removes |product| from the set of products to be operated on. The object |
| - // pointed to by |product| is freed. Returns false if |product| is not |
| - // present in the set. |
| - bool RemoveProduct(const Product* product); |
| - |
| // The level (user or system) of this operation. |
| Level level() const { return level_; } |
| - // The package type (single or multi) of this operation. |
| - PackageType package_type() const { return package_type_; } |
| - |
| // An identifier of this operation. |
| Operation operation() const { return operation_; } |
| // A convenience method returning level() == SYSTEM_LEVEL. |
| bool system_install() const; |
| - // A convenience method returning package_type() == MULTI_PACKAGE. |
| - bool is_multi_install() const; |
| - |
| // The full path to the place where the operand resides. |
| const base::FilePath& target_path() const { return target_path_; } |
| @@ -152,19 +121,11 @@ class InstallerState { |
| // single-install. |
| bool is_migrating_to_single() const { return is_migrating_to_single_; } |
| - // Returns the BrowserDistribution instance corresponding to the binaries for |
| - // this run if we're operating on a multi-package product. |
| - BrowserDistribution* multi_package_binaries_distribution() const { |
| - DCHECK(package_type_ == MULTI_PACKAGE); |
| - DCHECK(multi_package_distribution_ != NULL); |
| - return multi_package_distribution_; |
| + const Product& product() const { |
| + DCHECK(product_); |
| + return *product_; |
| } |
| - const Products& products() const { return products_.get(); } |
| - |
| - // Returns the product of the desired type, or NULL if none found. |
| - const Product* FindProduct(BrowserDistribution::Type distribution_type) const; |
| - |
| // Returns the currently installed version in |target_path|, or NULL if no |
| // products are installed. Ownership is passed to the caller. |
| base::Version* GetCurrentVersion( |
| @@ -179,29 +140,15 @@ class InstallerState { |
| const base::Version* current_version, |
| const base::Version& new_version) const; |
| - // Returns whether or not there is currently a Chrome Frame instance running. |
| - // Note that there isn't a mechanism to lock Chrome Frame in place, so Chrome |
| - // Frame may either exit or start up after this is called. |
| - bool IsChromeFrameRunning(const InstallationState& machine_state) const; |
| - |
| - // Returns true if any of the binaries from a multi-install Chrome Frame that |
| - // has been migrated to single-install are still in use. |
| - bool AreBinariesInUse(const InstallationState& machine_state) const; |
| - |
| // Returns the path to the installer under Chrome version folder |
| // (for example <target_path>\Google\Chrome\Application\<Version>\Installer) |
| base::FilePath GetInstallerDirectory(const base::Version& version) const; |
| - // Adds to |com_dll_list| the list of COM DLLs that are to be registered |
| - // and/or unregistered. The list may be empty. |
| - void AddComDllList(std::vector<base::FilePath>* com_dll_list) const; |
| - |
| // Sets the current stage of processing. This reports a progress value to |
| // Google Update for presentation to a user. |
| void SetStage(InstallerStage stage) const; |
| - // For a MULTI_INSTALL or MULTI_UPDATE operation, updates the Google Update |
| - // "ap" values for all products being operated on. |
| + // Strips all evidence of multi-install from Chrome's "ap" value. |
| void UpdateChannels() const; |
| // Sets installer result information in the registry for consumption by Google |
| @@ -219,27 +166,9 @@ class InstallerState { |
| bool RequiresActiveSetup() const; |
| protected: |
| - // Bits for the |file_bits| argument of AnyExistsAndIsInUse. |
| - enum { |
| - CHROME_DLL = 1 << 0, |
| - CHROME_FRAME_DLL = 1 << 1, |
| - CHROME_FRAME_HELPER_DLL = 1 << 2, |
| - CHROME_FRAME_HELPER_EXE = 1 << 3, |
| - NUM_BINARIES = 4 |
| - }; |
| - |
| - // Returns true if |file| exists and cannot be opened for exclusive write |
| - // access. |
| - static bool IsFileInUse(const base::FilePath& file); |
| - |
| // Clears the instance to an uninitialized state. |
| void Clear(); |
| - // Returns true if any file corresponding to a bit in |file_bits| (from the |
| - // enum above) for the currently installed version exists and is in use. |
| - bool AnyExistsAndIsInUse(const InstallationState& machine_state, |
| - uint32_t file_bits) const; |
| - base::FilePath GetDefaultProductInstallPath(BrowserDistribution* dist) const; |
| bool CanAddProduct(const Product& product, |
| const base::FilePath* product_dir) const; |
| Product* AddProductInDirectory(const base::FilePath* product_dir, |
| @@ -248,26 +177,18 @@ class InstallerState { |
| BrowserDistribution::Type distribution_type, |
| const MasterPreferences& prefs, |
| const InstallationState& machine_state); |
| - bool IsMultiInstallUpdate(const MasterPreferences& prefs, |
| - const InstallationState& machine_state); |
| // Sets this object's level and updates the root_key_ accordingly. |
| void set_level(Level level); |
| - // Sets this object's package type and updates the multi_package_distribution_ |
| - // accordingly. |
| - void set_package_type(PackageType type); |
| - |
| Operation operation_; |
| base::FilePath target_path_; |
| base::string16 state_key_; |
| BrowserDistribution::Type state_type_; |
| - ScopedVector<Product> products_; |
| - BrowserDistribution* multi_package_distribution_; |
| + std::unique_ptr<Product> product_; |
| base::Version critical_update_version_; |
| ProgressCalculator progress_calculator_; |
| Level level_; |
| - PackageType package_type_; |
| #if defined(OS_WIN) |
|
huangs
2017/01/03 07:26:05
This #if seems redundant; or if it serves some wei
|
| HKEY root_key_; |
| #endif |