// 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 #include #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(); void UploadCrashDumps(); private: CrashHandler(const base::FilePath& log_file_path); ~CrashHandler(); void Initialize(const std::string& process_type); // Starts a thread to periodically check for uploads void InitializeUploader(); // 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 crash_reporter_client_; scoped_ptr crash_uploader_; DISALLOW_COPY_AND_ASSIGN(CrashHandler); }; } // namespace chromecast #endif // CHROMECAST_CRASH_ANDROID_CRASH_HANDLER_H_