tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit c5d381e83fa79c4bc1982048d1f8ba06afedc103
parent 85aa2b9e74fb6ac9606dd9d02bb80db352c8699e
Author: agoloman <agoloman@mozilla.com>
Date:   Tue,  2 Dec 2025 00:17:11 +0200

Revert "Bug 1999541 - Implement Nimbus-controlled shutoff switch for "main" ping histograms r=TravisLong" for causing xpc failures @test_TelemetryController.js.

This reverts commit 3727483b1cee8a341badbb1f895e989132a74ca9.

Revert "Bug 1999541 - Implement Nimbus-controlled shutoff switch for "main" ping scalars r=TravisLong"

This reverts commit 20116405691fc30bd5cc8d915effd27443da719a.

Revert "Bug 1999541 - Implement a Legacy Telemetry shutoff switch for pings controlled by Nimbus r=TravisLong"

This reverts commit 83187fd2a59fcba6c8ca96fc05a1cb73a5a4ad4d.

Diffstat:
Mtoolkit/components/nimbus/FeatureManifest.yaml | 32--------------------------------
Mtoolkit/components/telemetry/app/TelemetryControllerParent.sys.mjs | 22----------------------
Mtoolkit/components/telemetry/pings/TelemetrySession.sys.mjs | 46++--------------------------------------------
Dtoolkit/components/telemetry/tests/unit/test_MainPingDisablement.js | 116-------------------------------------------------------------------------------
Mtoolkit/components/telemetry/tests/unit/test_TelemetryController.js | 105-------------------------------------------------------------------------------
Mtoolkit/components/telemetry/tests/unit/xpcshell.toml | 5-----
6 files changed, 2 insertions(+), 324 deletions(-)

diff --git a/toolkit/components/nimbus/FeatureManifest.yaml b/toolkit/components/nimbus/FeatureManifest.yaml @@ -2725,38 +2725,6 @@ gleanInternalSdk: branch: user pref: telemetry.glean.internal.maxPingsPerMinute -legacyTelemetry: - description: "Controls for the Legacy Telemetry data collection system" - owner: chutten@mozilla.com - applications: - - firefox-desktop - hasExposure: false - variables: - disabledPings: - type: json - description: | - A list of Legacy Telemetry pings to disable. - Pings on this list will not be archived or uploaded. - On submit their payloads will be dropped. - Code that collects to and submits the ping will still operate as normal. - Cannot be used to disable the "main", "first-shutdown", "new-profile", - or "deletion-request" pings. - disableMainPingScalars: - type: boolean - description: | - If true, scalars will not be included in "main" pings. - Exceptions are made for two important engagement measures: - `browser.engagement.total_uri_count_normal_and_private_mode` and - `browser.engagement.active_ticks`. - These scalars will continue to be reported as normal, even if all - others are disabled by this variable. - disableMainPingHgrams: - type: boolean - description: | - If true, histograms will not be included in "main" pings. - Data will still be recorded locally, - it will merely not be included in "main" pings when they are submitted. - browserLowMemoryPrefs: description: Prefs which control the browser's behaviour under low memory. owner: haftandilian@mozilla.com diff --git a/toolkit/components/telemetry/app/TelemetryControllerParent.sys.mjs b/toolkit/components/telemetry/app/TelemetryControllerParent.sys.mjs @@ -38,7 +38,6 @@ const lazy = {}; ChromeUtils.defineESModuleGetters(lazy, { ClientID: "resource://gre/modules/ClientID.sys.mjs", CoveragePing: "resource://gre/modules/CoveragePing.sys.mjs", - NimbusFeatures: "resource://nimbus/ExperimentAPI.sys.mjs", TelemetryArchive: "resource://gre/modules/TelemetryArchive.sys.mjs", TelemetryEnvironment: "resource://gre/modules/TelemetryEnvironment.sys.mjs", TelemetryEventPing: "resource://gre/modules/EventPing.sys.mjs", @@ -529,27 +528,6 @@ var Impl = { JSON.stringify(aOptions) ); - const disabledPings = - lazy.NimbusFeatures.legacyTelemetry.getVariable("disabledPings") ?? []; - const UNCONTROLLABLE_PINGS = [ - "main", - "first-shutdown", - "new-profile", - "deletion-request", - ]; - if (disabledPings.includes(aType)) { - if (UNCONTROLLABLE_PINGS.includes(aType)) { - this._log.warn( - `submitExternalPing - type: ${aType} not controllable, but is in the list of disabledPings ${JSON.stringify(disabledPings)}. Ping will submit as normal. Please remove ping type "${aType}" from the Nimbus config.` - ); - } else { - this._log.trace( - `submitExternalPing - type ${aType} disabled by Nimbus.` - ); - return Promise.reject(new Error("Ping disabled.")); - } - } - // Reject pings sent after shutdown. if (this._shutDown) { const errorMessage = diff --git a/toolkit/components/telemetry/pings/TelemetrySession.sys.mjs b/toolkit/components/telemetry/pings/TelemetrySession.sys.mjs @@ -11,7 +11,6 @@ const lazy = {}; ChromeUtils.defineESModuleGetters(lazy, { AddonManagerPrivate: "resource://gre/modules/AddonManager.sys.mjs", - NimbusFeatures: "resource://nimbus/ExperimentAPI.sys.mjs", TelemetryController: "resource://gre/modules/TelemetryController.sys.mjs", TelemetryEnvironment: "resource://gre/modules/TelemetryEnvironment.sys.mjs", TelemetryReportingPolicy: @@ -464,35 +463,19 @@ var Impl = { }, getHistograms: function getHistograms(clearSubsession) { - const snapshot = Services.telemetry.getSnapshotForHistograms( + return Services.telemetry.getSnapshotForHistograms( "main", clearSubsession, !this._testing ); - if ( - lazy.NimbusFeatures.legacyTelemetry.getVariable("disableMainPingHgrams") - ) { - this._log.trace("getHistograms - Main ping histograms are disabled."); - return {}; - } - return snapshot; }, getKeyedHistograms(clearSubsession) { - const snapshot = Services.telemetry.getSnapshotForKeyedHistograms( + return Services.telemetry.getSnapshotForKeyedHistograms( "main", clearSubsession, !this._testing ); - if ( - lazy.NimbusFeatures.legacyTelemetry.getVariable("disableMainPingHgrams") - ) { - this._log.trace( - "getKeyedHistograms - Main ping histograms are disabled." - ); - return {}; - } - return snapshot; }, /** @@ -524,31 +507,6 @@ var Impl = { !this._testing ); - if ( - lazy.NimbusFeatures.legacyTelemetry.getVariable("disableMainPingScalars") - ) { - this._log.trace("getScalars - Main ping scalars are disabled."); - if (keyed) { - // We don't need to preserve any keyed scalars. - scalarsSnapshot = {}; - } else { - let filteredSnapshot = {}; - const scalarsToKeep = [ - "browser.engagement.total_uri_count_normal_and_private_mode", - "browser.engagement.active_ticks", - ]; - for (let scalar of scalarsToKeep) { - if ("parent" in scalarsSnapshot && scalar in scalarsSnapshot.parent) { - if (!("parent" in filteredSnapshot)) { - filteredSnapshot.parent = {}; - } - filteredSnapshot.parent[scalar] = scalarsSnapshot.parent[scalar]; - } - } - scalarsSnapshot = filteredSnapshot; - } - } - return scalarsSnapshot; }, diff --git a/toolkit/components/telemetry/tests/unit/test_MainPingDisablement.js b/toolkit/components/telemetry/tests/unit/test_MainPingDisablement.js @@ -1,116 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - http://creativecommons.org/publicdomain/zero/1.0/ -*/ -/** - * Tests for disabling pieces of the "main" ping. - */ - -const { NimbusFeatures } = ChromeUtils.importESModule( - "resource://nimbus/ExperimentAPI.sys.mjs" -); -const { NimbusTestUtils } = ChromeUtils.importESModule( - "resource://testing-common/NimbusTestUtils.sys.mjs" -); -const { TelemetrySession } = ChromeUtils.importESModule( - "resource://gre/modules/TelemetrySession.sys.mjs" -); - -NimbusTestUtils.init(this); - -add_setup(async function () { - // FOG needs a profile directory - do_get_profile(); - Services.fog.initializeFOG(); - - // Make sure we don't generate unexpected pings due to pref changes. - await setEmptyPrefWatchlist(); - - Services.prefs.setBoolPref(TelemetryUtils.Preferences.FhrUploadEnabled, true); - - await TelemetryController.testSetup(); -}); - -add_task(async function test_scalarDisablement() { - const URI_COUNT_SCALAR = - "browser.engagement.total_uri_count_normal_and_private_mode"; - const ACTIVE_TICKS_SCALAR = "browser.engagement.active_ticks"; - const LAST_SHUTDOWN_SCALAR = "browser.timings.last_shutdown"; - - // Ensure there's data to be snapshotted. - // Both some that shouldn't be filtered... - Glean.browserEngagement.uriCount.add(1); - Glean.browserEngagement.activeTicks.add(1); - // ...and some that should be. - Glean.browserTimings.lastShutdown.set(42); - - info("1. Ensure things begin by storing and reporting as expected."); - let payload = TelemetrySession.getPayload( - "reason", - /*clearSubsession*/ false - ); - - Assert.greater(payload.processes.parent.scalars[URI_COUNT_SCALAR], 0); - Assert.greater(payload.processes.parent.scalars[ACTIVE_TICKS_SCALAR], 0); - Assert.greater(payload.processes.parent.scalars[LAST_SHUTDOWN_SCALAR], 0); - - info("2. Ensure we can disable scalars, leaving important ones intact."); - const { cleanup } = await NimbusTestUtils.setupTest(); - - let nimbusCleanup = await NimbusTestUtils.enrollWithFeatureConfig({ - featureId: NimbusFeatures.legacyTelemetry.featureId, - value: { - disableMainPingScalars: true, - }, - }); - - let filtered = TelemetrySession.getPayload( - "reason", - /*clearSubsession*/ false - ); - - Assert.greater(filtered.processes.parent.scalars[URI_COUNT_SCALAR], 0); - Assert.greater(filtered.processes.parent.scalars[ACTIVE_TICKS_SCALAR], 0); - Assert.ok(!(LAST_SHUTDOWN_SCALAR in filtered.processes.parent.scalars)); - - await nimbusCleanup(); - await cleanup(); -}); - -add_task(async function test_hgramDisablement() { - const ARCHIVE_HGRAM = "TELEMETRY_ARCHIVE_DIRECTORIES_COUNT"; - const SEND_KEYED_HGRAM = "TELEMETRY_SEND_FAILURE_TYPE_PER_PING"; - // Let's check both normal and keyed. - Glean.telemetry.archiveDirectoriesCount.accumulateSingleSample(42); - Glean.telemetry.sendFailureTypePerPing.get("some-ping", "eOK").add(1); - - info("1. Ensure histogram data is reported normally to begin with."); - - let payload = TelemetrySession.getPayload( - "reason", - /*clearSubsession*/ false - ); - - Assert.ok(ARCHIVE_HGRAM in payload.histograms); - Assert.ok(SEND_KEYED_HGRAM in payload.keyedHistograms); - - info("2. Ensure we can disable histograms."); - const { cleanup } = await NimbusTestUtils.setupTest(); - - let nimbusCleanup = await NimbusTestUtils.enrollWithFeatureConfig({ - featureId: NimbusFeatures.legacyTelemetry.featureId, - value: { - disableMainPingHgrams: true, - }, - }); - - let filtered = TelemetrySession.getPayload( - "reason", - /*clearSubsession*/ false - ); - - Assert.ok(!(ARCHIVE_HGRAM in filtered.histograms)); - Assert.ok(!(SEND_KEYED_HGRAM in filtered.keyedHistograms)); - - await nimbusCleanup(); - await cleanup(); -}); diff --git a/toolkit/components/telemetry/tests/unit/test_TelemetryController.js b/toolkit/components/telemetry/tests/unit/test_TelemetryController.js @@ -11,12 +11,6 @@ const { ClientID } = ChromeUtils.importESModule( "resource://gre/modules/ClientID.sys.mjs" ); -const { ExperimentAPI, NimbusFeatures } = ChromeUtils.importESModule( - "resource://nimbus/ExperimentAPI.sys.mjs" -); -const { NimbusTestUtils } = ChromeUtils.importESModule( - "resource://testing-common/NimbusTestUtils.sys.mjs" -); const { TelemetryController } = ChromeUtils.importESModule( "resource://gre/modules/TelemetryController.sys.mjs" ); @@ -39,8 +33,6 @@ const { TestUtils } = ChromeUtils.importESModule( "resource://testing-common/TestUtils.sys.mjs" ); -NimbusTestUtils.init(this); - const PING_FORMAT_VERSION = 4; const DELETION_REQUEST_PING_TYPE = "deletion-request"; const TEST_PING_TYPE = "test-ping-type"; @@ -905,103 +897,6 @@ add_task(async function test_sendNewProfile() { PingServer.resetPingHandler(); }); -add_task(async function test_pingDisablement() { - await TelemetryController.testReset(); - PingServer.clearRequests(); - - info("1. Ensure test pings can be sent."); - let docid = await sendPing(false, false); - let request = await PingServer.promiseNextRequest(); - - let ping = decodeRequestPayload(request); - Assert.equal(docid, ping.id, "Server delivered the ping we just submitted."); - checkPingFormat(ping, TEST_PING_TYPE, false, false); - - info("2. Ensure we can disable a ping by name."); - const { cleanup } = await NimbusTestUtils.setupTest(); - registerCleanupFunction(cleanup); - await ExperimentAPI.ready(); - let nimbusCleanup = await NimbusTestUtils.enrollWithFeatureConfig({ - featureId: NimbusFeatures.legacyTelemetry.featureId, - value: { - disabledPings: [TEST_PING_TYPE], - }, - }); - - PingServer.registerPingHandler(() => - Assert.ok(false, "Telemetry must not send the disabled ping.") - ); - await Assert.rejects( - sendPing(true, true), - /Ping disabled/, - "Disabled ping should not send." - ); - - PingServer.resetPingHandler(); - - info("3. Ensure disabling one kind of ping doesn't disable others."); - const OTHER_PING_TYPE = TEST_PING_TYPE + "-other"; - await TelemetryController.submitExternalPing(OTHER_PING_TYPE, {}, {}); - request = await PingServer.promiseNextRequest(); - - ping = decodeRequestPayload(request); - checkPingFormat(ping, OTHER_PING_TYPE, false, false); - - await nimbusCleanup(); -}); - -add_task(async function test_cantDisableImportantPings() { - await TelemetryController.testReset(); - PingServer.clearRequests(); - - const DO_NOT_DISABLE_THESE_PINGS = [ - "main", - "first-shutdown", - "new-profile", - "deletion-request", - ]; - const PINGS = [TEST_PING_TYPE, ...DO_NOT_DISABLE_THESE_PINGS]; - let nimbusCleanup = await NimbusTestUtils.enrollWithFeatureConfig({ - featureId: NimbusFeatures.legacyTelemetry.featureId, - value: { - disabledPings: PINGS, - }, - }); - - for (const pingName of PINGS) { - info("Check " + pingName); - if (DO_NOT_DISABLE_THESE_PINGS.includes(pingName)) { - let docid = await TelemetryController.submitExternalPing( - pingName, - {}, - {} - ); - let request = await PingServer.promiseNextRequest(); - let ping = decodeRequestPayload(request); - Assert.equal( - docid, - ping.id, - "Server delivered the ping we just submitted." - ); - checkPingFormat(ping, pingName, false, false); - // Ensure we don't get throttled for too many pings in a row. - await TelemetrySend.reset(); - } else { - PingServer.registerPingHandler(() => - Assert.ok(false, "Telemetry must not send the disabled ping.") - ); - await Assert.rejects( - TelemetryController.submitExternalPing(pingName, {}, {}), - /Ping disabled/, - "Disabled ping should not send." - ); - PingServer.resetPingHandler(); - } - } - - await nimbusCleanup(); -}); - // Testing shutdown and checking that pings sent afterwards are rejected. add_task(async function test_pingRejection() { await TelemetryController.testReset(); diff --git a/toolkit/components/telemetry/tests/unit/xpcshell.toml b/toolkit/components/telemetry/tests/unit/xpcshell.toml @@ -40,11 +40,6 @@ skip-if = [ ] tags = "addons" -["test_MainPingDisablement.js"] -run-if = [ - "os != 'android'", # Legacy telemetry is always disabled on Android -] - ["test_MigratePendingPings.js"] run-if = [ "os != 'android'", # Legacy telemetry is a lways disabled on Android