diff options
author | anantha@chromium.org <anantha@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-16 21:48:06 +0000 |
---|---|---|
committer | anantha@chromium.org <anantha@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-16 21:48:06 +0000 |
commit | 37fb80e867af78527ff13cf9da83685eaf87b9bb (patch) | |
tree | 6002548be7d833dfbd5d8fb2ae9468e8cab0d28d /chrome/test | |
parent | 1eb1f3b07f2fb81c472e036b171b619a1d9cedce (diff) | |
download | chromium_src-37fb80e867af78527ff13cf9da83685eaf87b9bb.zip chromium_src-37fb80e867af78527ff13cf9da83685eaf87b9bb.tar.gz chromium_src-37fb80e867af78527ff13cf9da83685eaf87b9bb.tar.bz2 |
Added few methods and a testcase to test Chrome Frame installation.
Review URL: http://codereview.chromium.org/389015
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32095 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/test')
8 files changed, 258 insertions, 91 deletions
diff --git a/chrome/test/mini_installer_test/chrome_mini_installer.cc b/chrome/test/mini_installer_test/chrome_mini_installer.cc index 26dacd4..f6bac58 100644 --- a/chrome/test/mini_installer_test/chrome_mini_installer.cc +++ b/chrome/test/mini_installer_test/chrome_mini_installer.cc @@ -17,8 +17,9 @@ #include "testing/gtest/include/gtest/gtest.h" // Constructor. -ChromeMiniInstaller::ChromeMiniInstaller(const std::wstring& install_type) { - install_type_ = install_type; +ChromeMiniInstaller::ChromeMiniInstaller(const std::wstring& install_type, + bool is_chrome_frame) : is_chrome_frame_(is_chrome_frame), + install_type_(install_type) { installer_name_ = StringPrintf(L"%ls (%ls)", mini_installer_constants::kChromeBuildType, install_type_.c_str()); @@ -39,18 +40,25 @@ void ChromeMiniInstaller::SetBuildUnderTest(const std::wstring& build) { else build_prefix = build.c_str(); + std::wstring full_installer_pattern; + if (is_chrome_frame_) + full_installer_pattern = + mini_installer_constants::kChromeFrameFullInstallerPattern; + else + full_installer_pattern = mini_installer_constants::kFullInstallerPattern; + // Do not fail here if cannot find the installer. Set the bool and allow // to fail in the particular test. has_full_installer_ = MiniInstallerTestUtil::GetInstaller( - mini_installer_constants::kFullInstallerPattern, - &full_installer_, build_prefix); + full_installer_pattern.c_str(), + &full_installer_, build_prefix, is_chrome_frame_); has_diff_installer_ = MiniInstallerTestUtil::GetInstaller( mini_installer_constants::kDiffInstallerPattern, - &diff_installer_, build_prefix); + &diff_installer_, build_prefix, is_chrome_frame_); if (has_diff_installer_) { has_prev_installer_ = MiniInstallerTestUtil::GetPreviousFullInstaller( - diff_installer_, &prev_installer_); + diff_installer_, &prev_installer_, is_chrome_frame_); } // Find the version names. The folder two-levels up from the installer @@ -133,13 +141,7 @@ void ChromeMiniInstaller::InstallMiniInstaller(bool over_install, LaunchInstaller(path, exe_name.c_str()); BrowserDistribution* dist = BrowserDistribution::GetDistribution(); ASSERT_TRUE(CheckRegistryKey(dist->GetVersionKey())); - printf("\nInstall Checks:\n\n"); - if ((install_type_ == mini_installer_constants::kUserInstall) && - (!over_install)) - CloseFirstRunUIDialog(over_install); - PlatformThread::Sleep(800); - FindChromeShortcut(); - LaunchAndCloseChrome(over_install); + VerifyInstall(over_install); } // This method tests the standalone installer by verifying the steps listed at: @@ -233,41 +235,49 @@ void ChromeMiniInstaller::Repair( // Deletes App dir. // Closes feedback form. void ChromeMiniInstaller::UnInstall() { - printf("\n\nVerifying if Chrome is installed...\n\n"); + std::wstring product_name; + if (is_chrome_frame_) + product_name = mini_installer_constants::kChromeFrameProductName; + else + product_name = mini_installer_constants::kChromeProductName; BrowserDistribution* dist = BrowserDistribution::GetDistribution(); if (!CheckRegistryKey(dist->GetVersionKey())) { - printf("Chrome is not installed.\n"); + printf("%ls is not installed.\n", product_name.c_str()); return; } - printf("\n\nUninstalling Chrome...\n"); - printf("Closing Chrome processes, if any...\n"); + if (is_chrome_frame_) + MiniInstallerTestUtil::CloseProcesses(L"IEXPLORE.EXE"); MiniInstallerTestUtil::CloseProcesses(installer_util::kChromeExe); std::wstring uninstall_path = GetUninstallPath(); if (uninstall_path == L"") { - printf("\n Chrome install is in a weird state. Cleaning the machine...\n"); + printf("\n %ls install is in a weird state. Cleaning the machine...\n", + product_name.c_str()); CleanChromeInstall(); return; } ASSERT_TRUE(file_util::PathExists(FilePath::FromWStringHack(uninstall_path))); - std::wstring uninstall_args = L"\"" + uninstall_path + - L"\"" + L" --uninstall --force-uninstall"; + std::wstring uninstall_args(L"\""); + uninstall_args.append(uninstall_path); + uninstall_args.append(L"\" --uninstall --force-uninstall"); + if (is_chrome_frame_) + uninstall_args.append(L" --chrome-frame"); if (install_type_ == mini_installer_constants::kSystemInstall) uninstall_args = uninstall_args + L" --system-level"; base::LaunchApp(uninstall_args, false, false, NULL); - printf("Launched setup.exe. Here are the commands passed: %ls\n", - uninstall_args.c_str()); - // ASSERT_TRUE(CloseUninstallWindow()); + if (is_chrome_frame_) + ASSERT_TRUE(CloseUninstallWindow()); ASSERT_TRUE(MiniInstallerTestUtil::VerifyProcessClose( mini_installer_constants::kChromeSetupExecutable)); - printf("\n\nUninstall Checks:\n\n"); ASSERT_FALSE(CheckRegistryKeyOnUninstall(dist->GetVersionKey())); - printf("Deleting user data folder after uninstall\n"); DeleteUserDataFolder(); - FindChromeShortcut(); - MiniInstallerTestUtil::CloseProcesses( - mini_installer_constants::kIEExecutable); - ASSERT_EQ(0, - base::GetProcessCount(mini_installer_constants::kIEExecutable, NULL)); + // Close IE survey window that gets launched on uninstall. + if (!is_chrome_frame_) { + FindChromeShortcut(); + MiniInstallerTestUtil::CloseProcesses( + mini_installer_constants::kIEExecutable); + ASSERT_EQ(0, + base::GetProcessCount(mini_installer_constants::kIEExecutable, NULL)); + } } // Will clean up the machine if Chrome install is messed up. @@ -279,9 +289,13 @@ void ChromeMiniInstaller::CleanChromeInstall() { bool ChromeMiniInstaller::CloseUninstallWindow() { HWND hndl = NULL; int timer = 0; + std::wstring window_name; + if (is_chrome_frame_) + window_name = mini_installer_constants::kChromeFrameAppName; + else + window_name = mini_installer_constants::kChromeUninstallDialogName; while (hndl == NULL && timer < 5000) { - hndl = FindWindow(NULL, - mini_installer_constants::kChromeUninstallDialogName); + hndl = FindWindow(NULL, window_name.c_str()); PlatformThread::Sleep(200); timer = timer + 200; } @@ -389,17 +403,27 @@ void ChromeMiniInstaller::DeleteFolder(const wchar_t* folder_name) { // Will delete user data profile. void ChromeMiniInstaller::DeleteUserDataFolder() { + std::wstring path = GetUserDataDirPath(); + if (file_util::PathExists(FilePath::FromWStringHack(path.c_str()))) + ASSERT_TRUE(file_util::Delete(path.c_str(), true)); +} + +// Gets user data directory path +std::wstring ChromeMiniInstaller::GetUserDataDirPath() { FilePath path; PathService::Get(base::DIR_LOCAL_APP_DATA, &path); std::wstring profile_path = path.ToWStringHack(); - file_util::AppendToPath(&profile_path, - mini_installer_constants::kChromeAppDir); + if (is_chrome_frame_) { + file_util::AppendToPath(&profile_path, + mini_installer_constants::kChromeFrameAppDir); + } else { + file_util::AppendToPath(&profile_path, + mini_installer_constants::kChromeAppDir); + } file_util::UpOneDirectory(&profile_path); file_util::AppendToPath(&profile_path, mini_installer_constants::kChromeUserDataDir); - printf("\nDeleting this path after uninstall%ls\n", profile_path.c_str()); - if (file_util::PathExists(FilePath::FromWStringHack(profile_path))) - ASSERT_TRUE(file_util::Delete(profile_path.c_str(), true)); + return profile_path; } // Deletes pv key from Clients. @@ -468,7 +492,11 @@ std::wstring ChromeMiniInstaller::GetUninstallPath() { if (!GetChromeVersionFromRegistry(®_key_value)) return L""; path = GetChromeInstallDirectoryLocation(); - file_util::AppendToPath(&path, mini_installer_constants::kChromeAppDir); + if (is_chrome_frame_) + file_util::AppendToPath(&path, + mini_installer_constants::kChromeFrameAppDir); + else + file_util::AppendToPath(&path, mini_installer_constants::kChromeAppDir); file_util::AppendToPath(&path, reg_key_value); file_util::AppendToPath(&path, installer_util::kInstallerDir); file_util::AppendToPath(&path, @@ -484,7 +512,7 @@ std::wstring ChromeMiniInstaller::GetUninstallPath() { // Returns Chrome pv registry key value bool ChromeMiniInstaller::GetChromeVersionFromRegistry( - std::wstring* build_key_value ) { + std::wstring* build_key_value) { BrowserDistribution* dist = BrowserDistribution::GetDistribution(); RegKey key(GetRootRegistryKey(), dist->GetVersionKey().c_str()); if (!key.ReadValue(L"pv", build_key_value)) { @@ -508,7 +536,13 @@ void ChromeMiniInstaller::LaunchInstaller(const std::wstring& path, const wchar_t* process_name) { ASSERT_TRUE(file_util::PathExists(FilePath::FromWStringHack(path))); if (install_type_ == mini_installer_constants::kSystemInstall) { - std::wstring launch_args = L" -system-level"; + std::wstring launch_args; + if (is_chrome_frame_) { + launch_args.append(L" --do-not-create-shortcuts"); + launch_args.append(L" --do-not-register-for-update-launch"); + launch_args.append(L" --chrome-frame"); + } + launch_args.append(L" --system-level"); base::LaunchApp(L"\"" + path + L"\"" + launch_args, false, false, NULL); } else { base::LaunchApp(L"\"" + path + L"\"", false, false, NULL); @@ -541,10 +575,60 @@ void ChromeMiniInstaller::LaunchAndCloseChrome(bool over_install) { void ChromeMiniInstaller::VerifyChromeLaunch(bool expected_status) { std::wstring launch_path; GetChromeLaunchPath(&launch_path); - base::LaunchApp(L"\"" + launch_path + L"\"", false, false, NULL); + LaunchBrowser(launch_path, L"", installer_util::kChromeExe, expected_status); +} + +// Verifies Chrome/Chrome Frame install. +void ChromeMiniInstaller::VerifyInstall(bool over_install) { + if (is_chrome_frame_) { + VerifyChromeFrameInstall(); + } else { + if ((install_type_ == mini_installer_constants::kUserInstall) && + (!over_install)) + CloseFirstRunUIDialog(over_install); + PlatformThread::Sleep(800); + FindChromeShortcut(); + LaunchAndCloseChrome(over_install); + } +} + +// This method will verify if ChromeFrame installed successfully. It will +// launch IE with cf:about:version, then check if +// chrome.exe process got spawned. +void ChromeMiniInstaller::VerifyChromeFrameInstall() { + std::wstring browser_path = GetChromeInstallDirectoryLocation(); + if (is_chrome_frame_) { + file_util::AppendToPath(&browser_path, + mini_installer_constants::kIELocation); + file_util::AppendToPath(&browser_path, + mini_installer_constants::kIEProcessName); + } + + // Launch IE + LaunchBrowser(browser_path, L"cf:about:version", + mini_installer_constants::kIEProcessName, + true); + + // Check if Chrome process got spawned. + MiniInstallerTestUtil::VerifyProcessLaunch(installer_util::kChromeExe, true); + PlatformThread::Sleep(1500); + + // Verify if IExplore folder got created + std::wstring path = GetUserDataDirPath(); + file_util::AppendToPath(&path, L"IEXPLORE"); + ASSERT_TRUE(file_util::PathExists(FilePath::FromWStringHack(path.c_str()))); +} + +// This method will launch any requested browser. +void ChromeMiniInstaller::LaunchBrowser(const std::wstring& launch_path, + const std::wstring& launch_args, + const std::wstring& process_name, + bool expected_status) { + base::LaunchApp(L"\"" + launch_path + L"\"" + L" " + launch_args, + false, false, NULL); PlatformThread::Sleep(1000); - MiniInstallerTestUtil::VerifyProcessLaunch( - installer_util::kChromeExe, expected_status); + MiniInstallerTestUtil::VerifyProcessLaunch(process_name.c_str(), + expected_status); } // This method compares the registry keys after overinstall. diff --git a/chrome/test/mini_installer_test/chrome_mini_installer.h b/chrome/test/mini_installer_test/chrome_mini_installer.h index 0a0c956..a5c1a9c 100644 --- a/chrome/test/mini_installer_test/chrome_mini_installer.h +++ b/chrome/test/mini_installer_test/chrome_mini_installer.h @@ -14,7 +14,8 @@ // This class has methods to install and uninstall Chrome mini installer. class ChromeMiniInstaller { public: - explicit ChromeMiniInstaller(const std::wstring& install_type); + explicit ChromeMiniInstaller(const std::wstring& install_type, + bool is_chrome_frame); ~ChromeMiniInstaller() {} @@ -65,6 +66,8 @@ class ChromeMiniInstaller { bool standalone_installer; + bool is_chrome_frame_; + // Name of the browser (Chrome or Chromium) and install type (sys or user) std::wstring installer_name_; @@ -121,12 +124,22 @@ class ChromeMiniInstaller { // Get path for uninstall. std::wstring GetUninstallPath(); + // Get user data directory path. + std::wstring GetUserDataDirPath(); + // Gets the path to launch Chrome. bool GetChromeLaunchPath(std::wstring* launch_path); // This method will get Chrome.exe path and launch it. void VerifyChromeLaunch(bool expected_status); + // This method verifies if Chrome/Chrome Frame installed correctly. + void VerifyInstall(bool over_install); + + // This method will verify if ChromeFrame got successfully installed + // on the machine. + void VerifyChromeFrameInstall(); + // Launches the chrome installer and waits for it to end. void LaunchInstaller(const std::wstring& install_path, const wchar_t* process_name); @@ -134,6 +147,12 @@ class ChromeMiniInstaller { // Verifies if Chrome launches after install. void LaunchAndCloseChrome(bool over_install); + // Launches any requested browser. + void LaunchBrowser(const std::wstring& launch_path, + const std::wstring& launch_arg, + const std::wstring& process_name, + bool expected_status); + // Compares the registry key values after overinstall. bool VerifyOverInstall(const std::wstring& reg_key_value_before_overinstall, const std::wstring& reg_key_value_after_overinstall); diff --git a/chrome/test/mini_installer_test/mini_installer_test_constants.cc b/chrome/test/mini_installer_test/mini_installer_test_constants.cc index c26b990..ed4a289 100644 --- a/chrome/test/mini_installer_test/mini_installer_test_constants.cc +++ b/chrome/test/mini_installer_test/mini_installer_test_constants.cc @@ -23,19 +23,24 @@ const wchar_t kChromeUninstallDialogName[] = L"Uninstall Chromium"; #endif const wchar_t kBrowserAppName[] = L"Google - Google Chrome"; const wchar_t kBrowserTabName[] = L"New Tab - Google Chrome"; +const wchar_t kChromeFrameAppDir[] = L"Google\\Chrome Frame\\Application\\"; +const wchar_t kChromeFrameAppName[] = L"Google Chrome Frame"; +const wchar_t kChromeFrameFullInstallerPattern[] = L"_chromeframe_installer"; +const wchar_t kChromeFrameProductName[] = L"Chrome Frame"; const wchar_t kChromeMiniInstallerExecutable[] = L"mini_installer.exe"; const wchar_t kChromeMetaInstallerExecutable[] = L"chrome_installer.exe"; +const wchar_t kChromeProductName[] = L"Chrome"; const wchar_t kChromeSetupExecutable[] = L"setup.exe"; -const wchar_t kChromeUserDataDir[] = L"User Data"; const wchar_t kChromeUserDataBackupDir[] = L"User Data Copy"; +const wchar_t kChromeUserDataDir[] = L"User Data"; const wchar_t kDiffInstall[] = L"Diff"; const wchar_t kDiffInstallerPattern[] = L"_from_"; const wchar_t kFullInstallerPattern[] = L"_chrome_installer"; const wchar_t kGoogleUpdateExecutable[] = L"GoogleUpdate.exe"; const wchar_t kIEExecutable[] = L"iexplore.exe"; const wchar_t kInstallerWindow[] = L"Chrome Installer"; -const wchar_t kSystemInstall[] = L"system"; const wchar_t kStandaloneInstaller[] = L"ChromeSetupTest.exe"; +const wchar_t kSystemInstall[] = L"system"; const wchar_t kUserInstall[] = L"user"; const wchar_t kUntaggedInstallerPattern[] = L"ChromeStandaloneSetup_"; @@ -45,6 +50,8 @@ const wchar_t kStableChannelBuild[] = L"2.0."; const wchar_t kFullInstall[] = L"Full"; +const wchar_t kIELocation[] = L"Internet Explorer\\"; +const wchar_t kIEProcessName[] = L"IEXPLORE.EXE"; // Google Chrome meta installer location. const wchar_t kChromeMetaInstallerExe[] = diff --git a/chrome/test/mini_installer_test/mini_installer_test_constants.h b/chrome/test/mini_installer_test/mini_installer_test_constants.h index 3cab711..87f7df1 100644 --- a/chrome/test/mini_installer_test/mini_installer_test_constants.h +++ b/chrome/test/mini_installer_test/mini_installer_test_constants.h @@ -11,16 +11,20 @@ namespace mini_installer_constants { // Path and process names extern const wchar_t kChromeAppDir[]; -extern const wchar_t kChromeSetupExecutable[]; -extern const wchar_t kChromeMiniInstallerExecutable[]; +extern const wchar_t kChromeFrameAppDir[]; +extern const wchar_t kChromeFrameFullInstallerPattern[]; +extern const wchar_t kChromeFrameProductName[]; extern const wchar_t kChromeMetaInstallerExecutable[]; -extern const wchar_t kGoogleUpdateExecutable[]; -extern const wchar_t kChromeUserDataDir[]; +extern const wchar_t kChromeMiniInstallerExecutable[]; +extern const wchar_t kChromeProductName[]; +extern const wchar_t kChromeSetupExecutable[]; extern const wchar_t kChromeUserDataBackupDir[]; +extern const wchar_t kChromeUserDataDir[]; extern const wchar_t kDiffInstall[]; extern const wchar_t kDiffInstallerPattern[]; -extern const wchar_t kFullInstallerPattern[]; extern const wchar_t kFullInstall[]; +extern const wchar_t kFullInstallerPattern[]; +extern const wchar_t kGoogleUpdateExecutable[]; extern const wchar_t kIEExecutable[]; extern const wchar_t kSystemInstall[]; extern const wchar_t kUserInstall[]; @@ -29,6 +33,7 @@ extern const wchar_t kUserInstall[]; extern const wchar_t kBrowserAppName[]; extern const wchar_t kBrowserTabName[]; extern const wchar_t kChromeBuildType[]; +extern const wchar_t kChromeFrameAppName[]; extern const wchar_t kChromeFirstRunUI[]; extern const wchar_t kChromeUninstallDialogName[]; extern const wchar_t kInstallerWindow[]; @@ -45,6 +50,9 @@ extern const wchar_t kUntaggedInstallerPattern[]; extern const wchar_t kDevChannelBuild[]; extern const wchar_t kStableChannelBuild[]; +extern const wchar_t kIELocation[]; +extern const wchar_t kIEProcessName[]; + // Google Chrome meta installer location. extern const wchar_t kChromeApplyTagExe[]; extern const wchar_t kChromeApplyTagParameters[]; diff --git a/chrome/test/mini_installer_test/mini_installer_test_util.cc b/chrome/test/mini_installer_test/mini_installer_test_util.cc index 922892b..6b78d36 100644 --- a/chrome/test/mini_installer_test/mini_installer_test_util.cc +++ b/chrome/test/mini_installer_test/mini_installer_test_util.cc @@ -96,7 +96,7 @@ std::wstring MiniInstallerTestUtil::GetFilePath(const wchar_t* exe_name) { // builds, sorted on creation time. Then goes through each build folder // until it finds the installer file that matches the pattern argument. bool MiniInstallerTestUtil::GetInstaller(const wchar_t* pattern, - std::wstring *path, const wchar_t* channel_type) { + std::wstring *path, const wchar_t* channel_type, bool chrome_frame) { FileInfoList builds_list; FileInfoList exe_list; std::wstring chrome_diff_installer( @@ -111,7 +111,10 @@ bool MiniInstallerTestUtil::GetInstaller(const wchar_t* pattern, while (builds_list_size != builds_list.rend()) { path->assign(mini_installer_constants::kChromeDiffInstallerLocation); file_util::AppendToPath(path, builds_list_size->name_); - file_util::AppendToPath(path, L"win"); + if (chrome_frame) + file_util::AppendToPath(path, L"win_cf"); + else + file_util::AppendToPath(path, L"win"); std::wstring installer_path(path->c_str()); file_util::AppendToPath(&installer_path, L"*.exe"); if (!GetLatestFile(installer_path.c_str(), pattern, &exe_list)) { @@ -198,7 +201,7 @@ bool MiniInstallerTestUtil::GetPreviousBuildNumber(const std::wstring& path, // build information from the filename, then computes the // path for previous full installer. bool MiniInstallerTestUtil::GetPreviousFullInstaller( - const std::wstring& diff_path, std::wstring *previous) { + const std::wstring& diff_path, std::wstring *previous, bool chrome_frame) { std::wstring build_no; if (!GetPreviousBuildNumber(diff_path, &build_no)) @@ -212,7 +215,10 @@ bool MiniInstallerTestUtil::GetPreviousFullInstaller( // Create the full installer path. FilePath installer = FilePath( mini_installer_constants::kChromeDiffInstallerLocation); - installer = installer.Append(build_no).Append(L"win").Append(name); + if (chrome_frame) + installer = installer.Append(build_no).Append(L"win_cf").Append(name); + else + installer = installer.Append(build_no).Append(L"win").Append(name); previous->assign(installer.value()); return file_util::PathExists(installer); diff --git a/chrome/test/mini_installer_test/mini_installer_test_util.h b/chrome/test/mini_installer_test/mini_installer_test_util.h index dd205ab..f0181d1 100644 --- a/chrome/test/mini_installer_test/mini_installer_test_util.h +++ b/chrome/test/mini_installer_test/mini_installer_test_util.h @@ -52,7 +52,7 @@ class MiniInstallerTestUtil { // installer is full or differential. The 'channel_type' parameter decides if // the build is stable/dev/beta. static bool GetInstaller(const wchar_t* pattern, std::wstring *name, - const wchar_t* channel_type); + const wchar_t* channel_type, bool chrome_frame); // This method will create a command line to run apply tag. static bool GetCommandForTagging(std::wstring *return_command); @@ -77,7 +77,7 @@ class MiniInstallerTestUtil { // parameter decides if the build is stable/dev/beta. The 'diff_file' // parameter will hold the latest diff installer name. static bool GetPreviousFullInstaller(const std::wstring& diff_file, - std::wstring *previous); + std::wstring *previous, bool chrome_frame); // This method will return standalone installer file name. static bool GetStandaloneInstallerFileName(FileInfoList *file_name); diff --git a/chrome/test/mini_installer_test/run_all_unittests.cc b/chrome/test/mini_installer_test/run_all_unittests.cc index e6ef00f..cbcdf78 100644 --- a/chrome/test/mini_installer_test/run_all_unittests.cc +++ b/chrome/test/mini_installer_test/run_all_unittests.cc @@ -5,17 +5,19 @@ #include "base/command_line.h" #include "base/file_util.h" #include "base/test/test_suite.h" +#include "chrome/installer/util/util_constants.h" #include "chrome/test/mini_installer_test/mini_installer_test_constants.h" #include "chrome_mini_installer.h" -void BackUpProfile() { +void BackUpProfile(bool chrome_frame) { if (base::GetProcessCount(L"chrome.exe", NULL) > 0) { printf("Chrome is currently running and cannot backup the profile." "Please close Chrome and run the tests again.\n"); exit(1); } - ChromeMiniInstaller installer(mini_installer_constants::kUserInstall); + ChromeMiniInstaller installer(mini_installer_constants::kUserInstall, + chrome_frame); FilePath path = FilePath::FromWStringHack(installer.GetChromeInstallDirectoryLocation()); path = path.Append(mini_installer_constants::kChromeAppDir).DirName(); @@ -23,7 +25,8 @@ void BackUpProfile() { // Will hold User Data path that needs to be backed-up. path = path.Append(mini_installer_constants::kChromeUserDataDir); // Will hold new backup path to save the profile. - backup_path = path.Append(mini_installer_constants::kChromeUserDataBackupDir); + backup_path = backup_path.Append( + mini_installer_constants::kChromeUserDataBackupDir); // Will check if User Data profile is available. if (file_util::PathExists(path)) { // Will check if User Data is already backed up. @@ -41,11 +44,13 @@ int main(int argc, char** argv) { // with cleaning the system or make a backup before continuing. CommandLine::Init(argc, argv); const CommandLine& command_line = *CommandLine::ForCurrentProcess(); + TestSuite test_suite = TestSuite(argc, argv); if (command_line.HasSwitch("clean")) { printf("Current version of Chrome will be uninstalled " "from all levels before proceeding with tests.\n"); } else if (command_line.HasSwitch("backup")) { - BackUpProfile(); + BackUpProfile(command_line.HasSwitch( + installer_util::switches::kChromeFrame)); } else { printf("This test needs command line arguments.\n"); printf("Usage: %ls -{clean|backup} [-build <version>] [-force] \n", @@ -63,5 +68,5 @@ int main(int argc, char** argv) { return 1; } - return TestSuite(argc, argv).Run(); + return test_suite.Run(); } diff --git a/chrome/test/mini_installer_test/test.cc b/chrome/test/mini_installer_test/test.cc index 2392414..032d9a5 100644 --- a/chrome/test/mini_installer_test/test.cc +++ b/chrome/test/mini_installer_test/test.cc @@ -6,6 +6,7 @@ #include "base/scoped_ptr.h" #include "base/win_util.h" #include "chrome/installer/util/install_util.h" +#include "chrome/installer/util/util_constants.h" #include "chrome/test/mini_installer_test/mini_installer_test_constants.h" #include "chrome/test/mini_installer_test/mini_installer_test_util.h" #include "testing/gtest/include/gtest/gtest.h" @@ -23,15 +24,28 @@ class MiniInstallTest : public testing::Test { // Whether these tests should be run regardless of our running platform. bool force_tests_; + // Decided if ChromeFrame tests should be run. + bool chrome_frame_; + // Installers created in test fixture setup for convenience. scoped_ptr<ChromeMiniInstaller> user_inst_, sys_inst_; public: + static void CleanTheSystem() { - ChromeMiniInstaller userinstall(kUserInstall); - userinstall.UnInstall(); - ChromeMiniInstaller systeminstall(kSystemInstall); - systeminstall.UnInstall(); + const CommandLine* cmd = CommandLine::ForCurrentProcess(); + if (cmd->HasSwitch(installer_util::switches::kChromeFrame)) { + ChromeMiniInstaller systeminstall(kSystemInstall, + cmd->HasSwitch(installer_util::switches::kChromeFrame)); + systeminstall.UnInstall(); + } else { + ChromeMiniInstaller userinstall(kUserInstall, + cmd->HasSwitch(installer_util::switches::kChromeFrame)); + userinstall.UnInstall(); + ChromeMiniInstaller systeminstall(kSystemInstall, + cmd->HasSwitch(installer_util::switches::kChromeFrame)); + systeminstall.UnInstall(); + } } virtual void SetUp() { @@ -40,22 +54,28 @@ class MiniInstallTest : public testing::Test { std::wstring build = cmd->GetSwitchValue(L"build"); if (build.empty()) build = L"latest"; - force_tests_ = cmd->HasSwitch(L"force"); - + chrome_frame_ = cmd->HasSwitch(installer_util::switches::kChromeFrame); if (win_util::GetWinVersion() < win_util::WINVERSION_VISTA || - force_tests_) { + force_tests_) { CleanTheSystem(); // Separate the test output from cleaning output printf("\nBEGIN test----------------------------------------\n"); // Create a few differently configured installers that are used in // the tests, for convenience. - user_inst_.reset(new ChromeMiniInstaller(kUserInstall)); - user_inst_->SetBuildUnderTest(build); - sys_inst_.reset(new ChromeMiniInstaller(kSystemInstall)); - sys_inst_->SetBuildUnderTest(build); - + if (chrome_frame_) { + sys_inst_.reset(new ChromeMiniInstaller(kSystemInstall, + chrome_frame_)); + sys_inst_->SetBuildUnderTest(build); + } else { + user_inst_.reset(new ChromeMiniInstaller(kUserInstall, + chrome_frame_)); + user_inst_->SetBuildUnderTest(build); + sys_inst_.reset(new ChromeMiniInstaller(kSystemInstall, + chrome_frame_)); + sys_inst_->SetBuildUnderTest(build); + } } else { printf("These tests don't run on this platform.\n"); exit(0); @@ -74,65 +94,82 @@ class MiniInstallTest : public testing::Test { // these tests will often be run manually, don't want to have obscure test // names. -// Install full installer. -TEST_F(MiniInstallTest, FullInstallerUser) { - user_inst_->InstallFullInstaller(false); -} +// Install full installer at system level. TEST_F(MiniInstallTest, FullInstallerSys) { sys_inst_->InstallFullInstaller(false); } +// Install full installer at user level. +TEST_F(MiniInstallTest, FullInstallerUser) { + if (!chrome_frame_) + user_inst_->InstallFullInstaller(false); +} // Overinstall full installer. TEST_F(MiniInstallTest, FullOverPreviousFullUser) { - user_inst_->OverInstallOnFullInstaller(kFullInstall); + if (!chrome_frame_) + user_inst_->OverInstallOnFullInstaller(kFullInstall); } TEST_F(MiniInstallTest, FullOverPreviousFullSys) { - sys_inst_->OverInstallOnFullInstaller(kFullInstall); + if (!chrome_frame_) + sys_inst_->OverInstallOnFullInstaller(kFullInstall); } // Overinstall diff installer. TEST_F(MiniInstallTest, DiffOverPreviousFullUser) { - user_inst_->OverInstallOnFullInstaller(kDiffInstall); + if (!chrome_frame_) + user_inst_->OverInstallOnFullInstaller(kDiffInstall); } + TEST_F(MiniInstallTest, DiffOverPreviousFullSys) { - sys_inst_->OverInstallOnFullInstaller(kDiffInstall); + if (!chrome_frame_) + sys_inst_->OverInstallOnFullInstaller(kDiffInstall); } // Repair version folder. TEST_F(MiniInstallTest, RepairFolderOnFullUser) { - user_inst_->Repair(ChromeMiniInstaller::VERSION_FOLDER); + if (!chrome_frame_) + user_inst_->Repair(ChromeMiniInstaller::VERSION_FOLDER); } + TEST_F(MiniInstallTest, RepairFolderOnFullSys) { - sys_inst_->Repair(ChromeMiniInstaller::VERSION_FOLDER); + if (!chrome_frame_) + sys_inst_->Repair(ChromeMiniInstaller::VERSION_FOLDER); } // Repair registry. TEST_F(MiniInstallTest, RepairRegistryOnFullUser) { - user_inst_->Repair(ChromeMiniInstaller::REGISTRY); + if (!chrome_frame_) + user_inst_->Repair(ChromeMiniInstaller::REGISTRY); } TEST_F(MiniInstallTest, RepairRegistryOnFullSys) { - sys_inst_->Repair(ChromeMiniInstaller::REGISTRY); + if (!chrome_frame_) + sys_inst_->Repair(ChromeMiniInstaller::REGISTRY); } // Install standalone. TEST_F(MiniInstallTest, InstallStandaloneUser) { - user_inst_->InstallStandaloneInstaller(); + if (!chrome_frame_) + user_inst_->InstallStandaloneInstaller(); } // This test doesn't make sense. Disabling for now. TEST_F(MiniInstallTest, DISABLED_MiniInstallerOverChromeMetaInstallerTest) { - user_inst_->OverInstall(); + if (!chrome_frame_) + user_inst_->OverInstall(); } // Encountering issue 9593. Disabling temporarily. TEST_F(MiniInstallTest, DISABLED_InstallLatestStableFullInstallerOverChromeMetaInstaller) { - user_inst_->OverInstall(); + if (!chrome_frame_) + user_inst_->OverInstall(); } + // Encountering issue 9593. Disabling temporarily. TEST_F(MiniInstallTest, DISABLED_InstallLatestDevFullInstallerOverChromeMetaInstallerTest) { - user_inst_->OverInstall(); + if (!chrome_frame_) + user_inst_->OverInstall(); } #endif @@ -141,7 +178,8 @@ TEST_F(MiniInstallTest, InstallMiniInstallerSys) { } TEST_F(MiniInstallTest, InstallMiniInstallerUser) { - user_inst_->Install(); + if (!chrome_frame_) + user_inst_->Install(); } TEST_F(MiniInstallTest, MiniInstallTestValidWindowsVersion) { |