re isn't an easy way for us to get the tabs. let tabs = []; if (aIsGeckoView) { // To get all active windows; Each tab has its own window tabs = aWindows; } else { for (const win of aWindows) { tabs = tabs.concat(win.gBrowser.tabs); } } let topLevelBCs = []; for (const tab of tabs) { let browser; if (aIsGeckoView) { browser = tab.browser; } else { browser = tab.linkedBrowser; } if (browser.browsingContext) { // This is the top level browsingContext topLevelBCs.push(browser.browsingContext); } } return CanonicalBrowsingContext.countSiteOrigins(topLevelBCs); }, _recordSiteOriginTelemetry(aWindows, aIsGeckoView) { let currentTime = Date.now(); // default is 5 minutes if (!this.min_interval) { this.min_interval = Services.prefs.getIntPref( "telemetry.number_of_site_origin.min_interval", 300000 ); } let originCount = this.computeSiteOriginCount(aWindows, aIsGeckoView); // Discard the first load because most of the time the first load only has 1 // tab and 1 window open, so it is useless to report it. if (!this._lastRecordSiteOrigin) { this._lastRecordSiteOrigin = currentTime; } else if (currentTime >= this._lastRecordSiteOrigin + this.min_interval) { this._lastRecordSiteOrigin = currentTime; Glean.geckoview.documentSiteOrigins.accumulateSingleSample(originCount); } }, }; PK