commit e71c5ca37ff115d97bc3b2bce7ef94eef8f88cfb parent dc2b9a56bc72a336ad336568c3951d9770d52f2d Author: Devota Aabel <daabel@mozilla.com> Date: Mon, 27 Oct 2025 20:05:36 +0000 Bug 1983357- Add telemetry for the Show All Shortcuts button. r=gl,android-reviewers Differential Revision: https://phabricator.services.mozilla.com/D270046 Diffstat:
7 files changed, 56 insertions(+), 0 deletions(-)
diff --git a/mobile/android/fenix/app/metrics.yaml b/mobile/android/fenix/app/metrics.yaml @@ -8306,6 +8306,23 @@ top_sites: metadata: tags: - Shortcuts +shortcuts_library: + viewed: + type: event + description: | + A user viewed the shortcuts library + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1983357 + data_reviews: + - https://phabricator.services.mozilla.com/D270046 + data_sensitivity: + - interaction + notification_emails: + - android-probes@mozilla.com + expires: never + metadata: + tags: + - Shortcuts app_menu: customize_homepage: type: event diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/fake/FakeHomepagePreview.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/fake/FakeHomepagePreview.kt @@ -149,6 +149,8 @@ internal object FakeHomepagePreview { override fun onTopSiteLongClicked(topSite: TopSite) { /* no op */ } override fun onShowAllTopSitesClicked() { /* no op */ } + + override fun onShortcutsLibraryViewed() { /* no op */ } } internal val recentTabInteractor diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlInteractor.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlInteractor.kt @@ -251,6 +251,10 @@ class SessionControlInteractor( topSiteController.handleShowAllTopSitesClicked() } + override fun onShortcutsLibraryViewed() { + topSiteController.handleShortcutsLibraryViewed() + } + override fun showWallpapersOnboardingDialog(state: WallpaperState): Boolean { return controller.handleShowWallpapersOnboardingDialog(state) } diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/topsites/controller/TopSiteController.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/topsites/controller/TopSiteController.kt @@ -33,6 +33,7 @@ import mozilla.components.support.ktx.kotlin.toNormalizedUrl import mozilla.components.ui.widgets.withCenterAlignedButtons import mozilla.telemetry.glean.private.NoExtras import org.mozilla.fenix.GleanMetrics.Pings +import org.mozilla.fenix.GleanMetrics.ShortcutsLibrary import org.mozilla.fenix.GleanMetrics.TopSites import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.R @@ -98,6 +99,11 @@ interface TopSiteController { * @see [TopSiteInteractor.onShowAllTopSitesClicked] */ fun handleShowAllTopSitesClicked() + + /** + * @see [TopSiteInteractor.onShortcutsLibraryViewed] + */ + fun handleShortcutsLibraryViewed() } /** @@ -370,6 +376,10 @@ class DefaultTopSiteController( ) } + override fun handleShortcutsLibraryViewed() { + ShortcutsLibrary.viewed.record(NoExtras()) + } + /** * Append a search attribution query to any provided search engine URL based on the * user's current region. diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/topsites/interactor/TopSiteInteractor.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/topsites/interactor/TopSiteInteractor.kt @@ -74,6 +74,12 @@ interface TopSiteInteractor { * shortcuts on the homepage. */ fun onShowAllTopSitesClicked() + + /** + * Sends telemetry related to the shortcuts library being viewed. + * + */ + fun onShortcutsLibraryViewed() } /** @@ -123,4 +129,8 @@ class DefaultTopSiteInteractor( override fun onShowAllTopSitesClicked() { controller.handleShowAllTopSitesClicked() } + + override fun onShortcutsLibraryViewed() { + controller.handleShortcutsLibraryViewed() + } } diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/topsites/ui/ShortcutsScreen.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/topsites/ui/ShortcutsScreen.kt @@ -18,6 +18,7 @@ import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource @@ -42,6 +43,10 @@ fun ShortcutsScreen( interactor: TopSiteInteractor, onNavigationIconClick: () -> Unit, ) { + LaunchedEffect(Unit) { + interactor.onShortcutsLibraryViewed() + } + BackInvokedHandler { onNavigationIconClick() } diff --git a/mobile/android/fenix/app/src/test/java/org/mozilla/fenix/home/topsites/controller/DefaultTopSiteControllerTest.kt b/mobile/android/fenix/app/src/test/java/org/mozilla/fenix/home/topsites/controller/DefaultTopSiteControllerTest.kt @@ -33,6 +33,7 @@ import org.junit.Test import org.junit.runner.RunWith import org.mozilla.fenix.GleanMetrics.Events import org.mozilla.fenix.GleanMetrics.Pings +import org.mozilla.fenix.GleanMetrics.ShortcutsLibrary import org.mozilla.fenix.GleanMetrics.TopSites import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.R @@ -1047,6 +1048,13 @@ class DefaultTopSiteControllerTest { } } + fun `WHEN screen is shown THEN impression is logged`() { + assertNull(ShortcutsLibrary.viewed.testGetValue()) + val controller = createController() + controller.handleShortcutsLibraryViewed() + assertNotNull(ShortcutsLibrary.viewed.testGetValue()) + } + private fun createController(): DefaultTopSiteController = DefaultTopSiteController( activityRef = WeakReference(activity),