diff --git a/app/metrics.yaml b/app/metrics.yaml index afbec7ed07..f5b0d141b7 100644 --- a/app/metrics.yaml +++ b/app/metrics.yaml @@ -2639,7 +2639,19 @@ history: notification_emails: - android-probes@mozilla.com expires: "2022-11-01" - + search_term_group_tapped: + type: event + description: | + A user tapped on a search term group in history + bugs: + - https://github.com/mozilla-mobile/fenix/issues/22299 + data_reviews: + - https://github.com/mozilla-mobile/fenix/pull/22300 + data_sensitivity: + - interaction + notification_emails: + - android-probes@mozilla.com + expires: "2022-11-01" reader_mode: available: diff --git a/app/src/main/java/org/mozilla/fenix/components/metrics/Event.kt b/app/src/main/java/org/mozilla/fenix/components/metrics/Event.kt index 4505eb3276..b4c23e9baf 100644 --- a/app/src/main/java/org/mozilla/fenix/components/metrics/Event.kt +++ b/app/src/main/java/org/mozilla/fenix/components/metrics/Event.kt @@ -85,6 +85,7 @@ sealed class Event { data class HistoryRecentSearchesTapped(val source: String) : Event() { override val extras = mapOf(History.recentSearchesTappedKeys.pageNumber to source) } + object HistorySearchTermGroupTapped : Event() object ReaderModeAvailable : Event() object ReaderModeOpened : Event() object ReaderModeClosed : Event() diff --git a/app/src/main/java/org/mozilla/fenix/components/metrics/GleanMetricsService.kt b/app/src/main/java/org/mozilla/fenix/components/metrics/GleanMetricsService.kt index 552dc20999..b9f3e322f4 100644 --- a/app/src/main/java/org/mozilla/fenix/components/metrics/GleanMetricsService.kt +++ b/app/src/main/java/org/mozilla/fenix/components/metrics/GleanMetricsService.kt @@ -312,6 +312,9 @@ private val Event.wrapper: EventWrapper<*>? { History.recentSearchesTapped.record(it) }, { History.recentSearchesTappedKeys.valueOf(it) } ) + is Event.HistorySearchTermGroupTapped -> EventWrapper( + { History.searchTermGroupTapped.record(it) } + ) is Event.CollectionRenamed -> EventWrapper( { Collections.renamed.record(it) } ) diff --git a/app/src/main/java/org/mozilla/fenix/library/history/HistoryController.kt b/app/src/main/java/org/mozilla/fenix/library/history/HistoryController.kt index 5586a75042..ce01fa96fc 100644 --- a/app/src/main/java/org/mozilla/fenix/library/history/HistoryController.kt +++ b/app/src/main/java/org/mozilla/fenix/library/history/HistoryController.kt @@ -42,6 +42,7 @@ class DefaultHistoryController( when (item) { is History.Regular -> openToBrowser(item) is History.Group -> { + metrics.track(Event.HistorySearchTermGroupTapped) navController.navigate( HistoryFragmentDirections.actionGlobalHistoryMetadataGroup( title = item.title, diff --git a/app/src/test/java/org/mozilla/fenix/components/metrics/GleanMetricsServiceTest.kt b/app/src/test/java/org/mozilla/fenix/components/metrics/GleanMetricsServiceTest.kt index cec73b5feb..fd65d15759 100644 --- a/app/src/test/java/org/mozilla/fenix/components/metrics/GleanMetricsServiceTest.kt +++ b/app/src/test/java/org/mozilla/fenix/components/metrics/GleanMetricsServiceTest.kt @@ -176,6 +176,10 @@ class GleanMetricsServiceTest { val events = History.recentSearchesTapped.testGetValue() assertEquals(1, events[0].extra!!.size) assertEquals("5", events[0].extra!!["page_number"]) + + assertFalse(History.searchTermGroupTapped.testHasValue()) + gleanService.track(Event.HistorySearchTermGroupTapped) + assertTrue(History.searchTermGroupTapped.testHasValue()) } @Test diff --git a/app/src/test/java/org/mozilla/fenix/components/metrics/MetricControllerTest.kt b/app/src/test/java/org/mozilla/fenix/components/metrics/MetricControllerTest.kt index a03f7a014e..0144cf81ca 100644 --- a/app/src/test/java/org/mozilla/fenix/components/metrics/MetricControllerTest.kt +++ b/app/src/test/java/org/mozilla/fenix/components/metrics/MetricControllerTest.kt @@ -333,6 +333,10 @@ class MetricControllerTest { every { marketingService1.shouldTrack(Event.HistoryOpenedInNewTabs) } returns true every { marketingService1.shouldTrack(Event.HistoryOpenedInPrivateTab) } returns true every { marketingService1.shouldTrack(Event.HistoryOpenedInPrivateTabs) } returns true + every { marketingService1.shouldTrack(Event.HistoryItemRemoved) } returns true + every { marketingService1.shouldTrack(Event.HistoryAllItemsRemoved) } returns true + every { marketingService1.shouldTrack(Event.HistoryRecentSearchesTapped("2")) } returns true + every { marketingService1.shouldTrack(Event.HistorySearchTermGroupTapped) } returns true controller.start(MetricServiceType.Marketing) @@ -340,11 +344,19 @@ class MetricControllerTest { controller.track(Event.HistoryOpenedInNewTabs) controller.track(Event.HistoryOpenedInPrivateTab) controller.track(Event.HistoryOpenedInPrivateTabs) + controller.track(Event.HistoryItemRemoved) + controller.track(Event.HistoryAllItemsRemoved) + controller.track(Event.HistoryRecentSearchesTapped("2")) + controller.track(Event.HistorySearchTermGroupTapped) verify { marketingService1.track(Event.HistoryOpenedInNewTab) } verify { marketingService1.track(Event.HistoryOpenedInNewTabs) } verify { marketingService1.track(Event.HistoryOpenedInPrivateTab) } verify { marketingService1.track(Event.HistoryOpenedInPrivateTabs) } + verify { marketingService1.track(Event.HistoryItemRemoved) } + verify { marketingService1.track(Event.HistoryAllItemsRemoved) } + verify { marketingService1.track(Event.HistoryRecentSearchesTapped("2")) } + verify { marketingService1.track(Event.HistorySearchTermGroupTapped) } } @Test