Bug 1837524 - Contile Top Sites impression probe in Compose Top Sites

fenix/118.0
Harrison Oglesby 11 months ago committed by mergify[bot]
parent 20b76e009a
commit 52ca72333d

@ -50,6 +50,7 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import mozilla.components.feature.top.sites.TopSite
import org.mozilla.fenix.GleanMetrics.Pings
import org.mozilla.fenix.R
import org.mozilla.fenix.compose.ContextualMenu
import org.mozilla.fenix.compose.Favicon
@ -62,6 +63,7 @@ import org.mozilla.fenix.settings.SupportUtils
import org.mozilla.fenix.theme.FirefoxTheme
import org.mozilla.fenix.wallpapers.WallpaperState
import kotlin.math.ceil
import org.mozilla.fenix.GleanMetrics.TopSites as TopSitesMetrics
private const val TOP_SITES_PER_PAGE = 8
private const val TOP_SITES_PER_ROW = 4
@ -123,7 +125,7 @@ fun TopSites(
for (items in topSitesWindows) {
Row(modifier = Modifier.defaultMinSize(minWidth = TOP_SITES_ROW_WIDTH.dp)) {
items.forEach { topSite ->
items.forEachIndexed { position, topSite ->
TopSiteItem(
topSite = topSite,
menuItems = getMenuItems(
@ -134,6 +136,7 @@ fun TopSites(
onSettingsClicked = onSettingsClicked,
onSponsorPrivacyClicked = onSponsorPrivacyClicked,
),
position = position,
topSiteColors = topSiteColors,
onTopSiteClick = { item -> onTopSiteClick(item) },
onTopSiteLongClick = onTopSiteLongClick,
@ -220,15 +223,18 @@ data class TopSiteColors(
*
* @param topSite The [TopSite] to display.
* @param menuItems List of [MenuItem]s to display in a top site dropdown menu.
* @param position The position of the top site.
* @param topSiteColors The color set defined by [TopSiteColors] used to style a top site.
* @param onTopSiteClick Invoked when the user clicks on a top site.
* @param onTopSiteLongClick Invoked when the user long clicks on a top site.
*/
@Suppress("LongParameterList")
@OptIn(ExperimentalFoundationApi::class)
@Composable
private fun TopSiteItem(
topSite: TopSite,
menuItems: List<MenuItem>,
position: Int,
topSiteColors: TopSiteColors,
onTopSiteClick: (TopSite) -> Unit,
onTopSiteLongClick: (TopSite) -> Unit,
@ -300,6 +306,12 @@ private fun TopSiteItem(
showMenu = menuExpanded,
onDismissRequest = { menuExpanded = false },
)
if (topSite is TopSite.Provided) {
LaunchedEffect(topSite) {
submitTopSitesImpressionPing(topSite = topSite, position = position)
}
}
}
}
@ -474,6 +486,20 @@ private fun getMenuItems(
return result
}
private fun submitTopSitesImpressionPing(topSite: TopSite.Provided, position: Int) {
TopSitesMetrics.contileImpression.record(
TopSitesMetrics.ContileImpressionExtra(
position = position + 1,
source = "newtab",
),
)
topSite.id?.let { TopSitesMetrics.contileTileId.set(it) }
topSite.title?.let { TopSitesMetrics.contileAdvertiser.set(it.lowercase()) }
TopSitesMetrics.contileReportingUrl.set(topSite.impressionUrl)
Pings.topsitesImpression.submit()
}
@Composable
@LightDarkPreview
private fun TopSitesPreview() {

Loading…
Cancel
Save