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

Side by Side Diff: chrome/installer/setup/installer_state.cc

Issue 2621923002: Product cleanups in the wake of multi-install removal. (Closed)
Patch Set: sync to position 442831 Created 3 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 unified diff | Download patch
« no previous file with comments | « no previous file | chrome/installer/util/chrome_browser_operations.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include "chrome/installer/setup/installer_state.h" 5 #include "chrome/installer/setup/installer_state.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 root_key_ = NULL; 105 root_key_ = NULL;
106 break; 106 break;
107 } 107 }
108 } 108 }
109 109
110 // Evaluates a product's eligibility for participation in this operation. 110 // Evaluates a product's eligibility for participation in this operation.
111 // We never expect these checks to fail, hence they all terminate the process in 111 // We never expect these checks to fail, hence they all terminate the process in
112 // debug builds. See the log messages for details. 112 // debug builds. See the log messages for details.
113 bool InstallerState::CanAddProduct(const base::FilePath* product_dir) const { 113 bool InstallerState::CanAddProduct(const base::FilePath* product_dir) const {
114 if (product_) { 114 if (product_) {
115 LOG(DFATAL) << "Cannot process more than one single-install product."; 115 LOG(DFATAL) << "Cannot process more than one product.";
116 return false; 116 return false;
117 } 117 }
118 return true; 118 return true;
119 } 119 }
120 120
121 // Adds |product|, installed in |product_dir| to this object's collection. If 121 // Adds |product|, installed in |product_dir| to this object's collection. If
122 // |product_dir| is NULL, the product's default install location is used. 122 // |product_dir| is NULL, the product's default install location is used.
123 // Returns NULL if |product| is incompatible with this object. Otherwise, 123 // Returns NULL if |product| is incompatible with this object. Otherwise,
124 // returns a pointer to the product (ownership is held by this object). 124 // returns a pointer to the product (ownership is held by this object).
125 Product* InstallerState::AddProductInDirectory( 125 Product* InstallerState::AddProductInDirectory(
126 const base::FilePath* product_dir, 126 const base::FilePath* product_dir,
127 std::unique_ptr<Product> product) { 127 std::unique_ptr<Product> product) {
128 DCHECK(product); 128 DCHECK(product);
129 const Product& the_product = *product; 129 const Product& the_product = *product;
130 DCHECK(!the_product.HasOption(kOptionMultiInstall));
131 130
132 if (!CanAddProduct(product_dir)) 131 if (!CanAddProduct(product_dir))
133 return nullptr; 132 return nullptr;
134 133
135 if (target_path_.empty()) { 134 if (target_path_.empty()) {
136 target_path_ = product_dir ? *product_dir : GetChromeInstallPath( 135 target_path_ = product_dir ? *product_dir : GetChromeInstallPath(
137 system_install(), 136 system_install(),
138 the_product.distribution()); 137 the_product.distribution());
139 } 138 }
140 139
(...skipping 10 matching lines...) Expand all
151 150
152 // Adds a product constructed on the basis of |prefs|, setting this object's msi 151 // Adds a product constructed on the basis of |prefs|, setting this object's msi
153 // flag if the product is represented in |machine_state| and is msi-installed. 152 // flag if the product is represented in |machine_state| and is msi-installed.
154 // Returns the product that was added, or NULL if |state| is incompatible with 153 // Returns the product that was added, or NULL if |state| is incompatible with
155 // this object. Ownership is not passed to the caller. 154 // this object. Ownership is not passed to the caller.
156 Product* InstallerState::AddProductFromPreferences( 155 Product* InstallerState::AddProductFromPreferences(
157 const MasterPreferences& prefs, 156 const MasterPreferences& prefs,
158 const InstallationState& machine_state) { 157 const InstallationState& machine_state) {
159 std::unique_ptr<Product> product_ptr( 158 std::unique_ptr<Product> product_ptr(
160 new Product(BrowserDistribution::GetDistribution())); 159 new Product(BrowserDistribution::GetDistribution()));
161 product_ptr->InitializeFromPreferences(prefs);
162 160
163 Product* product = AddProductInDirectory(nullptr, std::move(product_ptr)); 161 Product* product = AddProductInDirectory(nullptr, std::move(product_ptr));
164 162
165 if (product != NULL && !msi_) { 163 if (product != NULL && !msi_) {
166 const ProductState* product_state = 164 const ProductState* product_state =
167 machine_state.GetProductState(system_install()); 165 machine_state.GetProductState(system_install());
168 if (product_state != NULL) 166 if (product_state != NULL)
169 msi_ = product_state->is_msi(); 167 msi_ = product_state->is_msi();
170 } 168 }
171 169
172 return product; 170 return product;
173 } 171 }
174 172
175 Product* InstallerState::AddProductFromState( 173 Product* InstallerState::AddProductFromState(
176 const ProductState& state) { 174 const ProductState& state) {
177 std::unique_ptr<Product> product_ptr( 175 std::unique_ptr<Product> product_ptr(
178 new Product(BrowserDistribution::GetDistribution())); 176 new Product(BrowserDistribution::GetDistribution()));
179 product_ptr->InitializeFromUninstallCommand(state.uninstall_command());
180 177
181 // Strip off <version>/Installer/setup.exe; see GetInstallerDirectory(). 178 // Strip off <version>/Installer/setup.exe; see GetInstallerDirectory().
182 base::FilePath product_dir = 179 base::FilePath product_dir =
183 state.GetSetupPath().DirName().DirName().DirName(); 180 state.GetSetupPath().DirName().DirName().DirName();
184 181
185 Product* product = 182 Product* product =
186 AddProductInDirectory(&product_dir, std::move(product_ptr)); 183 AddProductInDirectory(&product_dir, std::move(product_ptr));
187 184
188 if (product != NULL) 185 if (product != NULL)
189 msi_ |= state.is_msi(); 186 msi_ |= state.is_msi();
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 #endif 320 #endif
324 } 321 }
325 install_list->Do(); 322 install_list->Do();
326 } 323 }
327 324
328 bool InstallerState::RequiresActiveSetup() const { 325 bool InstallerState::RequiresActiveSetup() const {
329 return system_install(); 326 return system_install();
330 } 327 }
331 328
332 } // namespace installer 329 } // namespace installer
OLDNEW
« no previous file with comments | « no previous file | chrome/installer/util/chrome_browser_operations.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698