From ea654fb6d18692fa22fcf11c8b05c85cc28826a2 Mon Sep 17 00:00:00 2001 From: mattreaganmozilla <145381717+mattreaganmozilla@users.noreply.github.com> Date: Mon, 27 Jan 2025 11:24:41 -0800 Subject: [PATCH] Refactor FXIOS-10711 Log event for tab loss bugs (#24328) [FXIOS-10711] Fatal log for tab loss detected (cherry picked from commit c1a0e89597dcac12f58a5cdf6dd854b5ad0a3c2f) --- .../Client/Telemetry/TabErrorTelemetryHelper.swift | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/firefox-ios/Client/Telemetry/TabErrorTelemetryHelper.swift b/firefox-ios/Client/Telemetry/TabErrorTelemetryHelper.swift index 9807d94faf4a..2ac4823e2e84 100644 --- a/firefox-ios/Client/Telemetry/TabErrorTelemetryHelper.swift +++ b/firefox-ios/Client/Telemetry/TabErrorTelemetryHelper.swift @@ -13,13 +13,16 @@ final class TabErrorTelemetryHelper { private let telemetryWrapper: TelemetryWrapperProtocol private let defaults: UserDefaultsInterface private let windowManager: WindowManager + private let logger: Logger - private init(telemetryWrapper: TelemetryWrapperProtocol = TelemetryWrapper.shared, + private init(logger: Logger = DefaultLogger.shared, + telemetryWrapper: TelemetryWrapperProtocol = TelemetryWrapper.shared, windowManager: WindowManager = AppContainer.shared.resolve(), defaults: UserDefaultsInterface = UserDefaults.standard) { self.telemetryWrapper = telemetryWrapper self.defaults = defaults self.windowManager = windowManager + self.logger = logger } // MARK: - Public API @@ -55,7 +58,7 @@ final class TabErrorTelemetryHelper { if expectedTabCount > 1 && (expectedTabCount - currentTabCount) > 1 { // Potential tab loss bug detected. Log a MetricKit error. - sendTelemetryTabLossDetectedEvent() + sendTelemetryTabLossDetectedEvent(expected: expectedTabCount, actual: currentTabCount) } // After validating the tab count, we make sure to remove the count @@ -86,7 +89,10 @@ final class TabErrorTelemetryHelper { return windowManager.tabManager(for: window).normalTabs.count } - private func sendTelemetryTabLossDetectedEvent() { + private func sendTelemetryTabLossDetectedEvent(expected: Int, actual: Int) { + logger.log("Tab loss detected. Expected: \(expected). Actual: \(actual). Windows: \(windowManager.windows.count)", + level: .fatal, + category: .tabs) telemetryWrapper.recordEvent(category: .information, method: .error, object: .app,