Index: snapshot/mac/crashpad_info_client_options.h |
diff --git a/snapshot/mac/crashpad_info_client_options.h b/snapshot/mac/crashpad_info_client_options.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7922d21be5045662696889c6ce7ec4845865a235 |
--- /dev/null |
+++ b/snapshot/mac/crashpad_info_client_options.h |
@@ -0,0 +1,81 @@ |
+// Copyright 2015 The Crashpad Authors. All rights reserved. |
+// |
+// Licensed under the Apache License, Version 2.0 (the "License"); |
+// you may not use this file except in compliance with the License. |
+// You may obtain a copy of the License at |
+// |
+// http://www.apache.org/licenses/LICENSE-2.0 |
+// |
+// Unless required by applicable law or agreed to in writing, software |
+// distributed under the License is distributed on an "AS IS" BASIS, |
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+// See the License for the specific language governing permissions and |
+// limitations under the License. |
+ |
+#ifndef CRASHPAD_SNAPSHOT_MAC_CRASHPAD_INFO_CLIENT_OPTIONS_H_ |
+#define CRASHPAD_SNAPSHOT_MAC_CRASHPAD_INFO_CLIENT_OPTIONS_H_ |
+ |
+#include <stdint.h> |
+ |
+namespace crashpad { |
+ |
+//! \brief Options represented in a client’s CrashpadInfo structure. |
+//! |
+//! The CrashpadInfo structure is not suitable to expose client options |
+//! in a generic way at the snapshot level. This structure duplicates |
+//! option-related fields from the client structure for general use within the |
+//! snapshot layer and by users of this layer. |
+//! |
+//! For objects of this type corresponding to a module, option values are taken |
+//! from the module’s CrashpadInfo structure directly. If the module has no such |
+//! such structure, option values appear at their defaults. |
+//! |
+//! For objects of this type corresponding to an entire process, option values |
+//! are taken from the CrashpadInfo structures of modules within the process. |
+//! The first module found with a non-default value will provide each option |
+//! value. Different modules may provide values for different options. If every |
+//! module in the process specifies the default for an option, it will appear at |
+//! its default. If no module in the process has a CrashpadInfo structure, all |
+//! option values will appear at their defaults. |
+struct CrashpadInfoClientOptions { |
+ public: |
+ //! \brief Options to enable and disable features. |
+ //! |
+ //! Values of this type are produced from CrashpadInfo structures by |
+ //! TriStateFromCrashpadInfo(). |
+ //! |
+ //! \sa CrashpadInfo::TriState |
+ enum class TriState : uint8_t { |
Robert Sesek
2015/03/11 19:25:30
This could be moved into util/ and then it wouldn'
Mark Mentovai
2015/03/11 19:45:53
Robert Sesek wrote:
|
+ //! \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 Converts a CrashpadInfo::TriState value to a TriState value. |
+ //! |
+ //! The process_types layer exposes CrashpadInfo::TriState as a `uint8_t` |
+ //! rather than an enum type. This function converts these values into the |
+ //! equivalent enum values used in the snapshot layer. |
+ //! |
+ //! \return The TriState equivalent of \a crashpad_info_tri_state, if it is a |
+ //! valid CrashpadInfo::TriState value. Otherwise, logs a warning and |
+ //! returns TriState::kDefault. |
+ static TriState TriStateFromCrashpadInfo(uint8_t crashpad_info_tri_state); |
+ |
+ CrashpadInfoClientOptions(); |
+ |
+ //! \sa CrashpadInfo::set_crashpad_handler_behavior() |
+ TriState crashpad_handler_behavior; |
+ |
+ //! \sa CrashpadInfo::set_system_crash_reporter_forwarding() |
+ TriState system_crash_reporter_forwarding; |
+}; |
+ |
+} // namespace crashpad |
+ |
+#endif // CRASHPAD_SNAPSHOT_MAC_CRASHPAD_INFO_CLIENT_OPTIONS_H_ |