jamescook | da250581 | 2015-03-20 18:01:18 | [diff] [blame] | 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 |
| 3 | // found in the LICENSE file. |
| 4 | |
| 5 | #ifndef EXTENSIONS_BROWSER_BAD_MESSAGE_H_ |
| 6 | #define EXTENSIONS_BROWSER_BAD_MESSAGE_H_ |
| 7 | |
| 8 | namespace content { |
| 9 | class RenderProcessHost; |
| 10 | } |
| 11 | |
| 12 | namespace extensions { |
| 13 | namespace bad_message { |
| 14 | |
| 15 | // The browser process often chooses to terminate a renderer if it receives |
| 16 | // a bad IPC message. The reasons are tracked for metrics. |
| 17 | // |
| 18 | // See also content/browser/bad_message.h. |
| 19 | // |
| 20 | // NOTE: Do not remove or reorder elements in this list. Add new entries at the |
| 21 | // end. Items may be renamed but do not change the values. We rely on the enum |
nick | d8ec87b | 2015-07-17 00:42:52 | [diff] [blame] | 22 | // values in histograms. |
jamescook | da250581 | 2015-03-20 18:01:18 | [diff] [blame] | 23 | enum BadMessageReason { |
| 24 | EOG_BAD_ORIGIN = 0, |
creis | ee45bf4 | 2015-05-12 17:59:55 | [diff] [blame] | 25 | EVG_BAD_ORIGIN = 1, |
| 26 | BH_BLOB_NOT_OWNED = 2, |
| 27 | EH_BAD_EVENT_ID = 3, |
ekaramad | 725a6ca | 2015-07-07 22:15:01 | [diff] [blame] | 28 | AVG_BAD_INST_ID = 4, |
| 29 | AVG_BAD_EXT_ID = 5, |
| 30 | AVG_NULL_AVG = 6, |
jamescook | da250581 | 2015-03-20 18:01:18 | [diff] [blame] | 31 | // Please add new elements here. The naming convention is abbreviated class |
| 32 | // name (e.g. ExtensionHost becomes EH) plus a unique description of the |
nick | d8ec87b | 2015-07-17 00:42:52 | [diff] [blame] | 33 | // reason. After making changes, you MUST update histograms.xml by running: |
| 34 | // "python tools/metrics/histograms/update_bad_message_reasons.py" |
jamescook | da250581 | 2015-03-20 18:01:18 | [diff] [blame] | 35 | BAD_MESSAGE_MAX |
| 36 | }; |
| 37 | |
| 38 | // Called when the browser receives a bad IPC message from an extension process. |
| 39 | // Logs the event, records a histogram metric for the |reason|, and terminates |
| 40 | // the process for |host|. |
| 41 | void ReceivedBadMessage(content::RenderProcessHost* host, |
| 42 | BadMessageReason reason); |
| 43 | |
nick | 1679482 | 2015-06-02 23:23:31 | [diff] [blame] | 44 | } // namespace bad_message |
jamescook | da250581 | 2015-03-20 18:01:18 | [diff] [blame] | 45 | } // namespace extensions |
| 46 | |
| 47 | #endif // EXTENSIONS_BROWSER_BAD_MESSAGE_H_ |