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:
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