6#ifndef CRASH_REPORTER_H
7#define CRASH_REPORTER_H
10#include <QLoggingCategory>
16#ifndef COCKATRICE_WITH_CRASH_REPORTING
17#define COCKATRICE_WITH_CRASH_REPORTING 0
20#ifndef COCKATRICE_SENTRY_DSN
21#define COCKATRICE_SENTRY_DSN ""
24#ifndef COCKATRICE_SENTRY_RELEASE
25#define COCKATRICE_SENTRY_RELEASE ""
69 void init(
const QString &dsn,
70 const QString &release,
71 const QString &databasePath,
73 [[nodiscard]]
bool isReady()
const;
77 bool sendReport(
const QString &redactedPreview,
const QString &userNote = QString());
96 const QString &redactedLogText,
97 const QString &userNoteText);
static bool isReportingEnabled(const QString &dsn, PersonalSettings::CrashReportingMode consentMode)
SDK-independent gating decision, unit-testable in OFF builds.
Definition crash_reporter.cpp:220
static bool isDsnWellFormed(const QString &dsn)
Whether a DSN has the shape the build and the SDK require: <scheme>://<key><host>/<project-id>.
Definition crash_reporter.cpp:178
int attachToPendingCrashEnvelopes(const QString &redactedLogText, const QString &userNoteText)
Append the redacted log (and optional user note) to every pending native crash envelope in the local ...
Definition crash_reporter.cpp:553
CrashReporter(const CrashReporter &)=delete
static QString sanitizeLogLine(const QString &line)
Definition crash_reporter.cpp:586
void giveConsent()
Definition crash_reporter.cpp:378
void revokeConsent()
Definition crash_reporter.cpp:387
QString sessionLockPath
Definition crash_reporter.h:173
bool isReady() const
Definition crash_reporter.cpp:290
static QStringList pendingEnvelopePaths(const QString &databasePath)
Pending crash envelopes in <database>: the consent-held files in <database>/cache and the in-flight f...
Definition crash_reporter.cpp:505
CrashReporter(CrashReporter &&)=delete
bool beginSession(const QString &dir)
Claim this process's session lock, reporting a previous unclean exit.
Definition crash_reporter.cpp:308
void endSession()
Definition crash_reporter.cpp:364
QString sentryDatabasePath
Definition crash_reporter.h:172
static QString describeDsn(const QString &dsn)
Human-readable destination of a DSN, e.g. "o0.ingest.sentry.io (project 1234567)".
Definition crash_reporter.cpp:183
CrashReporter & operator=(const CrashReporter &)=delete
std::unique_ptr< QLockFile > sessionLock
Definition crash_reporter.h:174
static QString describeOriginMismatch(const QString &envelopePath, const QString ¤tDsn)
Describe the captured-for DSN of a pending envelope when it points at a different destination than th...
Definition crash_reporter.cpp:193
void shutdown()
Definition crash_reporter.cpp:295
void init(const QString &dsn, const QString &release, const QString &databasePath, PersonalSettings::CrashReportingMode consentMode)
Definition crash_reporter.cpp:225
static QString redactCockatriceUrls(const QString &line)
Definition crash_reporter.cpp:595
static bool appendAttachmentToEnvelope(const QString &envelopePath, const QString &filename, const QByteArray &payload)
Append one attachment item to a cached Sentry envelope file.
Definition crash_reporter.cpp:463
bool ready
Definition crash_reporter.h:171
bool sendReport(const QString &redactedPreview, const QString &userNote=QString())
Definition crash_reporter.cpp:402
CrashReporter & operator=(CrashReporter &&)=delete
CrashReportingMode
Definition personal_settings.h:28
Q_DECLARE_LOGGING_CATEGORY(CrashReportLog)