| Index: chrome/test/ui/ui_test.cc
|
| diff --git a/chrome/test/ui/ui_test.cc b/chrome/test/ui/ui_test.cc
|
| index 06591ecbadae57c526a665cfc548989b8ff84523..597b0afe0ed7d2c202aa5dd48497e385a58b1c4d 100644
|
| --- a/chrome/test/ui/ui_test.cc
|
| +++ b/chrome/test/ui/ui_test.cc
|
| @@ -2,11 +2,11 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| +#include "chrome/test/ui/ui_test.h"
|
| +
|
| #include <set>
|
| #include <vector>
|
|
|
| -#include "chrome/test/ui/ui_test.h"
|
| -
|
| #include "base/base_switches.h"
|
| #include "base/command_line.h"
|
| #include "base/file_util.h"
|
| @@ -92,6 +92,7 @@ bool UITest::DieFileDie(const std::wstring& file, bool recurse) {
|
|
|
| UITest::UITest()
|
| : testing::Test(),
|
| + launch_arguments_(L""),
|
| expected_errors_(0),
|
| expected_crashes_(0),
|
| homepage_(L"about:blank"),
|
| @@ -177,28 +178,29 @@ void UITest::TearDown() {
|
|
|
| // Pick up the various test time out values from the command line.
|
| void UITest::InitializeTimeouts() {
|
| - if (CommandLine().HasSwitch(kUiTestTimeout)) {
|
| - std::wstring timeout_str = CommandLine().GetSwitchValue(kUiTestTimeout);
|
| + const CommandLine& command_line = *CommandLine::ForCurrentProcess();
|
| + if (command_line.HasSwitch(kUiTestTimeout)) {
|
| + std::wstring timeout_str = command_line.GetSwitchValue(kUiTestTimeout);
|
| int timeout = StringToInt(timeout_str);
|
| command_execution_timeout_ms_ = std::max(kMaxTestExecutionTime, timeout);
|
| }
|
|
|
| - if (CommandLine().HasSwitch(kUiTestActionTimeout)) {
|
| - std::wstring act_str = CommandLine().GetSwitchValue(kUiTestActionTimeout);
|
| + if (command_line.HasSwitch(kUiTestActionTimeout)) {
|
| + std::wstring act_str = command_line.GetSwitchValue(kUiTestActionTimeout);
|
| int act_timeout = StringToInt(act_str);
|
| action_timeout_ms_ = std::max(kWaitForActionMsec, act_timeout);
|
| }
|
|
|
| - if (CommandLine().HasSwitch(kUiTestActionMaxTimeout)) {
|
| + if (command_line.HasSwitch(kUiTestActionMaxTimeout)) {
|
| std::wstring action_max_str =
|
| - CommandLine().GetSwitchValue(kUiTestActionMaxTimeout);
|
| + command_line.GetSwitchValue(kUiTestActionMaxTimeout);
|
| int max_timeout = StringToInt(action_max_str);
|
| action_max_timeout_ms_ = std::max(kWaitForActionMaxMsec, max_timeout);
|
| }
|
|
|
| - if (CommandLine().HasSwitch(kUiTestSleepTimeout)) {
|
| + if (CommandLine::ForCurrentProcess()->HasSwitch(kUiTestSleepTimeout)) {
|
| std::wstring sleep_timeout_str =
|
| - CommandLine().GetSwitchValue(kUiTestSleepTimeout);
|
| + CommandLine::ForCurrentProcess()->GetSwitchValue(kUiTestSleepTimeout);
|
| int sleep_timeout = StringToInt(sleep_timeout_str);
|
| sleep_timeout_ms_ = std::max(kWaitForActionMsec, sleep_timeout);
|
| }
|
| @@ -235,23 +237,29 @@ void UITest::CloseBrowserAndServer() {
|
| #endif
|
| }
|
|
|
| -void UITest::LaunchBrowser(const std::wstring& arguments, bool clear_profile) {
|
| - std::wstring command_line(browser_directory_);
|
| - file_util::AppendToPath(&command_line,
|
| +void UITest::LaunchBrowser(const CommandLine& arguments, bool clear_profile) {
|
| + std::wstring command = browser_directory_;
|
| + file_util::AppendToPath(&command,
|
| chrome::kBrowserProcessExecutableName);
|
| + CommandLine command_line(command);
|
|
|
| // Add any explict command line flags passed to the process.
|
| std::wstring extra_chrome_flags =
|
| - CommandLine().GetSwitchValue(kExtraChromeFlagsSwitch);
|
| - if (!extra_chrome_flags.empty())
|
| - command_line.append(L" " + extra_chrome_flags);
|
| + CommandLine::ForCurrentProcess()->GetSwitchValue(kExtraChromeFlagsSwitch);
|
| + if (!extra_chrome_flags.empty()) {
|
| +#if defined(OS_WIN)
|
| + command_line.AppendLooseValue(extra_chrome_flags);
|
| +#else
|
| + // TODO(port): figure out how to pass through extra flags via a string.
|
| + NOTIMPLEMENTED();
|
| +#endif
|
| + }
|
|
|
| // We need cookies on file:// for things like the page cycler.
|
| - CommandLine::AppendSwitch(&command_line, switches::kEnableFileCookies);
|
| + command_line.AppendSwitch(switches::kEnableFileCookies);
|
|
|
| if (dom_automation_enabled_)
|
| - CommandLine::AppendSwitch(&command_line,
|
| - switches::kDomAutomationController);
|
| + command_line.AppendSwitch(switches::kDomAutomationController);
|
|
|
| #if defined(OS_WIN)
|
| if (include_testing_id_) {
|
| @@ -261,12 +269,10 @@ void UITest::LaunchBrowser(const std::wstring& arguments, bool clear_profile) {
|
| // this by passing an url (e.g. about:blank) on the command line, but
|
| // I decided to keep using the old switch in the existing use case to
|
| // minimize changes in behavior.
|
| - CommandLine::AppendSwitchWithValue(&command_line,
|
| - switches::kAutomationClientChannelID,
|
| + command_line.AppendSwitchWithValue(switches::kAutomationClientChannelID,
|
| server_->channel_id());
|
| } else {
|
| - CommandLine::AppendSwitchWithValue(&command_line,
|
| - switches::kTestingChannelID,
|
| + command_line.AppendSwitchWithValue(switches::kTestingChannelID,
|
| server_->channel_id());
|
| }
|
| }
|
| @@ -276,56 +282,52 @@ void UITest::LaunchBrowser(const std::wstring& arguments, bool clear_profile) {
|
| #endif
|
|
|
| if (!show_error_dialogs_)
|
| - CommandLine::AppendSwitch(&command_line, switches::kNoErrorDialogs);
|
| + command_line.AppendSwitch(switches::kNoErrorDialogs);
|
| if (in_process_renderer_)
|
| - CommandLine::AppendSwitch(&command_line, switches::kSingleProcess);
|
| + command_line.AppendSwitch(switches::kSingleProcess);
|
| if (in_process_plugins_)
|
| - CommandLine::AppendSwitch(&command_line, switches::kInProcessPlugins);
|
| + command_line.AppendSwitch(switches::kInProcessPlugins);
|
| if (no_sandbox_)
|
| - CommandLine::AppendSwitch(&command_line, switches::kNoSandbox);
|
| + command_line.AppendSwitch(switches::kNoSandbox);
|
| if (full_memory_dump_)
|
| - CommandLine::AppendSwitch(&command_line, switches::kFullMemoryCrashReport);
|
| + command_line.AppendSwitch(switches::kFullMemoryCrashReport);
|
| if (safe_plugins_)
|
| - CommandLine::AppendSwitch(&command_line, switches::kSafePlugins);
|
| + command_line.AppendSwitch(switches::kSafePlugins);
|
| if (enable_dcheck_)
|
| - CommandLine::AppendSwitch(&command_line, switches::kEnableDCHECK);
|
| + command_line.AppendSwitch(switches::kEnableDCHECK);
|
| if (silent_dump_on_dcheck_)
|
| - CommandLine::AppendSwitch(&command_line, switches::kSilentDumpOnDCHECK);
|
| + command_line.AppendSwitch(switches::kSilentDumpOnDCHECK);
|
| if (disable_breakpad_)
|
| - CommandLine::AppendSwitch(&command_line, switches::kDisableBreakpad);
|
| + command_line.AppendSwitch(switches::kDisableBreakpad);
|
| if (!homepage_.empty())
|
| - CommandLine::AppendSwitchWithValue(&command_line,
|
| - switches::kHomePage,
|
| + command_line.AppendSwitchWithValue(switches::kHomePage,
|
| homepage_);
|
| PathService::Get(chrome::DIR_USER_DATA, &user_data_dir_);
|
| if (!user_data_dir_.empty())
|
| - CommandLine::AppendSwitchWithValue(&command_line,
|
| - switches::kUserDataDir,
|
| + command_line.AppendSwitchWithValue(switches::kUserDataDir,
|
| user_data_dir_);
|
| if (!js_flags_.empty())
|
| - CommandLine::AppendSwitchWithValue(&command_line,
|
| - switches::kJavaScriptFlags,
|
| + command_line.AppendSwitchWithValue(switches::kJavaScriptFlags,
|
| js_flags_);
|
|
|
| - CommandLine::AppendSwitch(&command_line, switches::kMetricsRecordingOnly);
|
| + command_line.AppendSwitch(switches::kMetricsRecordingOnly);
|
|
|
| // We always want to enable chrome logging
|
| - CommandLine::AppendSwitch(&command_line, switches::kEnableLogging);
|
| + command_line.AppendSwitch(switches::kEnableLogging);
|
|
|
| if (dump_histograms_on_exit_)
|
| - CommandLine::AppendSwitch(&command_line, switches::kDumpHistogramsOnExit);
|
| + command_line.AppendSwitch(switches::kDumpHistogramsOnExit);
|
|
|
| #ifdef WAIT_FOR_DEBUGGER_ON_OPEN
|
| - CommandLine::AppendSwitch(&command_line, switches::kDebugOnStart);
|
| + command_line.AppendSwitch(switches::kDebugOnStart);
|
| #endif
|
|
|
| if (!ui_test_name_.empty())
|
| - CommandLine::AppendSwitchWithValue(&command_line,
|
| - switches::kTestName,
|
| + command_line.AppendSwitchWithValue(switches::kTestName,
|
| ui_test_name_);
|
|
|
| DebugFlags::ProcessDebugFlags(&command_line, DebugFlags::UNKNOWN, false);
|
| - command_line.append(L" " + arguments);
|
| + command_line.AppendArguments(arguments, false);
|
|
|
| // Clear user data directory to make sure test environment is consistent
|
| // We balk on really short (absolute) user_data_dir directory names, because
|
| @@ -356,7 +358,7 @@ void UITest::LaunchBrowser(const std::wstring& arguments, bool clear_profile) {
|
| if (use_existing_browser_) {
|
| DWORD pid = 0;
|
| HWND hwnd = FindWindowEx(HWND_MESSAGE, NULL, chrome::kMessageWindowClass,
|
| - user_data_dir_.c_str());
|
| + user_data_dir_.c_str());
|
| GetWindowThreadProcessId(hwnd, &pid);
|
| // This mode doesn't work if we wound up launching a new browser ourselves.
|
| ASSERT_NE(pid, base::GetProcId(process_));
|
|
|