OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROME_INSTALLER_UTIL_INSTALLATION_STATE_H_ | 5 #ifndef CHROME_INSTALLER_UTIL_INSTALLATION_STATE_H_ |
6 #define CHROME_INSTALLER_UTIL_INSTALLATION_STATE_H_ | 6 #define CHROME_INSTALLER_UTIL_INSTALLATION_STATE_H_ |
7 | 7 |
8 #include <memory> | 8 #include <memory> |
9 #include <string> | 9 #include <string> |
10 | 10 |
11 #include "base/command_line.h" | 11 #include "base/command_line.h" |
12 #include "base/files/file_path.h" | 12 #include "base/files/file_path.h" |
13 #include "base/macros.h" | 13 #include "base/macros.h" |
14 #include "chrome/installer/util/app_commands.h" | 14 #include "chrome/installer/util/app_commands.h" |
15 #include "chrome/installer/util/browser_distribution.h" | |
16 #include "chrome/installer/util/channel_info.h" | 15 #include "chrome/installer/util/channel_info.h" |
17 | 16 |
18 namespace base { | 17 namespace base { |
19 class Version; | 18 class Version; |
20 namespace win { | 19 namespace win { |
21 class RegKey; | 20 class RegKey; |
22 } | 21 } |
23 } | 22 } |
24 | 23 |
25 namespace installer { | 24 namespace installer { |
26 | 25 |
27 class InstallationState; | 26 class InstallationState; |
28 | 27 |
29 // A representation of a product's state on the machine based on the contents | 28 // A representation of Chrome's state on the machine based on the contents of |
30 // of the Windows registry. | 29 // the Windows registry. |
31 // TODO(grt): Pull this out into its own file. | 30 // TODO(grt): Pull this out into its own file. |
| 31 // TODO(grt): Evaluate whether this is still needed. If yes, rename to |
| 32 // ChromeState or somesuch. |
32 class ProductState { | 33 class ProductState { |
33 public: | 34 public: |
34 ProductState(); | 35 ProductState(); |
35 ~ProductState(); | 36 ~ProductState(); |
36 | 37 |
37 // Returns true if the product is installed (i.e., the product's Clients key | 38 // Returns true if the product is installed (i.e., the product's Clients key |
38 // exists and has a "pv" value); false otherwise. | 39 // exists and has a "pv" value); false otherwise. |
39 bool Initialize(bool system_install, | 40 bool Initialize(bool system_install); |
40 BrowserDistribution::Type type); | |
41 bool Initialize(bool system_install, | |
42 BrowserDistribution* distribution); | |
43 | 41 |
44 // Returns the product's channel info (i.e., the Google Update "ap" value). | 42 // Returns the product's channel info (i.e., the Google Update "ap" value). |
45 const ChannelInfo& channel() const { return channel_; } | 43 const ChannelInfo& channel() const { return channel_; } |
46 | 44 |
47 // Returns the path to the product's "setup.exe"; may be empty. | 45 // Returns the path to the product's "setup.exe"; may be empty. |
48 base::FilePath GetSetupPath() const; | 46 base::FilePath GetSetupPath() const; |
49 | 47 |
50 // Returns the product's version. This method may only be called on an | 48 // Returns the product's version. This method may only be called on an |
51 // instance that has been initialized for an installed product. | 49 // instance that has been initialized for an installed product. |
52 const base::Version& version() const; | 50 const base::Version& version() const; |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
130 // TODO(grt): Rename this to MachineState and put it in its own file. | 128 // TODO(grt): Rename this to MachineState and put it in its own file. |
131 class InstallationState { | 129 class InstallationState { |
132 public: | 130 public: |
133 InstallationState(); | 131 InstallationState(); |
134 | 132 |
135 // Initializes this object with the machine's current state. | 133 // Initializes this object with the machine's current state. |
136 void Initialize(); | 134 void Initialize(); |
137 | 135 |
138 // Returns the state of a product or NULL if not installed. | 136 // Returns the state of a product or NULL if not installed. |
139 // Caller does NOT assume ownership of returned pointer. | 137 // Caller does NOT assume ownership of returned pointer. |
140 const ProductState* GetProductState(bool system_install, | 138 const ProductState* GetProductState(bool system_install) const; |
141 BrowserDistribution::Type type) const; | |
142 | 139 |
143 // Returns the state of a product, even one that has not yet been installed. | 140 // Returns the state of a product, even one that has not yet been installed. |
144 // This is useful during first install, when some but not all ProductState | 141 // This is useful during first install, when some but not all ProductState |
145 // information has been written by Omaha. Notably absent from the | 142 // information has been written by Omaha. Notably absent from the |
146 // ProductState returned here are the version numbers. Do NOT try to access | 143 // ProductState returned here are the version numbers. Do NOT try to access |
147 // the version numbers from a ProductState returned by this method. | 144 // the version numbers from a ProductState returned by this method. |
148 // Caller does NOT assume ownership of returned pointer. This method will | 145 // Caller does NOT assume ownership of returned pointer. This method will |
149 // never return NULL. | 146 // never return NULL. |
150 const ProductState* GetNonVersionedProductState( | 147 const ProductState* GetNonVersionedProductState(bool system_install) const; |
151 bool system_install, BrowserDistribution::Type type) const; | |
152 | 148 |
153 protected: | 149 protected: |
154 enum { | 150 ProductState user_chrome_; |
155 CHROME_BROWSER_INDEX, | 151 ProductState system_chrome_; |
156 CHROME_FRAME_INDEX, | |
157 CHROME_BINARIES_INDEX, | |
158 NUM_PRODUCTS | |
159 }; | |
160 | |
161 static int IndexFromDistType(BrowserDistribution::Type type); | |
162 | |
163 ProductState user_products_[NUM_PRODUCTS]; | |
164 ProductState system_products_[NUM_PRODUCTS]; | |
165 | 152 |
166 private: | 153 private: |
167 DISALLOW_COPY_AND_ASSIGN(InstallationState); | 154 DISALLOW_COPY_AND_ASSIGN(InstallationState); |
168 }; // class InstallationState | 155 }; // class InstallationState |
169 | 156 |
170 } // namespace installer | 157 } // namespace installer |
171 | 158 |
172 #endif // CHROME_INSTALLER_UTIL_INSTALLATION_STATE_H_ | 159 #endif // CHROME_INSTALLER_UTIL_INSTALLATION_STATE_H_ |
OLD | NEW |