Close #22103: Add recent bookmarks telemetry (#22329)

(cherry picked from commit 9c970a5276)

Co-authored-by: Roger Yang <royang@mozilla.com>
pull/415/head
mergify[bot] 3 years ago committed by GitHub
parent 70c7eca663
commit d022285133
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -5544,6 +5544,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

@ -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()

@ -806,6 +806,10 @@ private val Event.wrapper: EventWrapper<*>?
{ RecentSearches.groupDeleted.record(it) }
)
is Event.RecentBookmarksShown -> EventWrapper<NoExtraKeys>(
{ RecentBookmarks.shown.record(it) }
)
is Event.AndroidAutofillRequestWithLogins -> EventWrapper<NoExtraKeys>(
{ AndroidAutofill.requestMatchingLogins.record(it) }
)

@ -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<BookmarkNode>) {
recentBookmarksAdapter.submitList(bookmarks)
if (bookmarks.isNotEmpty()) {
metrics.track(Event.RecentBookmarksShown)
}
}
private fun dismissSearchDialogIfDisplayed() {

@ -291,7 +291,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,

@ -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())

@ -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() }

Loading…
Cancel
Save