#ifndef CHROME_APP_CHROME_CRASH_REPORTER_CLIENT_H_
#define CHROME_APP_CHROME_CRASH_REPORTER_CLIENT_H_
#include "build/build_config.h"
#if !BUILDFLAG(IS_WIN)
#include <memory>
#include "base/no_destructor.h"
#include "components/crash/core/app/crash_reporter_client.h"
class ChromeCrashReporterClient : public crash_reporter::CrashReporterClient {
public:
static void Create();
ChromeCrashReporterClient(const ChromeCrashReporterClient&) = delete;
ChromeCrashReporterClient& operator=(const ChromeCrashReporterClient&) =
delete;
#if BUILDFLAG(IS_CHROMEOS)
static bool ShouldPassCrashLoopBefore(const std::string& process_type);
#endif
#if !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_ANDROID)
void SetCrashReporterClientIdFromGUID(
const std::string& client_guid) override;
#endif
#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC)
base::FilePath GetReporterLogFilename() override;
bool GetShouldDumpLargerDumps() override;
#endif
bool GetCrashDumpLocation(base::FilePath* crash_dir) override;
void GetProductInfo(ProductInfo* product_info) override;
#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
bool GetCrashMetricsLocation(base::FilePath* metrics_dir) override;
#endif
bool IsRunningUnattended() override;
bool GetCollectStatsConsent() override;
#if BUILDFLAG(IS_MAC)
bool ReportingIsEnforcedByPolicy(bool* breakpad_enabled) override;
#endif
#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
bool ShouldMonitorCrashHandlerExpensively() override;
#endif
bool EnableBreakpadForProcess(const std::string& process_type) override;
private:
friend class base::NoDestructor<ChromeCrashReporterClient>;
ChromeCrashReporterClient();
~ChromeCrashReporterClient() override;
};
#endif
#endif