chromium/chrome/credential_provider/gaiacp/gcp_crash_reporting_utils.h

// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROME_CREDENTIAL_PROVIDER_GAIACP_GCP_CRASH_REPORTING_UTILS_H_
#define CHROME_CREDENTIAL_PROVIDER_GAIACP_GCP_CRASH_REPORTING_UTILS_H_

namespace base {
class CommandLine;
class FilePath;
}  // namespace base

namespace credential_provider {

class GcpCrashReporterClient;

// Helper function used to prepare the database used by crashpad.
// Since the GCPW dll is run under the SYSTEM account the crash reports will be
// stored in a system level temp folder (see comments for the function
// GetSystemTempFolder in gcp_crash_reporting_utils.cc for how the system temp
// folder is retrieved). The crashpad folder will be under
// "<Temp folder>\GCPW Crashpad".
// After this function call, the caller can request to start an embedded crash
// handler process to listen for crashes on the calling process. When a crash
// occurs on this process, the handler will request that a crash dump be written
// in the crashpad folder and then attempt to upload the crashes to a Crash
// server (if enabled and certain throttling conditions are satisfied).
// Since every DLL_ATTACH event for this dll will try to start crash handling
// there can be multiple entry points to this function via different calls
// to DLL entry points that are exposed. In order to not start one handler per
// entry point that is called, the command line that starts the entry point
// (e.g. the execution of "rundll32.exe gaia1_0.dll,<entry_point>") should also
// provide a "process-type" switch so that these child entry points can re-use
// the same crashpad handler process to report crashes.
void InitializeGcpwCrashReporting(GcpCrashReporterClient* crash_client);

// Returns the system level temp folder in which GCPW can create a crash
// database.
base::FilePath GetFolderForCrashDumps();

// No-op in Chromium builds.
void SetCommonCrashKeys(const base::CommandLine& command_line);

// Returns the system level registry keys for crash dump upload consent.
// Always returns false in Chromium builds.
bool GetGCPWCollectStatsConsent();

}  // namespace credential_provider

#endif  // CHROME_CREDENTIAL_PROVIDER_GAIACP_GCP_CRASH_REPORTING_UTILS_H_