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

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

Issue 2725007: Reverting this as it caused installer_unit_tests to fail. Please fix and rela... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years, 6 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) 2006-2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2009 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/google_update_settings.h" 5 #include "chrome/installer/util/google_update_settings.h"
6 6
7 #include "base/registry.h" 7 #include "base/registry.h"
8 #include "base/string_util.h" 8 #include "base/string_util.h"
9 #include "base/time.h" 9 #include "base/time.h"
10 #include "chrome/installer/util/browser_distribution.h" 10 #include "chrome/installer/util/browser_distribution.h"
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 } 88 }
89 89
90 bool GoogleUpdateSettings::SetEULAConsent(bool consented) { 90 bool GoogleUpdateSettings::SetEULAConsent(bool consented) {
91 BrowserDistribution* dist = BrowserDistribution::GetDistribution(); 91 BrowserDistribution* dist = BrowserDistribution::GetDistribution();
92 std::wstring reg_path = dist->GetStateMediumKey(); 92 std::wstring reg_path = dist->GetStateMediumKey();
93 RegKey key(HKEY_LOCAL_MACHINE, reg_path.c_str(), KEY_READ | KEY_SET_VALUE); 93 RegKey key(HKEY_LOCAL_MACHINE, reg_path.c_str(), KEY_READ | KEY_SET_VALUE);
94 return key.WriteValue(google_update::kRegEULAAceptedField, consented? 1 : 0); 94 return key.WriteValue(google_update::kRegEULAAceptedField, consented? 1 : 0);
95 } 95 }
96 96
97 int GoogleUpdateSettings::GetLastRunTime() { 97 int GoogleUpdateSettings::GetLastRunTime() {
98 std::wstring time_s; 98 std::wstring time_s;
99 if (!ReadGoogleUpdateStrKey(google_update::kRegLastRunTimeField, &time_s)) 99 if (!ReadGoogleUpdateStrKey(google_update::kRegLastRunTimeField, &time_s))
100 return -1; 100 return -1;
101 int64 time_i; 101 int64 time_i;
102 if (!StringToInt64(time_s, &time_i)) 102 if (!StringToInt64(time_s, &time_i))
103 return -1; 103 return -1;
104 base::TimeDelta td = 104 base::TimeDelta td =
105 base::Time::NowFromSystemTime() - base::Time::FromInternalValue(time_i); 105 base::Time::NowFromSystemTime() - base::Time::FromInternalValue(time_i);
106 return td.InDays(); 106 return td.InDays();
107 } 107 }
108 108
109 bool GoogleUpdateSettings::SetLastRunTime() { 109 bool GoogleUpdateSettings::SetLastRunTime() {
110 int64 time = base::Time::NowFromSystemTime().ToInternalValue(); 110 int64 time = base::Time::NowFromSystemTime().ToInternalValue();
111 return WriteGoogleUpdateStrKey(google_update::kRegLastRunTimeField, 111 return WriteGoogleUpdateStrKey(google_update::kRegLastRunTimeField,
112 Int64ToWString(time)); 112 Int64ToWString(time));
113 } 113 }
114 114
115 bool GoogleUpdateSettings::RemoveLastRunTime() { 115 bool GoogleUpdateSettings::RemoveLastRunTime() {
116 return RemoveGoogleUpdateStrKey(google_update::kRegLastRunTimeField); 116 return RemoveGoogleUpdateStrKey(google_update::kRegLastRunTimeField);
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 *channel = L"beta"; 168 *channel = L"beta";
169 else if (update_branch.find(L"-dev") != std::wstring::npos) 169 else if (update_branch.find(L"-dev") != std::wstring::npos)
170 *channel = L"dev"; 170 *channel = L"dev";
171 else if (update_branch.empty()) 171 else if (update_branch.empty())
172 *channel = L""; 172 *channel = L"";
173 else 173 else
174 *channel = L"unknown"; 174 *channel = L"unknown";
175 175
176 return true; 176 return true;
177 } 177 }
178
179 void GoogleUpdateSettings::UpdateDiffInstallStatus(bool system_install,
180 bool incremental_install, int install_return_code,
181 const std::wstring& product_guid) {
182 HKEY reg_root = (system_install) ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER;
183
184 RegKey key;
185 std::wstring ap_key_value;
186 std::wstring reg_key(google_update::kRegPathClientState);
187 reg_key.append(L"\\");
188 reg_key.append(product_guid);
189 if (!key.Open(reg_root, reg_key.c_str(), KEY_ALL_ACCESS) ||
190 !key.ReadValue(google_update::kRegApField, &ap_key_value)) {
191 LOG(INFO) << "Application key not found.";
192 if (!incremental_install || !install_return_code) {
193 LOG(INFO) << "Returning without changing application key.";
194 key.Close();
195 return;
196 } else if (!key.Valid()) {
197 reg_key.assign(google_update::kRegPathClientState);
198 if (!key.Open(reg_root, reg_key.c_str(), KEY_ALL_ACCESS) ||
199 !key.CreateKey(product_guid.c_str(), KEY_ALL_ACCESS)) {
200 LOG(ERROR) << "Failed to create application key.";
201 key.Close();
202 return;
203 }
204 }
205 }
206
207 std::wstring new_value = GetNewGoogleUpdateApKey(
208 incremental_install, install_return_code, ap_key_value);
209 if ((new_value.compare(ap_key_value) != 0) &&
210 !key.WriteValue(google_update::kRegApField, new_value.c_str())) {
211 LOG(ERROR) << "Failed to write value " << new_value
212 << " to the registry field " << google_update::kRegApField;
213 }
214 key.Close();
215 }
216
217 std::wstring GoogleUpdateSettings::GetNewGoogleUpdateApKey(
218 bool diff_install, int install_return_code, const std::wstring& value) {
219 // Magic suffix that we need to add or remove to "ap" key value.
220 const std::wstring kMagicSuffix = L"-full";
221
222 bool has_magic_string = false;
223 if ((value.length() >= kMagicSuffix.length()) &&
224 (value.rfind(kMagicSuffix) == (value.length() - kMagicSuffix.length()))) {
225 LOG(INFO) << "Incremental installer failure key already set.";
226 has_magic_string = true;
227 }
228
229 std::wstring new_value(value);
230 if ((!diff_install || !install_return_code) && has_magic_string) {
231 LOG(INFO) << "Removing failure key from value " << value;
232 new_value = value.substr(0, value.length() - kMagicSuffix.length());
233 } else if ((diff_install && install_return_code) &&
234 !has_magic_string) {
235 LOG(INFO) << "Incremental installer failed, setting failure key.";
236 new_value.append(kMagicSuffix);
237 }
238
239 return new_value;
240 }
241
OLDNEW
« no previous file with comments | « chrome/installer/util/google_update_settings.h ('k') | chrome/installer/util/google_update_settings_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698