blob: 6af19a67fd3dcd3ef9afb85126fb00c607b722a5 [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.
#ifndef CHROMECAST_APP_ANDROID_CRASH_HANDLER_H_
#define CHROMECAST_APP_ANDROID_CRASH_HANDLER_H_
#include <jni.h>
#include <memory>
#include <string>
#include "base/files/file_path.h"
#include "base/macros.h"
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 to use for a crashpad::CrashReportDatabase
// of raw minidump files. Prior to upload, these files are re-written as MIME
// multipart messages allowing upload metadata and attachments to be included
// as parts of the message.
static bool GetCrashDumpLocation(base::FilePath* crash_dir);
// Returns the directory of crash reports re-written as MIME messages.
static bool GetCrashReportsLocation(base::FilePath* reports_dir);
static void UploadDumps(const base::FilePath& crash_dump_path,
const base::FilePath& reports_path,
const std::string& uuid,
const std::string& application_feedback);
private:
CrashHandler(const std::string& process_type,
const base::FilePath& log_file_path);
~CrashHandler();
void Initialize();
// 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_;
std::unique_ptr<CastCrashReporterClientAndroid> crash_reporter_client_;
DISALLOW_COPY_AND_ASSIGN(CrashHandler);
};
} // namespace chromecast
#endif // CHROMECAST_APP_ANDROID_CRASH_HANDLER_H_