tor-browser

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

commit 2e8cbd62ceb3f409bc311c73c86d80f81d79c115
parent 6d2657e84691a4b02d3093623a22edf128ae697b
Author: Jens Stutte <jstutte@mozilla.com>
Date:   Thu, 16 Oct 2025 15:33:23 +0000

Bug 1991851 - TelemetryFeed should track the "browser-open-newtab-start" observer status. r=home-newtab-reviewers,thecount

Differential Revision: https://phabricator.services.mozilla.com/D267572

Diffstat:
Mbrowser/extensions/newtab/lib/TelemetryFeed.sys.mjs | 25++++++++++++++++---------
1 file changed, 16 insertions(+), 9 deletions(-)

diff --git a/browser/extensions/newtab/lib/TelemetryFeed.sys.mjs b/browser/extensions/newtab/lib/TelemetryFeed.sys.mjs @@ -157,6 +157,7 @@ export class TelemetryFeed { this._privateRandomContentTelemetryProbablityValues = {}; this.newtabContentPing = new lazy.NewTabContentPing(); + this._initialized = false; XPCOMUtils.defineLazyPreferenceGetter( this, @@ -244,11 +245,20 @@ export class TelemetryFeed { } init() { + // TODO: It looks like (at least) browser_newtab_glean.js and + // browser_newtab_ping.js depend on most of the following to be executed + // even if init() is called more than once. That feels fragile. + this._beginObservingNewtabPingPrefs(); - Services.obs.addObserver( - this.browserOpenNewtabStart, - "browser-open-newtab-start" - ); + + if (!this._initialized) { + this._initialized = true; + Services.obs.addObserver( + this.browserOpenNewtabStart, + "browser-open-newtab-start" + ); + } + // Set two scalars for the "deletion-request" ping (See bug 1602064 and 1729474) Glean.deletionRequest.impressionId.set(this._impressionId); if (!lazy.ContextId.rotationEnabled) { @@ -2202,15 +2212,12 @@ export class TelemetryFeed { uninit() { this._stopObservingNewtabPingPrefs(); this.newtabContentPing.uninit(); - - try { + if (this._initialized) { Services.obs.removeObserver( this.browserOpenNewtabStart, "browser-open-newtab-start" ); - } catch (e) { - // Operation can fail when uninit is called before - // init has finished setting up the observer + this._initialized = false; } // TODO: Send any unfinished sessions