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

Side by Side Diff: ceee/ie/common/ceee_module_util.cc

Issue 6090006: Regkey functions return error code instead of bool (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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « base/win/win_util.cc ('k') | ceee/ie/common/ceee_module_util_unittest.cc » ('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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 // CEEE module-wide utilities. 5 // CEEE module-wide utilities.
6 6
7 #include "ceee/ie/common/ceee_module_util.h" 7 #include "ceee/ie/common/ceee_module_util.h"
8 8
9 #include <iepmapi.h> 9 #include <iepmapi.h>
10 10
(...skipping 25 matching lines...) Expand all
36 // Global state needed by the BHO and the 36 // Global state needed by the BHO and the
37 // toolband, to indicate whether ShowDW calls should affect 37 // toolband, to indicate whether ShowDW calls should affect
38 // registry tracking of the user's visibility preference. A 38 // registry tracking of the user's visibility preference. A
39 // non-zero value indicates that the calls should be ignored. 39 // non-zero value indicates that the calls should be ignored.
40 LONG g_ignore_show_dw_changes = 0; 40 LONG g_ignore_show_dw_changes = 0;
41 41
42 bool GetCeeeRegistryBoolean(const wchar_t* key, bool default_value) { 42 bool GetCeeeRegistryBoolean(const wchar_t* key, bool default_value) {
43 base::win::RegKey hkcu(HKEY_CURRENT_USER, kRegistryPath, KEY_READ); 43 base::win::RegKey hkcu(HKEY_CURRENT_USER, kRegistryPath, KEY_READ);
44 LOG_IF(ERROR, !hkcu.Valid()) << "Could not open reg key: " << kRegistryPath; 44 LOG_IF(ERROR, !hkcu.Valid()) << "Could not open reg key: " << kRegistryPath;
45 45
46 DWORD dword_value_representation = 0; 46 DWORD value = default_value ? 1 : 0;
47 DWORD size = sizeof(dword_value_representation); 47 hkcu.ReadValueDW(key, &value);
48 DWORD type = REG_DWORD; 48 return value != 0;
49
50 if (!hkcu.Valid() ||
51 !hkcu.ReadValue(key, &dword_value_representation, &size, &type)) {
52 return default_value;
53 }
54
55 return dword_value_representation != 0;
56 } 49 }
57 50
58 void SetCeeeRegistryBoolean(const wchar_t* key, bool assign_value) { 51 void SetCeeeRegistryBoolean(const wchar_t* key, bool assign_value) {
59 base::win::RegKey hkcu(HKEY_CURRENT_USER, kRegistryPath, KEY_WRITE); 52 base::win::RegKey hkcu(HKEY_CURRENT_USER, kRegistryPath, KEY_WRITE);
60 LOG_IF(ERROR, !hkcu.Valid()) << "Could not open reg key: " << kRegistryPath; 53 LOG_IF(ERROR, !hkcu.Valid()) << "Could not open reg key: " << kRegistryPath;
61 54
62 DWORD dword_value_representation = assign_value ? 1 : 0; 55 DWORD dword_value_representation = assign_value ? 1 : 0;
63 bool write_result = hkcu.WriteValue(key, &dword_value_representation, 56 LONG write_result = hkcu.WriteValue(key, &dword_value_representation,
64 sizeof(dword_value_representation), 57 sizeof(dword_value_representation),
65 REG_DWORD); 58 REG_DWORD);
66 59
67 LOG_IF(ERROR, !write_result) << "Failed to write a registry key: " << key; 60 LOG_IF(ERROR, write_result != ERROR_SUCCESS)
61 << "Failed to write a registry key: " << key
62 << " error: " << com::LogWe(write_result);
68 } 63 }
69 64
70 } // anonymous namespace 65 } // anonymous namespace
71 66
72 namespace ceee_module_util { 67 namespace ceee_module_util {
73 68
74 69
75 // The name of the profile we want ChromeFrame to use (for Internet Explorer). 70 // The name of the profile we want ChromeFrame to use (for Internet Explorer).
76 const wchar_t kChromeProfileName[] = L"iexplore"; 71 const wchar_t kChromeProfileName[] = L"iexplore";
77 72
(...skipping 26 matching lines...) Expand all
104 // "[32-bit program files]\Google\CEEE\Extensions", look for the 99 // "[32-bit program files]\Google\CEEE\Extensions", look for the
105 // first valid directory and use that. Eventually, when we support more 100 // first valid directory and use that. Eventually, when we support more
106 // than one extension, we can load/install all directories and/or crx files 101 // than one extension, we can load/install all directories and/or crx files
107 // found here. 102 // found here.
108 std::wstring crx_path; 103 std::wstring crx_path;
109 base::win::RegKey hkcu(HKEY_CURRENT_USER, kRegistryPath, KEY_READ); 104 base::win::RegKey hkcu(HKEY_CURRENT_USER, kRegistryPath, KEY_READ);
110 base::win::RegKey hklm(HKEY_LOCAL_MACHINE, kRegistryPath, KEY_READ); 105 base::win::RegKey hklm(HKEY_LOCAL_MACHINE, kRegistryPath, KEY_READ);
111 106
112 base::win::RegKey* keys[] = { &hkcu, &hklm }; 107 base::win::RegKey* keys[] = { &hkcu, &hklm };
113 for (int i = 0; i < arraysize(keys); ++i) { 108 for (int i = 0; i < arraysize(keys); ++i) {
114 if (keys[i]->Valid() && keys[i]->ReadValue(kRegistryValue, &crx_path)) 109 if (keys[i]->Valid() &&
110 (keys[i]->ReadValue(kRegistryValue, &crx_path) == ERROR_SUCCESS)) {
115 break; 111 break;
112 }
116 } 113 }
117 114
118 if (crx_path.size() == 0u) { 115 if (crx_path.size() == 0u) {
119 FilePath file_path; 116 FilePath file_path;
120 PathService::Get(base::DIR_PROGRAM_FILES, &file_path); 117 PathService::Get(base::DIR_PROGRAM_FILES, &file_path);
121 118
122 file_path = file_path.Append(L"Google").Append(L"CEEE"). 119 file_path = file_path.Append(L"Google").Append(L"CEEE").
123 Append(L"Extensions"); 120 Append(L"Extensions");
124 if (!file_path.empty()) { 121 if (!file_path.empty()) {
125 // First check for a .crx file (we prefer the .crx) 122 // First check for a .crx file (we prefer the .crx)
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 if (!success || 186 if (!success ||
190 extension_info.last_modified > GetInstalledExtensionTime()) { 187 extension_info.last_modified > GetInstalledExtensionTime()) {
191 return true; 188 return true;
192 } else { 189 } else {
193 // We also check that the current version of Chrome was the one 190 // We also check that the current version of Chrome was the one
194 // that attempted installation; if not, changes such as a change 191 // that attempted installation; if not, changes such as a change
195 // in the location of a profile directory might have occurred, and 192 // in the location of a profile directory might have occurred, and
196 // we might need to retry installation. 193 // we might need to retry installation.
197 std::wstring version_string; 194 std::wstring version_string;
198 base::win::RegKey hkcu(HKEY_CURRENT_USER, kRegistryPath, KEY_READ); 195 base::win::RegKey hkcu(HKEY_CURRENT_USER, kRegistryPath, KEY_READ);
199 success = hkcu.ReadValue( 196 success = hkcu.ReadValue(kRegistryValueCrxInstalledByVersion,
200 kRegistryValueCrxInstalledByVersion, &version_string); 197 &version_string) == ERROR_SUCCESS;
201 return !success || version_string != TO_L_STRING(CHROME_VERSION_STRING); 198 return !success || version_string != TO_L_STRING(CHROME_VERSION_STRING);
202 } 199 }
203 } 200 }
204 201
205 return true; 202 return true;
206 } 203 }
207 204
208 return false; 205 return false;
209 } 206 }
210 207
211 void SetInstalledExtensionPath(const FilePath& path) { 208 void SetInstalledExtensionPath(const FilePath& path) {
212 base::PlatformFileInfo extension_info; 209 base::PlatformFileInfo extension_info;
213 const bool success = file_util::GetFileInfo(path, &extension_info); 210 const bool success = file_util::GetFileInfo(path, &extension_info);
214 const int64 crx_time = success ? 211 const int64 crx_time = success ?
215 extension_info.last_modified.ToInternalValue() : 212 extension_info.last_modified.ToInternalValue() :
216 base::Time::Now().ToInternalValue(); 213 base::Time::Now().ToInternalValue();
217 214
218 base::win::RegKey key(HKEY_CURRENT_USER, kRegistryPath, KEY_WRITE); 215 base::win::RegKey key(HKEY_CURRENT_USER, kRegistryPath, KEY_WRITE);
219 bool write_result = key.WriteValue(kRegistryValueCrxInstalledTime, 216 LONG write_result = key.WriteValue(kRegistryValueCrxInstalledTime,
220 &crx_time, 217 &crx_time,
221 sizeof(crx_time), 218 sizeof(crx_time),
222 REG_QWORD); 219 REG_QWORD);
223 DCHECK(write_result); 220 DCHECK_EQ(ERROR_SUCCESS, write_result);
224 write_result = key.WriteValue(kRegistryValueCrxInstalledPath, 221 write_result = key.WriteValue(kRegistryValueCrxInstalledPath,
225 path.value().c_str()); 222 path.value().c_str());
226 DCHECK(write_result); 223 DCHECK_EQ(ERROR_SUCCESS, write_result);
227 224
228 write_result = key.WriteValue(kRegistryValueCrxInstalledByVersion, 225 write_result = key.WriteValue(kRegistryValueCrxInstalledByVersion,
229 TO_L_STRING(CHROME_VERSION_STRING)); 226 TO_L_STRING(CHROME_VERSION_STRING));
227 DCHECK_EQ(ERROR_SUCCESS, write_result);
230 } 228 }
231 229
232 bool IsCrxOrEmpty(const std::wstring& path) { 230 bool IsCrxOrEmpty(const std::wstring& path) {
233 return (path.empty() || 231 return (path.empty() ||
234 (path.substr(std::max(path.size() - 4, 0u)) == L".crx")); 232 (path.substr(std::max(path.size() - 4, 0u)) == L".crx"));
235 } 233 }
236 234
237 void SetOptionToolbandIsHidden(bool is_hidden) { 235 void SetOptionToolbandIsHidden(bool is_hidden) {
238 SetCeeeRegistryBoolean(kRegistryValueToolbandIsHidden, is_hidden); 236 SetCeeeRegistryBoolean(kRegistryValueToolbandIsHidden, is_hidden);
239 } 237 }
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 key.append(kChromeFrameGuid); 292 key.append(kChromeFrameGuid);
295 return key; 293 return key;
296 } 294 }
297 295
298 // TODO(vitalybuka@google.com) : remove this code and use 296 // TODO(vitalybuka@google.com) : remove this code and use
299 // GoogleUpdateSettings::GetCollectStatsConsent() code. 297 // GoogleUpdateSettings::GetCollectStatsConsent() code.
300 // BrowserDistribution requires modification to know about CEEE (bb3136374). 298 // BrowserDistribution requires modification to know about CEEE (bb3136374).
301 bool GetCollectStatsConsent() { 299 bool GetCollectStatsConsent() {
302 std::wstring reg_path = GetCromeFrameClientStateKey(); 300 std::wstring reg_path = GetCromeFrameClientStateKey();
303 base::win::RegKey key(HKEY_CURRENT_USER, reg_path.c_str(), KEY_READ); 301 base::win::RegKey key(HKEY_CURRENT_USER, reg_path.c_str(), KEY_READ);
304 DWORD value; 302 DWORD value = 0;
305 if (!key.ReadValueDW(google_update::kRegUsageStatsField, &value)) { 303 if (key.ReadValueDW(google_update::kRegUsageStatsField, &value) !=
304 ERROR_SUCCESS) {
306 base::win::RegKey hklm_key(HKEY_LOCAL_MACHINE, reg_path.c_str(), KEY_READ); 305 base::win::RegKey hklm_key(HKEY_LOCAL_MACHINE, reg_path.c_str(), KEY_READ);
307 if (!hklm_key.ReadValueDW(google_update::kRegUsageStatsField, &value)) 306 key.ReadValueDW(google_update::kRegUsageStatsField, &value);
308 return false;
309 } 307 }
308
310 return (1 == value); 309 return (1 == value);
311 } 310 }
312 311
313 bool RefreshElevationPolicyIfNeeded() { 312 bool RefreshElevationPolicyIfNeeded() {
314 if (ie_util::GetIeVersion() < ie_util::IEVERSION_IE7) 313 if (ie_util::GetIeVersion() < ie_util::IEVERSION_IE7)
315 return false; 314 return false;
316 315
317 // This may access InternetRegistry instead of real one. However this is 316 // This may access InternetRegistry instead of real one. However this is
318 // acceptable, we just refresh policy twice. 317 // acceptable, we just refresh policy twice.
319 base::win::RegKey hkcu(HKEY_CURRENT_USER, kRegistryPath, 318 base::win::RegKey hkcu(HKEY_CURRENT_USER, kRegistryPath,
320 KEY_WRITE | KEY_QUERY_VALUE); 319 KEY_WRITE | KEY_QUERY_VALUE);
321 LOG_IF(ERROR, !hkcu.Valid()) << "Failed to open reg key: " << kRegistryPath; 320 LOG_IF(ERROR, !hkcu.Valid()) << "Failed to open reg key: " << kRegistryPath;
322 if (!hkcu.Valid()) 321 if (!hkcu.Valid())
323 return false; 322 return false;
324 323
325 std::wstring expected_version = TO_L_STRING(CHROME_VERSION_STRING); 324 std::wstring expected_version = TO_L_STRING(CHROME_VERSION_STRING);
326 325
327 static const wchar_t kValueName[] = L"last_elevation_refresh"; 326 static const wchar_t kValueName[] = L"last_elevation_refresh";
328 std::wstring last_elevation_refresh_version; 327 std::wstring last_elevation_refresh_version;
329 bool result = hkcu.ReadValue(kValueName, &last_elevation_refresh_version); 328 LONG result = hkcu.ReadValue(kValueName, &last_elevation_refresh_version);
330 if (last_elevation_refresh_version == expected_version) 329 if (last_elevation_refresh_version == expected_version)
331 return false; 330 return false;
332 331
333 HRESULT hr = ::IERefreshElevationPolicy(); 332 HRESULT hr = ::IERefreshElevationPolicy();
334 VLOG(1) << "Elevation policy refresh result: " << com::LogHr(hr); 333 VLOG(1) << "Elevation policy refresh result: " << com::LogHr(hr);
335 334
336 // Write after refreshing because it's better to refresh twice, than to miss 335 // Write after refreshing because it's better to refresh twice, than to miss
337 // once. 336 // once.
338 result = hkcu.WriteValue(kValueName, expected_version.c_str()); 337 result = hkcu.WriteValue(kValueName, expected_version.c_str());
339 LOG_IF(ERROR, !result) << "Failed to write a registry value: " << kValueName; 338 LOG_IF(ERROR, result != ERROR_SUCCESS) << "Failed to write a registry value: "
339 << kValueName << " error: " << com::LogWe(result);
340 340
341 return true; 341 return true;
342 } 342 }
343 343
344 } // namespace ceee_module_util 344 } // namespace ceee_module_util
OLDNEW
« no previous file with comments | « base/win/win_util.cc ('k') | ceee/ie/common/ceee_module_util_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698