Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(247)

Unified Diff: client/crashpad_info.h

Issue 997713002: Allow exception forwarding to the system’s native crash reporter to be disabled (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | client/crashpad_info.cc » ('j') | client/crashpad_info.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: client/crashpad_info.h
diff --git a/client/crashpad_info.h b/client/crashpad_info.h
index 86afff13a61a77b78a4e8abe0ff5a3c42b2458f3..883885cf3f89600de219f9d0832fded4417465e9 100644
--- a/client/crashpad_info.h
+++ b/client/crashpad_info.h
@@ -32,6 +32,18 @@ namespace crashpad {
//! module that contains the client interface code.
struct CrashpadInfo {
public:
+ //! \brief Options to enable and disable features.
+ enum TriState {
+ //! \brief No special behavior is requested, and the defaults are desired.
+ kDefault = 0,
+
+ //! \brief The behavior should be enabled.
+ kEnabled,
+
+ //! \brief The behavior should be disabled.
+ kDisabled,
+ };
+
//! \brief Returns the global CrashpadInfo structure.
static CrashpadInfo* GetCrashpadInfo();
@@ -41,6 +53,38 @@ struct CrashpadInfo {
simple_annotations_ = simple_annotations;
}
+ //! \brief Enables or disables Crashpad handler processing.
+ //!
+ //! When handling an exception, the Crashpad handler will scan all modules in
+ //! a process. The first one that has a CrashpadInfo structure populated with
+ //! a value other than #kDefault for \a state will dictate whether the handler
+ //! is functional or not. If all modules with a CrashpadInfo structure specify
+ //! #kDefault, the handler will be enabled. If disabled, the Crashpad handler
+ //! will still run and receive exceptions, but will not take any action on an
+ //! exception on its own behalf, except for the action necessary to determine
+ //! that it has been disabled.
+ //!
+ //! The Crashpad handler should not normally be disabled. More commonly, it
+ //! is appropraite to disable crash report upload by calling
+ //! Settings::SetUploadsEnabled().
+ void SetCrashpadHandlerState(TriState state);
+
+ //! \brief Enables or disables Crashpad forwarding of exceptions to the
+ //! system’s native crash reporter.
+ //!
+ //! When handling an exception, the Crashpad handler will scan all modules in
+ //! a process. The first one that has a CrashpadInfo structure populated with
+ //! a value other than #kDefault for \a state will dictate whether the
+ //! exception is forwarded to the system’s native crash reporter. If all
+ //! modules with a CrashpadInfo structure specify #kDefault, forwarding will
+ //! be enabled. Unless disabled, forwarding may still occur if the Crashpad
+ //! handler is disabled by SetCrashpadHandlerState(). Even when forwarding is
+ //! enabled, the Crashpad handler may choose not to forward all exceptions to
+ //! the system’s native crash reporter in cases where it has reason to believe
+ //! that the system’s native crash reporter would not normally have handled
+ //! the exception in Crashpad’s absence.
+ void SetNativeCrashReporterForwarding(TriState state);
+
static const uint32_t kSignature = 'CPad';
private:
@@ -57,7 +101,13 @@ struct CrashpadInfo {
uint32_t signature_; // kSignature
uint32_t size_; // The size of the entire CrashpadInfo structure.
uint32_t version_; // kVersion
- uint32_t padding_0_;
+
+ // options_ stores the state for SetCrashpadHandlerState() and
+ // SetNativeCrashReporterForwarding().
+ uint8_t options_;
+
+ uint8_t padding_0_;
+ uint16_t padding_1_;
SimpleStringDictionary* simple_annotations_; // weak
#if defined(__clang__)
« no previous file with comments | « no previous file | client/crashpad_info.cc » ('j') | client/crashpad_info.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698