summaryrefslogtreecommitdiff
path: root/xpcom/system/nsICrashReporter.idl
diff options
context:
space:
mode:
Diffstat (limited to 'xpcom/system/nsICrashReporter.idl')
-rw-r--r--xpcom/system/nsICrashReporter.idl135
1 files changed, 135 insertions, 0 deletions
diff --git a/xpcom/system/nsICrashReporter.idl b/xpcom/system/nsICrashReporter.idl
new file mode 100644
index 0000000000..c2f590098c
--- /dev/null
+++ b/xpcom/system/nsICrashReporter.idl
@@ -0,0 +1,135 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "nsISupports.idl"
+
+interface nsIFile;
+interface nsIURL;
+
+/**
+ * Provides access to crash reporting functionality.
+ *
+ * @status UNSTABLE - This interface is not frozen and will probably change in
+ * future releases.
+ */
+
+[scriptable, uuid(4b74c39a-cf69-4a8a-8e63-169d81ad1ecf)]
+interface nsICrashReporter : nsISupports
+{
+ /**
+ * Get the enabled status of the crash reporter.
+ */
+ readonly attribute boolean enabled;
+
+ /**
+ * Enable or disable crash reporting at runtime. Not available to script
+ * because the JS engine relies on proper exception handler chaining.
+ */
+ [noscript]
+ void setEnabled(in bool enabled);
+
+ /**
+ * Get or set the URL to which crash reports will be submitted.
+ * Only https and http URLs are allowed, as the submission is handled
+ * by OS-native networking libraries.
+ *
+ * @throw NS_ERROR_NOT_INITIALIZED if crash reporting is not initialized
+ * @throw NS_ERROR_INVALID_ARG on set if a non-http(s) URL is assigned
+ * @throw NS_ERROR_FAILURE on get if no URL is set
+ */
+ attribute nsIURL serverURL;
+
+ /**
+ * Get or set the path on the local system to which minidumps will be
+ * written when a crash happens.
+ *
+ * @throw NS_ERROR_NOT_INITIALIZED if crash reporting is not initialized
+ */
+ attribute nsIFile minidumpPath;
+
+ /**
+ * Add some extra data to be submitted with a crash report.
+ *
+ * @param key
+ * Name of the data to be added.
+ * @param data
+ * Data to be added.
+ *
+ * @throw NS_ERROR_NOT_INITIALIZED if crash reporting not initialized
+ * @throw NS_ERROR_INVALID_ARG if key or data contain invalid characters.
+ * Invalid characters for key are '=' and
+ * '\n'. Invalid character for data is '\0'.
+ */
+ void annotateCrashReport(in AUTF8String key, in AUTF8String data);
+
+ /**
+ * Append some data to the "Notes" field, to be submitted with a crash report.
+ * Unlike annotateCrashReport, this method will append to existing data.
+ *
+ * @param data
+ * Data to be added.
+ *
+ * @throw NS_ERROR_NOT_INITIALIZED if crash reporting not initialized
+ * @throw NS_ERROR_INVALID_ARG if data contains invalid characters.
+ * The only invalid character is '\0'.
+ */
+ void appendAppNotesToCrashReport(in ACString data);
+
+ /**
+ * Register a given memory range to be included in the crash report.
+ *
+ * @param ptr
+ * The starting address for the bytes.
+ * @param size
+ * The number of bytes to include.
+ *
+ * @throw NS_ERROR_NOT_INITIALIZED if crash reporting not initialized
+ * @throw NS_ERROR_NOT_IMPLEMENTED if unavailable on the current OS
+ */
+ void registerAppMemory(in unsigned long long ptr, in unsigned long long size);
+
+ /**
+ * Write a minidump immediately, with the user-supplied exception
+ * information. This is implemented on Windows only, because
+ * SEH (structured exception handling) exists on Windows only.
+ *
+ * @param aExceptionInfo EXCEPTION_INFO* provided by Window's SEH
+ */
+ [noscript] void writeMinidumpForException(in voidPtr aExceptionInfo);
+
+ /**
+ * Append note containing an Obj-C exception's info.
+ *
+ * @param aException NSException object to append note for
+ */
+ [noscript] void appendObjCExceptionInfoToAppNotes(in voidPtr aException);
+
+ /**
+ * User preference for submitting crash reports.
+ */
+ attribute boolean submitReports;
+
+ /**
+ * Cause the crash reporter to re-evaluate where crash events should go.
+ *
+ * This should be called during application startup and whenever profiles
+ * change.
+ */
+ void UpdateCrashEventsDir();
+
+ /**
+ * Save an anonymized memory report file for inclusion in a future crash
+ * report in this session.
+ *
+ * @throws NS_ERROR_NOT_INITIALIZED if crash reporting is disabled.
+ */
+ void saveMemoryReport();
+
+ /**
+ * Set the telemetry session ID which is recorded in crash metadata. This is
+ * saved in the crash manager and telemetry but is not submitted as a
+ * crash-stats annotation.
+ */
+ void setTelemetrySessionId(in AUTF8String id);
+};