From 36d22d82aa202bb199967e9512281e9a53db42c9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 21:33:14 +0200 Subject: Adding upstream version 115.7.0esr. Signed-off-by: Daniel Baumann --- .../telemetry/docs/data/addons-malware-ping.rst | 42 ++ .../telemetry/docs/data/anonymous-ping.rst | 68 +++ .../docs/data/backgroundhangmonitor-ping.rst | 162 ++++++ .../components/telemetry/docs/data/common-ping.rst | 42 ++ .../telemetry/docs/data/coverage-ping.rst | 40 ++ .../components/telemetry/docs/data/crash-ping.rst | 262 +++++++++ .../telemetry/docs/data/default-browser-ping.rst | 90 +++ .../telemetry/docs/data/deletion-request-ping.rst | 68 +++ .../telemetry/docs/data/downgrade-ping.rst | 30 + .../components/telemetry/docs/data/environment.rst | 615 +++++++++++++++++++++ .../components/telemetry/docs/data/event-ping.rst | 92 +++ .../telemetry/docs/data/first-shutdown-ping.rst | 11 + .../components/telemetry/docs/data/health-ping.rst | 92 +++ .../telemetry/docs/data/heartbeat-ping.rst | 62 +++ toolkit/components/telemetry/docs/data/index.rst | 19 + .../telemetry/docs/data/install-ping.rst | 234 ++++++++ .../docs/data/launcher-process-failure-ping.rst | 96 ++++ .../components/telemetry/docs/data/main-ping.rst | 504 +++++++++++++++++ .../telemetry/docs/data/modules-ping.rst | 46 ++ .../telemetry/docs/data/new-profile-ping.rst | 83 +++ .../telemetry/docs/data/pioneer-study.rst | 58 ++ .../components/telemetry/docs/data/sync-ping.rst | 357 ++++++++++++ .../docs/data/third-party-modules-ping.rst | 135 +++++ .../components/telemetry/docs/data/uitour-ping.rst | 25 + .../telemetry/docs/data/uninstall-ping.rst | 36 ++ .../components/telemetry/docs/data/update-ping.rst | 79 +++ .../docs/data/xfocsp-error-report-ping.rst | 69 +++ 27 files changed, 3417 insertions(+) create mode 100644 toolkit/components/telemetry/docs/data/addons-malware-ping.rst create mode 100644 toolkit/components/telemetry/docs/data/anonymous-ping.rst create mode 100644 toolkit/components/telemetry/docs/data/backgroundhangmonitor-ping.rst create mode 100644 toolkit/components/telemetry/docs/data/common-ping.rst create mode 100644 toolkit/components/telemetry/docs/data/coverage-ping.rst create mode 100644 toolkit/components/telemetry/docs/data/crash-ping.rst create mode 100644 toolkit/components/telemetry/docs/data/default-browser-ping.rst create mode 100644 toolkit/components/telemetry/docs/data/deletion-request-ping.rst create mode 100644 toolkit/components/telemetry/docs/data/downgrade-ping.rst create mode 100644 toolkit/components/telemetry/docs/data/environment.rst create mode 100644 toolkit/components/telemetry/docs/data/event-ping.rst create mode 100644 toolkit/components/telemetry/docs/data/first-shutdown-ping.rst create mode 100644 toolkit/components/telemetry/docs/data/health-ping.rst create mode 100644 toolkit/components/telemetry/docs/data/heartbeat-ping.rst create mode 100644 toolkit/components/telemetry/docs/data/index.rst create mode 100644 toolkit/components/telemetry/docs/data/install-ping.rst create mode 100644 toolkit/components/telemetry/docs/data/launcher-process-failure-ping.rst create mode 100644 toolkit/components/telemetry/docs/data/main-ping.rst create mode 100644 toolkit/components/telemetry/docs/data/modules-ping.rst create mode 100644 toolkit/components/telemetry/docs/data/new-profile-ping.rst create mode 100644 toolkit/components/telemetry/docs/data/pioneer-study.rst create mode 100644 toolkit/components/telemetry/docs/data/sync-ping.rst create mode 100644 toolkit/components/telemetry/docs/data/third-party-modules-ping.rst create mode 100644 toolkit/components/telemetry/docs/data/uitour-ping.rst create mode 100644 toolkit/components/telemetry/docs/data/uninstall-ping.rst create mode 100644 toolkit/components/telemetry/docs/data/update-ping.rst create mode 100644 toolkit/components/telemetry/docs/data/xfocsp-error-report-ping.rst (limited to 'toolkit/components/telemetry/docs/data') diff --git a/toolkit/components/telemetry/docs/data/addons-malware-ping.rst b/toolkit/components/telemetry/docs/data/addons-malware-ping.rst new file mode 100644 index 0000000000..18502d7489 --- /dev/null +++ b/toolkit/components/telemetry/docs/data/addons-malware-ping.rst @@ -0,0 +1,42 @@ + +Add-ons malware ping +==================== + +This ping is generated by an add-on created by Mozilla and shipped to users on older versions of Firefox (44-46). The ping contains information about the profile that might have been altered by a third party malicious add-on. + +Structure: + +.. code-block:: js + + { + type: "malware-addon-states", + ... + clientId: , + environment: { ... }, + // Common ping data. + payload: { + // True if the blocklist was disabled at startup time. + blocklistDisabled: , + // True if the malicious add-on exists and is enabled. False if it + // exists and is disabled or null if the add-on was not found. + mainAddonActive: , + // A value of the malicious add-on block list state, or null if the + // add-on was not found. + mainAddonBlocked: , + // True if a malicious user.js file was found in the profile. + foundUserJS: , + // If a malicious secmodd.db file was found the extension ID that the // file contained.. + secmoddAddon: , . + // A list of IDs for extensions which were hidden by malicious CSS. + hiddenAddons: [ + , + ... + ], + // A mapping of installed add-on IDs with known malicious + // update URL patterns to their exact update URLs. + updateURLs: { + : , + ... + } + } + } diff --git a/toolkit/components/telemetry/docs/data/anonymous-ping.rst b/toolkit/components/telemetry/docs/data/anonymous-ping.rst new file mode 100644 index 0000000000..53e217fc9d --- /dev/null +++ b/toolkit/components/telemetry/docs/data/anonymous-ping.rst @@ -0,0 +1,68 @@ + +"anonymous" ping +================ + +.. note:: + + This ping is no longer sent by Firefox or Fennec. + +This ping is only for product survey purpose and will not track/associate client ID. It's used +to evaluate custom tab usage and see which app is using our custom tab. + +Submission interval & triggers +Since this ping is used to measure the feature usage, it should be sent each time the client app uses our custom tab. + +Dataset: +Only opt-in users will send out this ping. +Since all other pings will collect client ID. We need this custom ping to not do that. + +Size and volume: +The size of submitted payload is small. And this custom ping should be deprecated after it's released for 6 months. + +Privacy: +We won't collect customer information so there'll be no PI leak. + +Data contents: +The content of this ping will let us know which app is using our custom tab. +Just like other feature usage measurement, we only need it for opt-in users (which consider as heavy users). + +Structure: + +.. code-block:: js + + { + "payload": { + "client": // The package name of the caller app. + } + type: , // "anonymous", "activation", "deletion", "saved-session", ... + id: , // a UUID that identifies this ping + creationDate: , // the date the ping was generated + version: , // the version of the ping format, currently 4 + + application: { + architecture: , // build architecture, e.g. x86 + buildId: , // "20141126041045" + name: , // "Firefox" + version: , // "35.0" + displayVersion: , // "35.0b3" + vendor: , // "Mozilla" + platformVersion: , // "35.0" + xpcomAbi: , // e.g. "x86-msvc" + channel: , // "beta" + }, + } + +Field details +------------- + +client +~~~~~~ +It could be ``com.example.app``, which is the identifier of the app. + +Version history +--------------- +* v1: initial version - Will be shipped in `Fennec 55 `_. + +Notes +~~~~~ +There's no option in this custom ping since we don't collect clientId nor environment data. diff --git a/toolkit/components/telemetry/docs/data/backgroundhangmonitor-ping.rst b/toolkit/components/telemetry/docs/data/backgroundhangmonitor-ping.rst new file mode 100644 index 0000000000..db4a28dd8b --- /dev/null +++ b/toolkit/components/telemetry/docs/data/backgroundhangmonitor-ping.rst @@ -0,0 +1,162 @@ + +"backgroundhangmonitor" ping +============================ + +Whenever a thread monitored by the Background Hang Monitor hangs, a stack and +some non-identifying information about the hang is captured. When 50 of these +hangs are collected across all processes, or the browser exits, this ping is +transmitted with the collected hang information. + +This ping is only collected in nightly builds, to avoid the high volume of pings +which would be produced in Beta. + +Structure: + +.. code-block:: js + + { + "type": "backgroundhangmonitor", + ... // common ping data + "environment": { ... }, + "payload": { + "timeSinceLastPing": , // uptime since last backgroundhangmonitor ping (ms). + "modules": [ + [ + , // Name of the file holding the debug information. + // Breakpad ID of this module. + ], + ... + ], + "hangs": [ + { + "duration": , // duration of the hang in milliseconds. + "thread": , // name of the hanging thread. + "runnableName": , // name of the runnable executing during the hang. + // Runnable names are only collected for the XPCOM main thread. + "process": , // Type of process that hung, see below for a list of types. + "remoteType": , // Remote type of process which hung, see below. + "annotations": [ ... ], // A list of annotations on the hang, see below. + "pseudoStack": [ ... ], // List of label stack frames and js frames. + "stack": [ ... ], // interleaved hang stack, see below. + }, + ... + ] + } + } + +.. note:: + + Hangs are collected whenever the current runnable takes over 128ms. + +Process Types +------------- + +The ``process`` field is a string denoting the kind of process that hung. Hangs +are currently sent only for the processes below: + ++---------------+---------------------------------------------------+ +| Kind | Description | ++===============+===================================================+ +| default | Main process, also known as the browser process | ++---------------+---------------------------------------------------+ +| tab | Content process | ++---------------+---------------------------------------------------+ +| gpu | GPU process | ++---------------+---------------------------------------------------+ + +Remote Type +----------- + +The ``remoteType`` field is a string denoting the type of content process that +hung. As such it is only non-null if ``processType`` contains the ``tab`` value. + +The supported ``remoteType`` values are documented in the crash ping +documentation: :ref:`remote-process-types`. + +Stack Traces +------------ + +Each hang object contains a ``stack`` field which has been populated with an +interleaved stack trace of the hung thread. An interleaved stack consists of a +native backtrace with additional frames interleaved, representing chrome JS and +label stack entries. + +The structure that manages the label stack and the JS stack was called +"PseudoStack" in the past and is now called "ProfilingStack". + +Note that this field only contains native stack frames, label stack and chrome +JS script frames. If native stacks can not be collected on the target platform, +or stackwalking was not initialized, there will be no native frames present, and +the stack will consist only of label stack and chrome JS script frames. + +A single frame in the stack is either a raw string, representing a label stack +or chrome JS script frame, or a native stack frame. + +Label stack frames contain the static string from all insances of the +AUTO_PROFILER_LABEL* macros. Additionally, dynamic strings are collected from +all usages of the AUTO_PROFILER_LABEL_DYNAMIC*_NONSENSITIVE macros. The dynamic +strings are simply appended to the static strings after a space character. + +Current dynamic string collections are as follows: + ++--------------------------------------------------+-----------------------------------------+ +| Static string | Dynamic | ++==================================================+=========================================+ +| ChromeUtils::Import | Associated chrome:// or resource:// URI | ++--------------------------------------------------+-----------------------------------------+ +| nsJSContext::GarbageCollectNow | GC reason string | ++--------------------------------------------------+-----------------------------------------+ +| mozJSSubScriptLoader::DoLoadSubScriptWithOptions | Associated chrome:// or resource:// URI | ++--------------------------------------------------+-----------------------------------------+ +| PresShell::DoFlushPendingNotifications | Flush type | ++--------------------------------------------------+-----------------------------------------+ +| nsObserverService::NotifyObservers | Associated observer topic | ++--------------------------------------------------+-----------------------------------------+ + +Native stack frames are as such: + +.. code-block:: js + + [ + , // Index in the payload.modules list of the module description. + // -1 if this frame was not in a valid module. + // Hex string (e.g. "FF0F") of the frame offset in the module. + ] + +Annotations +----------- + +The annotations field is an array of key-value pairs, for example if the user +was interacting during a hang the annotations field would look something like +this: + +.. code-block:: js + + [ + [ + "UserInteracting", + "true" + ] + ] + +The following annotations are currently present in tree: + ++-----------------+-------------------------------------------------+ +| Name | Description | ++=================+=================================================+ +| UserInteracting | "true" if the user was actively interacting | ++-----------------+-------------------------------------------------+ +| pluginName | Name of the currently running plugin | ++-----------------+-------------------------------------------------+ +| pluginVersion | Version of the currently running plugin | ++-----------------+-------------------------------------------------+ +| HangUIShown | "true" if the hang UI was shown | ++-----------------+-------------------------------------------------+ +| HangUIContinued | "true" if continue was selected in the hang UI | ++-----------------+-------------------------------------------------+ +| HangUIDontShow | "true" if the hang UI was not shown | ++-----------------+-------------------------------------------------+ +| Unrecovered | "true" if the hang persisted until process exit | ++-----------------+-------------------------------------------------+ + +Additional annotations can be added at run-time via :doc:`../collection/user-interactions`. diff --git a/toolkit/components/telemetry/docs/data/common-ping.rst b/toolkit/components/telemetry/docs/data/common-ping.rst new file mode 100644 index 0000000000..1587131808 --- /dev/null +++ b/toolkit/components/telemetry/docs/data/common-ping.rst @@ -0,0 +1,42 @@ + +Common ping format +================== + +This defines the top-level structure of a Telemetry ping. +It contains basic information shared between different ping types, which enables proper storage and processing of the raw pings server-side. + +It also contains optional further information: + +* the :doc:`environment data <../data/environment>`, which contains important info to correlate the measurements against +* the ``clientId``, a UUID identifying a profile and allowing user-oriented correlation of data + +*Note:* Both are not submitted with all ping types due to privacy concerns. This and the data it that can be correlated against is inspected under the `data collection policy `_. + +Finally, the structure also contains the `payload`, which is the specific data submitted for the respective *ping type*. + +Structure: + +.. code-block:: js + + { + type: , // "main", "activation", "optout", "saved-session", ... + id: , // a UUID that identifies this ping + creationDate: , // the date the ping was generated + version: , // the version of the ping format, currently 4 + + application: { + architecture: , // build architecture, e.g. x86 + buildId: , // "20141126041045" + name: , // "Firefox" + version: , // "35.0" + displayVersion: , // "35.0b3" + vendor: , // "Mozilla" + platformVersion: , // "35.0" + xpcomAbi: , // e.g. "x86-msvc" + channel: , // "beta" + }, + + clientId: , // optional + environment: { ... }, // optional, not all pings contain the environment + payload: { ... }, // the actual payload data for this ping type + } diff --git a/toolkit/components/telemetry/docs/data/coverage-ping.rst b/toolkit/components/telemetry/docs/data/coverage-ping.rst new file mode 100644 index 0000000000..3db93d9074 --- /dev/null +++ b/toolkit/components/telemetry/docs/data/coverage-ping.rst @@ -0,0 +1,40 @@ + +"coverage" ping +=============== + +This ping is not enabled by default. When enabled, a ping is generated a total of once per profile, as a diagnostic tool +to determine whether Telemetry is working for users. + +This ping contains no client id and no environment data. + +You can find more background information in `this blog post `_. + +Structure: + +.. code-block:: js + + { + "appVersion": "63.0a1", + "appUpdateChannel": "nightly", + "osName": "Darwin", + "osVersion": "17.7.0", + "telemetryEnabled": 1 + } + +Expected behaviours +------------------- +The following is a list of expected behaviours for the ``coverage`` ping: + +- The ping will only be sent once per ping version, per profile. +- If sending the ping fails, it will be retried on startup. +- A totally arbitrary UUID is generated on first run on a new profile, to use for filtering duplicates. +- The ping is sent to a different endpoint not using existing Telemetry. +- The ping does not honor the Telemetry enabled preference, but provides its own opt-out preference: `toolkit.coverage.opt-out`. +- The ping is disabled by default. It is intended to be enabled for users on an experimental basis using the preference `toolkit.coverage.enabled`. + +Version History +--------------- + +- Firefox 64: + + - "coverage" ping shipped (`bug 1492656 `_). diff --git a/toolkit/components/telemetry/docs/data/crash-ping.rst b/toolkit/components/telemetry/docs/data/crash-ping.rst new file mode 100644 index 0000000000..7d25f97319 --- /dev/null +++ b/toolkit/components/telemetry/docs/data/crash-ping.rst @@ -0,0 +1,262 @@ +Crash ping +========== + +This ping is captured after the main Firefox process crashes or after a child process +process crashes, whether or not the crash report is submitted to +crash-stats.mozilla.org. It includes non-identifying metadata about the crash. + +This ping is sent either by the ``CrashManager`` or by the crash reporter +client. The ``CrashManager`` is responsible for sending crash pings for the +child processes crashes, which are sent right after the crash is detected, +as well as for main process crashes, which are sent after Firefox restarts +successfully. The crash reporter client sends crash pings only for main process +crashes whether or not the user also reports the crash. The crash reporter +client will not send the crash ping if telemetry has been disabled in Firefox. + +The environment block that is sent with this ping varies: if Firefox was running +long enough to record the environment block before the crash, then the environment +at the time of the crash will be recorded and ``hasCrashEnvironment`` will be true. +If Firefox crashed before the environment was recorded, ``hasCrashEnvironment`` will +be false and the recorded environment will be the environment at time of submission. + +The client ID is submitted with this ping. + +The metadata field holds a subset of the crash annotations, all field values +are stored as strings but some may be interpreted either as numbers or +boolean values. Numbers are integral unless stated otherwise in the +description. Boolean values are set to "1" when true, "0" when false. If +they're absent then they should be interpreted as false. + +Structure: + +.. code-block:: js + + { + type: "crash", + ... common ping data + clientId: , + environment: { ... }, + payload: { + crashDate: "YYYY-MM-DD", + crashTime: , // per-hour resolution + version: 1, + sessionId: , // Telemetry ID of crashing session. May be missing for crashes that happen early in startup + crashId: , // Optional, ID of the associated crash + minidumpSha256Hash: , // SHA256 hash of the minidump file + processType: , // Type of process that crashed, see below for a list of types + stackTraces: { ... }, // Optional, see below + metadata: { // Annotations saved while Firefox was running. See CrashAnnotations.yaml for more information + ProductID: "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}", + ProductName: "Firefox", + ReleaseChannel: , + Version: , + BuildID: "YYYYMMDDHHMMSS", + AsyncShutdownTimeout: , // Optional, present when a shutdown blocker failed to respond within a reasonable amount of time + AvailablePageFile: , // Windows-only, available paging file in bytes + AvailablePhysicalMemory: , // Windows-only, available physical memory in bytes + AvailableSwapMemory: , // macOS- and Linux-only, available swap space + AvailableVirtualMemory: , // Windows-only, available virtual memory in bytes + BackgroundTaskName: "task_name", // Optional, if the app was invoked in background task mode via `--backgroundtask task_name` + BlockedDllList: , // Windows-only, see WindowsDllBlocklist.cpp for details + BlocklistInitFailed: "1", // Windows-only, present only if the DLL blocklist initialization failed + CrashTime: