| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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/test/mini_installer_test/chrome_mini_installer.h" | 5 #include "chrome/test/mini_installer_test/chrome_mini_installer.h" |
| 6 | 6 |
| 7 #include "base/file_util.h" | 7 #include "base/file_util.h" |
| 8 #include "base/path_service.h" | 8 #include "base/path_service.h" |
| 9 #include "base/platform_thread.h" | 9 #include "base/platform_thread.h" |
| 10 #include "base/process_util.h" | 10 #include "base/process_util.h" |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 105 InstallMiniInstaller(over_install, full_installer_file_name); | 105 InstallMiniInstaller(over_install, full_installer_file_name); |
| 106 } | 106 } |
| 107 | 107 |
| 108 // Installs the Chrome mini-installer, checks the registry and shortcuts. | 108 // Installs the Chrome mini-installer, checks the registry and shortcuts. |
| 109 void ChromeMiniInstaller::InstallMiniInstaller(bool over_install, | 109 void ChromeMiniInstaller::InstallMiniInstaller(bool over_install, |
| 110 const std::wstring& path) { | 110 const std::wstring& path) { |
| 111 std::wstring exe_name = file_util::GetFilenameFromPath(path); | 111 std::wstring exe_name = file_util::GetFilenameFromPath(path); |
| 112 printf("\nChrome will be installed at %ls level\n", install_type_.c_str()); | 112 printf("\nChrome will be installed at %ls level\n", install_type_.c_str()); |
| 113 printf("\nWill proceed with the test only if this path exists: %ls\n\n", | 113 printf("\nWill proceed with the test only if this path exists: %ls\n\n", |
| 114 path.c_str()); | 114 path.c_str()); |
| 115 ASSERT_TRUE(file_util::PathExists(FilePath::FromWStringHack(path))); | 115 ASSERT_TRUE(file_util::PathExists(path)); |
| 116 LaunchInstaller(path, exe_name.c_str()); | 116 LaunchInstaller(path, exe_name.c_str()); |
| 117 BrowserDistribution* dist = BrowserDistribution::GetDistribution(); | 117 BrowserDistribution* dist = BrowserDistribution::GetDistribution(); |
| 118 ASSERT_TRUE(CheckRegistryKey(dist->GetVersionKey())); | 118 ASSERT_TRUE(CheckRegistryKey(dist->GetVersionKey())); |
| 119 printf("\nInstall Checks:\n\n"); | 119 printf("\nInstall Checks:\n\n"); |
| 120 if ((install_type_ == mini_installer_constants::kUserInstall) && | 120 if ((install_type_ == mini_installer_constants::kUserInstall) && |
| 121 (!over_install)) | 121 (!over_install)) |
| 122 CloseFirstRunUIDialog(over_install); | 122 CloseFirstRunUIDialog(over_install); |
| 123 PlatformThread::Sleep(800); | 123 PlatformThread::Sleep(800); |
| 124 FindChromeShortcut(); | 124 FindChromeShortcut(); |
| 125 LaunchAndCloseChrome(over_install); | 125 LaunchAndCloseChrome(over_install); |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 223 } | 223 } |
| 224 printf("\n\nUninstalling Chrome...\n"); | 224 printf("\n\nUninstalling Chrome...\n"); |
| 225 printf("Closing Chrome processes, if any...\n"); | 225 printf("Closing Chrome processes, if any...\n"); |
| 226 MiniInstallerTestUtil::CloseProcesses(installer_util::kChromeExe); | 226 MiniInstallerTestUtil::CloseProcesses(installer_util::kChromeExe); |
| 227 std::wstring uninstall_path = GetUninstallPath(); | 227 std::wstring uninstall_path = GetUninstallPath(); |
| 228 if (uninstall_path == L"") { | 228 if (uninstall_path == L"") { |
| 229 printf("\n Chrome install is in a weird state. Cleaning the machine...\n"); | 229 printf("\n Chrome install is in a weird state. Cleaning the machine...\n"); |
| 230 CleanChromeInstall(); | 230 CleanChromeInstall(); |
| 231 return; | 231 return; |
| 232 } | 232 } |
| 233 ASSERT_TRUE(file_util::PathExists(FilePath::FromWStringHack(uninstall_path))); | 233 ASSERT_TRUE(file_util::PathExists(uninstall_path)); |
| 234 std::wstring uninstall_args = L"\"" + uninstall_path + | 234 std::wstring uninstall_args = L"\"" + uninstall_path + |
| 235 L"\"" + L" --uninstall --force-uninstall"; | 235 L"\"" + L" --uninstall --force-uninstall"; |
| 236 if (install_type_ == mini_installer_constants::kSystemInstall) | 236 if (install_type_ == mini_installer_constants::kSystemInstall) |
| 237 uninstall_args = uninstall_args + L" --system-level"; | 237 uninstall_args = uninstall_args + L" --system-level"; |
| 238 base::LaunchApp(uninstall_args, false, false, NULL); | 238 base::LaunchApp(uninstall_args, false, false, NULL); |
| 239 printf("Launched setup.exe. Here are the commands passed: %ls\n", | 239 printf("Launched setup.exe. Here are the commands passed: %ls\n", |
| 240 uninstall_args.c_str()); | 240 uninstall_args.c_str()); |
| 241 // ASSERT_TRUE(CloseUninstallWindow()); | 241 // ASSERT_TRUE(CloseUninstallWindow()); |
| 242 ASSERT_TRUE(MiniInstallerTestUtil::VerifyProcessClose( | 242 ASSERT_TRUE(MiniInstallerTestUtil::VerifyProcessClose( |
| 243 mini_installer_constants::kChromeSetupExecutable)); | 243 mini_installer_constants::kChromeSetupExecutable)); |
| (...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 396 printf("Deleted %ls key\n", pv_key.c_str()); | 396 printf("Deleted %ls key\n", pv_key.c_str()); |
| 397 } | 397 } |
| 398 | 398 |
| 399 // Verifies if Chrome shortcut exists. | 399 // Verifies if Chrome shortcut exists. |
| 400 void ChromeMiniInstaller::FindChromeShortcut() { | 400 void ChromeMiniInstaller::FindChromeShortcut() { |
| 401 std::wstring username, path, append_path, uninstall_lnk, shortcut_path; | 401 std::wstring username, path, append_path, uninstall_lnk, shortcut_path; |
| 402 bool return_val = false; | 402 bool return_val = false; |
| 403 path = GetStartMenuShortcutPath(); | 403 path = GetStartMenuShortcutPath(); |
| 404 file_util::AppendToPath(&path, mini_installer_constants::kChromeBuildType); | 404 file_util::AppendToPath(&path, mini_installer_constants::kChromeBuildType); |
| 405 // Verify if path exists. | 405 // Verify if path exists. |
| 406 if (file_util::PathExists(FilePath::FromWStringHack(path))) { | 406 if (file_util::PathExists(path)) { |
| 407 return_val = true; | 407 return_val = true; |
| 408 uninstall_lnk = path; | 408 uninstall_lnk = path; |
| 409 file_util::AppendToPath(&path, | 409 file_util::AppendToPath(&path, |
| 410 mini_installer_constants::kChromeLaunchShortcut); | 410 mini_installer_constants::kChromeLaunchShortcut); |
| 411 file_util::AppendToPath(&uninstall_lnk, | 411 file_util::AppendToPath(&uninstall_lnk, |
| 412 mini_installer_constants::kChromeUninstallShortcut); | 412 mini_installer_constants::kChromeUninstallShortcut); |
| 413 ASSERT_TRUE(file_util::PathExists(FilePath::FromWStringHack(path))); | 413 ASSERT_TRUE(file_util::PathExists(path)); |
| 414 ASSERT_TRUE(file_util::PathExists( | 414 ASSERT_TRUE(file_util::PathExists(uninstall_lnk)); |
| 415 FilePath::FromWStringHack(uninstall_lnk))); | |
| 416 } | 415 } |
| 417 if (return_val) | 416 if (return_val) |
| 418 printf("Chrome shortcuts found are:\n%ls\n%ls\n\n", | 417 printf("Chrome shortcuts found are:\n%ls\n%ls\n\n", |
| 419 path.c_str(), uninstall_lnk.c_str()); | 418 path.c_str(), uninstall_lnk.c_str()); |
| 420 else | 419 else |
| 421 printf("Chrome shortcuts not found\n\n"); | 420 printf("Chrome shortcuts not found\n\n"); |
| 422 } | 421 } |
| 423 | 422 |
| 424 // This method returns path to either program files | 423 // This method returns path to either program files |
| 425 // or documents and setting based on the install type. | 424 // or documents and setting based on the install type. |
| (...skipping 20 matching lines...) Expand all Loading... |
| 446 std::wstring ChromeMiniInstaller::GetUninstallPath() { | 445 std::wstring ChromeMiniInstaller::GetUninstallPath() { |
| 447 std::wstring username, append_path, path, reg_key_value; | 446 std::wstring username, append_path, path, reg_key_value; |
| 448 if (!GetChromeVersionFromRegistry(®_key_value)) | 447 if (!GetChromeVersionFromRegistry(®_key_value)) |
| 449 return L""; | 448 return L""; |
| 450 path = GetChromeInstallDirectoryLocation(); | 449 path = GetChromeInstallDirectoryLocation(); |
| 451 file_util::AppendToPath(&path, mini_installer_constants::kChromeAppDir); | 450 file_util::AppendToPath(&path, mini_installer_constants::kChromeAppDir); |
| 452 file_util::AppendToPath(&path, reg_key_value); | 451 file_util::AppendToPath(&path, reg_key_value); |
| 453 file_util::AppendToPath(&path, installer_util::kInstallerDir); | 452 file_util::AppendToPath(&path, installer_util::kInstallerDir); |
| 454 file_util::AppendToPath(&path, | 453 file_util::AppendToPath(&path, |
| 455 mini_installer_constants::kChromeSetupExecutable); | 454 mini_installer_constants::kChromeSetupExecutable); |
| 456 if (!file_util::PathExists(FilePath::FromWStringHack(path))) { | 455 if (!file_util::PathExists(path)) { |
| 457 printf("This uninstall path is not correct %ls. Will not proceed further", | 456 printf("This uninstall path is not correct %ls. Will not proceed further", |
| 458 path.c_str()); | 457 path.c_str()); |
| 459 return L""; | 458 return L""; |
| 460 } | 459 } |
| 461 printf("uninstall path is %ls\n", path.c_str()); | 460 printf("uninstall path is %ls\n", path.c_str()); |
| 462 return path; | 461 return path; |
| 463 } | 462 } |
| 464 | 463 |
| 465 // Returns Chrome pv registry key value | 464 // Returns Chrome pv registry key value |
| 466 bool ChromeMiniInstaller::GetChromeVersionFromRegistry( | 465 bool ChromeMiniInstaller::GetChromeVersionFromRegistry( |
| (...skipping 12 matching lines...) Expand all Loading... |
| 479 HKEY ChromeMiniInstaller::GetRootRegistryKey() { | 478 HKEY ChromeMiniInstaller::GetRootRegistryKey() { |
| 480 HKEY type = HKEY_CURRENT_USER; | 479 HKEY type = HKEY_CURRENT_USER; |
| 481 if (install_type_ == mini_installer_constants::kSystemInstall) | 480 if (install_type_ == mini_installer_constants::kSystemInstall) |
| 482 type = HKEY_LOCAL_MACHINE; | 481 type = HKEY_LOCAL_MACHINE; |
| 483 return type; | 482 return type; |
| 484 } | 483 } |
| 485 | 484 |
| 486 // Launches the chrome installer and waits for it to end. | 485 // Launches the chrome installer and waits for it to end. |
| 487 void ChromeMiniInstaller::LaunchInstaller(const std::wstring& path, | 486 void ChromeMiniInstaller::LaunchInstaller(const std::wstring& path, |
| 488 const wchar_t* process_name) { | 487 const wchar_t* process_name) { |
| 489 ASSERT_TRUE(file_util::PathExists(FilePath::FromWStringHack(path))); | 488 ASSERT_TRUE(file_util::PathExists(path)); |
| 490 if (install_type_ == mini_installer_constants::kSystemInstall) { | 489 if (install_type_ == mini_installer_constants::kSystemInstall) { |
| 491 std::wstring launch_args = L" -system-level"; | 490 std::wstring launch_args = L" -system-level"; |
| 492 base::LaunchApp(L"\"" + path + L"\"" + launch_args, false, false, NULL); | 491 base::LaunchApp(L"\"" + path + L"\"" + launch_args, false, false, NULL); |
| 493 } else { | 492 } else { |
| 494 base::LaunchApp(L"\"" + path + L"\"", false, false, NULL); | 493 base::LaunchApp(L"\"" + path + L"\"", false, false, NULL); |
| 495 } | 494 } |
| 496 printf("Waiting while this process is running %ls ....\n", process_name); | 495 printf("Waiting while this process is running %ls ....\n", process_name); |
| 497 MiniInstallerTestUtil::VerifyProcessLaunch(process_name, true); | 496 MiniInstallerTestUtil::VerifyProcessLaunch(process_name, true); |
| 498 ASSERT_TRUE(MiniInstallerTestUtil::VerifyProcessClose(process_name)); | 497 ASSERT_TRUE(MiniInstallerTestUtil::VerifyProcessClose(process_name)); |
| 499 } | 498 } |
| 500 | 499 |
| 501 // Gets the path to launch Chrome. | 500 // Gets the path to launch Chrome. |
| 502 bool ChromeMiniInstaller::GetChromeLaunchPath(std::wstring* launch_path) { | 501 bool ChromeMiniInstaller::GetChromeLaunchPath(std::wstring* launch_path) { |
| 503 std::wstring path; | 502 std::wstring path; |
| 504 path = GetChromeInstallDirectoryLocation(); | 503 path = GetChromeInstallDirectoryLocation(); |
| 505 file_util::AppendToPath(&path, mini_installer_constants::kChromeAppDir); | 504 file_util::AppendToPath(&path, mini_installer_constants::kChromeAppDir); |
| 506 file_util::AppendToPath(&path, installer_util::kChromeExe); | 505 file_util::AppendToPath(&path, installer_util::kChromeExe); |
| 507 launch_path->assign(path); | 506 launch_path->assign(path); |
| 508 return(file_util::PathExists(FilePath::FromWStringHack(path))); | 507 return(file_util::PathExists(path)); |
| 509 } | 508 } |
| 510 | 509 |
| 511 // Launch Chrome to see if it works after overinstall. Then close it. | 510 // Launch Chrome to see if it works after overinstall. Then close it. |
| 512 void ChromeMiniInstaller::LaunchAndCloseChrome(bool over_install) { | 511 void ChromeMiniInstaller::LaunchAndCloseChrome(bool over_install) { |
| 513 VerifyChromeLaunch(true); | 512 VerifyChromeLaunch(true); |
| 514 if ((install_type_ == mini_installer_constants::kSystemInstall) && | 513 if ((install_type_ == mini_installer_constants::kSystemInstall) && |
| 515 (!over_install)) | 514 (!over_install)) |
| 516 CloseFirstRunUIDialog(over_install); | 515 CloseFirstRunUIDialog(over_install); |
| 517 MiniInstallerTestUtil::CloseProcesses(installer_util::kChromeExe); | 516 MiniInstallerTestUtil::CloseProcesses(installer_util::kChromeExe); |
| 518 } | 517 } |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 550 // This method will verify if the installed build is correct. | 549 // This method will verify if the installed build is correct. |
| 551 bool ChromeMiniInstaller::VerifyStandaloneInstall() { | 550 bool ChromeMiniInstaller::VerifyStandaloneInstall() { |
| 552 std::wstring reg_key_value_returned, standalone_installer_version; | 551 std::wstring reg_key_value_returned, standalone_installer_version; |
| 553 MiniInstallerTestUtil::GetStandaloneVersion(&standalone_installer_version); | 552 MiniInstallerTestUtil::GetStandaloneVersion(&standalone_installer_version); |
| 554 GetChromeVersionFromRegistry(®_key_value_returned); | 553 GetChromeVersionFromRegistry(®_key_value_returned); |
| 555 if (standalone_installer_version.compare(reg_key_value_returned) == 0) | 554 if (standalone_installer_version.compare(reg_key_value_returned) == 0) |
| 556 return true; | 555 return true; |
| 557 else | 556 else |
| 558 return false; | 557 return false; |
| 559 } | 558 } |
| OLD | NEW |