OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "content/browser/bad_message.h" | 5 #include "content/browser/bad_message.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/metrics/histogram_macros.h" | 8 #include "base/metrics/sparse_histogram.h" |
9 #include "content/public/browser/browser_message_filter.h" | 9 #include "content/public/browser/browser_message_filter.h" |
10 #include "content/public/browser/render_process_host.h" | 10 #include "content/public/browser/render_process_host.h" |
11 | 11 |
12 namespace content { | 12 namespace content { |
13 namespace bad_message { | 13 namespace bad_message { |
14 | 14 |
15 namespace { | 15 namespace { |
16 | 16 |
17 void LogBadMessage(BadMessageReason reason) { | 17 void LogBadMessage(BadMessageReason reason) { |
18 LOG(ERROR) << "Terminating renderer for bad IPC message, reason " << reason; | 18 LOG(ERROR) << "Terminating renderer for bad IPC message, reason " << reason; |
19 UMA_HISTOGRAM_ENUMERATION("Stability.BadMessageTerminated.Content", reason, | 19 UMA_HISTOGRAM_SPARSE_SLOWLY("Stability.BadMessageTerminated.Content", reason); |
20 BAD_MESSAGE_MAX); | |
21 } | 20 } |
22 | 21 |
23 } // namespace | 22 } // namespace |
24 | 23 |
25 void ReceivedBadMessage(RenderProcessHost* host, BadMessageReason reason) { | 24 void ReceivedBadMessage(RenderProcessHost* host, BadMessageReason reason) { |
26 LogBadMessage(reason); | 25 LogBadMessage(reason); |
27 host->ShutdownForBadMessage(); | 26 host->ShutdownForBadMessage(); |
28 } | 27 } |
29 | 28 |
30 void ReceivedBadMessage(BrowserMessageFilter* filter, BadMessageReason reason) { | 29 void ReceivedBadMessage(BrowserMessageFilter* filter, BadMessageReason reason) { |
31 LogBadMessage(reason); | 30 LogBadMessage(reason); |
32 filter->ShutdownForBadMessage(); | 31 filter->ShutdownForBadMessage(); |
33 } | 32 } |
34 | 33 |
35 } // namespace bad_message | 34 } // namespace bad_message |
36 } // namespace content | 35 } // namespace content |
OLD | NEW |