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 |