| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/automation/automation_proxy.h" | 5 #include "chrome/test/automation/automation_proxy.h" |
| 6 | 6 |
| 7 #include <gtest/gtest.h> | 7 #include <gtest/gtest.h> |
| 8 | 8 |
| 9 #include <sstream> | 9 #include <sstream> |
| 10 | 10 |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 154 } | 154 } |
| 155 | 155 |
| 156 void AutomationProxy::InitializeChannel(const std::string& channel_id, | 156 void AutomationProxy::InitializeChannel(const std::string& channel_id, |
| 157 bool use_named_interface) { | 157 bool use_named_interface) { |
| 158 DCHECK(shutdown_event_.get() != NULL); | 158 DCHECK(shutdown_event_.get() != NULL); |
| 159 | 159 |
| 160 // TODO(iyengar) | 160 // TODO(iyengar) |
| 161 // The shutdown event could be global on the same lines as the automation | 161 // The shutdown event could be global on the same lines as the automation |
| 162 // provider, where we use the shutdown event provided by the chrome browser | 162 // provider, where we use the shutdown event provided by the chrome browser |
| 163 // process. | 163 // process. |
| 164 IPC::Channel::Mode mode = | 164 channel_.reset(new IPC::SyncChannel( |
| 165 this, // we are the listener |
| 166 thread_->message_loop_proxy(), |
| 167 shutdown_event_.get())); |
| 168 channel_->AddFilter(new AutomationMessageFilter(this)); |
| 169 |
| 170 // Create the pipe synchronously so that Chrome doesn't try to connect to an |
| 171 // unready server. Note this is done after adding a message filter to |
| 172 // guarantee that it doesn't miss any messages when we are the client. |
| 173 // See crbug.com/102894. |
| 174 channel_->Init( |
| 175 channel_id, |
| 165 use_named_interface ? IPC::Channel::MODE_NAMED_CLIENT | 176 use_named_interface ? IPC::Channel::MODE_NAMED_CLIENT |
| 166 : IPC::Channel::MODE_SERVER; | 177 : IPC::Channel::MODE_SERVER, |
| 167 // Create the pipe immediately if we are serving, so that Chrome doesn't try | 178 true /* create_pipe_now */); |
| 168 // to connect an unready server. Create it asynchronously if we are the | |
| 169 // client, otherwise the filter may not be in place before Chrome sends | |
| 170 // the first automation Hello message. | |
| 171 bool create_pipe_now = mode & IPC::Channel::MODE_SERVER_FLAG; | |
| 172 channel_.reset(new IPC::SyncChannel( | |
| 173 channel_id, | |
| 174 mode, | |
| 175 this, // we are the listener | |
| 176 thread_->message_loop_proxy(), | |
| 177 create_pipe_now, | |
| 178 shutdown_event_.get())); | |
| 179 channel_->AddFilter(new AutomationMessageFilter(this)); | |
| 180 } | 179 } |
| 181 | 180 |
| 182 void AutomationProxy::InitializeHandleTracker() { | 181 void AutomationProxy::InitializeHandleTracker() { |
| 183 tracker_.reset(new AutomationHandleTracker()); | 182 tracker_.reset(new AutomationHandleTracker()); |
| 184 } | 183 } |
| 185 | 184 |
| 186 AutomationLaunchResult AutomationProxy::WaitForAppLaunch() { | 185 AutomationLaunchResult AutomationProxy::WaitForAppLaunch() { |
| 187 AutomationLaunchResult result = AUTOMATION_SUCCESS; | 186 AutomationLaunchResult result = AUTOMATION_SUCCESS; |
| 188 if (app_launched_.TimedWait(action_timeout_)) { | 187 if (app_launched_.TimedWait(action_timeout_)) { |
| 189 if (server_version_ == kChannelErrorVersionString) { | 188 if (server_version_ == kChannelErrorVersionString) { |
| (...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 590 } | 589 } |
| 591 | 590 |
| 592 bool AutomationProxy::SendJSONRequest(const std::string& request, | 591 bool AutomationProxy::SendJSONRequest(const std::string& request, |
| 593 int timeout_ms, | 592 int timeout_ms, |
| 594 std::string* response) { | 593 std::string* response) { |
| 595 bool result = false; | 594 bool result = false; |
| 596 if (!SendAutomationJSONRequest(this, request, timeout_ms, response, &result)) | 595 if (!SendAutomationJSONRequest(this, request, timeout_ms, response, &result)) |
| 597 return false; | 596 return false; |
| 598 return result; | 597 return result; |
| 599 } | 598 } |
| OLD | NEW |