gecko-dev/xpcom/system/nsICrashReporter.idl

160 строки
4.9 KiB
Plaintext
Исходник Обычный вид История

2012-05-21 15:12:37 +04:00
/* 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/. */
2007-07-25 05:06:15 +04:00
#include "nsISupports.idl"
interface nsIFile;
interface nsIURL;
2007-07-25 05:06:15 +04:00
/**
* Provides access to crash reporting functionality.
*
2007-07-25 05:06:15 +04:00
* @status UNSTABLE - This interface is not frozen and will probably change in
* future releases.
*/
[scriptable, uuid(4b74c39a-cf69-4a8a-8e63-169d81ad1ecf)]
2007-07-25 05:06:15 +04:00
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;
Bug 1322611 - After a crash compute the SHA256 hash of a minidump and attach it to the crash ping; r=Ted, nchen This patch changes the crashreporter client code as well as the crash service code to compute a SHA256 hash of a crash' minidump file and add it to the crash ping. The crash service code computes the hash on the fly before handing over the crash to the crash manager; the crash manager will then add it to the crash ping. The crashreporter client on the other hand sends the hash via the ping it generates but it also adds it to the event file so that the crash manager can pick it up and send it along with its own crash ping. On Fennec the crashreporter activity takes care of computing the hash. SHA256 hash computation uses nsICryptoHash in the crash service, the java.security.MessageDigest class in Fennec, the bundled NSS library in the crashreporter when running on Windows and Mac and the system-provided NSS library under Linux. The latter is required because the crashreporter client uses the system curl library which is linked to NSS and which would thus clash with the bundled one if used together. This patch introduces two new methods for the nsICrashService interface: |getMinidumpForID()| and |getExtraFileForID()|, these reliably retrieve the .dmp and .extra files associated with a crash and ensure the files exist before returning. These new methods are used in the CrashService for processing and will become the only way to reliably retrieve those files from a crash ID. MozReview-Commit-ID: 8BKvqj6URcO --HG-- extra : source : a4d8291c56fcde00238ab3166bbe6af6dd602340
2017-02-16 09:36:57 +03:00
/**
* Get the minidump file corresponding to the specified ID.
*
* @param id
* ID of the crash. Likely a UUID.
*
* @return The minidump file associated with the ID.
*
* @throw NS_ERROR_FILE_NOT_FOUND if the minidump could not be found
*/
nsIFile getMinidumpForID(in AString id);
/**
* Get the extra file corresponding to the specified ID.
*
* @param id
* ID of the crash. Likely a UUID.
*
* @return The extra file associated with the ID.
*
* @throw NS_ERROR_FILE_NOT_FOUND if the extra file could not be found
*/
nsIFile getExtraFileForID(in AString id);
2007-07-25 05:06:15 +04:00
/**
* Add some extra data to be submitted with a crash report.
*
2007-07-25 05:06:15 +04:00
* @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);
2007-07-25 05:06:15 +04:00
};