Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3091)

Unified Diff: chrome/installer/setup/installer_state.h

Issue 2589753002: Remove multi-install from chrome/installer/setup. (Closed)
Patch Set: lint fixes Created 3 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698