Chromium Code Reviews| 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_ |