Index: content/browser/bad_message.cc |
diff --git a/content/browser/bad_message.cc b/content/browser/bad_message.cc |
index 9e2910fc415e1af463b9f70d6d2a93c1af71f429..183b46e70e95e9cde7b6867b37b9a29ababecbaa 100644 |
--- a/content/browser/bad_message.cc |
+++ b/content/browser/bad_message.cc |
@@ -4,11 +4,13 @@ |
#include "content/browser/bad_message.h" |
+#include "base/bind.h" |
#include "base/debug/crash_logging.h" |
#include "base/logging.h" |
#include "base/metrics/sparse_histogram.h" |
#include "base/strings/string_number_conversions.h" |
#include "content/public/browser/browser_message_filter.h" |
+#include "content/public/browser/browser_thread.h" |
#include "content/public/browser/render_process_host.h" |
namespace content { |
@@ -23,6 +25,14 @@ void LogBadMessage(BadMessageReason reason) { |
base::IntToString(reason)); |
} |
+void ReceivedBadMessageOnUIThread(int render_process_id, |
+ BadMessageReason reason) { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ RenderProcessHost* host = RenderProcessHost::FromID(render_process_id); |
+ if (host) |
+ ReceivedBadMessage(host, reason); |
+} |
+ |
} // namespace |
void ReceivedBadMessage(RenderProcessHost* host, BadMessageReason reason) { |
@@ -30,6 +40,17 @@ void ReceivedBadMessage(RenderProcessHost* host, BadMessageReason reason) { |
host->ShutdownForBadMessage(); |
} |
+void ReceivedBadMessage(int render_process_id, BadMessageReason reason) { |
+ if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) { |
+ BrowserThread::PostTask( |
+ BrowserThread::UI, |
+ FROM_HERE, |
+ base::Bind(&ReceivedBadMessageOnUIThread, render_process_id, reason)); |
+ return; |
+ } |
+ ReceivedBadMessageOnUIThread(render_process_id, reason); |
+} |
+ |
void ReceivedBadMessage(BrowserMessageFilter* filter, BadMessageReason reason) { |
LogBadMessage(reason); |
filter->ShutdownForBadMessage(); |