Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1749)

Unified Diff: chrome/test/automation/automation_proxy.cc

Issue 7980053: Don't waste time on browser that crashed before connecting to the IPC channel. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: simplify Created 9 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/test/automation/automation_proxy.h ('k') | chrome/test/automation/proxy_launcher.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/automation/automation_proxy.cc
diff --git a/chrome/test/automation/automation_proxy.cc b/chrome/test/automation/automation_proxy.cc
index 10bcf6d9065babd89705f6f6d65b3604bb76580b..50214b33f9b7c65ab1b8c930f5edc724532d6264 100644
--- a/chrome/test/automation/automation_proxy.cc
+++ b/chrome/test/automation/automation_proxy.cc
@@ -33,6 +33,8 @@ using base::TimeTicks;
namespace {
+const char kChannelErrorVersionString[] = "***CHANNEL_ERROR***";
+
// This object allows messages received on the background thread to be
// properly triaged.
class AutomationMessageFilter : public IPC::ChannelProxy::MessageFilter {
@@ -41,7 +43,7 @@ class AutomationMessageFilter : public IPC::ChannelProxy::MessageFilter {
// Return true to indicate that the message was handled, or false to let
// the message be handled in the default way.
- virtual bool OnMessageReceived(const IPC::Message& message) {
+ virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE {
bool handled = true;
IPC_BEGIN_MESSAGE_MAP(AutomationMessageFilter, message)
IPC_MESSAGE_HANDLER_GENERIC(AutomationMsg_Hello,
@@ -58,14 +60,20 @@ class AutomationMessageFilter : public IPC::ChannelProxy::MessageFilter {
return handled;
}
- virtual void OnFilterAdded(IPC::Channel* channel) {
+ virtual void OnFilterAdded(IPC::Channel* channel) OVERRIDE {
server_->SetChannel(channel);
}
- virtual void OnFilterRemoved() {
+ virtual void OnFilterRemoved() OVERRIDE {
server_->ResetChannel();
}
+ virtual void OnChannelError() OVERRIDE {
+ server_->SignalAppLaunch(kChannelErrorVersionString);
+ server_->SignalNewTabUITab(-1);
+ }
+
+ private:
void NewTabLoaded(int load_time) {
server_->SignalNewTabUITab(load_time);
}
@@ -83,8 +91,9 @@ class AutomationMessageFilter : public IPC::ChannelProxy::MessageFilter {
server_->SignalAppLaunch(server_version);
}
- private:
AutomationProxy* server_;
+
+ DISALLOW_COPY_AND_ASSIGN(AutomationMessageFilter);
};
} // anonymous namespace
@@ -96,7 +105,6 @@ AutomationProxy::AutomationProxy(int action_timeout_ms,
initial_loads_complete_(true, false),
new_tab_ui_load_complete_(true, false),
shutdown_event_(new base::WaitableEvent(true, false)),
- app_launch_signaled_(0),
perform_version_check_(false),
disconnect_on_failure_(disconnect_on_failure),
action_timeout_(
@@ -170,7 +178,9 @@ void AutomationProxy::InitializeHandleTracker() {
AutomationLaunchResult AutomationProxy::WaitForAppLaunch() {
AutomationLaunchResult result = AUTOMATION_SUCCESS;
if (app_launched_.TimedWait(action_timeout_)) {
- if (perform_version_check_) {
+ if (server_version_ == kChannelErrorVersionString) {
+ result = AUTOMATION_CHANNEL_ERROR;
+ } else if (perform_version_check_) {
// Obtain our own version number and compare it to what the automation
// provider sent.
chrome::VersionInfo version_info;
@@ -190,16 +200,6 @@ AutomationLaunchResult AutomationProxy::WaitForAppLaunch() {
}
void AutomationProxy::SignalAppLaunch(const std::string& version_string) {
- // The synchronization of the reading / writing of server_version_ is a bit
- // messy but does work as long as SignalAppLaunch is only called once.
- // Review this if we ever want an AutomationProxy instance to launch
- // multiple AutomationProviders.
- app_launch_signaled_++;
- if (app_launch_signaled_ > 1) {
- NOTREACHED();
- LOG(ERROR) << "Multiple AutomationMsg_Hello messages received";
- return;
- }
server_version_ = version_string;
app_launched_.Signal();
}
« no previous file with comments | « chrome/test/automation/automation_proxy.h ('k') | chrome/test/automation/proxy_launcher.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698