Index: chrome/browser/bad_message.cc |
diff --git a/chrome/browser/bad_message.cc b/chrome/browser/bad_message.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b87c4ab23a83880dcfea78887fba85cb18a39c48 |
--- /dev/null |
+++ b/chrome/browser/bad_message.cc |
@@ -0,0 +1,38 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "chrome/browser/bad_message.h" |
+ |
+#include "base/logging.h" |
+#include "base/metrics/histogram_macros.h" |
+#include "content/public/browser/browser_message_filter.h" |
+#include "content/public/browser/render_process_host.h" |
+ |
+namespace chrome { |
+namespace bad_message { |
+ |
+namespace { |
+ |
+void LogBadMessage(BadMessageReason reason) { |
+ LOG(ERROR) << "Terminating renderer for bad IPC message, reason " << reason; |
+ UMA_HISTOGRAM_ENUMERATION("Stability.BadMessageTerminated.Chrome", reason, |
+ BAD_MESSAGE_MAX); |
+} |
+ |
+} // namespace |
+ |
+void ReceivedBadMessage(content::RenderProcessHost* host, |
+ BadMessageReason reason) { |
+ LogBadMessage(reason); |
+ host->ShutdownForBadMessage(); |
+} |
+ |
+void ReceivedBadMessage(content::BrowserMessageFilter* filter, |
+ BadMessageReason reason) { |
+ LogBadMessage(reason); |
+ filter->ShutdownForBadMessage(); |
+} |
+ |
+} // namespace bad_message |
+} // namespace chrome |