diff --git a/app/metrics.yaml b/app/metrics.yaml index 9fc453e53..87e6d1774 100644 --- a/app/metrics.yaml +++ b/app/metrics.yaml @@ -5767,6 +5767,19 @@ recent_tabs: expires: "2022-06-23" recent_bookmarks: + shown: + type: event + description: | + Recent bookmarks section was shown to the user. + bugs: + - https://github.com/mozilla-mobile/fenix/issues/22103 + data_reviews: + - https://github.com/mozilla-mobile/fenix/pull/22104 + data_sensitivity: + - interaction + notification_emails: + - android-probes@mozilla.com + expires: "2022-11-01" bookmark_clicked: type: counter lifetime: application 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 2388bf2f6..20cc7cd27 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 @@ -267,6 +267,7 @@ sealed class Event { // Recent bookmarks object BookmarkClicked : Event() object ShowAllBookmarks : Event() + object RecentBookmarksShown : Event() // Recently visited/Recent searches object RecentSearchesGroupDeleted : 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 fa2d6a19d..6c1e300a1 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 @@ -806,6 +806,10 @@ private val Event.wrapper: EventWrapper<*>? { RecentSearches.groupDeleted.record(it) } ) + is Event.RecentBookmarksShown -> EventWrapper( + { RecentBookmarks.shown.record(it) } + ) + is Event.AndroidAutofillRequestWithLogins -> EventWrapper( { AndroidAutofill.requestMatchingLogins.record(it) } ) diff --git a/app/src/main/java/org/mozilla/fenix/home/recentbookmarks/view/RecentBookmarksViewHolder.kt b/app/src/main/java/org/mozilla/fenix/home/recentbookmarks/view/RecentBookmarksViewHolder.kt index 9ef6e0b9c..e42347224 100644 --- a/app/src/main/java/org/mozilla/fenix/home/recentbookmarks/view/RecentBookmarksViewHolder.kt +++ b/app/src/main/java/org/mozilla/fenix/home/recentbookmarks/view/RecentBookmarksViewHolder.kt @@ -10,6 +10,8 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager.HORIZONTAL import mozilla.components.concept.storage.BookmarkNode import org.mozilla.fenix.R +import org.mozilla.fenix.components.metrics.Event +import org.mozilla.fenix.components.metrics.MetricController import org.mozilla.fenix.databinding.ComponentRecentBookmarksBinding import org.mozilla.fenix.home.recentbookmarks.RecentBookmarksItemAdapter import org.mozilla.fenix.home.recentbookmarks.interactor.RecentBookmarksInteractor @@ -17,7 +19,8 @@ import org.mozilla.fenix.utils.view.ViewHolder class RecentBookmarksViewHolder( view: View, - val interactor: RecentBookmarksInteractor + val interactor: RecentBookmarksInteractor, + val metrics: MetricController ) : ViewHolder(view) { private val recentBookmarksAdapter = RecentBookmarksItemAdapter(interactor) @@ -41,6 +44,10 @@ class RecentBookmarksViewHolder( fun bind(bookmarks: List) { recentBookmarksAdapter.submitList(bookmarks) + + if (bookmarks.isNotEmpty()) { + metrics.track(Event.RecentBookmarksShown) + } } private fun dismissSearchDialogIfDisplayed() { diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt index 5a00427ee..7be9ca964 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt @@ -294,7 +294,7 @@ class SessionControlAdapter( ExperimentDefaultBrowserCardViewHolder.LAYOUT_ID -> ExperimentDefaultBrowserCardViewHolder(view, interactor) RecentTabsHeaderViewHolder.LAYOUT_ID -> RecentTabsHeaderViewHolder(view, interactor) RecentBookmarksViewHolder.LAYOUT_ID -> { - RecentBookmarksViewHolder(view, interactor) + RecentBookmarksViewHolder(view, interactor, components.analytics.metrics) } HistoryMetadataHeaderViewHolder.LAYOUT_ID -> HistoryMetadataHeaderViewHolder( view, 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 44afbfa3b..34481ff13 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 @@ -282,6 +282,10 @@ class GleanMetricsServiceTest { @Test fun `Home screen recent bookmarks events are correctly recorded`() { + assertFalse(RecentBookmarks.shown.testHasValue()) + gleanService.track(Event.RecentBookmarksShown) + assertTrue(RecentBookmarks.shown.testHasValue()) + assertFalse(RecentBookmarks.bookmarkClicked.testHasValue()) gleanService.track(Event.BookmarkClicked) assertTrue(RecentBookmarks.bookmarkClicked.testHasValue()) diff --git a/app/src/test/java/org/mozilla/fenix/home/recentbookmarks/view/RecentBookmarksViewHolderTest.kt b/app/src/test/java/org/mozilla/fenix/home/recentbookmarks/view/RecentBookmarksViewHolderTest.kt index a634edfe9..36815358c 100644 --- a/app/src/test/java/org/mozilla/fenix/home/recentbookmarks/view/RecentBookmarksViewHolderTest.kt +++ b/app/src/test/java/org/mozilla/fenix/home/recentbookmarks/view/RecentBookmarksViewHolderTest.kt @@ -44,7 +44,7 @@ class RecentBookmarksViewHolderTest { @Test fun `WHEN show all bookmarks button is clicked THEN interactor is called`() { - RecentBookmarksViewHolder(binding.root, interactor).bind(listOf(bookmark)) + RecentBookmarksViewHolder(binding.root, interactor, mockk(relaxed = true)).bind(listOf(bookmark)) binding.recentBookmarksHeader.showAllBookmarksButton.performClick() verify { interactor.onShowAllBookmarksClicked() }