| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef _CRASH_REPORTER_CRASH_COLLECTOR_H_ | 5 #ifndef _CRASH_REPORTER_CRASH_COLLECTOR_H_ |
| 6 #define _CRASH_REPORTER_CRASH_COLLECTOR_H_ | 6 #define _CRASH_REPORTER_CRASH_COLLECTOR_H_ |
| 7 | 7 |
| 8 #include <sys/stat.h> | 8 #include <sys/stat.h> |
| 9 | 9 |
| 10 #include <map> | 10 #include <map> |
| 11 #include <string> | 11 #include <string> |
| 12 | 12 |
| 13 #include "base/file_path.h" | 13 #include "base/file_path.h" |
| 14 #include "gtest/gtest_prod.h" // for FRIEND_TEST | 14 #include "gtest/gtest_prod.h" // for FRIEND_TEST |
| 15 | 15 |
| 16 class SystemLogging; | |
| 17 | |
| 18 // User crash collector. | 16 // User crash collector. |
| 19 class CrashCollector { | 17 class CrashCollector { |
| 20 public: | 18 public: |
| 21 typedef void (*CountCrashFunction)(); | 19 typedef void (*CountCrashFunction)(); |
| 22 typedef bool (*IsFeedbackAllowedFunction)(); | 20 typedef bool (*IsFeedbackAllowedFunction)(); |
| 23 | 21 |
| 24 CrashCollector(); | 22 CrashCollector(); |
| 25 | 23 |
| 26 virtual ~CrashCollector(); | 24 virtual ~CrashCollector(); |
| 27 | 25 |
| 28 // Initialize the crash collector for detection of crashes, given a | 26 // Initialize the crash collector for detection of crashes, given a |
| 29 // crash counting function, metrics collection enabled oracle, and | 27 // crash counting function, and metrics collection enabled oracle. |
| 30 // system logger facility. | |
| 31 void Initialize(CountCrashFunction count_crash, | 28 void Initialize(CountCrashFunction count_crash, |
| 32 IsFeedbackAllowedFunction is_metrics_allowed, | 29 IsFeedbackAllowedFunction is_metrics_allowed); |
| 33 SystemLogging *logger); | |
| 34 | 30 |
| 35 protected: | 31 protected: |
| 36 friend class CrashCollectorTest; | 32 friend class CrashCollectorTest; |
| 37 FRIEND_TEST(CrashCollectorTest, CheckHasCapacityCorrectBasename); | 33 FRIEND_TEST(CrashCollectorTest, CheckHasCapacityCorrectBasename); |
| 38 FRIEND_TEST(CrashCollectorTest, CheckHasCapacityStrangeNames); | 34 FRIEND_TEST(CrashCollectorTest, CheckHasCapacityStrangeNames); |
| 39 FRIEND_TEST(CrashCollectorTest, CheckHasCapacityUsual); | 35 FRIEND_TEST(CrashCollectorTest, CheckHasCapacityUsual); |
| 40 FRIEND_TEST(CrashCollectorTest, GetCrashDirectoryInfo); | 36 FRIEND_TEST(CrashCollectorTest, GetCrashDirectoryInfo); |
| 41 FRIEND_TEST(CrashCollectorTest, GetCrashPath); | 37 FRIEND_TEST(CrashCollectorTest, GetCrashPath); |
| 42 FRIEND_TEST(CrashCollectorTest, GetLogContents); | 38 FRIEND_TEST(CrashCollectorTest, GetLogContents); |
| 43 FRIEND_TEST(CrashCollectorTest, ForkExecAndPipe); | 39 FRIEND_TEST(CrashCollectorTest, ForkExecAndPipe); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 59 FRIEND_TEST(ForkExecAndPipeTest, SegFaultHandling); | 55 FRIEND_TEST(ForkExecAndPipeTest, SegFaultHandling); |
| 60 | 56 |
| 61 // Set maximum enqueued crashes in a crash directory. | 57 // Set maximum enqueued crashes in a crash directory. |
| 62 static const int kMaxCrashDirectorySize; | 58 static const int kMaxCrashDirectorySize; |
| 63 | 59 |
| 64 // Writes |data| of |size| to |filename|, which must be a new file. | 60 // Writes |data| of |size| to |filename|, which must be a new file. |
| 65 // If the file already exists or writing fails, return a negative value. | 61 // If the file already exists or writing fails, return a negative value. |
| 66 // Otherwise returns the number of bytes written. | 62 // Otherwise returns the number of bytes written. |
| 67 int WriteNewFile(const FilePath &filename, const char *data, int size); | 63 int WriteNewFile(const FilePath &filename, const char *data, int size); |
| 68 | 64 |
| 69 int ForkExecAndPipe(std::vector<const char *> &arguments, | |
| 70 const char *output_file); | |
| 71 | |
| 72 // Return a filename that has only [a-z0-1_] characters by mapping | 65 // Return a filename that has only [a-z0-1_] characters by mapping |
| 73 // all others into '_'. | 66 // all others into '_'. |
| 74 std::string Sanitize(const std::string &name); | 67 std::string Sanitize(const std::string &name); |
| 75 | 68 |
| 76 // For testing, set the directory always returned by | 69 // For testing, set the directory always returned by |
| 77 // GetCreatedCrashDirectoryByEuid. | 70 // GetCreatedCrashDirectoryByEuid. |
| 78 void ForceCrashDirectory(const char *forced_directory) { | 71 void ForceCrashDirectory(const char *forced_directory) { |
| 79 forced_crash_directory_ = forced_directory; | 72 forced_crash_directory_ = forced_directory; |
| 80 } | 73 } |
| 81 | 74 |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 133 // "\n" characters. Value must not contain "\n" characters. | 126 // "\n" characters. Value must not contain "\n" characters. |
| 134 void AddCrashMetaData(const std::string &key, const std::string &value); | 127 void AddCrashMetaData(const std::string &key, const std::string &value); |
| 135 | 128 |
| 136 // Write a file of metadata about crash. | 129 // Write a file of metadata about crash. |
| 137 void WriteCrashMetaData(const FilePath &meta_path, | 130 void WriteCrashMetaData(const FilePath &meta_path, |
| 138 const std::string &exec_name, | 131 const std::string &exec_name, |
| 139 const std::string &payload_path); | 132 const std::string &payload_path); |
| 140 | 133 |
| 141 CountCrashFunction count_crash_function_; | 134 CountCrashFunction count_crash_function_; |
| 142 IsFeedbackAllowedFunction is_feedback_allowed_function_; | 135 IsFeedbackAllowedFunction is_feedback_allowed_function_; |
| 143 SystemLogging *logger_; | |
| 144 std::string extra_metadata_; | 136 std::string extra_metadata_; |
| 145 const char *forced_crash_directory_; | 137 const char *forced_crash_directory_; |
| 146 const char *lsb_release_; | 138 const char *lsb_release_; |
| 147 }; | 139 }; |
| 148 | 140 |
| 149 #endif // _CRASH_REPORTER_CRASH_COLLECTOR_H_ | 141 #endif // _CRASH_REPORTER_CRASH_COLLECTOR_H_ |
| OLD | NEW |