1*6777b538SAndroid Build Coastguard Worker // Copyright 2015 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #ifndef COMPONENTS_NACL_BROWSER_BAD_MESSAGE_H_ 6*6777b538SAndroid Build Coastguard Worker #define COMPONENTS_NACL_BROWSER_BAD_MESSAGE_H_ 7*6777b538SAndroid Build Coastguard Worker 8*6777b538SAndroid Build Coastguard Worker namespace content { 9*6777b538SAndroid Build Coastguard Worker class BrowserMessageFilter; 10*6777b538SAndroid Build Coastguard Worker } 11*6777b538SAndroid Build Coastguard Worker 12*6777b538SAndroid Build Coastguard Worker namespace nacl { 13*6777b538SAndroid Build Coastguard Worker namespace bad_message { 14*6777b538SAndroid Build Coastguard Worker 15*6777b538SAndroid Build Coastguard Worker // The browser process often chooses to terminate a renderer if it receives 16*6777b538SAndroid Build Coastguard Worker // a bad IPC message. The reasons are tracked for metrics. 17*6777b538SAndroid Build Coastguard Worker // 18*6777b538SAndroid Build Coastguard Worker // See also content/browser/bad_message.h. 19*6777b538SAndroid Build Coastguard Worker // 20*6777b538SAndroid Build Coastguard Worker // NOTE: Do not remove or reorder elements in this list. Add new entries at the 21*6777b538SAndroid Build Coastguard Worker // end. Items may be renamed but do not change the values. We rely on the enum 22*6777b538SAndroid Build Coastguard Worker // values in histograms. 23*6777b538SAndroid Build Coastguard Worker enum BadMessageReason { 24*6777b538SAndroid Build Coastguard Worker NFH_OPEN_EXECUTABLE_BAD_ROUTING_ID = 0, 25*6777b538SAndroid Build Coastguard Worker NHMF_LAUNCH_CONTINUATION_BAD_ROUTING_ID = 1, 26*6777b538SAndroid Build Coastguard Worker NHMF_GET_NEXE_FD_BAD_URL = 2, 27*6777b538SAndroid Build Coastguard Worker 28*6777b538SAndroid Build Coastguard Worker // Please add new elements here. The naming convention is abbreviated class 29*6777b538SAndroid Build Coastguard Worker // name (e.g. NaclHostMessageFilter becomes NHMF) plus a unique description of 30*6777b538SAndroid Build Coastguard Worker // the reason. After making changes, you MUST update histograms.xml by 31*6777b538SAndroid Build Coastguard Worker // running: 32*6777b538SAndroid Build Coastguard Worker // "python tools/metrics/histograms/update_bad_message_reasons.py" 33*6777b538SAndroid Build Coastguard Worker BAD_MESSAGE_MAX 34*6777b538SAndroid Build Coastguard Worker }; 35*6777b538SAndroid Build Coastguard Worker 36*6777b538SAndroid Build Coastguard Worker // Called when a browser message filter receives a bad IPC message from a 37*6777b538SAndroid Build Coastguard Worker // renderer or other child process. Logs the event, records a histogram metric 38*6777b538SAndroid Build Coastguard Worker // for the |reason|, and terminates the process for |filter|. 39*6777b538SAndroid Build Coastguard Worker void ReceivedBadMessage(content::BrowserMessageFilter* filter, 40*6777b538SAndroid Build Coastguard Worker BadMessageReason reason); 41*6777b538SAndroid Build Coastguard Worker 42*6777b538SAndroid Build Coastguard Worker } // namespace bad_message 43*6777b538SAndroid Build Coastguard Worker } // namespace nacl 44*6777b538SAndroid Build Coastguard Worker 45*6777b538SAndroid Build Coastguard Worker #endif // COMPONENTS_NACL_BROWSER_BAD_MESSAGE_H_ 46