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

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

Issue 131763004: Merge 242400 "Remove installation of Chrome Frame." (Closed) Base URL: svn://svn.chromium.org/chrome/branches/1750/src/
Patch Set: Created 6 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 | Annotate | Revision Log
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/util/installer_state.h" 5 #include "chrome/installer/util/installer_state.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <functional> 8 #include <functional>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 12 matching lines...) Expand all
23 #include "chrome/installer/util/install_util.h" 23 #include "chrome/installer/util/install_util.h"
24 #include "chrome/installer/util/installation_state.h" 24 #include "chrome/installer/util/installation_state.h"
25 #include "chrome/installer/util/master_preferences.h" 25 #include "chrome/installer/util/master_preferences.h"
26 #include "chrome/installer/util/master_preferences_constants.h" 26 #include "chrome/installer/util/master_preferences_constants.h"
27 #include "chrome/installer/util/product.h" 27 #include "chrome/installer/util/product.h"
28 #include "chrome/installer/util/work_item.h" 28 #include "chrome/installer/util/work_item.h"
29 #include "chrome/installer/util/work_item_list.h" 29 #include "chrome/installer/util/work_item_list.h"
30 30
31 namespace installer { 31 namespace installer {
32 32
33 bool InstallerState::IsMultiInstallUpdate(const MasterPreferences& prefs, 33 bool InstallerState::IsMultiInstallUpdate(
34 const MasterPreferences& prefs,
34 const InstallationState& machine_state) { 35 const InstallationState& machine_state) {
35 // First, is the package present? 36 // First, are the binaries present?
36 const ProductState* package = 37 const ProductState* binaries =
37 machine_state.GetProductState(level_ == SYSTEM_LEVEL, 38 machine_state.GetProductState(level_ == SYSTEM_LEVEL,
38 BrowserDistribution::CHROME_BINARIES); 39 BrowserDistribution::CHROME_BINARIES);
39 if (package == NULL) { 40 if (binaries == NULL) {
40 // The multi-install package has not been installed, so it certainly isn't 41 // The multi-install binaries have not been installed, so they certainly
41 // being updated. 42 // aren't being updated.
42 return false; 43 return false;
43 } 44 }
44 45
45 BrowserDistribution::Type types[2]; 46 if (prefs.install_chrome()) {
46 size_t num_types = 0;
47 if (prefs.install_chrome())
48 types[num_types++] = BrowserDistribution::CHROME_BROWSER;
49 if (prefs.install_chrome_frame())
50 types[num_types++] = BrowserDistribution::CHROME_FRAME;
51
52 for (const BrowserDistribution::Type* scan = &types[0],
53 *end = &types[num_types]; scan != end; ++scan) {
54 const ProductState* product = 47 const ProductState* product =
55 machine_state.GetProductState(level_ == SYSTEM_LEVEL, *scan); 48 machine_state.GetProductState(level_ == SYSTEM_LEVEL,
49 BrowserDistribution::CHROME_BROWSER);
56 if (product == NULL) { 50 if (product == NULL) {
57 VLOG(2) << "It seems that distribution type " << *scan 51 VLOG(2) << "It seems that chrome is being installed for the first time.";
58 << " is being installed for the first time.";
59 return false; 52 return false;
60 } 53 }
61 if (!product->channel().Equals(package->channel())) { 54 if (!product->channel().Equals(binaries->channel())) {
62 VLOG(2) << "It seems that distribution type " << *scan 55 VLOG(2) << "It seems that chrome is being over installed.";
63 << " is being over installed.";
64 return false; 56 return false;
65 } 57 }
66 } 58 }
67 59
68 VLOG(2) << "It seems that the package is being updated."; 60 VLOG(2) << "It seems that the binaries are being updated.";
69 61
70 return true; 62 return true;
71 } 63 }
72 64
73 InstallerState::InstallerState() 65 InstallerState::InstallerState()
74 : operation_(UNINITIALIZED), 66 : operation_(UNINITIALIZED),
75 state_type_(BrowserDistribution::CHROME_BROWSER), 67 state_type_(BrowserDistribution::CHROME_BROWSER),
76 multi_package_distribution_(NULL), 68 multi_package_distribution_(NULL),
77 level_(UNKNOWN_LEVEL), 69 level_(UNKNOWN_LEVEL),
78 package_type_(UNKNOWN_PACKAGE_TYPE), 70 package_type_(UNKNOWN_PACKAGE_TYPE),
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 command_line.HasSwitch(installer::switches::kEnsureGoogleUpdatePresent); 112 command_line.HasSwitch(installer::switches::kEnsureGoogleUpdatePresent);
121 113
122 const bool is_uninstall = command_line.HasSwitch(switches::kUninstall); 114 const bool is_uninstall = command_line.HasSwitch(switches::kUninstall);
123 115
124 if (prefs.install_chrome()) { 116 if (prefs.install_chrome()) {
125 Product* p = AddProductFromPreferences( 117 Product* p = AddProductFromPreferences(
126 BrowserDistribution::CHROME_BROWSER, prefs, machine_state); 118 BrowserDistribution::CHROME_BROWSER, prefs, machine_state);
127 VLOG(1) << (is_uninstall ? "Uninstall" : "Install") 119 VLOG(1) << (is_uninstall ? "Uninstall" : "Install")
128 << " distribution: " << p->distribution()->GetDisplayName(); 120 << " distribution: " << p->distribution()->GetDisplayName();
129 } 121 }
130 if (prefs.install_chrome_frame()) {
131 Product* p = AddProductFromPreferences(
132 BrowserDistribution::CHROME_FRAME, prefs, machine_state);
133 VLOG(1) << (is_uninstall ? "Uninstall" : "Install")
134 << " distribution: " << p->distribution()->GetDisplayName();
135 }
136 122
137 if (prefs.install_chrome_app_launcher()) { 123 if (prefs.install_chrome_app_launcher()) {
138 Product* p = AddProductFromPreferences( 124 Product* p = AddProductFromPreferences(
139 BrowserDistribution::CHROME_APP_HOST, prefs, machine_state); 125 BrowserDistribution::CHROME_APP_HOST, prefs, machine_state);
140 VLOG(1) << (is_uninstall ? "Uninstall" : "Install") 126 VLOG(1) << (is_uninstall ? "Uninstall" : "Install")
141 << " distribution: " << p->distribution()->GetDisplayName(); 127 << " distribution: " << p->distribution()->GetDisplayName();
142 } 128 }
143 129
144 if (!is_uninstall && is_multi_install()) { 130 if (!is_uninstall && is_multi_install()) {
145 bool need_binaries = false; 131 bool need_binaries = false;
146 if (FindProduct(BrowserDistribution::CHROME_APP_HOST)) { 132 if (FindProduct(BrowserDistribution::CHROME_APP_HOST)) {
147 // App Host will happily use Chrome at system level, or binaries at system 133 // App Host will happily use Chrome at system level, or binaries at system
148 // level, even if app host is user level. 134 // level, even if app host is user level.
149 const ProductState* chrome_state = machine_state.GetProductState( 135 const ProductState* chrome_state = machine_state.GetProductState(
150 true, // system level 136 true, // system level
151 BrowserDistribution::CHROME_BROWSER); 137 BrowserDistribution::CHROME_BROWSER);
152 // If Chrome is at system-level, multi- or otherwise. We'll use it. 138 // If Chrome is at system-level, multi- or otherwise. We'll use it.
153 if (!chrome_state) { 139 if (!chrome_state) {
154 const ProductState* binaries_state = machine_state.GetProductState( 140 const ProductState* binaries_state = machine_state.GetProductState(
155 true, // system level 141 true, // system level
156 BrowserDistribution::CHROME_BINARIES); 142 BrowserDistribution::CHROME_BINARIES);
157 if (!binaries_state) 143 if (!binaries_state)
158 need_binaries = true; 144 need_binaries = true;
159 } 145 }
160 } 146 }
161 147
162 // Chrome/Chrome Frame multi need Binaries at their own level. 148 // Chrome multi needs Binaries at its own level.
163 if (FindProduct(BrowserDistribution::CHROME_BROWSER)) 149 if (FindProduct(BrowserDistribution::CHROME_BROWSER))
164 need_binaries = true; 150 need_binaries = true;
165 151
166 if (FindProduct(BrowserDistribution::CHROME_FRAME))
167 need_binaries = true;
168
169 if (need_binaries && !FindProduct(BrowserDistribution::CHROME_BINARIES)) { 152 if (need_binaries && !FindProduct(BrowserDistribution::CHROME_BINARIES)) {
170 // Force binaries to be installed/updated. 153 // Force binaries to be installed/updated.
171 Product* p = AddProductFromPreferences( 154 Product* p = AddProductFromPreferences(
172 BrowserDistribution::CHROME_BINARIES, prefs, machine_state); 155 BrowserDistribution::CHROME_BINARIES, prefs, machine_state);
173 VLOG(1) << "Install distribution: " 156 VLOG(1) << "Install distribution: "
174 << p->distribution()->GetDisplayName(); 157 << p->distribution()->GetDisplayName();
175 } 158 }
176 } 159 }
177 160
178 if (is_uninstall && prefs.is_multi_install()) { 161 if (is_uninstall && prefs.is_multi_install()) {
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 operation_ = SINGLE_INSTALL_OR_UPDATE; 266 operation_ = SINGLE_INSTALL_OR_UPDATE;
284 } else if (IsMultiInstallUpdate(prefs, machine_state)) { 267 } else if (IsMultiInstallUpdate(prefs, machine_state)) {
285 // Updates driven by Google Update take place under the multi-installer's 268 // Updates driven by Google Update take place under the multi-installer's
286 // app guid. 269 // app guid.
287 operand = multi_package_distribution_; 270 operand = multi_package_distribution_;
288 operation_ = MULTI_UPDATE; 271 operation_ = MULTI_UPDATE;
289 } else { 272 } else {
290 operation_ = MULTI_INSTALL; 273 operation_ = MULTI_INSTALL;
291 } 274 }
292 275
293 // Initial, over, and un-installs will take place under one of the 276 // Initial, over, and un-installs will take place under one of the product app
294 // product app guids (Chrome, Chrome Frame, App Host, or Binaries, in order of 277 // guids (Chrome, App Host, or Binaries, in order of preference).
295 // preference).
296 if (operand == NULL) { 278 if (operand == NULL) {
297 BrowserDistribution::Type operand_distribution_type = 279 BrowserDistribution::Type operand_distribution_type =
298 BrowserDistribution::CHROME_BINARIES; 280 BrowserDistribution::CHROME_BINARIES;
299 if (prefs.install_chrome()) 281 if (prefs.install_chrome())
300 operand_distribution_type = BrowserDistribution::CHROME_BROWSER; 282 operand_distribution_type = BrowserDistribution::CHROME_BROWSER;
301 else if (prefs.install_chrome_frame())
302 operand_distribution_type = BrowserDistribution::CHROME_FRAME;
303 else if (prefs.install_chrome_app_launcher()) 283 else if (prefs.install_chrome_app_launcher())
304 operand_distribution_type = BrowserDistribution::CHROME_APP_HOST; 284 operand_distribution_type = BrowserDistribution::CHROME_APP_HOST;
305 285
306 operand = BrowserDistribution::GetSpecificDistribution( 286 operand = BrowserDistribution::GetSpecificDistribution(
307 operand_distribution_type); 287 operand_distribution_type);
308 } 288 }
309 289
310 state_key_ = operand->GetStateKey(); 290 state_key_ = operand->GetStateKey();
311 state_type_ = operand->GetType(); 291 state_type_ = operand->GetType();
312 292
(...skipping 530 matching lines...) Expand 10 before | Expand all | Expand 10 after
843 } 823 }
844 if (!install_list->Do()) 824 if (!install_list->Do())
845 LOG(ERROR) << "Failed to record installer error information in registry."; 825 LOG(ERROR) << "Failed to record installer error information in registry.";
846 } 826 }
847 827
848 bool InstallerState::RequiresActiveSetup() const { 828 bool InstallerState::RequiresActiveSetup() const {
849 return system_install() && FindProduct(BrowserDistribution::CHROME_BROWSER); 829 return system_install() && FindProduct(BrowserDistribution::CHROME_BROWSER);
850 } 830 }
851 831
852 } // namespace installer 832 } // namespace installer
OLDNEW
« no previous file with comments | « chrome/installer/util/browser_distribution.cc ('k') | chrome/installer/util/installer_state_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698