OLD | NEW |
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 <functional> | 8 #include <functional> |
9 #include <map> | 9 #include <map> |
10 | 10 |
11 #include "base/ref_counted.h" | 11 #include "base/ref_counted.h" |
12 #include "base/scoped_ptr.h" | 12 #include "base/scoped_ptr.h" |
13 #include "base/win/registry.h" | 13 #include "base/win/registry.h" |
14 #include "chrome/installer/util/browser_distribution.h" | 14 #include "chrome/installer/util/browser_distribution.h" |
15 #include "chrome/installer/util/channel_info.h" | 15 #include "chrome/installer/util/channel_info.h" |
16 #include "chrome/installer/util/google_update_constants.h" | 16 #include "chrome/installer/util/google_update_constants.h" |
17 #include "chrome/installer/util/google_update_settings.h" | 17 #include "chrome/installer/util/google_update_settings.h" |
| 18 #include "chrome/installer/util/installation_state.h" |
| 19 #include "chrome/installer/util/installer_state.h" |
18 #include "chrome/installer/util/master_preferences.h" | 20 #include "chrome/installer/util/master_preferences.h" |
19 #include "chrome/installer/util/package.h" | |
20 #include "chrome/installer/util/package_properties.h" | |
21 #include "chrome/installer/util/product.h" | 21 #include "chrome/installer/util/product.h" |
22 #include "chrome/installer/util/work_item_list.h" | 22 #include "chrome/installer/util/work_item_list.h" |
23 #include "testing/gtest/include/gtest/gtest.h" | 23 #include "testing/gtest/include/gtest/gtest.h" |
24 | 24 |
25 using base::win::RegKey; | 25 using base::win::RegKey; |
26 using installer::ChannelInfo; | 26 using installer::ChannelInfo; |
27 | 27 |
28 namespace { | 28 namespace { |
29 | 29 |
30 const wchar_t kHKCUReplacement[] = | 30 const wchar_t kHKCUReplacement[] = |
(...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
397 key.DeleteValue(google_update::kRegApField); | 397 key.DeleteValue(google_update::kRegApField); |
398 work_item_list->Rollback(); | 398 work_item_list->Rollback(); |
399 if (ap_key_deleted) { | 399 if (ap_key_deleted) { |
400 work_item_list.reset(WorkItem::CreateWorkItemList()); | 400 work_item_list.reset(WorkItem::CreateWorkItemList()); |
401 ASSERT_TRUE(CreateApKey(work_item_list.get(), ap_key_value)) | 401 ASSERT_TRUE(CreateApKey(work_item_list.get(), ap_key_value)) |
402 << "Failed to restore ap key."; | 402 << "Failed to restore ap key."; |
403 } | 403 } |
404 } | 404 } |
405 | 405 |
406 TEST_F(GoogleUpdateSettingsTest, SetEULAConsent) { | 406 TEST_F(GoogleUpdateSettingsTest, SetEULAConsent) { |
407 const bool multi_install = false; | 407 const bool multi_install = true; |
408 const bool system_level = true; | 408 const bool system_level = true; |
409 HKEY root = system_level ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER; | 409 CommandLine cmd_line = CommandLine::FromString( |
| 410 std::wstring(L"setup.exe") + |
| 411 (multi_install ? L" --multi-install --chrome" : L"") + |
| 412 (system_level ? L" --system-level" : L"")); |
| 413 installer::MasterPreferences prefs(cmd_line); |
| 414 installer::InstallationState machine_state; |
| 415 machine_state.Initialize(); |
| 416 installer::InstallerState installer_state; |
| 417 installer_state.Initialize(cmd_line, prefs, machine_state); |
| 418 HKEY root = installer_state.root_key(); |
410 | 419 |
411 const installer::MasterPreferences& prefs = | |
412 installer::MasterPreferences::ForCurrentProcess(); | |
413 installer::ChromePackageProperties properties; | |
414 BrowserDistribution* distribution = | |
415 BrowserDistribution::GetSpecificDistribution( | |
416 BrowserDistribution::CHROME_BROWSER, prefs); | |
417 scoped_refptr<installer::Package> package( | |
418 new installer::Package(multi_install, system_level, FilePath(), | |
419 &properties)); | |
420 scoped_refptr<installer::Product> product( | |
421 new installer::Product(distribution, package.get())); | |
422 RegKey key; | 420 RegKey key; |
423 DWORD value; | 421 DWORD value; |
| 422 BrowserDistribution* binaries = |
| 423 installer_state.multi_package_binaries_distribution(); |
| 424 EXPECT_EQ(BrowserDistribution::CHROME_BINARIES, binaries->GetType()); |
| 425 BrowserDistribution* chrome = |
| 426 installer_state.products()[0]->distribution(); |
| 427 EXPECT_EQ(BrowserDistribution::CHROME_BROWSER, chrome->GetType()); |
424 | 428 |
425 // By default, eulaconsent ends up on the package. | 429 // By default, eulaconsent ends up on the package. |
426 EXPECT_TRUE(GoogleUpdateSettings::SetEULAConsent(*package.get(), true)); | 430 EXPECT_TRUE(GoogleUpdateSettings::SetEULAConsent(installer_state, true)); |
427 EXPECT_EQ(ERROR_SUCCESS, | 431 EXPECT_EQ(ERROR_SUCCESS, |
428 key.Open(HKEY_LOCAL_MACHINE, properties.GetStateMediumKey().c_str(), | 432 key.Open(HKEY_LOCAL_MACHINE, binaries->GetStateMediumKey().c_str(), |
429 KEY_QUERY_VALUE | KEY_SET_VALUE)); | 433 KEY_QUERY_VALUE | KEY_SET_VALUE)); |
430 EXPECT_EQ(ERROR_SUCCESS, | 434 EXPECT_EQ(ERROR_SUCCESS, |
431 key.ReadValueDW(google_update::kRegEULAAceptedField, &value)); | 435 key.ReadValueDW(google_update::kRegEULAAceptedField, &value)); |
432 EXPECT_EQ(1U, value); | 436 EXPECT_EQ(1U, value); |
433 EXPECT_EQ(ERROR_SUCCESS, | 437 EXPECT_EQ(ERROR_SUCCESS, |
434 key.DeleteValue(google_update::kRegEULAAceptedField)); | 438 key.DeleteValue(google_update::kRegEULAAceptedField)); |
435 | 439 |
436 // But it will end up on the product if needed | 440 // But it will end up on the product if needed |
437 EXPECT_EQ(ERROR_SUCCESS, | 441 EXPECT_EQ(ERROR_SUCCESS, |
438 key.Create(HKEY_LOCAL_MACHINE, distribution->GetStateKey().c_str(), | 442 key.Create(HKEY_LOCAL_MACHINE, chrome->GetStateKey().c_str(), |
439 KEY_SET_VALUE)); | 443 KEY_SET_VALUE)); |
440 EXPECT_EQ(ERROR_SUCCESS, | 444 EXPECT_EQ(ERROR_SUCCESS, |
441 key.WriteValue(google_update::kRegEULAAceptedField, | 445 key.WriteValue(google_update::kRegEULAAceptedField, |
442 static_cast<DWORD>(0))); | 446 static_cast<DWORD>(0))); |
443 EXPECT_TRUE(GoogleUpdateSettings::SetEULAConsent(*package.get(), true)); | 447 EXPECT_TRUE(GoogleUpdateSettings::SetEULAConsent(installer_state, true)); |
444 EXPECT_EQ(ERROR_SUCCESS, | 448 EXPECT_EQ(ERROR_SUCCESS, |
445 key.Open(HKEY_LOCAL_MACHINE, distribution->GetStateMediumKey().c_str(), | 449 key.Open(HKEY_LOCAL_MACHINE, chrome->GetStateMediumKey().c_str(), |
446 KEY_QUERY_VALUE | KEY_SET_VALUE)); | 450 KEY_QUERY_VALUE | KEY_SET_VALUE)); |
447 EXPECT_EQ(ERROR_SUCCESS, | 451 EXPECT_EQ(ERROR_SUCCESS, |
448 key.ReadValueDW(google_update::kRegEULAAceptedField, &value)); | 452 key.ReadValueDW(google_update::kRegEULAAceptedField, &value)); |
449 EXPECT_EQ(1U, value); | 453 EXPECT_EQ(1U, value); |
450 } | 454 } |
OLD | NEW |