Index: src/platform/crash/user_collector.h |
diff --git a/src/platform/crash/user_collector.h b/src/platform/crash/user_collector.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7f632246ab6d33452a397735a0a0c3289f02c268 |
--- /dev/null |
+++ b/src/platform/crash/user_collector.h |
@@ -0,0 +1,62 @@ |
+// Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef _CRASH_USER_COLLECTOR_H_ |
+#define _CRASH_USER_COLLECTOR_H_ |
+ |
+#include <string> |
+ |
+#include "crash/system_logging.h" |
+ |
+class FilePath; |
+ |
+// User crash collector. |
+class UserCollector { |
+ public: |
+ typedef void (*CountCrashFunction)(); |
+ typedef bool (*IsFeedbackAllowedFunction)(); |
+ |
+ UserCollector(); |
+ |
+ // Initialize the user crash collector for detection of crashes, |
+ // given a crash counting function, the path to this executable, |
+ // metrics collection enabled oracle, and system logger facility. |
+ // Crash detection/reporting is not enabled until Enable is |
+ // called. |
+ void Initialize(CountCrashFunction count_crash, |
+ const std::string &our_path, |
+ IsFeedbackAllowedFunction is_metrics_allowed, |
+ SystemLogging *logger); |
+ |
+ virtual ~UserCollector(); |
+ |
+ // Enable collection. |
+ bool Enable() { return SetUpInternal(true); } |
+ |
+ // Disable collection. |
+ bool Disable() { return SetUpInternal(false); } |
+ |
+ // Handle a specific user crash. |
+ void HandleCrash(int signal, int pid, const std::string &exec); |
+ |
+ // Set (override the default) core file pattern. |
+ void set_core_pattern_file(const std::string &pattern) { |
+ core_pattern_file_ = pattern; |
+ } |
+ |
+ private: |
+ friend class UserCollectorTest; |
+ |
+ std::string GetPattern(bool enabled) const; |
+ bool SetUpInternal(bool enabled); |
+ |
+ std::string core_pattern_file_; |
+ CountCrashFunction count_crash_function_; |
+ std::string our_path_; |
+ bool initialized_; |
+ IsFeedbackAllowedFunction is_feedback_allowed_function_; |
+ SystemLogging *logger_; |
+}; |
+ |
+#endif // _CRASH_USER_COLLECTOR_H_ |