| Index: chrome/test/ui/ui_test.cc
|
| diff --git a/chrome/test/ui/ui_test.cc b/chrome/test/ui/ui_test.cc
|
| index 9ef3ae60926029c67512dfb69df5c84e10225104..0fe62e9ec698e356be92bff3d3745904811a4b35 100644
|
| --- a/chrome/test/ui/ui_test.cc
|
| +++ b/chrome/test/ui/ui_test.cc
|
| @@ -61,9 +61,6 @@ using base::Time;
|
| using base::TimeDelta;
|
| using base::TimeTicks;
|
|
|
| -// Passed as value of kTestType.
|
| -static const char kUITestType[] = "ui";
|
| -
|
| const wchar_t UITestBase::kFailedNoCrashService[] =
|
| #if defined(OS_WIN)
|
| L"NOTE: This test is expected to fail if crash_service.exe is not "
|
| @@ -75,17 +72,6 @@ const wchar_t UITestBase::kFailedNoCrashService[] =
|
| #else
|
| L"NOTE: Crash service not ported to this platform!";
|
| #endif
|
| -bool UITestBase::in_process_renderer_ = false;
|
| -bool UITestBase::no_sandbox_ = false;
|
| -bool UITestBase::full_memory_dump_ = false;
|
| -bool UITestBase::safe_plugins_ = false;
|
| -bool UITestBase::show_error_dialogs_ = true;
|
| -bool UITestBase::dump_histograms_on_exit_ = false;
|
| -bool UITestBase::enable_dcheck_ = false;
|
| -bool UITestBase::silent_dump_on_dcheck_ = false;
|
| -bool UITestBase::disable_breakpad_ = false;
|
| -std::string UITestBase::js_flags_ = "";
|
| -std::string UITestBase::log_level_ = "";
|
|
|
| // Uncomment this line to have the spawned process wait for the debugger to
|
| // attach. This only works on Windows. On posix systems, you can set the
|
| @@ -96,7 +82,6 @@ UITestBase::UITestBase()
|
| : launch_arguments_(CommandLine::NO_PROGRAM),
|
| expected_errors_(0),
|
| expected_crashes_(0),
|
| - homepage_(chrome::kAboutBlankURL),
|
| wait_for_initial_loads_(true),
|
| dom_automation_enabled_(false),
|
| process_(base::kNullProcessHandle),
|
| @@ -105,18 +90,17 @@ UITestBase::UITestBase()
|
| clear_profile_(true),
|
| include_testing_id_(true),
|
| enable_file_cookies_(true),
|
| - profile_type_(UITestBase::DEFAULT_THEME),
|
| - shutdown_type_(UITestBase::WINDOW_CLOSE),
|
| - temp_profile_dir_(new ScopedTempDir()) {
|
| + profile_type_(ProxyLauncher::DEFAULT_THEME),
|
| + shutdown_type_(ProxyLauncher::WINDOW_CLOSE) {
|
| PathService::Get(chrome::DIR_APP, &browser_directory_);
|
| PathService::Get(chrome::DIR_TEST_DATA, &test_data_directory_);
|
| + launcher_.reset(CreateProxyLauncher());
|
| }
|
|
|
| UITestBase::UITestBase(MessageLoop::Type msg_loop_type)
|
| : launch_arguments_(CommandLine::NO_PROGRAM),
|
| expected_errors_(0),
|
| expected_crashes_(0),
|
| - homepage_(chrome::kAboutBlankURL),
|
| wait_for_initial_loads_(true),
|
| dom_automation_enabled_(false),
|
| process_(base::kNullProcessHandle),
|
| @@ -125,25 +109,31 @@ UITestBase::UITestBase(MessageLoop::Type msg_loop_type)
|
| clear_profile_(true),
|
| include_testing_id_(true),
|
| enable_file_cookies_(true),
|
| - profile_type_(UITestBase::DEFAULT_THEME),
|
| - shutdown_type_(UITestBase::WINDOW_CLOSE) {
|
| + profile_type_(ProxyLauncher::DEFAULT_THEME),
|
| + shutdown_type_(ProxyLauncher::WINDOW_CLOSE) {
|
| PathService::Get(chrome::DIR_APP, &browser_directory_);
|
| PathService::Get(chrome::DIR_TEST_DATA, &test_data_directory_);
|
| + launcher_.reset(CreateProxyLauncher());
|
| }
|
|
|
| UITestBase::~UITestBase() {
|
| }
|
|
|
| void UITestBase::SetUp() {
|
| - AssertAppNotRunning(L"Please close any other instances "
|
| - L"of the app before testing.");
|
| + launcher_->AssertAppNotRunning(L"Please close any other instances "
|
| + L"of the app before testing.", process_id_);
|
|
|
| JavaScriptExecutionController::set_timeout(
|
| TestTimeouts::action_max_timeout_ms());
|
| test_start_time_ = Time::NowFromSystemTime();
|
|
|
| - launcher_.reset(CreateProxyLauncher());
|
| - launcher_->InitializeConnection(this);
|
| + SetLaunchSwitches();
|
| + launcher_->InitializeConnection(launch_arguments_, include_testing_id_,
|
| + clear_profile_, template_user_data_,
|
| + profile_type_, browser_directory_,
|
| + show_window_, wait_for_initial_loads_,
|
| + &browser_launch_time_, &process_,
|
| + &process_id_);
|
| }
|
|
|
| void UITestBase::TearDown() {
|
| @@ -178,7 +168,7 @@ void UITestBase::TearDown() {
|
|
|
| // TODO(phajdan.jr): get rid of set_command_execution_timeout_ms.
|
| void UITestBase::set_command_execution_timeout_ms(int timeout) {
|
| - automation_proxy_->set_command_execution_timeout_ms(timeout);
|
| + automation()->set_command_execution_timeout_ms(timeout);
|
| VLOG(1) << "Automation command execution timeout set to " << timeout << " ms";
|
| }
|
|
|
| @@ -186,206 +176,60 @@ ProxyLauncher* UITestBase::CreateProxyLauncher() {
|
| return new AnonymousProxyLauncher(false);
|
| }
|
|
|
| +void UITestBase::SetLaunchSwitches() {
|
| + // We need cookies on file:// for things like the page cycler.
|
| + if (enable_file_cookies_)
|
| + launch_arguments_.AppendSwitch(switches::kEnableFileCookies);
|
| + if (dom_automation_enabled_)
|
| + launch_arguments_.AppendSwitch(switches::kDomAutomationController);
|
| +}
|
| +
|
| void UITestBase::LaunchBrowser() {
|
| LaunchBrowser(launch_arguments_, clear_profile_);
|
| }
|
|
|
| void UITestBase::LaunchBrowserAndServer() {
|
| - // Set up IPC testing interface as a server.
|
| - automation_proxy_.reset(launcher_->CreateAutomationProxy(
|
| - TestTimeouts::command_execution_timeout_ms()));
|
| -
|
| - LaunchBrowser(launch_arguments_, clear_profile_);
|
| - WaitForBrowserLaunch();
|
| + launcher_->LaunchBrowserAndServer(launch_arguments_, include_testing_id_,
|
| + clear_profile_, template_user_data_,
|
| + profile_type_, browser_directory_,
|
| + show_window_, wait_for_initial_loads_,
|
| + &browser_launch_time_, &process_,
|
| + &process_id_);
|
| }
|
|
|
| void UITestBase::ConnectToRunningBrowser() {
|
| - // Set up IPC testing interface as a client.
|
| - automation_proxy_.reset(launcher_->CreateAutomationProxy(
|
| - TestTimeouts::command_execution_timeout_ms()));
|
| - WaitForBrowserLaunch();
|
| -}
|
| -
|
| -void UITestBase::WaitForBrowserLaunch() {
|
| - ASSERT_EQ(AUTOMATION_SUCCESS, automation_proxy_->WaitForAppLaunch())
|
| - << "Error while awaiting automation ping from browser process";
|
| - if (wait_for_initial_loads_)
|
| - ASSERT_TRUE(automation_proxy_->WaitForInitialLoads());
|
| - else
|
| - base::PlatformThread::Sleep(sleep_timeout_ms());
|
| -
|
| - EXPECT_TRUE(automation()->SetFilteredInet(ShouldFilterInet()));
|
| + launcher_->ConnectToRunningBrowser(wait_for_initial_loads_);
|
| }
|
|
|
| void UITestBase::CloseBrowserAndServer() {
|
| - QuitBrowser();
|
| - CleanupAppProcesses();
|
| -
|
| - // Suppress spammy failures that seem to be occurring when running
|
| - // the UI tests in single-process mode.
|
| - // TODO(jhughes): figure out why this is necessary at all, and fix it
|
| - if (!in_process_renderer_)
|
| - AssertAppNotRunning(StringPrintf(
|
| - L"Unable to quit all browser processes. Original PID %d", process_id_));
|
| -
|
| - automation_proxy_.reset(); // Shut down IPC testing interface.
|
| + launcher_->CloseBrowserAndServer(shutdown_type_, &browser_quit_time_,
|
| + &process_, &process_id_);
|
| }
|
|
|
| void UITestBase::LaunchBrowser(const CommandLine& arguments,
|
| bool clear_profile) {
|
| - if (clear_profile || !temp_profile_dir_->IsValid()) {
|
| - temp_profile_dir_.reset(new ScopedTempDir());
|
| - ASSERT_TRUE(temp_profile_dir_->CreateUniqueTempDir());
|
| -
|
| - ASSERT_TRUE(
|
| - test_launcher_utils::OverrideUserDataDir(temp_profile_dir_->path()));
|
| - }
|
| -
|
| - if (!template_user_data_.empty()) {
|
| - // Recursively copy the template directory to the user_data_dir.
|
| - ASSERT_TRUE(file_util::CopyRecursiveDirNoCache(
|
| - template_user_data_,
|
| - user_data_dir()));
|
| - // If we're using the complex theme data, we need to write the
|
| - // user_data_dir_ to our preferences file.
|
| - if (profile_type_ == UITestBase::COMPLEX_THEME) {
|
| - RewritePreferencesFile(user_data_dir());
|
| - }
|
| -
|
| - // Update the history file to include recent dates.
|
| - UpdateHistoryDates();
|
| - }
|
| -
|
| - ASSERT_TRUE(LaunchBrowserHelper(arguments, false, &process_));
|
| - process_id_ = base::GetProcId(process_);
|
| + launcher_->LaunchBrowser(arguments, include_testing_id_, clear_profile,
|
| + template_user_data_, profile_type_,
|
| + browser_directory_, show_window_,
|
| + &browser_launch_time_, &process_, &process_id_);
|
| }
|
|
|
| #if !defined(OS_MACOSX)
|
| bool UITestBase::LaunchAnotherBrowserBlockUntilClosed(
|
| const CommandLine& cmdline) {
|
| - return LaunchBrowserHelper(cmdline, true, NULL);
|
| + return launcher_->LaunchAnotherBrowserBlockUntilClosed(
|
| + cmdline, include_testing_id_, browser_directory_,
|
| + show_window_, &browser_launch_time_);
|
| }
|
| #endif
|
|
|
| void UITestBase::QuitBrowser() {
|
| - if (SESSION_ENDING == shutdown_type_) {
|
| - TerminateBrowser();
|
| - return;
|
| - }
|
| -
|
| - // There's nothing to do here if the browser is not running.
|
| - // WARNING: There is a race condition here where the browser may shut down
|
| - // after this check but before some later automation call. Your test should
|
| - // use WaitForBrowserProcessToQuit() if it intentionally
|
| - // causes the browser to shut down.
|
| - if (IsBrowserRunning()) {
|
| - TimeTicks quit_start = TimeTicks::Now();
|
| - EXPECT_TRUE(automation()->SetFilteredInet(false));
|
| -
|
| - if (WINDOW_CLOSE == shutdown_type_) {
|
| - int window_count = 0;
|
| - EXPECT_TRUE(automation()->GetBrowserWindowCount(&window_count));
|
| -
|
| - // Synchronously close all but the last browser window. Closing them
|
| - // one-by-one may help with stability.
|
| - while (window_count > 1) {
|
| - scoped_refptr<BrowserProxy> browser_proxy =
|
| - automation()->GetBrowserWindow(0);
|
| - EXPECT_TRUE(browser_proxy.get());
|
| - if (browser_proxy.get()) {
|
| - EXPECT_TRUE(browser_proxy->RunCommand(IDC_CLOSE_WINDOW));
|
| - EXPECT_TRUE(automation()->GetBrowserWindowCount(&window_count));
|
| - } else {
|
| - break;
|
| - }
|
| - }
|
| -
|
| - // Close the last window asynchronously, because the browser may
|
| - // shutdown faster than it will be able to send a synchronous response
|
| - // to our message.
|
| - scoped_refptr<BrowserProxy> browser_proxy =
|
| - automation()->GetBrowserWindow(0);
|
| - EXPECT_TRUE(browser_proxy.get());
|
| - if (browser_proxy.get()) {
|
| - EXPECT_TRUE(browser_proxy->ApplyAccelerator(IDC_CLOSE_WINDOW));
|
| - browser_proxy = NULL;
|
| - }
|
| - } else if (USER_QUIT == shutdown_type_) {
|
| - scoped_refptr<BrowserProxy> browser_proxy =
|
| - automation()->GetBrowserWindow(0);
|
| - EXPECT_TRUE(browser_proxy.get());
|
| - if (browser_proxy.get()) {
|
| - EXPECT_TRUE(browser_proxy->RunCommandAsync(IDC_EXIT));
|
| - }
|
| - } else {
|
| - NOTREACHED() << "Invalid shutdown type " << shutdown_type_;
|
| - }
|
| -
|
| - // Now, drop the automation IPC channel so that the automation provider in
|
| - // the browser notices and drops its reference to the browser process.
|
| - automation()->Disconnect();
|
| -
|
| - // Wait for the browser process to quit. It should quit once all tabs have
|
| - // been closed.
|
| - if (!WaitForBrowserProcessToQuit()) {
|
| - // We need to force the browser to quit because it didn't quit fast
|
| - // enough. Take no chance and kill every chrome processes.
|
| - CleanupAppProcesses();
|
| - }
|
| - browser_quit_time_ = TimeTicks::Now() - quit_start;
|
| - }
|
| -
|
| - // Don't forget to close the handle
|
| - base::CloseProcessHandle(process_);
|
| - process_ = base::kNullProcessHandle;
|
| - process_id_ = -1;
|
| + launcher_->QuitBrowser(shutdown_type_, &browser_quit_time_,
|
| + &process_, &process_id_);
|
| }
|
|
|
| void UITestBase::TerminateBrowser() {
|
| - if (IsBrowserRunning()) {
|
| - TimeTicks quit_start = TimeTicks::Now();
|
| - EXPECT_TRUE(automation()->SetFilteredInet(false));
|
| -#if defined(OS_WIN)
|
| - scoped_refptr<BrowserProxy> browser(automation()->GetBrowserWindow(0));
|
| - ASSERT_TRUE(browser.get());
|
| - ASSERT_TRUE(browser->TerminateSession());
|
| -#endif // defined(OS_WIN)
|
| -
|
| - // Now, drop the automation IPC channel so that the automation provider in
|
| - // the browser notices and drops its reference to the browser process.
|
| - automation()->Disconnect();
|
| -
|
| -#if defined(OS_POSIX)
|
| - EXPECT_EQ(kill(process_, SIGTERM), 0);
|
| -#endif // OS_POSIX
|
| -
|
| - if (!WaitForBrowserProcessToQuit()) {
|
| - // We need to force the browser to quit because it didn't quit fast
|
| - // enough. Take no chance and kill every chrome processes.
|
| - CleanupAppProcesses();
|
| - }
|
| - browser_quit_time_ = TimeTicks::Now() - quit_start;
|
| - }
|
| -
|
| - // Don't forget to close the handle
|
| - base::CloseProcessHandle(process_);
|
| - process_ = base::kNullProcessHandle;
|
| - process_id_ = -1;
|
| -}
|
| -
|
| -void UITestBase::AssertAppNotRunning(const std::wstring& error_message) {
|
| - std::wstring final_error_message(error_message);
|
| -
|
| - ChromeProcessList processes = GetRunningChromeProcesses(process_id_);
|
| - if (!processes.empty()) {
|
| - final_error_message += L" Leftover PIDs: [";
|
| - for (ChromeProcessList::const_iterator it = processes.begin();
|
| - it != processes.end(); ++it) {
|
| - final_error_message += StringPrintf(L" %d", *it);
|
| - }
|
| - final_error_message += L" ]";
|
| - }
|
| - ASSERT_TRUE(processes.empty()) << final_error_message;
|
| + launcher_->TerminateBrowser(&browser_quit_time_, &process_, &process_id_);
|
| }
|
|
|
| void UITestBase::CleanupAppProcesses() {
|
| @@ -465,12 +309,7 @@ void UITestBase::NavigateToURLBlockUntilNavigationsComplete(
|
| }
|
|
|
| bool UITestBase::WaitForBrowserProcessToQuit() {
|
| - // Wait for the browser process to quit.
|
| - int timeout = TestTimeouts::wait_for_terminate_timeout_ms();
|
| -#ifdef WAIT_FOR_DEBUGGER_ON_OPEN
|
| - timeout = 500000;
|
| -#endif
|
| - return base::WaitForSingleProcess(process_, timeout);
|
| + return launcher_->WaitForBrowserProcessToQuit(process_);
|
| }
|
|
|
| bool UITestBase::WaitForBookmarkBarVisibilityChange(BrowserProxy* browser,
|
| @@ -533,11 +372,11 @@ int UITestBase::GetActiveTabIndex(int window_index) {
|
| }
|
|
|
| bool UITestBase::IsBrowserRunning() {
|
| - return CrashAwareSleep(0);
|
| + return launcher_->IsBrowserRunning(process_);
|
| }
|
|
|
| -bool UITestBase::CrashAwareSleep(int time_out_ms) {
|
| - return base::CrashAwareSleep(process_, time_out_ms);
|
| +bool UITestBase::CrashAwareSleep(int timeout_ms) {
|
| + return launcher_->CrashAwareSleep(process_, timeout_ms);
|
| }
|
|
|
| int UITestBase::GetTabCount() {
|
| @@ -585,7 +424,7 @@ FilePath UITestBase::GetDownloadDirectory() {
|
| }
|
|
|
| void UITestBase::CloseBrowserAsync(BrowserProxy* browser) const {
|
| - ASSERT_TRUE(automation_proxy_->Send(
|
| + ASSERT_TRUE(automation()->Send(
|
| new AutomationMsg_CloseBrowserRequestAsync(browser->handle())));
|
| }
|
|
|
| @@ -597,7 +436,7 @@ bool UITestBase::CloseBrowser(BrowserProxy* browser,
|
|
|
| bool result = true;
|
|
|
| - bool succeeded = automation_proxy_->Send(new AutomationMsg_CloseBrowser(
|
| + bool succeeded = automation()->Send(new AutomationMsg_CloseBrowser(
|
| browser->handle(), &result, application_closed));
|
|
|
| if (!succeeded)
|
| @@ -613,63 +452,26 @@ bool UITestBase::CloseBrowser(BrowserProxy* browser,
|
| }
|
|
|
| // static
|
| -void UITestBase::RewritePreferencesFile(const FilePath& user_data_dir) {
|
| - const FilePath pref_template_path(
|
| - user_data_dir.AppendASCII("Default").AppendASCII("PreferencesTemplate"));
|
| - const FilePath pref_path(
|
| - user_data_dir.AppendASCII("Default").AppendASCII("Preferences"));
|
| -
|
| - // Read in preferences template.
|
| - std::string pref_string;
|
| - EXPECT_TRUE(file_util::ReadFileToString(pref_template_path, &pref_string));
|
| - string16 format_string = ASCIIToUTF16(pref_string);
|
| -
|
| - // Make sure temp directory has the proper format for writing to prefs file.
|
| -#if defined(OS_POSIX)
|
| - std::wstring user_data_dir_w(ASCIIToWide(user_data_dir.value()));
|
| -#elif defined(OS_WIN)
|
| - std::wstring user_data_dir_w(user_data_dir.value());
|
| - // In Windows, the FilePath will write '\' for the path separators; change
|
| - // these to a separator that won't trigger escapes.
|
| - std::replace(user_data_dir_w.begin(),
|
| - user_data_dir_w.end(), '\\', '/');
|
| -#endif
|
| -
|
| - // Rewrite prefs file.
|
| - std::vector<string16> subst;
|
| - subst.push_back(WideToUTF16(user_data_dir_w));
|
| - const std::string prefs_string =
|
| - UTF16ToASCII(ReplaceStringPlaceholders(format_string, subst, NULL));
|
| - EXPECT_TRUE(file_util::WriteFile(pref_path, prefs_string.c_str(),
|
| - prefs_string.size()));
|
| - file_util::EvictFileFromSystemCache(pref_path);
|
| -}
|
| -
|
| -FilePath UITestBase::user_data_dir() const {
|
| - EXPECT_TRUE(temp_profile_dir_->IsValid());
|
| - return temp_profile_dir_->path();
|
| -}
|
| -
|
| -// static
|
| -FilePath UITestBase::ComputeTypicalUserDataSource(ProfileType profile_type) {
|
| +FilePath UITestBase::ComputeTypicalUserDataSource(
|
| + ProxyLauncher::ProfileType profile_type) {
|
| FilePath source_history_file;
|
| EXPECT_TRUE(PathService::Get(chrome::DIR_TEST_DATA,
|
| &source_history_file));
|
| source_history_file = source_history_file.AppendASCII("profiles");
|
| switch (profile_type) {
|
| - case UITestBase::DEFAULT_THEME:
|
| + case ProxyLauncher::DEFAULT_THEME:
|
| source_history_file = source_history_file.AppendASCII("typical_history");
|
| break;
|
| - case UITestBase::COMPLEX_THEME:
|
| + case ProxyLauncher::COMPLEX_THEME:
|
| source_history_file = source_history_file.AppendASCII("complex_theme");
|
| break;
|
| - case UITestBase::NATIVE_THEME:
|
| + case ProxyLauncher::NATIVE_THEME:
|
| source_history_file = source_history_file.AppendASCII("gtk_theme");
|
| break;
|
| - case UITestBase::CUSTOM_FRAME:
|
| + case ProxyLauncher::CUSTOM_FRAME:
|
| source_history_file = source_history_file.AppendASCII("custom_frame");
|
| break;
|
| - case UITestBase::CUSTOM_FRAME_NATIVE_THEME:
|
| + case ProxyLauncher::CUSTOM_FRAME_NATIVE_THEME:
|
| source_history_file =
|
| source_history_file.AppendASCII("custom_frame_gtk_theme");
|
| break;
|
| @@ -679,163 +481,6 @@ FilePath UITestBase::ComputeTypicalUserDataSource(ProfileType profile_type) {
|
| return source_history_file;
|
| }
|
|
|
| -void UITestBase::PrepareTestCommandline(CommandLine* command_line) {
|
| - // Propagate commandline settings from test_launcher_utils.
|
| - test_launcher_utils::PrepareBrowserCommandLineForTests(command_line);
|
| -
|
| - // Add any explicit command line flags passed to the process.
|
| - CommandLine::StringType extra_chrome_flags =
|
| - CommandLine::ForCurrentProcess()->GetSwitchValueNative(
|
| - switches::kExtraChromeFlags);
|
| - if (!extra_chrome_flags.empty()) {
|
| - // Split by spaces and append to command line
|
| - std::vector<CommandLine::StringType> flags;
|
| - base::SplitString(extra_chrome_flags, ' ', &flags);
|
| - for (size_t i = 0; i < flags.size(); ++i)
|
| - command_line->AppendArgNative(flags[i]);
|
| - }
|
| -
|
| - // No default browser check, it would create an info-bar (if we are not the
|
| - // default browser) that could conflicts with some tests expectations.
|
| - command_line->AppendSwitch(switches::kNoDefaultBrowserCheck);
|
| -
|
| - // This is a UI test.
|
| - command_line->AppendSwitchASCII(switches::kTestType, kUITestType);
|
| -
|
| - // Tell the browser to use a temporary directory just for this test.
|
| - command_line->AppendSwitchPath(switches::kUserDataDir, user_data_dir());
|
| -
|
| - // We need cookies on file:// for things like the page cycler.
|
| - if (enable_file_cookies_)
|
| - command_line->AppendSwitch(switches::kEnableFileCookies);
|
| -
|
| - if (dom_automation_enabled_)
|
| - command_line->AppendSwitch(switches::kDomAutomationController);
|
| -
|
| - if (include_testing_id_)
|
| - command_line->AppendSwitchASCII(switches::kTestingChannelID,
|
| - launcher_->PrefixedChannelID());
|
| -
|
| - if (!show_error_dialogs_ &&
|
| - !CommandLine::ForCurrentProcess()->HasSwitch(
|
| - switches::kEnableErrorDialogs)) {
|
| - command_line->AppendSwitch(switches::kNoErrorDialogs);
|
| - }
|
| - if (in_process_renderer_)
|
| - command_line->AppendSwitch(switches::kSingleProcess);
|
| - if (no_sandbox_)
|
| - command_line->AppendSwitch(switches::kNoSandbox);
|
| - if (full_memory_dump_)
|
| - command_line->AppendSwitch(switches::kFullMemoryCrashReport);
|
| - if (safe_plugins_)
|
| - command_line->AppendSwitch(switches::kSafePlugins);
|
| - if (enable_dcheck_)
|
| - command_line->AppendSwitch(switches::kEnableDCHECK);
|
| - if (silent_dump_on_dcheck_)
|
| - command_line->AppendSwitch(switches::kSilentDumpOnDCHECK);
|
| - if (disable_breakpad_)
|
| - command_line->AppendSwitch(switches::kDisableBreakpad);
|
| - if (!homepage_.empty())
|
| - command_line->AppendSwitchASCII(switches::kHomePage, homepage_);
|
| -
|
| - if (!js_flags_.empty())
|
| - command_line->AppendSwitchASCII(switches::kJavaScriptFlags, js_flags_);
|
| - if (!log_level_.empty())
|
| - command_line->AppendSwitchASCII(switches::kLoggingLevel, log_level_);
|
| -
|
| - command_line->AppendSwitch(switches::kMetricsRecordingOnly);
|
| -
|
| - if (!CommandLine::ForCurrentProcess()->HasSwitch(
|
| - switches::kEnableErrorDialogs))
|
| - command_line->AppendSwitch(switches::kEnableLogging);
|
| -
|
| - if (dump_histograms_on_exit_)
|
| - command_line->AppendSwitch(switches::kDumpHistogramsOnExit);
|
| -
|
| -#ifdef WAIT_FOR_DEBUGGER_ON_OPEN
|
| - command_line->AppendSwitch(switches::kDebugOnStart);
|
| -#endif
|
| -
|
| - if (!ui_test_name_.empty())
|
| - command_line->AppendSwitchASCII(switches::kTestName, ui_test_name_);
|
| -
|
| - // The tests assume that file:// URIs can freely access other file:// URIs.
|
| - command_line->AppendSwitch(switches::kAllowFileAccessFromFiles);
|
| -
|
| - // Disable TabCloseableStateWatcher for tests.
|
| - command_line->AppendSwitch(switches::kDisableTabCloseableStateWatcher);
|
| -
|
| - // Allow file:// access on ChromeOS.
|
| - command_line->AppendSwitch(switches::kAllowFileAccess);
|
| -}
|
| -
|
| -bool UITestBase::LaunchBrowserHelper(const CommandLine& arguments,
|
| - bool wait,
|
| - base::ProcessHandle* process) {
|
| - FilePath command = browser_directory_.Append(
|
| - chrome::kBrowserProcessExecutablePath);
|
| -
|
| - CommandLine command_line(command);
|
| -
|
| - // Add command line arguments that should be applied to all UI tests.
|
| - PrepareTestCommandline(&command_line);
|
| - DebugFlags::ProcessDebugFlags(
|
| - &command_line, ChildProcessInfo::UNKNOWN_PROCESS, false);
|
| - command_line.AppendArguments(arguments, false);
|
| -
|
| - // TODO(phajdan.jr): Only run it for "main" browser launch.
|
| - browser_launch_time_ = TimeTicks::Now();
|
| -
|
| -#if defined(OS_WIN)
|
| - bool started = base::LaunchApp(command_line,
|
| - wait,
|
| - !show_window_,
|
| - process);
|
| -#elif defined(OS_POSIX)
|
| - // Sometimes one needs to run the browser under a special environment
|
| - // (e.g. valgrind) without also running the test harness (e.g. python)
|
| - // under the special environment. Provide a way to wrap the browser
|
| - // commandline with a special prefix to invoke the special environment.
|
| - const char* browser_wrapper = getenv("BROWSER_WRAPPER");
|
| - if (browser_wrapper) {
|
| - command_line.PrependWrapper(browser_wrapper);
|
| - VLOG(1) << "BROWSER_WRAPPER was set, prefixing command_line with "
|
| - << browser_wrapper;
|
| - }
|
| -
|
| - base::file_handle_mapping_vector fds;
|
| - if (automation_proxy_.get())
|
| - fds = automation_proxy_->fds_to_map();
|
| -
|
| - bool started = base::LaunchApp(command_line.argv(), fds, wait, process);
|
| -#endif
|
| -
|
| - return started;
|
| -}
|
| -
|
| -void UITestBase::UpdateHistoryDates() {
|
| - // Migrate the times in the segment_usage table to yesterday so we get
|
| - // actual thumbnails on the NTP.
|
| - sql::Connection db;
|
| - FilePath history =
|
| - user_data_dir().AppendASCII("Default").AppendASCII("History");
|
| - // Not all test profiles have a history file.
|
| - if (!file_util::PathExists(history))
|
| - return;
|
| -
|
| - ASSERT_TRUE(db.Open(history));
|
| - Time yesterday = Time::Now() - TimeDelta::FromDays(1);
|
| - std::string yesterday_str = base::Int64ToString(yesterday.ToInternalValue());
|
| - std::string query = StringPrintf(
|
| - "UPDATE segment_usage "
|
| - "SET time_slot = %s "
|
| - "WHERE id IN (SELECT id FROM segment_usage WHERE time_slot > 0);",
|
| - yesterday_str.c_str());
|
| - ASSERT_TRUE(db.Execute(query.c_str()));
|
| - db.Close();
|
| - file_util::EvictFileFromSystemCache(history);
|
| -}
|
| -
|
| int UITestBase::GetCrashCount() {
|
| FilePath crash_dump_path;
|
| PathService::Get(chrome::DIR_CRASH_DUMPS, &crash_dump_path);
|
| @@ -862,8 +507,8 @@ void UITest::SetUp() {
|
| const testing::TestInfo* const test_info =
|
| testing::UnitTest::GetInstance()->current_test_info();
|
| if (test_info) {
|
| - set_ui_test_name(test_info->test_case_name() + std::string(".") +
|
| - test_info->name());
|
| + set_test_name(test_info->test_case_name() + std::string(".") +
|
| + test_info->name());
|
| }
|
|
|
| // Force tests to use OSMesa if they launch the GPU process. This is in
|
| @@ -1073,9 +718,9 @@ void UITest::WaitForGeneratedFileAndCheck(
|
| bool UITest::WaitUntilJavaScriptCondition(TabProxy* tab,
|
| const std::wstring& frame_xpath,
|
| const std::wstring& jscript,
|
| - int time_out_ms) {
|
| + int timeout_ms) {
|
| const int kIntervalMs = 250;
|
| - const int kMaxIntervals = time_out_ms / kIntervalMs;
|
| + const int kMaxIntervals = timeout_ms / kIntervalMs;
|
|
|
| // Wait until the test signals it has completed.
|
| for (int i = 0; i < kMaxIntervals; ++i) {
|
| @@ -1101,10 +746,10 @@ bool UITest::WaitUntilJavaScriptCondition(TabProxy* tab,
|
| bool UITest::WaitUntilCookieValue(TabProxy* tab,
|
| const GURL& url,
|
| const char* cookie_name,
|
| - int time_out_ms,
|
| + int timeout_ms,
|
| const char* expected_value) {
|
| const int kIntervalMs = 250;
|
| - const int kMaxIntervals = time_out_ms / kIntervalMs;
|
| + const int kMaxIntervals = timeout_ms / kIntervalMs;
|
|
|
| std::string cookie_value;
|
| for (int i = 0; i < kMaxIntervals; ++i) {
|
| @@ -1125,9 +770,9 @@ bool UITest::WaitUntilCookieValue(TabProxy* tab,
|
| std::string UITest::WaitUntilCookieNonEmpty(TabProxy* tab,
|
| const GURL& url,
|
| const char* cookie_name,
|
| - int time_out_ms) {
|
| + int timeout_ms) {
|
| const int kIntervalMs = 250;
|
| - const int kMaxIntervals = time_out_ms / kIntervalMs;
|
| + const int kMaxIntervals = timeout_ms / kIntervalMs;
|
|
|
| for (int i = 0; i < kMaxIntervals; ++i) {
|
| bool browser_survived = CrashAwareSleep(kIntervalMs);
|
|
|