diff options
author | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-29 16:45:43 +0000 |
---|---|---|
committer | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-29 16:45:43 +0000 |
commit | c7fd73291df44ad9c03c04d8aba6e5d694bf2864 (patch) | |
tree | 1c69c985b2341ca9713fa46f5a7b1fecb842695f | |
parent | 64b64571cafb17f831e35be682cf06b91049f6ca (diff) | |
download | chromium_src-c7fd73291df44ad9c03c04d8aba6e5d694bf2864.zip chromium_src-c7fd73291df44ad9c03c04d8aba6e5d694bf2864.tar.gz chromium_src-c7fd73291df44ad9c03c04d8aba6e5d694bf2864.tar.bz2 |
GTTF: Use IPC_BEGIN_MESSAGE_MAP_EX everywhere in the automation framework.
This avoids an implicit DCHECK that crashes the browser under test
which is hard to debug. A log message should work better.
BUG=77875
Review URL: http://codereview.chromium.org/7523043
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@94691 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/automation/automation_resource_message_filter.cc | 13 | ||||
-rw-r--r-- | chrome/browser/automation/url_request_automation_job.cc | 11 |
2 files changed, 20 insertions, 4 deletions
diff --git a/chrome/browser/automation/automation_resource_message_filter.cc b/chrome/browser/automation/automation_resource_message_filter.cc index ddc3b65..d64f5a1 100644 --- a/chrome/browser/automation/automation_resource_message_filter.cc +++ b/chrome/browser/automation/automation_resource_message_filter.cc @@ -138,7 +138,10 @@ bool AutomationResourceMessageFilter::OnMessageReceived( } bool handled = true; - IPC_BEGIN_MESSAGE_MAP(AutomationResourceMessageFilter, message) + bool deserialize_success = true; + IPC_BEGIN_MESSAGE_MAP_EX(AutomationResourceMessageFilter, + message, + deserialize_success) IPC_MESSAGE_HANDLER(AutomationMsg_SetFilteredInet, OnSetFilteredInet) IPC_MESSAGE_HANDLER(AutomationMsg_GetFilteredInetHitCount, @@ -148,7 +151,13 @@ bool AutomationResourceMessageFilter::OnMessageReceived( IPC_MESSAGE_HANDLER(AutomationMsg_GetCookiesHostResponse, OnGetCookiesHostResponse) IPC_MESSAGE_UNHANDLED(handled = false) - IPC_END_MESSAGE_MAP() + IPC_END_MESSAGE_MAP_EX() + + if (!deserialize_success) { + LOG(ERROR) << "Failed to deserialize IPC message. " + << "Closing the automation channel."; + channel_->Close(); + } return handled; } diff --git a/chrome/browser/automation/url_request_automation_job.cc b/chrome/browser/automation/url_request_automation_job.cc index c232bbd..cf99f6d 100644 --- a/chrome/browser/automation/url_request_automation_job.cc +++ b/chrome/browser/automation/url_request_automation_job.cc @@ -271,11 +271,18 @@ void URLRequestAutomationJob::OnMessage(const IPC::Message& message) { return; } - IPC_BEGIN_MESSAGE_MAP(URLRequestAutomationJob, message) + bool deserialize_success = false; + IPC_BEGIN_MESSAGE_MAP_EX(URLRequestAutomationJob, + message, + deserialize_success) IPC_MESSAGE_HANDLER(AutomationMsg_RequestStarted, OnRequestStarted) IPC_MESSAGE_HANDLER(AutomationMsg_RequestData, OnDataAvailable) IPC_MESSAGE_HANDLER(AutomationMsg_RequestEnd, OnRequestEnd) - IPC_END_MESSAGE_MAP() + IPC_END_MESSAGE_MAP_EX() + + if (!deserialize_success) { + LOG(ERROR) << "Failed to deserialize IPC message."; + } } void URLRequestAutomationJob::OnRequestStarted( |