| 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 "base/scoped_ptr.h" | 8 #include "base/scoped_ptr.h" |
| 9 #include "base/win/registry.h" | 9 #include "base/win/registry.h" |
| 10 #include "chrome/installer/util/browser_distribution.h" | 10 #include "chrome/installer/util/browser_distribution.h" |
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 206 | 206 |
| 207 TEST_F(GoogleUpdateSettingsTest, CurrentChromeChannelVariousApValuesSystem) { | 207 TEST_F(GoogleUpdateSettingsTest, CurrentChromeChannelVariousApValuesSystem) { |
| 208 TestCurrentChromeChannelWithVariousApValues(SYSTEM_INSTALL); | 208 TestCurrentChromeChannelWithVariousApValues(SYSTEM_INSTALL); |
| 209 } | 209 } |
| 210 | 210 |
| 211 TEST_F(GoogleUpdateSettingsTest, CurrentChromeChannelVariousApValuesUser) { | 211 TEST_F(GoogleUpdateSettingsTest, CurrentChromeChannelVariousApValuesUser) { |
| 212 TestCurrentChromeChannelWithVariousApValues(USER_INSTALL); | 212 TestCurrentChromeChannelWithVariousApValues(USER_INSTALL); |
| 213 } | 213 } |
| 214 | 214 |
| 215 TEST_F(GoogleUpdateSettingsTest, UpdateGoogleUpdateApKey) { | 215 TEST_F(GoogleUpdateSettingsTest, UpdateGoogleUpdateApKey) { |
| 216 installer_util::InstallStatus s = installer_util::FIRST_INSTALL_SUCCESS; | 216 installer::InstallStatus s = installer::FIRST_INSTALL_SUCCESS; |
| 217 installer_util::InstallStatus f = installer_util::INSTALL_FAILED; | 217 installer::InstallStatus f = installer::INSTALL_FAILED; |
| 218 | 218 |
| 219 // Incremental Installer that worked. | 219 // Incremental Installer that worked. |
| 220 installer_util::ChannelInfo v; | 220 installer::ChannelInfo v; |
| 221 v.set_value(L""); | 221 v.set_value(L""); |
| 222 EXPECT_FALSE(GoogleUpdateSettings::UpdateGoogleUpdateApKey(true, s, &v)); | 222 EXPECT_FALSE(GoogleUpdateSettings::UpdateGoogleUpdateApKey(true, s, &v)); |
| 223 EXPECT_EQ(v.value(), L""); | 223 EXPECT_EQ(v.value(), L""); |
| 224 | 224 |
| 225 v.set_value(L"1.1"); | 225 v.set_value(L"1.1"); |
| 226 EXPECT_FALSE(GoogleUpdateSettings::UpdateGoogleUpdateApKey(true, s, &v)); | 226 EXPECT_FALSE(GoogleUpdateSettings::UpdateGoogleUpdateApKey(true, s, &v)); |
| 227 EXPECT_EQ(v.value(), L"1.1"); | 227 EXPECT_EQ(v.value(), L"1.1"); |
| 228 | 228 |
| 229 v.set_value(L"1.1-dev"); | 229 v.set_value(L"1.1-dev"); |
| 230 EXPECT_FALSE(GoogleUpdateSettings::UpdateGoogleUpdateApKey(true, s, &v)); | 230 EXPECT_FALSE(GoogleUpdateSettings::UpdateGoogleUpdateApKey(true, s, &v)); |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 317 EXPECT_TRUE(GoogleUpdateSettings::UpdateGoogleUpdateApKey(false, f, &v)); | 317 EXPECT_TRUE(GoogleUpdateSettings::UpdateGoogleUpdateApKey(false, f, &v)); |
| 318 EXPECT_EQ(v.value(), L"1.1-dev"); | 318 EXPECT_EQ(v.value(), L"1.1-dev"); |
| 319 } | 319 } |
| 320 | 320 |
| 321 TEST_F(GoogleUpdateSettingsTest, UpdateDiffInstallStatusTest) { | 321 TEST_F(GoogleUpdateSettingsTest, UpdateDiffInstallStatusTest) { |
| 322 scoped_ptr<WorkItemList> work_item_list(WorkItem::CreateWorkItemList()); | 322 scoped_ptr<WorkItemList> work_item_list(WorkItem::CreateWorkItemList()); |
| 323 // Test incremental install failure | 323 // Test incremental install failure |
| 324 ASSERT_TRUE(CreateApKey(work_item_list.get(), L"")) | 324 ASSERT_TRUE(CreateApKey(work_item_list.get(), L"")) |
| 325 << "Failed to create ap key."; | 325 << "Failed to create ap key."; |
| 326 GoogleUpdateSettings::UpdateDiffInstallStatus(false, true, | 326 GoogleUpdateSettings::UpdateDiffInstallStatus(false, true, |
| 327 installer_util::INSTALL_FAILED, | 327 installer::INSTALL_FAILED, |
| 328 kTestProductGuid); | 328 kTestProductGuid); |
| 329 EXPECT_STREQ(ReadApKeyValue().c_str(), L"-full"); | 329 EXPECT_STREQ(ReadApKeyValue().c_str(), L"-full"); |
| 330 work_item_list->Rollback(); | 330 work_item_list->Rollback(); |
| 331 | 331 |
| 332 work_item_list.reset(WorkItem::CreateWorkItemList()); | 332 work_item_list.reset(WorkItem::CreateWorkItemList()); |
| 333 // Test incremental install success | 333 // Test incremental install success |
| 334 ASSERT_TRUE(CreateApKey(work_item_list.get(), L"")) | 334 ASSERT_TRUE(CreateApKey(work_item_list.get(), L"")) |
| 335 << "Failed to create ap key."; | 335 << "Failed to create ap key."; |
| 336 GoogleUpdateSettings::UpdateDiffInstallStatus(false, true, | 336 GoogleUpdateSettings::UpdateDiffInstallStatus(false, true, |
| 337 installer_util::FIRST_INSTALL_SUCCESS, | 337 installer::FIRST_INSTALL_SUCCESS, |
| 338 kTestProductGuid); | 338 kTestProductGuid); |
| 339 EXPECT_STREQ(ReadApKeyValue().c_str(), L""); | 339 EXPECT_STREQ(ReadApKeyValue().c_str(), L""); |
| 340 work_item_list->Rollback(); | 340 work_item_list->Rollback(); |
| 341 | 341 |
| 342 work_item_list.reset(WorkItem::CreateWorkItemList()); | 342 work_item_list.reset(WorkItem::CreateWorkItemList()); |
| 343 // Test full install failure | 343 // Test full install failure |
| 344 ASSERT_TRUE(CreateApKey(work_item_list.get(), L"-full")) | 344 ASSERT_TRUE(CreateApKey(work_item_list.get(), L"-full")) |
| 345 << "Failed to create ap key."; | 345 << "Failed to create ap key."; |
| 346 GoogleUpdateSettings::UpdateDiffInstallStatus(false, false, | 346 GoogleUpdateSettings::UpdateDiffInstallStatus(false, false, |
| 347 installer_util::INSTALL_FAILED, | 347 installer::INSTALL_FAILED, |
| 348 kTestProductGuid); | 348 kTestProductGuid); |
| 349 EXPECT_STREQ(ReadApKeyValue().c_str(), L""); | 349 EXPECT_STREQ(ReadApKeyValue().c_str(), L""); |
| 350 work_item_list->Rollback(); | 350 work_item_list->Rollback(); |
| 351 | 351 |
| 352 work_item_list.reset(WorkItem::CreateWorkItemList()); | 352 work_item_list.reset(WorkItem::CreateWorkItemList()); |
| 353 // Test full install success | 353 // Test full install success |
| 354 ASSERT_TRUE(CreateApKey(work_item_list.get(), L"-full")) | 354 ASSERT_TRUE(CreateApKey(work_item_list.get(), L"-full")) |
| 355 << "Failed to create ap key."; | 355 << "Failed to create ap key."; |
| 356 GoogleUpdateSettings::UpdateDiffInstallStatus(false, false, | 356 GoogleUpdateSettings::UpdateDiffInstallStatus(false, false, |
| 357 installer_util::FIRST_INSTALL_SUCCESS, | 357 installer::FIRST_INSTALL_SUCCESS, |
| 358 kTestProductGuid); | 358 kTestProductGuid); |
| 359 EXPECT_STREQ(ReadApKeyValue().c_str(), L""); | 359 EXPECT_STREQ(ReadApKeyValue().c_str(), L""); |
| 360 work_item_list->Rollback(); | 360 work_item_list->Rollback(); |
| 361 | 361 |
| 362 work_item_list.reset(WorkItem::CreateWorkItemList()); | 362 work_item_list.reset(WorkItem::CreateWorkItemList()); |
| 363 // Test the case of when "ap" key doesnt exist at all | 363 // Test the case of when "ap" key doesnt exist at all |
| 364 std::wstring ap_key_value = ReadApKeyValue(); | 364 std::wstring ap_key_value = ReadApKeyValue(); |
| 365 std::wstring reg_key = GetApKeyPath(); | 365 std::wstring reg_key = GetApKeyPath(); |
| 366 HKEY reg_root = HKEY_CURRENT_USER; | 366 HKEY reg_root = HKEY_CURRENT_USER; |
| 367 bool ap_key_deleted = false; | 367 bool ap_key_deleted = false; |
| 368 RegKey key; | 368 RegKey key; |
| 369 if (!key.Open(HKEY_CURRENT_USER, reg_key.c_str(), KEY_ALL_ACCESS)) { | 369 if (!key.Open(HKEY_CURRENT_USER, reg_key.c_str(), KEY_ALL_ACCESS)) { |
| 370 work_item_list->AddCreateRegKeyWorkItem(reg_root, reg_key); | 370 work_item_list->AddCreateRegKeyWorkItem(reg_root, reg_key); |
| 371 ASSERT_TRUE(work_item_list->Do()) << "Failed to create ClientState key."; | 371 ASSERT_TRUE(work_item_list->Do()) << "Failed to create ClientState key."; |
| 372 } else if (key.DeleteValue(google_update::kRegApField)) { | 372 } else if (key.DeleteValue(google_update::kRegApField)) { |
| 373 ap_key_deleted = true; | 373 ap_key_deleted = true; |
| 374 } | 374 } |
| 375 // try differential installer | 375 // try differential installer |
| 376 GoogleUpdateSettings::UpdateDiffInstallStatus(false, true, | 376 GoogleUpdateSettings::UpdateDiffInstallStatus(false, true, |
| 377 installer_util::INSTALL_FAILED, | 377 installer::INSTALL_FAILED, |
| 378 kTestProductGuid); | 378 kTestProductGuid); |
| 379 EXPECT_STREQ(ReadApKeyValue().c_str(), L"-full"); | 379 EXPECT_STREQ(ReadApKeyValue().c_str(), L"-full"); |
| 380 // try full installer now | 380 // try full installer now |
| 381 GoogleUpdateSettings::UpdateDiffInstallStatus(false, false, | 381 GoogleUpdateSettings::UpdateDiffInstallStatus(false, false, |
| 382 installer_util::INSTALL_FAILED, | 382 installer::INSTALL_FAILED, |
| 383 kTestProductGuid); | 383 kTestProductGuid); |
| 384 EXPECT_STREQ(ReadApKeyValue().c_str(), L""); | 384 EXPECT_STREQ(ReadApKeyValue().c_str(), L""); |
| 385 // Now cleanup to leave the system in unchanged state. | 385 // Now cleanup to leave the system in unchanged state. |
| 386 // - Diff installer creates an ap key if it didnt exist, so delete this ap key | 386 // - Diff installer creates an ap key if it didnt exist, so delete this ap key |
| 387 // - If we created any reg key path for ap, roll it back | 387 // - If we created any reg key path for ap, roll it back |
| 388 // - Finally restore the original value of ap key. | 388 // - Finally restore the original value of ap key. |
| 389 key.Open(HKEY_CURRENT_USER, reg_key.c_str(), KEY_ALL_ACCESS); | 389 key.Open(HKEY_CURRENT_USER, reg_key.c_str(), KEY_ALL_ACCESS); |
| 390 key.DeleteValue(google_update::kRegApField); | 390 key.DeleteValue(google_update::kRegApField); |
| 391 work_item_list->Rollback(); | 391 work_item_list->Rollback(); |
| 392 if (ap_key_deleted) { | 392 if (ap_key_deleted) { |
| 393 work_item_list.reset(WorkItem::CreateWorkItemList()); | 393 work_item_list.reset(WorkItem::CreateWorkItemList()); |
| 394 ASSERT_TRUE(CreateApKey(work_item_list.get(), ap_key_value)) | 394 ASSERT_TRUE(CreateApKey(work_item_list.get(), ap_key_value)) |
| 395 << "Failed to restore ap key."; | 395 << "Failed to restore ap key."; |
| 396 } | 396 } |
| 397 } | 397 } |
| OLD | NEW |