| Index: chrome/test/ui/ui_test.cc
|
| diff --git a/chrome/test/ui/ui_test.cc b/chrome/test/ui/ui_test.cc
|
| index ebc285ad6dec1a89e6f5b5bf6351fff420df4f5e..f06fa89bf1f67f120faf131b1c6641896510761d 100644
|
| --- a/chrome/test/ui/ui_test.cc
|
| +++ b/chrome/test/ui/ui_test.cc
|
| @@ -43,6 +43,7 @@
|
| #include "chrome/test/automation/automation_proxy.h"
|
| #include "chrome/test/automation/browser_proxy.h"
|
| #include "chrome/test/automation/javascript_execution_controller.h"
|
| +#include "chrome/test/automation/proxy_launcher.h"
|
| #include "chrome/test/automation/tab_proxy.h"
|
| #include "chrome/test/automation/window_proxy.h"
|
| #include "chrome/test/chrome_process_util.h"
|
| @@ -140,7 +141,9 @@ void UITestBase::SetUp() {
|
| JavaScriptExecutionController::set_timeout(
|
| TestTimeouts::action_max_timeout_ms());
|
| test_start_time_ = Time::NowFromSystemTime();
|
| - LaunchBrowserAndServer();
|
| +
|
| + launcher_.reset(CreateProxyLauncher());
|
| + launcher_->InitializeConnection(this);
|
| }
|
|
|
| void UITestBase::TearDown() {
|
| @@ -175,24 +178,39 @@ void UITestBase::TearDown() {
|
|
|
| // TODO(phajdan.jr): get rid of set_command_execution_timeout_ms.
|
| void UITestBase::set_command_execution_timeout_ms(int timeout) {
|
| - server_->set_command_execution_timeout_ms(timeout);
|
| + automation_proxy_->set_command_execution_timeout_ms(timeout);
|
| VLOG(1) << "Automation command execution timeout set to " << timeout << " ms";
|
| }
|
|
|
| -AutomationProxy* UITestBase::CreateAutomationProxy(int execution_timeout) {
|
| - return new AutomationProxy(execution_timeout, false);
|
| +ProxyLauncher* UITestBase::CreateProxyLauncher() {
|
| + return new AnonymousProxyLauncher(false);
|
| +}
|
| +
|
| +void UITestBase::LaunchBrowser() {
|
| + LaunchBrowser(launch_arguments_, clear_profile_);
|
| }
|
|
|
| void UITestBase::LaunchBrowserAndServer() {
|
| - // Set up IPC testing interface server.
|
| - server_.reset(CreateAutomationProxy(
|
| - TestTimeouts::command_execution_timeout_ms()));
|
| + // Set up IPC testing interface as a server.
|
| + automation_proxy_.reset(launcher_->CreateAutomationProxy(
|
| + TestTimeouts::command_execution_timeout_ms()));
|
|
|
| LaunchBrowser(launch_arguments_, clear_profile_);
|
| - ASSERT_EQ(AUTOMATION_SUCCESS, server_->WaitForAppLaunch())
|
| + WaitForBrowserLaunch();
|
| +}
|
| +
|
| +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(server_->WaitForInitialLoads());
|
| + ASSERT_TRUE(automation_proxy_->WaitForInitialLoads());
|
| else
|
| PlatformThread::Sleep(sleep_timeout_ms());
|
|
|
| @@ -210,7 +228,7 @@ void UITestBase::CloseBrowserAndServer() {
|
| AssertAppNotRunning(StringPrintf(
|
| L"Unable to quit all browser processes. Original PID %d", process_id_));
|
|
|
| - server_.reset(); // Shut down IPC testing interface.
|
| + automation_proxy_.reset(); // Shut down IPC testing interface.
|
| }
|
|
|
| void UITestBase::LaunchBrowser(const CommandLine& arguments,
|
| @@ -567,7 +585,7 @@ FilePath UITestBase::GetDownloadDirectory() {
|
| }
|
|
|
| void UITestBase::CloseBrowserAsync(BrowserProxy* browser) const {
|
| - ASSERT_TRUE(server_->Send(
|
| + ASSERT_TRUE(automation_proxy_->Send(
|
| new AutomationMsg_CloseBrowserRequestAsync(0, browser->handle())));
|
| }
|
|
|
| @@ -579,7 +597,7 @@ bool UITestBase::CloseBrowser(BrowserProxy* browser,
|
|
|
| bool result = true;
|
|
|
| - bool succeeded = server_->Send(new AutomationMsg_CloseBrowser(
|
| + bool succeeded = automation_proxy_->Send(new AutomationMsg_CloseBrowser(
|
| 0, browser->handle(), &result, application_closed));
|
|
|
| if (!succeeded)
|
| @@ -694,10 +712,9 @@ void UITestBase::PrepareTestCommandline(CommandLine* command_line) {
|
| if (dom_automation_enabled_)
|
| command_line->AppendSwitch(switches::kDomAutomationController);
|
|
|
| - if (include_testing_id_) {
|
| + if (include_testing_id_)
|
| command_line->AppendSwitchASCII(switches::kTestingChannelID,
|
| - server_->channel_id());
|
| - }
|
| + launcher_->PrefixedChannelID());
|
|
|
| if (!show_error_dialogs_ &&
|
| !CommandLine::ForCurrentProcess()->HasSwitch(
|
| @@ -786,10 +803,11 @@ bool UITestBase::LaunchBrowserHelper(const CommandLine& arguments,
|
| << browser_wrapper;
|
| }
|
|
|
| - bool started = base::LaunchApp(command_line.argv(),
|
| - server_->fds_to_map(),
|
| - wait,
|
| - process);
|
| + 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;
|
| @@ -867,11 +885,11 @@ void UITest::TearDown() {
|
| PlatformTest::TearDown();
|
| }
|
|
|
| -AutomationProxy* UITest::CreateAutomationProxy(int execution_timeout) {
|
| +ProxyLauncher* UITest::CreateProxyLauncher() {
|
| // Make the AutomationProxy disconnect the channel on the first error,
|
| // so that we avoid spending a lot of time in timeouts. The browser is likely
|
| // hosed if we hit those errors.
|
| - return new AutomationProxy(execution_timeout, true);
|
| + return new AnonymousProxyLauncher(true);
|
| }
|
|
|
| static CommandLine* CreatePythonCommandLine() {
|
|
|