| 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(path)); |  115   ASSERT_TRUE(file_util::PathExists(FilePath::FromWStringHack(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(uninstall_path)); |  233   ASSERT_TRUE(file_util::PathExists(FilePath::FromWStringHack(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(path)) { |  406   if (file_util::PathExists(FilePath::FromWStringHack(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(path)); |  413     ASSERT_TRUE(file_util::PathExists(FilePath::FromWStringHack(path))); | 
|  414     ASSERT_TRUE(file_util::PathExists(uninstall_lnk)); |  414     ASSERT_TRUE(file_util::PathExists( | 
 |  415         FilePath::FromWStringHack(uninstall_lnk))); | 
|  415   } |  416   } | 
|  416   if (return_val) |  417   if (return_val) | 
|  417     printf("Chrome shortcuts found are:\n%ls\n%ls\n\n", |  418     printf("Chrome shortcuts found are:\n%ls\n%ls\n\n", | 
|  418            path.c_str(), uninstall_lnk.c_str()); |  419            path.c_str(), uninstall_lnk.c_str()); | 
|  419   else |  420   else | 
|  420     printf("Chrome shortcuts not found\n\n"); |  421     printf("Chrome shortcuts not found\n\n"); | 
|  421 } |  422 } | 
|  422  |  423  | 
|  423 // This method returns path to either program files |  424 // This method returns path to either program files | 
|  424 // or documents and setting based on the install type. |  425 // or documents and setting based on the install type. | 
| (...skipping 20 matching lines...) Expand all  Loading... | 
|  445 std::wstring ChromeMiniInstaller::GetUninstallPath() { |  446 std::wstring ChromeMiniInstaller::GetUninstallPath() { | 
|  446   std::wstring username, append_path, path, reg_key_value; |  447   std::wstring username, append_path, path, reg_key_value; | 
|  447   if (!GetChromeVersionFromRegistry(®_key_value)) |  448   if (!GetChromeVersionFromRegistry(®_key_value)) | 
|  448     return L""; |  449     return L""; | 
|  449   path = GetChromeInstallDirectoryLocation(); |  450   path = GetChromeInstallDirectoryLocation(); | 
|  450   file_util::AppendToPath(&path, mini_installer_constants::kChromeAppDir); |  451   file_util::AppendToPath(&path, mini_installer_constants::kChromeAppDir); | 
|  451   file_util::AppendToPath(&path, reg_key_value); |  452   file_util::AppendToPath(&path, reg_key_value); | 
|  452   file_util::AppendToPath(&path, installer_util::kInstallerDir); |  453   file_util::AppendToPath(&path, installer_util::kInstallerDir); | 
|  453   file_util::AppendToPath(&path, |  454   file_util::AppendToPath(&path, | 
|  454       mini_installer_constants::kChromeSetupExecutable); |  455       mini_installer_constants::kChromeSetupExecutable); | 
|  455   if (!file_util::PathExists(path)) { |  456   if (!file_util::PathExists(FilePath::FromWStringHack(path))) { | 
|  456     printf("This uninstall path is not correct %ls. Will not proceed further", |  457     printf("This uninstall path is not correct %ls. Will not proceed further", | 
|  457            path.c_str()); |  458            path.c_str()); | 
|  458     return L""; |  459     return L""; | 
|  459   } |  460   } | 
|  460   printf("uninstall path is %ls\n", path.c_str()); |  461   printf("uninstall path is %ls\n", path.c_str()); | 
|  461   return path; |  462   return path; | 
|  462 } |  463 } | 
|  463  |  464  | 
|  464 // Returns Chrome pv registry key value |  465 // Returns Chrome pv registry key value | 
|  465 bool ChromeMiniInstaller::GetChromeVersionFromRegistry( |  466 bool ChromeMiniInstaller::GetChromeVersionFromRegistry( | 
| (...skipping 12 matching lines...) Expand all  Loading... | 
|  478 HKEY ChromeMiniInstaller::GetRootRegistryKey() { |  479 HKEY ChromeMiniInstaller::GetRootRegistryKey() { | 
|  479   HKEY type = HKEY_CURRENT_USER; |  480   HKEY type = HKEY_CURRENT_USER; | 
|  480   if (install_type_ == mini_installer_constants::kSystemInstall) |  481   if (install_type_ == mini_installer_constants::kSystemInstall) | 
|  481     type = HKEY_LOCAL_MACHINE; |  482     type = HKEY_LOCAL_MACHINE; | 
|  482   return type; |  483   return type; | 
|  483 } |  484 } | 
|  484  |  485  | 
|  485 // Launches the chrome installer and waits for it to end. |  486 // Launches the chrome installer and waits for it to end. | 
|  486 void ChromeMiniInstaller::LaunchInstaller(const std::wstring& path, |  487 void ChromeMiniInstaller::LaunchInstaller(const std::wstring& path, | 
|  487                                           const wchar_t* process_name) { |  488                                           const wchar_t* process_name) { | 
|  488   ASSERT_TRUE(file_util::PathExists(path)); |  489   ASSERT_TRUE(file_util::PathExists(FilePath::FromWStringHack(path))); | 
|  489   if (install_type_ == mini_installer_constants::kSystemInstall) { |  490   if (install_type_ == mini_installer_constants::kSystemInstall) { | 
|  490     std::wstring launch_args = L" -system-level"; |  491     std::wstring launch_args = L" -system-level"; | 
|  491     base::LaunchApp(L"\"" + path + L"\"" + launch_args, false, false, NULL); |  492     base::LaunchApp(L"\"" + path + L"\"" + launch_args, false, false, NULL); | 
|  492   } else { |  493   } else { | 
|  493     base::LaunchApp(L"\"" + path + L"\"", false, false, NULL); |  494     base::LaunchApp(L"\"" + path + L"\"", false, false, NULL); | 
|  494   } |  495   } | 
|  495   printf("Waiting while this process is running  %ls ....\n", process_name); |  496   printf("Waiting while this process is running  %ls ....\n", process_name); | 
|  496   MiniInstallerTestUtil::VerifyProcessLaunch(process_name, true); |  497   MiniInstallerTestUtil::VerifyProcessLaunch(process_name, true); | 
|  497   ASSERT_TRUE(MiniInstallerTestUtil::VerifyProcessClose(process_name)); |  498   ASSERT_TRUE(MiniInstallerTestUtil::VerifyProcessClose(process_name)); | 
|  498 } |  499 } | 
|  499  |  500  | 
|  500 // Gets the path to launch Chrome. |  501 // Gets the path to launch Chrome. | 
|  501 bool ChromeMiniInstaller::GetChromeLaunchPath(std::wstring* launch_path) { |  502 bool ChromeMiniInstaller::GetChromeLaunchPath(std::wstring* launch_path) { | 
|  502   std::wstring path; |  503   std::wstring path; | 
|  503   path = GetChromeInstallDirectoryLocation(); |  504   path = GetChromeInstallDirectoryLocation(); | 
|  504   file_util::AppendToPath(&path, mini_installer_constants::kChromeAppDir); |  505   file_util::AppendToPath(&path, mini_installer_constants::kChromeAppDir); | 
|  505   file_util::AppendToPath(&path, installer_util::kChromeExe); |  506   file_util::AppendToPath(&path, installer_util::kChromeExe); | 
|  506   launch_path->assign(path); |  507   launch_path->assign(path); | 
|  507   return(file_util::PathExists(path)); |  508   return(file_util::PathExists(FilePath::FromWStringHack(path))); | 
|  508 } |  509 } | 
|  509  |  510  | 
|  510 // Launch Chrome to see if it works after overinstall. Then close it. |  511 // Launch Chrome to see if it works after overinstall. Then close it. | 
|  511 void ChromeMiniInstaller::LaunchAndCloseChrome(bool over_install) { |  512 void ChromeMiniInstaller::LaunchAndCloseChrome(bool over_install) { | 
|  512   VerifyChromeLaunch(true); |  513   VerifyChromeLaunch(true); | 
|  513   if ((install_type_ == mini_installer_constants::kSystemInstall) && |  514   if ((install_type_ == mini_installer_constants::kSystemInstall) && | 
|  514       (!over_install)) |  515       (!over_install)) | 
|  515     CloseFirstRunUIDialog(over_install); |  516     CloseFirstRunUIDialog(over_install); | 
|  516   MiniInstallerTestUtil::CloseProcesses(installer_util::kChromeExe); |  517   MiniInstallerTestUtil::CloseProcesses(installer_util::kChromeExe); | 
|  517 } |  518 } | 
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  549 // This method will verify if the installed build is correct. |  550 // This method will verify if the installed build is correct. | 
|  550 bool ChromeMiniInstaller::VerifyStandaloneInstall() { |  551 bool ChromeMiniInstaller::VerifyStandaloneInstall() { | 
|  551   std::wstring reg_key_value_returned, standalone_installer_version; |  552   std::wstring reg_key_value_returned, standalone_installer_version; | 
|  552   MiniInstallerTestUtil::GetStandaloneVersion(&standalone_installer_version); |  553   MiniInstallerTestUtil::GetStandaloneVersion(&standalone_installer_version); | 
|  553   GetChromeVersionFromRegistry(®_key_value_returned); |  554   GetChromeVersionFromRegistry(®_key_value_returned); | 
|  554   if (standalone_installer_version.compare(reg_key_value_returned) == 0) |  555   if (standalone_installer_version.compare(reg_key_value_returned) == 0) | 
|  555     return true; |  556     return true; | 
|  556   else |  557   else | 
|  557     return false; |  558     return false; | 
|  558 } |  559 } | 
| OLD | NEW |