Index: chromecast/crash/android/crash_handler.h |
diff --git a/chromecast/crash/android/crash_handler.h b/chromecast/crash/android/crash_handler.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..246c5bb8c66e17c80b24e3a2518582fc884cdb0c |
--- /dev/null |
+++ b/chromecast/crash/android/crash_handler.h |
@@ -0,0 +1,72 @@ |
+// Copyright 2014 The Chromium 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 CHROMECAST_CRASH_ANDROID_CRASH_HANDLER_H_ |
+#define CHROMECAST_CRASH_ANDROID_CRASH_HANDLER_H_ |
+ |
+#include <jni.h> |
+#include <string> |
+ |
+#include "base/files/file_path.h" |
+#include "base/macros.h" |
+#include "base/memory/scoped_ptr.h" |
+ |
+namespace google_breakpad { |
+class ExceptionHandler; |
+} |
+ |
+namespace chromecast { |
+class CastCrashReporterClientAndroid; |
+ |
+class CrashHandler { |
+ public: |
+ // Initializes the crash handler for attempting to upload crash dumps with |
+ // the current process's log file. |
+ // Must not be called more than once. |
+ static void Initialize(const std::string& process_type, |
+ const base::FilePath& log_file_path); |
+ |
+ // Returns the directory location for crash dumps. |
+ static bool GetCrashDumpLocation(base::FilePath* crash_dir); |
+ |
+ // Registers JNI methods for this module. |
+ static bool RegisterCastCrashJni(JNIEnv* env); |
+ |
+ // Returns whether or not the user has allowed for uploading crash dumps. |
+ bool CanUploadCrashDump(); |
+ |
+ // Callback with which to create a breakpad::ExceptionHandler that will |
+ // attempt synchronously uploading crash dumps and logs at crash time. |
+ void AttemptUploadCrashDump(); |
+ |
+ // Callback for breakpad::ExceptionHandler to delete crash dumps created by |
+ // the Chrome crash component. Chrome's crash component does not query |
+ // for user consent after initializing breakpad. |
+ void RemoveCrashDumps(); |
+ |
+ private: |
+ CrashHandler(const base::FilePath& log_file_path); |
+ ~CrashHandler(); |
+ |
+ void Initialize(const std::string& process_type); |
+ |
+ // Starts a background thread to look for any past crash dumps and upload them |
+ // to the crash server. |
+ void UploadCrashDumpsAsync(); |
+ |
+ // Path to the current process's log file. |
+ base::FilePath log_file_path_; |
+ |
+ // Location to which crash dumps should be written. |
+ base::FilePath crash_dump_path_; |
+ |
+ scoped_ptr<CastCrashReporterClientAndroid> crash_reporter_client_; |
+ scoped_ptr<google_breakpad::ExceptionHandler> crash_uploader_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(CrashHandler); |
+}; |
+ |
+} // namespace chromecast |
+ |
+#endif // CHROMECAST_CRASH_ANDROID_CRASH_HANDLER_H_ |