Chromium Code Reviews| 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..189f3a64d80054bb7b2b7374399ba91952ed2ee9 |
| --- /dev/null |
| +++ b/chromecast/crash/android/crash_handler.h |
| @@ -0,0 +1,71 @@ |
| +// 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); |
| + |
| + // 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(); |
| + |
| + // Registers JNI methods for this module. |
| + static bool RegisterCastCrashJni(JNIEnv* env); |
|
Lei Zhang
2014/10/06 22:44:25
nit: move this up with the other static methods.
gunsch
2014/10/09 00:20:56
Done.
|
| + |
| + private: |
| + CrashHandler(const std::string& process_type, |
| + const base::FilePath& log_file_path); |
| + ~CrashHandler(); |
| + |
| + // 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_ |