diff --git a/app/src/main/java/org/mozilla/fenix/tabstray/NavigationInteractor.kt b/app/src/main/java/org/mozilla/fenix/tabstray/NavigationInteractor.kt index b875a28ac..d619eda80 100644 --- a/app/src/main/java/org/mozilla/fenix/tabstray/NavigationInteractor.kt +++ b/app/src/main/java/org/mozilla/fenix/tabstray/NavigationInteractor.kt @@ -105,6 +105,7 @@ class DefaultNavigationInteractor( ) : NavigationInteractor { override fun onTabTrayDismissed() { + metrics.track(Event.TabsTrayClosed) dismissTabTray() } diff --git a/app/src/main/java/org/mozilla/fenix/tabstray/TabsTrayFragment.kt b/app/src/main/java/org/mozilla/fenix/tabstray/TabsTrayFragment.kt index 195877bd1..c067fd0c2 100644 --- a/app/src/main/java/org/mozilla/fenix/tabstray/TabsTrayFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/tabstray/TabsTrayFragment.kt @@ -365,8 +365,9 @@ class TabsTrayFragment : AppCompatDialogFragment() { @VisibleForTesting internal fun dismissTabsTray() { + // This should always be the last thing we do because nothing (e.g. telemetry) + // is guaranteed after that. dismissAllowingStateLoss() - requireComponents.analytics.metrics.track(Event.TabsTrayClosed) } companion object { diff --git a/app/src/test/java/org/mozilla/fenix/tabstray/NavigationInteractorTest.kt b/app/src/test/java/org/mozilla/fenix/tabstray/NavigationInteractorTest.kt index 7b9484fd4..6c1d214ef 100644 --- a/app/src/test/java/org/mozilla/fenix/tabstray/NavigationInteractorTest.kt +++ b/app/src/test/java/org/mozilla/fenix/tabstray/NavigationInteractorTest.kt @@ -167,7 +167,12 @@ class NavigationInteractorTest { @Test fun `onTabTrayDismissed calls dismissTabTray on DefaultNavigationInteractor`() { navigationInteractor.onTabTrayDismissed() - verify(exactly = 1) { dismissTabTray() } + + // We care about the order here; anything after `dismissTabTray` is not guaranteed. + verifyOrder { + metrics.track(Event.TabsTrayClosed) + dismissTabTray() + } } @Test diff --git a/app/src/test/java/org/mozilla/fenix/tabstray/TabsTrayFragmentTest.kt b/app/src/test/java/org/mozilla/fenix/tabstray/TabsTrayFragmentTest.kt index 1a2502469..bbdb915bd 100644 --- a/app/src/test/java/org/mozilla/fenix/tabstray/TabsTrayFragmentTest.kt +++ b/app/src/test/java/org/mozilla/fenix/tabstray/TabsTrayFragmentTest.kt @@ -335,7 +335,7 @@ class TabsTrayFragmentTest { } @Test - fun `WHEN dismissTabsTray is called THEN it dismisses the tray and record this event`() { + fun `WHEN dismissTabsTray is called THEN it dismisses the tray`() { every { fragment.dismissAllowingStateLoss() } just Runs val metrics: MetricController = mockk(relaxed = true) every { context.components.analytics.metrics } returns metrics @@ -343,6 +343,5 @@ class TabsTrayFragmentTest { fragment.dismissTabsTray() verify { fragment.dismissAllowingStateLoss() } - verify { metrics.track(Event.TabsTrayClosed) } } }