| Index: components/crash/app/crash_reporter_client.h
|
| diff --git a/components/crash/app/crash_reporter_client.h b/components/crash/app/crash_reporter_client.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a3a003c40d7b112df62dbb82975bc766dd311be1
|
| --- /dev/null
|
| +++ b/components/crash/app/crash_reporter_client.h
|
| @@ -0,0 +1,158 @@
|
| +// Copyright 2013 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 COMPONENTS_CRASH_APP_CRASH_REPORTER_CLIENT_H_
|
| +#define COMPONENTS_CRASH_APP_CRASH_REPORTER_CLIENT_H_
|
| +
|
| +#include <string>
|
| +
|
| +#include "base/strings/string16.h"
|
| +#include "build/build_config.h"
|
| +
|
| +namespace base {
|
| +class FilePath;
|
| +}
|
| +
|
| +#if defined(OS_MACOSX)
|
| +// We don't want to directly include
|
| +// breakpad/src/client/mac/Framework/Breakpad.h here, so we repeat the
|
| +// definition of BreakpadRef.
|
| +//
|
| +// On Mac, when compiling without breakpad support, a stub implementation is
|
| +// compiled in. Not having any includes of the breakpad library allows for
|
| +// reusing this header for the stub.
|
| +typedef void* BreakpadRef;
|
| +#endif
|
| +
|
| +namespace crash_reporter {
|
| +
|
| +class CrashReporterClient;
|
| +
|
| +// Setter and getter for the client. The client should be set early, before any
|
| +// crash reporter code is called, and should stay alive throughout the entire
|
| +// runtime.
|
| +void SetCrashReporterClient(CrashReporterClient* client);
|
| +
|
| +#if defined(CRASH_IMPLEMENTATION)
|
| +// The components's embedder API should only be used by the component.
|
| +CrashReporterClient* GetCrashReporterClient();
|
| +#endif
|
| +
|
| +// Interface that the embedder implements.
|
| +class CrashReporterClient {
|
| + public:
|
| + CrashReporterClient();
|
| + virtual ~CrashReporterClient();
|
| +
|
| +#if !defined(OS_MACOSX)
|
| + // Sets the crash reporting client ID, a unique identifier for the client
|
| + // that is sending crash reports. After it is set, it should not be changed.
|
| + // |client_guid| may either be a full GUID or a GUID that was already stripped
|
| + // from its dashes.
|
| + //
|
| + // On Mac OS X, this is the responsibility of Crashpad, and can not be set
|
| + // directly by the client.
|
| + virtual void SetCrashReporterClientIdFromGUID(const std::string& client_guid);
|
| +#endif
|
| +
|
| +#if defined(OS_WIN)
|
| + // Returns true if an alternative location to store the minidump files was
|
| + // specified. Returns true if |crash_dir| was set.
|
| + virtual bool GetAlternativeCrashDumpLocation(base::FilePath* crash_dir);
|
| +
|
| + // Returns a textual description of the product type and version to include
|
| + // in the crash report.
|
| + virtual void GetProductNameAndVersion(const base::FilePath& exe_path,
|
| + base::string16* product_name,
|
| + base::string16* version,
|
| + base::string16* special_build,
|
| + base::string16* channel_name);
|
| +
|
| + // Returns true if a restart dialog should be displayed. In that case,
|
| + // |message| and |title| are set to a message to display in a dialog box with
|
| + // the given title before restarting, and |is_rtl_locale| indicates whether
|
| + // to display the text as RTL.
|
| + virtual bool ShouldShowRestartDialog(base::string16* title,
|
| + base::string16* message,
|
| + bool* is_rtl_locale);
|
| +
|
| + // Returns true if it is ok to restart the application. Invoked right before
|
| + // restarting after a crash.
|
| + virtual bool AboutToRestart();
|
| +
|
| + // Returns true if the crash report uploader supports deferred uploads.
|
| + virtual bool GetDeferredUploadsSupported(bool is_per_user_install);
|
| +
|
| + // Returns true if the running binary is a per-user installation.
|
| + virtual bool GetIsPerUserInstall(const base::FilePath& exe_path);
|
| +
|
| + // Returns true if larger crash dumps should be dumped.
|
| + virtual bool GetShouldDumpLargerDumps(bool is_per_user_install);
|
| +
|
| + // Returns the result code to return when breakpad failed to respawn a
|
| + // crashed process.
|
| + virtual int GetResultCodeRespawnFailed();
|
| +
|
| + // Invoked when initializing the crash reporter in the browser process.
|
| + virtual void InitBrowserCrashDumpsRegKey();
|
| +
|
| + // Invoked before attempting to write a minidump.
|
| + virtual void RecordCrashDumpAttempt(bool is_real_crash);
|
| +
|
| + // Invoked with the results of a minidump attempt.
|
| + virtual void RecordCrashDumpAttemptResult(bool is_real_crash, bool succeeded);
|
| +#endif
|
| +
|
| +#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_IOS)
|
| + // Returns a textual description of the product type and version to include
|
| + // in the crash report. Neither out parameter should be set to NULL.
|
| + virtual void GetProductNameAndVersion(const char** product_name,
|
| + const char** version);
|
| +
|
| + virtual base::FilePath GetReporterLogFilename();
|
| +
|
| + // Custom crash minidump handler after the minidump is generated.
|
| + // Returns true if the minidump is handled (client); otherwise, return false
|
| + // to fallback to default handler.
|
| + // WARNING: this handler runs in a compromised context. It may not call into
|
| + // libc nor allocate memory normally.
|
| + virtual bool HandleCrashDump(const char* crashdump_filename);
|
| +#endif
|
| +
|
| + // The location where minidump files should be written. Returns true if
|
| + // |crash_dir| was set.
|
| + virtual bool GetCrashDumpLocation(base::FilePath* crash_dir);
|
| +
|
| + // Register all of the potential crash keys that can be sent to the crash
|
| + // reporting server. Returns the size of the union of all keys.
|
| + virtual size_t RegisterCrashKeys();
|
| +
|
| + // Returns true if running in unattended mode (for automated testing).
|
| + virtual bool IsRunningUnattended();
|
| +
|
| + // Returns true if the user has given consent to collect stats.
|
| + virtual bool GetCollectStatsConsent();
|
| +
|
| +#if defined(OS_WIN) || defined(OS_MACOSX)
|
| + // Returns true if crash reporting is enforced via management policies. In
|
| + // that case, |breakpad_enabled| is set to the value enforced by policies.
|
| + virtual bool ReportingIsEnforcedByPolicy(bool* breakpad_enabled);
|
| +#endif
|
| +
|
| +#if defined(OS_ANDROID)
|
| + // Returns the descriptor key of the android minidump global descriptor.
|
| + virtual int GetAndroidMinidumpDescriptor();
|
| +
|
| + // Returns true if breakpad microdumps should be enabled. This orthogonal to
|
| + // the standard minidump uploader (which depends on the user consent).
|
| + virtual bool ShouldEnableBreakpadMicrodumps();
|
| +#endif
|
| +
|
| + // Returns true if breakpad should run in the given process type.
|
| + virtual bool EnableBreakpadForProcess(const std::string& process_type);
|
| +};
|
| +
|
| +} // namespace crash_reporter
|
| +
|
| +#endif // COMPONENTS_CRASH_APP_CRASH_REPORTER_CLIENT_H_
|
|
|