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

Side by Side Diff: chrome/installer/util/google_update_settings_unittest.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
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 #include <windows.h> 5 #include <windows.h>
6 #include <shlwapi.h> // For SHDeleteKey. 6 #include <shlwapi.h> // For SHDeleteKey.
7 7
8 #include "base/ref_counted.h" 8 #include "base/ref_counted.h"
9 #include "base/scoped_ptr.h" 9 #include "base/scoped_ptr.h"
10 #include "base/win/registry.h" 10 #include "base/win/registry.h"
(...skipping 27 matching lines...) Expand all
38 virtual void SetUp() { 38 virtual void SetUp() {
39 // Wipe the keys we redirect to. 39 // Wipe the keys we redirect to.
40 // This gives us a stable run, even in the presence of previous 40 // This gives us a stable run, even in the presence of previous
41 // crashes or failures. 41 // crashes or failures.
42 LSTATUS err = SHDeleteKey(HKEY_CURRENT_USER, kHKCUReplacement); 42 LSTATUS err = SHDeleteKey(HKEY_CURRENT_USER, kHKCUReplacement);
43 EXPECT_TRUE(err == ERROR_SUCCESS || err == ERROR_FILE_NOT_FOUND); 43 EXPECT_TRUE(err == ERROR_SUCCESS || err == ERROR_FILE_NOT_FOUND);
44 err = SHDeleteKey(HKEY_CURRENT_USER, kHKLMReplacement); 44 err = SHDeleteKey(HKEY_CURRENT_USER, kHKLMReplacement);
45 EXPECT_TRUE(err == ERROR_SUCCESS || err == ERROR_FILE_NOT_FOUND); 45 EXPECT_TRUE(err == ERROR_SUCCESS || err == ERROR_FILE_NOT_FOUND);
46 46
47 // Create the keys we're redirecting HKCU and HKLM to. 47 // Create the keys we're redirecting HKCU and HKLM to.
48 ASSERT_TRUE(hkcu_.Create(HKEY_CURRENT_USER, kHKCUReplacement, KEY_READ)); 48 ASSERT_EQ(ERROR_SUCCESS,
49 ASSERT_TRUE(hklm_.Create(HKEY_CURRENT_USER, kHKLMReplacement, KEY_READ)); 49 hkcu_.Create(HKEY_CURRENT_USER, kHKCUReplacement, KEY_READ));
50 ASSERT_EQ(ERROR_SUCCESS,
51 hklm_.Create(HKEY_CURRENT_USER, kHKLMReplacement, KEY_READ));
50 52
51 // And do the switcharoo. 53 // And do the switcharoo.
52 ASSERT_EQ(ERROR_SUCCESS, 54 ASSERT_EQ(ERROR_SUCCESS,
53 ::RegOverridePredefKey(HKEY_CURRENT_USER, hkcu_.Handle())); 55 ::RegOverridePredefKey(HKEY_CURRENT_USER, hkcu_.Handle()));
54 ASSERT_EQ(ERROR_SUCCESS, 56 ASSERT_EQ(ERROR_SUCCESS,
55 ::RegOverridePredefKey(HKEY_LOCAL_MACHINE, hklm_.Handle())); 57 ::RegOverridePredefKey(HKEY_LOCAL_MACHINE, hklm_.Handle()));
56 } 58 }
57 59
58 virtual void TearDown() { 60 virtual void TearDown() {
59 // Undo the redirection. 61 // Undo the redirection.
(...skipping 12 matching lines...) Expand all
72 USER_INSTALL, 74 USER_INSTALL,
73 }; 75 };
74 76
75 void SetApField(SystemUserInstall is_system, const wchar_t* value) { 77 void SetApField(SystemUserInstall is_system, const wchar_t* value) {
76 HKEY root = is_system == SYSTEM_INSTALL ? 78 HKEY root = is_system == SYSTEM_INSTALL ?
77 HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER; 79 HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER;
78 80
79 RegKey update_key; 81 RegKey update_key;
80 BrowserDistribution* dist = BrowserDistribution::GetDistribution(); 82 BrowserDistribution* dist = BrowserDistribution::GetDistribution();
81 std::wstring path = dist->GetStateKey(); 83 std::wstring path = dist->GetStateKey();
82 ASSERT_TRUE(update_key.Create(root, path.c_str(), KEY_WRITE)); 84 ASSERT_EQ(ERROR_SUCCESS, update_key.Create(root, path.c_str(), KEY_WRITE));
83 ASSERT_TRUE(update_key.WriteValue(L"ap", value)); 85 ASSERT_EQ(ERROR_SUCCESS, update_key.WriteValue(L"ap", value));
84 } 86 }
85 87
86 // Tests setting the ap= value to various combinations of values with 88 // Tests setting the ap= value to various combinations of values with
87 // prefixes and suffixes, while asserting on the correct channel value. 89 // prefixes and suffixes, while asserting on the correct channel value.
88 // Note that any non-empty ap= value that doesn't match ".*-{dev|beta}.*" 90 // Note that any non-empty ap= value that doesn't match ".*-{dev|beta}.*"
89 // will return the "unknown" channel. 91 // will return the "unknown" channel.
90 void TestCurrentChromeChannelWithVariousApValues(SystemUserInstall install) { 92 void TestCurrentChromeChannelWithVariousApValues(SystemUserInstall install) {
91 static struct Expectations { 93 static struct Expectations {
92 const wchar_t* ap_value; 94 const wchar_t* ap_value;
93 const wchar_t* channel; 95 const wchar_t* channel;
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 reg_key.append(L"\\"); 156 reg_key.append(L"\\");
155 reg_key.append(kTestProductGuid); 157 reg_key.append(kTestProductGuid);
156 return reg_key; 158 return reg_key;
157 } 159 }
158 160
159 // Utility method to read "ap" key value 161 // Utility method to read "ap" key value
160 std::wstring ReadApKeyValue() { 162 std::wstring ReadApKeyValue() {
161 RegKey key; 163 RegKey key;
162 std::wstring ap_key_value; 164 std::wstring ap_key_value;
163 std::wstring reg_key = GetApKeyPath(); 165 std::wstring reg_key = GetApKeyPath();
164 if (key.Open(HKEY_CURRENT_USER, reg_key.c_str(), KEY_ALL_ACCESS) && 166 LONG result = key.Open(HKEY_CURRENT_USER, reg_key.c_str(), KEY_ALL_ACCESS);
165 key.ReadValue(google_update::kRegApField, &ap_key_value)) { 167 if (result == ERROR_SUCCESS) {
166 return ap_key_value; 168 key.ReadValue(google_update::kRegApField, &ap_key_value);
167 } 169 }
168 return std::wstring(); 170
171 return ap_key_value;
169 } 172 }
170 173
171 RegKey hkcu_; 174 RegKey hkcu_;
172 RegKey hklm_; 175 RegKey hklm_;
173 }; 176 };
174 177
175 } // namespace 178 } // namespace
176 179
177 // Verify that we return failure on no registration, 180 // Verify that we return failure on no registration,
178 // whether per-system or per-user install. 181 // whether per-system or per-user install.
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 EXPECT_STREQ(ReadApKeyValue().c_str(), L""); 367 EXPECT_STREQ(ReadApKeyValue().c_str(), L"");
365 work_item_list->Rollback(); 368 work_item_list->Rollback();
366 369
367 work_item_list.reset(WorkItem::CreateWorkItemList()); 370 work_item_list.reset(WorkItem::CreateWorkItemList());
368 // Test the case of when "ap" key doesnt exist at all 371 // Test the case of when "ap" key doesnt exist at all
369 std::wstring ap_key_value = ReadApKeyValue(); 372 std::wstring ap_key_value = ReadApKeyValue();
370 std::wstring reg_key = GetApKeyPath(); 373 std::wstring reg_key = GetApKeyPath();
371 HKEY reg_root = HKEY_CURRENT_USER; 374 HKEY reg_root = HKEY_CURRENT_USER;
372 bool ap_key_deleted = false; 375 bool ap_key_deleted = false;
373 RegKey key; 376 RegKey key;
374 if (!key.Open(HKEY_CURRENT_USER, reg_key.c_str(), KEY_ALL_ACCESS)) { 377 LONG result = key.Open(HKEY_CURRENT_USER, reg_key.c_str(), KEY_ALL_ACCESS);
378 if (result != ERROR_SUCCESS) {
375 work_item_list->AddCreateRegKeyWorkItem(reg_root, reg_key); 379 work_item_list->AddCreateRegKeyWorkItem(reg_root, reg_key);
376 ASSERT_TRUE(work_item_list->Do()) << "Failed to create ClientState key."; 380 ASSERT_TRUE(work_item_list->Do()) << "Failed to create ClientState key.";
377 } else if (key.DeleteValue(google_update::kRegApField)) { 381 } else if (key.DeleteValue(google_update::kRegApField) == ERROR_SUCCESS) {
378 ap_key_deleted = true; 382 ap_key_deleted = true;
379 } 383 }
380 // try differential installer 384 // try differential installer
381 GoogleUpdateSettings::UpdateDiffInstallStatus(false, true, 385 GoogleUpdateSettings::UpdateDiffInstallStatus(false, true,
382 installer::INSTALL_FAILED, 386 installer::INSTALL_FAILED,
383 kTestProductGuid); 387 kTestProductGuid);
384 EXPECT_STREQ(ReadApKeyValue().c_str(), L"-full"); 388 EXPECT_STREQ(ReadApKeyValue().c_str(), L"-full");
385 // try full installer now 389 // try full installer now
386 GoogleUpdateSettings::UpdateDiffInstallStatus(false, false, 390 GoogleUpdateSettings::UpdateDiffInstallStatus(false, false,
387 installer::INSTALL_FAILED, 391 installer::INSTALL_FAILED,
(...skipping 27 matching lines...) Expand all
415 scoped_refptr<installer::Package> package( 419 scoped_refptr<installer::Package> package(
416 new installer::Package(multi_install, system_level, FilePath(), 420 new installer::Package(multi_install, system_level, FilePath(),
417 &properties)); 421 &properties));
418 scoped_refptr<installer::Product> product( 422 scoped_refptr<installer::Product> product(
419 new installer::Product(distribution, package.get())); 423 new installer::Product(distribution, package.get()));
420 RegKey key; 424 RegKey key;
421 DWORD value; 425 DWORD value;
422 426
423 // By default, eulaconsent ends up on the package. 427 // By default, eulaconsent ends up on the package.
424 EXPECT_TRUE(GoogleUpdateSettings::SetEULAConsent(*package.get(), true)); 428 EXPECT_TRUE(GoogleUpdateSettings::SetEULAConsent(*package.get(), true));
425 EXPECT_TRUE(key.Open(HKEY_LOCAL_MACHINE, 429 EXPECT_EQ(ERROR_SUCCESS,
426 properties.GetStateMediumKey().c_str(), 430 key.Open(HKEY_LOCAL_MACHINE, properties.GetStateMediumKey().c_str(),
427 KEY_QUERY_VALUE | KEY_SET_VALUE)); 431 KEY_QUERY_VALUE | KEY_SET_VALUE));
428 EXPECT_TRUE(key.ReadValueDW(google_update::kRegEULAAceptedField, &value)); 432 EXPECT_EQ(ERROR_SUCCESS,
433 key.ReadValueDW(google_update::kRegEULAAceptedField, &value));
429 EXPECT_EQ(1U, value); 434 EXPECT_EQ(1U, value);
430 EXPECT_TRUE(key.DeleteValue(google_update::kRegEULAAceptedField)); 435 EXPECT_EQ(ERROR_SUCCESS,
436 key.DeleteValue(google_update::kRegEULAAceptedField));
431 437
432 // But it will end up on the product if needed 438 // But it will end up on the product if needed
433 EXPECT_TRUE(key.Create(HKEY_LOCAL_MACHINE, 439 EXPECT_EQ(ERROR_SUCCESS,
434 distribution->GetStateKey().c_str(), KEY_SET_VALUE)); 440 key.Create(HKEY_LOCAL_MACHINE, distribution->GetStateKey().c_str(),
435 EXPECT_TRUE(key.WriteValue(google_update::kRegEULAAceptedField, 441 KEY_SET_VALUE));
436 static_cast<DWORD>(0))); 442 EXPECT_EQ(ERROR_SUCCESS,
443 key.WriteValue(google_update::kRegEULAAceptedField,
444 static_cast<DWORD>(0)));
437 EXPECT_TRUE(GoogleUpdateSettings::SetEULAConsent(*package.get(), true)); 445 EXPECT_TRUE(GoogleUpdateSettings::SetEULAConsent(*package.get(), true));
438 EXPECT_TRUE(key.Open(HKEY_LOCAL_MACHINE, 446 EXPECT_EQ(ERROR_SUCCESS,
439 distribution->GetStateMediumKey().c_str(), 447 key.Open(HKEY_LOCAL_MACHINE, distribution->GetStateMediumKey().c_str(),
440 KEY_QUERY_VALUE | KEY_SET_VALUE)); 448 KEY_QUERY_VALUE | KEY_SET_VALUE));
441 EXPECT_TRUE(key.ReadValueDW(google_update::kRegEULAAceptedField, &value)); 449 EXPECT_EQ(ERROR_SUCCESS,
450 key.ReadValueDW(google_update::kRegEULAAceptedField, &value));
442 EXPECT_EQ(1U, value); 451 EXPECT_EQ(1U, value);
443 } 452 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698