For #23526 - Add telemetry for Contile interactions

upstream-sync
Noah Bond 2 years ago committed by mergify[bot]
parent 4120223589
commit c0942eadb2

@ -4826,15 +4826,18 @@ top_sites:
extra_keys:
type:
description: |
The type of top site. Options are: "FRECENCY," "DEFAULT," or "PINNED."
The type of top site. Options are: "FRECENCY", "DEFAULT",
"PINNED", or "PROVIDED"
bugs:
- https://github.com/mozilla-mobile/fenix/issues/14565
- https://github.com/mozilla-mobile/fenix/issues/23526
data_reviews:
- https://github.com/mozilla-mobile/fenix/pull/15136
- https://github.com/mozilla-mobile/fenix/pull/15713#issuecomment-703972068
- https://github.com/mozilla-mobile/fenix/pull/19924#issuecomment-861423789
- https://github.com/mozilla-mobile/fenix/pull/20517#pullrequestreview-718069041
- https://github.com/mozilla-mobile/fenix/pull/21038#issuecomment-906757301
- https://github.com/mozilla-mobile/fenix/pull/23541
data_sensitivity:
- interaction
notification_emails:
@ -4935,6 +4938,61 @@ top_sites:
notification_emails:
- android-probes@mozilla.com
expires: "2023-02-01"
open_contile_top_site:
type: event
description: |
A user has opened a contile top site.
bugs:
- https://github.com/mozilla-mobile/fenix/issues/23526
data_reviews:
- https://github.com/mozilla-mobile/fenix/pull/23541
data_sensitivity:
- interaction
notification_emails:
- android-probes@mozilla.com
expires: "2023-02-01"
open_contile_in_private_tab:
type: event
description: |
A user has opened a contile top site in a private tab via the long
press context menu.
bugs:
- https://github.com/mozilla-mobile/fenix/issues/23526
data_reviews:
- https://github.com/mozilla-mobile/fenix/pull/23541
data_sensitivity:
- interaction
notification_emails:
- android-probes@mozilla.com
expires: "2023-02-01"
contile_settings:
type: event
description: |
A user has selected "Settings" via the contile top sites
longpress context menu.
bugs:
- https://github.com/mozilla-mobile/fenix/issues/23526
data_reviews:
- https://github.com/mozilla-mobile/fenix/pull/23541
data_sensitivity:
- interaction
notification_emails:
- android-probes@mozilla.com
expires: "2023-02-01"
contile_sponsors_and_privacy:
type: event
description: |
A user has selected "Our sponsors & your privacy" via the
contile top sites longpress context menu.
bugs:
- https://github.com/mozilla-mobile/fenix/issues/23526
data_reviews:
- https://github.com/mozilla-mobile/fenix/pull/23541
data_sensitivity:
- interaction
notification_emails:
- android-probes@mozilla.com
expires: "2023-02-01"
app_theme:
dark_theme_selected:

@ -132,9 +132,13 @@ sealed class Event {
object TopSiteOpenBaidu : Event()
object TopSiteOpenFrecent : Event()
object TopSiteOpenPinned : Event()
object TopSiteOpenProvided : Event()
object TopSiteOpenInNewTab : Event()
object TopSiteOpenInPrivateTab : Event()
object TopSiteOpenContileInPrivateTab : Event()
object TopSiteRemoved : Event()
object TopSiteContileSettings : Event()
object TopSiteContilePrivacy : Event()
object GoogleTopSiteRemoved : Event()
object BaiduTopSiteRemoved : Event()
object TrackingProtectionTrackerList : Event()

@ -519,15 +519,27 @@ private val Event.wrapper: EventWrapper<*>?
is Event.TopSiteOpenPinned -> EventWrapper<NoExtraKeys>(
{ TopSites.openPinned.record(it) }
)
is Event.TopSiteOpenProvided -> EventWrapper<NoExtraKeys>(
{ TopSites.openContileTopSite.record(it) }
)
is Event.TopSiteOpenInNewTab -> EventWrapper<NoExtraKeys>(
{ TopSites.openInNewTab.record(it) }
)
is Event.TopSiteOpenInPrivateTab -> EventWrapper<NoExtraKeys>(
{ TopSites.openInPrivateTab.record(it) }
)
is Event.TopSiteOpenContileInPrivateTab -> EventWrapper<NoExtraKeys>(
{ TopSites.openContileInPrivateTab.record(it) }
)
is Event.TopSiteRemoved -> EventWrapper<NoExtraKeys>(
{ TopSites.remove.record(it) }
)
is Event.TopSiteContileSettings -> EventWrapper<NoExtraKeys>(
{ TopSites.contileSettings.record(it) }
)
is Event.TopSiteContilePrivacy -> EventWrapper<NoExtraKeys>(
{ TopSites.contileSponsorsAndPrivacy.record(it) }
)
is Event.GoogleTopSiteRemoved -> EventWrapper<NoExtraKeys>(
{ TopSites.googleTopSiteRemoved.record(it) }
)

@ -307,7 +307,13 @@ class DefaultSessionControlController(
}
override fun handleOpenInPrivateTabClicked(topSite: TopSite) {
metrics.track(Event.TopSiteOpenInPrivateTab)
metrics.track(
if (topSite is TopSite.Provided) {
Event.TopSiteOpenContileInPrivateTab
} else {
Event.TopSiteOpenInPrivateTab
}
)
with(activity) {
browsingModeManager.mode = BrowsingMode.Private
openToBrowserAndLoad(
@ -388,11 +394,14 @@ class DefaultSessionControlController(
metrics.track(Event.TopSiteOpenInNewTab)
when (topSite) {
is TopSite.Default -> metrics.track(Event.TopSiteOpenDefault)
is TopSite.Frecent -> metrics.track(Event.TopSiteOpenFrecent)
is TopSite.Pinned -> metrics.track(Event.TopSiteOpenPinned)
}
metrics.track(
when (topSite) {
is TopSite.Default -> Event.TopSiteOpenDefault
is TopSite.Frecent -> Event.TopSiteOpenFrecent
is TopSite.Pinned -> Event.TopSiteOpenPinned
is TopSite.Provided -> Event.TopSiteOpenProvided
}
)
when (topSite.url) {
SupportUtils.GOOGLE_URL -> metrics.track(Event.TopSiteOpenGoogle)
@ -425,6 +434,7 @@ class DefaultSessionControlController(
}
override fun handleTopSiteSettingsClicked() {
metrics.track(Event.TopSiteContileSettings)
navController.nav(
R.id.homeFragment,
HomeFragmentDirections.actionGlobalHomeSettingsFragment()
@ -432,6 +442,7 @@ class DefaultSessionControlController(
}
override fun handleSponsorPrivacyClicked() {
metrics.track(Event.TopSiteContilePrivacy)
activity.openToBrowserAndLoad(
searchTermOrURL = SupportUtils.getGenericSumoURLForTopic(SupportUtils.SumoTopic.SPONSOR_PRIVACY),
newTab = true,

@ -679,6 +679,35 @@ class DefaultSessionControlControllerTest {
verify { activity.openToBrowser(BrowserDirection.FromHome) }
}
@Test
fun handleSelectProvidedTopSite() {
val topSite = TopSite.Provided(
id = 1L,
title = "Mozilla",
url = "mozilla.org",
clickUrl = "",
imageUrl = "",
impressionUrl = "",
createdAt = 0
)
val controller = spyk(createController())
every { controller.getAvailableSearchEngines() } returns listOf(searchEngine)
controller.handleSelectTopSite(topSite)
verify { metrics.track(Event.TopSiteOpenInNewTab) }
verify { metrics.track(Event.TopSiteOpenProvided) }
verify {
tabsUseCases.addTab.invoke(
url = topSite.url,
selectTab = true,
startLoading = true
)
}
verify { activity.openToBrowser(BrowserDirection.FromHome) }
}
@Test
fun handleStartBrowsingClicked() {
var hideOnboardingInvoked = false
@ -932,9 +961,12 @@ class DefaultSessionControlControllerTest {
}
@Test
fun `WHEN handleTopSiteSettingsClicked is called THEN navigate to the HomeSettingsFragment`() {
fun `WHEN handleTopSiteSettingsClicked is called THEN navigate to the HomeSettingsFragment AND report the interaction`() {
createController().handleTopSiteSettingsClicked()
verify {
metrics.track(Event.TopSiteContileSettings)
}
verify {
navController.navigate(
match<NavDirections> {
@ -946,9 +978,12 @@ class DefaultSessionControlControllerTest {
}
@Test
fun `WHEN handleSponsorPrivacyClicked is called THEN `() {
fun `WHEN handleSponsorPrivacyClicked is called THEN navigate to the privacy webpage AND report the interaction`() {
createController().handleSponsorPrivacyClicked()
verify {
metrics.track(Event.TopSiteContilePrivacy)
}
verify {
activity.openToBrowserAndLoad(
searchTermOrURL = SupportUtils.getGenericSumoURLForTopic(SupportUtils.SumoTopic.SPONSOR_PRIVACY),
@ -958,6 +993,54 @@ class DefaultSessionControlControllerTest {
}
}
@Test
fun `WHEN handleOpenInPrivateTabClicked is called with a TopSite#Provided site THEN Event#TopSiteOpenContileInPrivateTab is reported`() {
val topSite = TopSite.Provided(
id = 1L,
title = "Mozilla",
url = "mozilla.org",
clickUrl = "",
imageUrl = "",
impressionUrl = "",
createdAt = 0
)
createController().handleOpenInPrivateTabClicked(topSite)
verify {
metrics.track(Event.TopSiteOpenContileInPrivateTab)
}
}
@Test
fun `WHEN handleOpenInPrivateTabClicked is called with a Default, Pinned, or Frecent top site THEN TopSiteOpenInPrivateTab event is reported`() {
val controller = createController()
val topSite1 = TopSite.Default(
id = 1L,
title = "Mozilla",
url = "mozilla.org",
createdAt = 0
)
val topSite2 = TopSite.Pinned(
id = 1L,
title = "Mozilla",
url = "mozilla.org",
createdAt = 0
)
val topSite3 = TopSite.Frecent(
id = 1L,
title = "Mozilla",
url = "mozilla.org",
createdAt = 0
)
controller.handleOpenInPrivateTabClicked(topSite1)
controller.handleOpenInPrivateTabClicked(topSite2)
controller.handleOpenInPrivateTabClicked(topSite3)
verify(exactly = 3) {
metrics.track(Event.TopSiteOpenInPrivateTab)
}
}
private fun createController(
hideOnboarding: () -> Unit = { },
registerCollectionStorageObserver: () -> Unit = { },

Loading…
Cancel
Save