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

Side by Side Diff: third_party/crashpad/crashpad/util/misc/metrics.h

Issue 2710663006: Update Crashpad to 4a2043ea65e2641ef1a921801c0aaa15ada02fc7 (Closed)
Patch Set: Update Crashpad to 4a2043ea65e2 Created 3 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Crashpad Authors. All rights reserved. 1 // Copyright 2016 The Crashpad Authors. All rights reserved.
2 // 2 //
3 // Licensed under the Apache License, Version 2.0 (the "License"); 3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License. 4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at 5 // You may obtain a copy of the License at
6 // 6 //
7 // http://www.apache.org/licenses/LICENSE-2.0 7 // http://www.apache.org/licenses/LICENSE-2.0
8 // 8 //
9 // Unless required by applicable law or agreed to in writing, software 9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS, 10 // distributed under the License is distributed on an "AS IS" BASIS,
(...skipping 12 matching lines...) Expand all
23 namespace crashpad { 23 namespace crashpad {
24 24
25 //! \brief Container class to hold shared UMA metrics integration points. 25 //! \brief Container class to hold shared UMA metrics integration points.
26 //! 26 //!
27 //! Each static function in this class will call a `UMA_*` from 27 //! Each static function in this class will call a `UMA_*` from
28 //! `base/metrics/histogram_macros.h`. When building Crashpad standalone, 28 //! `base/metrics/histogram_macros.h`. When building Crashpad standalone,
29 //! (against mini_chromium), these macros do nothing. When built against 29 //! (against mini_chromium), these macros do nothing. When built against
30 //! Chromium's base, they allow integration with its metrics system. 30 //! Chromium's base, they allow integration with its metrics system.
31 class Metrics { 31 class Metrics {
32 public: 32 public:
33 //! \brief Values for CrashReportPending(). These are used as metrics 33 //! \brief Values for CrashReportPending().
34 //! enumeration values, so new values should always be added at the end. 34 //!
35 //! \note These are used as metrics enumeration values, so new values should
36 //! always be added at the end, before PendingReportReason::kMaxValue.
35 enum class PendingReportReason : int32_t { 37 enum class PendingReportReason : int32_t {
36 //! \brief A report was newly created and is ready for upload. 38 //! \brief A report was newly created and is ready for upload.
37 kNewlyCreated = 0, 39 kNewlyCreated = 0,
38 40
39 //! \brief The user manually requested the report be uploaded. 41 //! \brief The user manually requested the report be uploaded.
40 kUserInitiated = 1, 42 kUserInitiated = 1,
41 43
42 //! \brief The number of values in this enumeration; not a valid value. 44 //! \brief The number of values in this enumeration; not a valid value.
43 kMaxValue 45 kMaxValue
44 }; 46 };
45 47
46 //! \brief Reports when a crash upload has entered the pending state. 48 //! \brief Reports when a crash upload has entered the pending state.
47 static void CrashReportPending(PendingReportReason reason); 49 static void CrashReportPending(PendingReportReason reason);
48 50
49 //! \brief Reports the size of a crash report file in bytes. Should be called 51 //! \brief Reports the size of a crash report file in bytes. Should be called
50 //! when a new report is written to disk. 52 //! when a new report is written to disk.
51 static void CrashReportSize(FileHandle file); 53 static void CrashReportSize(FileHandle file);
52 54
53 //! \brief Reports on a crash upload attempt, and if it succeeded. 55 //! \brief Reports on a crash upload attempt, and if it succeeded.
54 static void CrashUploadAttempted(bool successful); 56 static void CrashUploadAttempted(bool successful);
55 57
56 //! \brief Values for CrashUploadSkipped(). These are used as metrics 58 //! \brief Values for CrashUploadSkipped().
57 //! enumeration values, so new values should always be added at the end. 59 //!
60 //! \note These are used as metrics enumeration values, so new values should
61 //! always be added at the end, before CrashSkippedReason::kMaxValue.
58 enum class CrashSkippedReason : int32_t { 62 enum class CrashSkippedReason : int32_t {
59 //! \brief Crash uploading is disabled. 63 //! \brief Crash uploading is disabled.
60 kUploadsDisabled = 0, 64 kUploadsDisabled = 0,
61 65
62 //! \brief There was another upload too recently, so this one was throttled. 66 //! \brief There was another upload too recently, so this one was throttled.
63 kUploadThrottled = 1, 67 kUploadThrottled = 1,
64 68
65 //! \brief The report had an unexpected timestamp. 69 //! \brief The report had an unexpected timestamp.
66 kUnexpectedTime = 2, 70 kUnexpectedTime = 2,
67 71
68 //! \brief The database reported an error, likely due to a filesystem 72 //! \brief The database reported an error, likely due to a filesystem
69 //! problem. 73 //! problem.
70 kDatabaseError = 3, 74 kDatabaseError = 3,
71 75
72 //! \brief The upload of the crash failed during communication with the 76 //! \brief The upload of the crash failed during communication with the
73 //! server. 77 //! server.
74 kUploadFailed = 4, 78 kUploadFailed = 4,
75 79
76 //! \brief The number of values in this enumeration; not a valid value. 80 //! \brief The number of values in this enumeration; not a valid value.
77 kMaxValue 81 kMaxValue
78 }; 82 };
79 83
80 //! \brief Reports when a report is moved to the completed state in the 84 //! \brief Reports when a report is moved to the completed state in the
81 //! database, without the report being uploadad. 85 //! database, without the report being uploadad.
82 static void CrashUploadSkipped(CrashSkippedReason reason); 86 static void CrashUploadSkipped(CrashSkippedReason reason);
83 87
84 //! \brief The result of capturing an exception. These are used as metrics 88 //! \brief The result of capturing an exception.
85 //! enumeration values, so new values should always be added at the end. 89 //!
90 //! \note These are used as metrics enumeration values, so new values should
91 //! always be added at the end, before CaptureResult::kMaxValue.
86 enum class CaptureResult : int32_t { 92 enum class CaptureResult : int32_t {
87 //! \brief The exception capture succeeded normally. 93 //! \brief The exception capture succeeded normally.
88 kSuccess = 0, 94 kSuccess = 0,
89 95
90 //! \brief Unexpected exception behavior. 96 //! \brief Unexpected exception behavior.
91 //! 97 //!
92 //! This value is only used on macOS. 98 //! This value is only used on macOS.
93 kUnexpectedExceptionBehavior = 1, 99 kUnexpectedExceptionBehavior = 1,
94 100
95 //! \brief Failed due to attempt to suspend self. 101 //! \brief Failed due to attempt to suspend self.
(...skipping 27 matching lines...) Expand all
123 129
124 //! \brief The exception code for an exception was retrieved. 130 //! \brief The exception code for an exception was retrieved.
125 //! 131 //!
126 //! These values are OS-specific, and correspond to 132 //! These values are OS-specific, and correspond to
127 //! MINIDUMP_EXCEPTION::ExceptionCode. 133 //! MINIDUMP_EXCEPTION::ExceptionCode.
128 static void ExceptionCode(uint32_t exception_code); 134 static void ExceptionCode(uint32_t exception_code);
129 135
130 //! \brief The exception handler server started capturing an exception. 136 //! \brief The exception handler server started capturing an exception.
131 static void ExceptionEncountered(); 137 static void ExceptionEncountered();
132 138
139 //! \brief An important event in a handler process’ lifetime.
140 //!
141 //! \note These are used as metrics enumeration values, so new values should
142 //! always be added at the end, before LifetimeMilestone::kMaxValue.
143 enum class LifetimeMilestone : int32_t {
144 //! \brief The handler process started.
145 kStarted = 0,
146
147 //! \brief The handler process exited normally and cleanly.
148 kExitedNormally,
149
150 //! \brief The handler process exited early, but was successful in
151 //! performing some non-default action on user request.
152 kExitedEarly,
153
154 //! \brief The handler process exited with a failure code.
155 kFailed,
156
157 //! \brief The handler process was forcibly terminated.
158 kTerminated,
159
160 //! \brief The handler process crashed.
161 kCrashed,
162
163 //! \brief The number of values in this enumeration; not a valid value.
164 kMaxValue
165 };
166
167 //! \brief Records a handler start/exit/crash event.
168 static void HandlerLifetimeMilestone(LifetimeMilestone milestone);
169
133 //! \brief The handler process crashed with the given exception code. 170 //! \brief The handler process crashed with the given exception code.
134 //! 171 //!
135 //! This is currently only reported on Windows. 172 //! This is currently only reported on Windows.
136 static void HandlerCrashed(uint32_t exception_code); 173 static void HandlerCrashed(uint32_t exception_code);
137 174
138 private: 175 private:
139 DISALLOW_IMPLICIT_CONSTRUCTORS(Metrics); 176 DISALLOW_IMPLICIT_CONSTRUCTORS(Metrics);
140 }; 177 };
141 178
142 } // namespace crashpad 179 } // namespace crashpad
143 180
144 #endif // CRASHPAD_UTIL_MISC_METRICS_H_ 181 #endif // CRASHPAD_UTIL_MISC_METRICS_H_
OLDNEW
« no previous file with comments | « third_party/crashpad/crashpad/third_party/zlib/zlib_crashpad.h ('k') | third_party/crashpad/crashpad/util/misc/metrics.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698