diff --git a/app/metrics.yaml b/app/metrics.yaml index ade8f4952..6e8b2190d 100644 --- a/app/metrics.yaml +++ b/app/metrics.yaml @@ -10818,3 +10818,107 @@ shopping.settings: metadata: tags: - Shopping +fx_suggest: + ping_type: + type: string + description: > + The ping's type. Currently always "fxsuggest-click". + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1857092 + data_reviews: + - https://github.com/mozilla-mobile/firefox-android/pull/3958#issuecomment-1758607927 + data_sensitivity: + - interaction + notification_emails: + - lina@mozilla.com + - ttran@mozilla.com + - najiang@mozilla.com + expires: never + send_in_pings: + - fx-suggest + block_id: + type: quantity + description: | + A unique identifier for the suggestion (a.k.a. a keywords block). + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1857092 + data_reviews: + - https://github.com/mozilla-mobile/firefox-android/pull/3958#issuecomment-1758607927 + data_sensitivity: + - interaction + notification_emails: + - lina@mozilla.com + - ttran@mozilla.com + - najiang@mozilla.com + expires: never + unit: integer + send_in_pings: + - fx-suggest + advertiser: + type: string + description: | + The name of the advertiser providing the sponsored suggestion + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1857092 + data_reviews: + - https://github.com/mozilla-mobile/firefox-android/pull/3958#issuecomment-1758607927 + data_sensitivity: + - interaction + notification_emails: + - lina@mozilla.com + - ttran@mozilla.com + - najiang@mozilla.com + expires: never + send_in_pings: + - fx-suggest + reporting_url: + type: url + description: | + The url to report this interaction to. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1857092 + data_reviews: + - https://github.com/mozilla-mobile/firefox-android/pull/3958#issuecomment-1758607927 + data_sensitivity: + - interaction + notification_emails: + - lina@mozilla.com + - ttran@mozilla.com + - najiang@mozilla.com + expires: never + send_in_pings: + - fx-suggest + context_id: + type: uuid + description: | + An identifier to identify users for Contextual Services user interaction pings. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1857092 + data_reviews: + - https://github.com/mozilla-mobile/firefox-android/pull/3958#issuecomment-1758607927 + data_sensitivity: + - interaction + notification_emails: + - lina@mozilla.com + - ttran@mozilla.com + - najiang@mozilla.com + expires: never + send_in_pings: + - fx-suggest + iab_category: + type: string + description: | + The suggestion's category. Either "22 - Shopping" or "5 - Educational". + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1857092 + data_reviews: + - https://github.com/mozilla-mobile/firefox-android/pull/3958#issuecomment-1758607927 + data_sensitivity: + - interaction + notification_emails: + - lina@mozilla.com + - ttran@mozilla.com + - najiang@mozilla.com + expires: never + send_in_pings: + - fx-suggest diff --git a/app/pings.yaml b/app/pings.yaml index 9d6d2f255..24f16f897 100644 --- a/app/pings.yaml +++ b/app/pings.yaml @@ -77,3 +77,17 @@ cookie-banner-report-site: - https://github.com/mozilla-mobile/firefox-android/pull/1298#pullrequestreview-1350344223 notification_emails: - android-probes@mozilla.com +fx-suggest: + description: | + A ping representing a single event occurring with or to a Firefox Suggestion. + Distinguishable by its `ping_type`. + Does not contain a `client_id`, preferring a `context_id` instead. + include_client_id: false + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1857092 + data_reviews: + - https://github.com/mozilla-mobile/firefox-android/pull/3958#issuecomment-1758607927 + notification_emails: + - lina@mozilla.com + - ttran@mozilla.com + - najiang@mozilla.com diff --git a/app/src/main/java/org/mozilla/fenix/components/metrics/MetricController.kt b/app/src/main/java/org/mozilla/fenix/components/metrics/MetricController.kt index 0d6efd9c7..68350be0b 100644 --- a/app/src/main/java/org/mozilla/fenix/components/metrics/MetricController.kt +++ b/app/src/main/java/org/mozilla/fenix/components/metrics/MetricController.kt @@ -16,6 +16,8 @@ import mozilla.components.feature.awesomebar.provider.HistoryStorageSuggestionPr import mozilla.components.feature.awesomebar.provider.SearchSuggestionProvider import mozilla.components.feature.awesomebar.provider.SessionSuggestionProvider import mozilla.components.feature.contextmenu.facts.ContextMenuFacts +import mozilla.components.feature.fxsuggest.FxSuggestClickInfo +import mozilla.components.feature.fxsuggest.facts.FxSuggestFacts import mozilla.components.feature.media.facts.MediaFacts import mozilla.components.feature.prompts.dialog.LoginDialogFacts import mozilla.components.feature.prompts.facts.AddressAutofillDialogFacts @@ -46,17 +48,20 @@ import org.mozilla.fenix.GleanMetrics.ContextMenu import org.mozilla.fenix.GleanMetrics.ContextualMenu import org.mozilla.fenix.GleanMetrics.CreditCards import org.mozilla.fenix.GleanMetrics.Events +import org.mozilla.fenix.GleanMetrics.FxSuggest import org.mozilla.fenix.GleanMetrics.LoginDialog import org.mozilla.fenix.GleanMetrics.Logins import org.mozilla.fenix.GleanMetrics.MediaNotification import org.mozilla.fenix.GleanMetrics.MediaState import org.mozilla.fenix.GleanMetrics.PerfAwesomebar +import org.mozilla.fenix.GleanMetrics.Pings import org.mozilla.fenix.GleanMetrics.ProgressiveWebApp import org.mozilla.fenix.GleanMetrics.SitePermissions import org.mozilla.fenix.GleanMetrics.Sync import org.mozilla.fenix.GleanMetrics.SyncedTabs import org.mozilla.fenix.search.awesomebar.ShortcutsSuggestionProvider import org.mozilla.fenix.utils.Settings +import java.util.UUID import mozilla.components.compose.browser.awesomebar.AwesomeBarFacts as ComposeAwesomeBarFacts interface MetricController { @@ -275,6 +280,19 @@ internal class ReleaseMetricController( } } + Component.FEATURE_FXSUGGEST to FxSuggestFacts.Items.AMP_SUGGESTION_CLICKED -> { + (metadata?.get(FxSuggestFacts.MetadataKeys.CLICK_INFO) as? FxSuggestClickInfo.Amp)?.let { + FxSuggest.pingType.set("fxsuggest-click") + FxSuggest.blockId.set(it.blockId) + FxSuggest.advertiser.set(it.advertiser) + FxSuggest.reportingUrl.set(it.clickUrl) + FxSuggest.iabCategory.set(it.iabCategory) + FxSuggest.contextId.set(UUID.fromString(it.contextId)) + Pings.fxSuggest.submit() + } + Unit + } + Component.FEATURE_PWA to ProgressiveWebAppFacts.Items.HOMESCREEN_ICON_TAP -> { ProgressiveWebApp.homescreenTap.record(NoExtras()) } diff --git a/app/src/main/java/org/mozilla/fenix/search/awesomebar/AwesomeBarView.kt b/app/src/main/java/org/mozilla/fenix/search/awesomebar/AwesomeBarView.kt index 951282765..f637671d0 100644 --- a/app/src/main/java/org/mozilla/fenix/search/awesomebar/AwesomeBarView.kt +++ b/app/src/main/java/org/mozilla/fenix/search/awesomebar/AwesomeBarView.kt @@ -327,6 +327,7 @@ class AwesomeBarView( includeSponsoredSuggestions = state.showSponsoredSuggestions, includeNonSponsoredSuggestions = state.showNonSponsoredSuggestions, suggestionsHeader = activity.getString(R.string.firefox_suggest_header), + contextId = activity.settings().contileContextId, ), ) }