blob: f78bcd00b7e446cb1fb00519da12fa8f42410097 [file] [log] [blame]
// 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.
#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 {
// 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();
CrashHandler(const std::string& process_type,
const base::FilePath& log_file_path);
void Initialize();
// 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_;
std::string process_type_;
scoped_ptr<CastCrashReporterClientAndroid> crash_reporter_client_;
scoped_ptr<google_breakpad::ExceptionHandler> crash_uploader_;
} // namespace chromecast