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

Unified Diff: chrome/installer/util/installation_state.h

Issue 6288009: More installer refactoring in the interest of fixing some bugs and cleaning t... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 11 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/util/installation_state.h
===================================================================
--- chrome/installer/util/installation_state.h (revision 71802)
+++ chrome/installer/util/installation_state.h (working copy)
@@ -9,6 +9,8 @@
#include <string>
#include "base/basictypes.h"
+#include "base/command_line.h"
+#include "base/file_path.h"
#include "base/scoped_ptr.h"
#include "chrome/installer/util/browser_distribution.h"
#include "chrome/installer/util/channel_info.h"
@@ -19,29 +21,60 @@
class InstallationState;
class MasterPreferences;
-class PackageProperties;
+// A representation of a product's state on the machine based on the contents
+// of the Windows registry.
class ProductState {
public:
ProductState();
- void Initialize(bool system_install,
- const std::wstring& version_key,
- const std::wstring& state_key);
+ // Returns true if the product is installed (i.e., the product's Clients key
+ // exists and has a "pv" value); false otherwise.
+ bool Initialize(bool system_install,
+ BrowserDistribution::Type type);
+ bool Initialize(bool system_install,
+ BrowserDistribution* distribution);
const ChannelInfo& channel() const { return channel_; }
ChannelInfo& channel() { return channel_; }
+ FilePath GetSetupPath() const;
+
const Version& version() const;
// Takes ownership of |version|.
void set_version(Version* version) { version_.reset(version); }
- void CopyFrom(const ProductState& other);
+ // May be NULL. Ownership of a returned value is not passed to the caller.
+ const Version* old_version() const { return old_version_.get(); }
+ // Takes ownership of |version|.
+ void set_old_version(Version* version) { old_version_.reset(version); }
+ const std::wstring& rename_cmd() const { return rename_cmd_; }
+ void set_rename_cmd(const std::wstring& rename_cmd) {
+ rename_cmd_ = rename_cmd;
+ }
+
+ // True if the "msi" value in the ClientState key is present and non-zero.
+ bool msi() const { return msi_; }
+ void set_msi(bool set) { msi_ = set; }
robertshield 2011/01/21 16:58:56 Remove the public setters for this and other field
grt (UTC plus 2) 2011/01/24 16:07:02 Done.
+
+ const CommandLine& uninstall_command() const { return uninstall_command_; }
+
+ // True if |uninstall_command| contains --multi-install.
+ bool multi_install() const { return multi_install_; }
+
+ // Returns this object a la operator=().
+ ProductState& CopyFrom(const ProductState& other);
+
private:
friend class InstallationState;
ChannelInfo channel_;
scoped_ptr<Version> version_;
+ scoped_ptr<Version> old_version_;
+ std::wstring rename_cmd_;
+ CommandLine uninstall_command_;
+ bool msi_;
+ bool multi_install_;
DISALLOW_COPY_AND_ASSIGN(ProductState);
}; // class ProductState
@@ -50,14 +83,9 @@
public:
InstallationState();
- // Initializes |this| with the machine's current state.
- void Initialize(const MasterPreferences& prefs);
+ // Initializes this object with the machine's current state.
+ void Initialize();
- // Returns the state of the multi-installer package or NULL if no
- // multi-install products are installed.
- // Caller does NOT assume ownership of returned pointer.
- const ProductState* GetMultiPackageState(bool system_install) const;
-
// Returns the state of a product or NULL if not installed.
// Caller does NOT assume ownership of returned pointer.
const ProductState* GetProductState(bool system_install,
@@ -67,17 +95,11 @@
enum {
CHROME_BROWSER_INDEX,
CHROME_FRAME_INDEX,
- MULTI_PACKAGE_INDEX,
+ CHROME_BINARIES_INDEX,
NUM_PRODUCTS
};
static int IndexFromDistType(BrowserDistribution::Type type);
- static void InitializeProduct(bool system_install,
- BrowserDistribution* distribution,
- ProductState* product);
- static void InitializeMultiPackage(bool system_install,
- PackageProperties& properties,
- ProductState* product);
ProductState user_products_[NUM_PRODUCTS];
ProductState system_products_[NUM_PRODUCTS];

Powered by Google App Engine
This is Rietveld 408576698