diff --git a/app/metrics.yaml b/app/metrics.yaml index 77b359729..37a9de4f1 100644 --- a/app/metrics.yaml +++ b/app/metrics.yaml @@ -3207,3 +3207,32 @@ perf.awesomebar: - fenix-core@mozilla.com - gkruglov@mozilla.com expires: "2020-10-01" + +autoplay: + visited_setting: + type: event + description: A user visited the autoplay settings screen + bugs: + - https://github.com/mozilla-mobile/fenix/issues/11579 + data_reviews: + - https://github.com/mozilla-mobile/fenix/pull/13041#issuecomment-665777411 + notification_emails: + - fenix-core@mozilla.com + expires: "2021-02-01" + setting_changed: + type: event + description: | + A user changed their autoplay setting to either block_cellular, + block_audio, or block_all. + extra_keys: + autoplay_setting: + description: | + The new setting for autoplay: block_cellular, + block_audio, or block_all. + bugs: + - https://github.com/mozilla-mobile/fenix/issues/11579 + data_reviews: + - https://github.com/mozilla-mobile/fenix/pull/13041#issuecomment-665777411 + notification_emails: + - fenix-core@mozilla.com + expires: "2021-02-01" 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 55ebab4f2..fb293c595 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 @@ -12,6 +12,7 @@ import mozilla.components.support.base.log.logger.Logger import org.mozilla.fenix.GleanMetrics.AboutPage import org.mozilla.fenix.GleanMetrics.Addons import org.mozilla.fenix.GleanMetrics.AppTheme +import org.mozilla.fenix.GleanMetrics.Autoplay import org.mozilla.fenix.GleanMetrics.BookmarksManagement import org.mozilla.fenix.GleanMetrics.BrowserSearch import org.mozilla.fenix.GleanMetrics.Collections @@ -45,6 +46,7 @@ import org.mozilla.fenix.GleanMetrics.SearchWidgetCfr import org.mozilla.fenix.GleanMetrics.SyncAccount import org.mozilla.fenix.GleanMetrics.SyncAuth import org.mozilla.fenix.GleanMetrics.Tab +import org.mozilla.fenix.GleanMetrics.TabsTray import org.mozilla.fenix.GleanMetrics.Tip import org.mozilla.fenix.GleanMetrics.ToolbarSettings import org.mozilla.fenix.GleanMetrics.TopSites @@ -633,40 +635,47 @@ private val Event.wrapper: EventWrapper<*>? ) is Event.TabsTrayOpened -> EventWrapper( - { org.mozilla.fenix.GleanMetrics.TabsTray.opened.record(it) } + { TabsTray.opened.record(it) } ) is Event.TabsTrayClosed -> EventWrapper( - { org.mozilla.fenix.GleanMetrics.TabsTray.closed.record(it) } + { TabsTray.closed.record(it) } ) is Event.OpenedExistingTab -> EventWrapper( - { org.mozilla.fenix.GleanMetrics.TabsTray.openedExistingTab.record(it) } + { TabsTray.openedExistingTab.record(it) } ) is Event.ClosedExistingTab -> EventWrapper( - { org.mozilla.fenix.GleanMetrics.TabsTray.closedExistingTab.record(it) } + { TabsTray.closedExistingTab.record(it) } ) is Event.TabsTrayPrivateModeTapped -> EventWrapper( - { org.mozilla.fenix.GleanMetrics.TabsTray.privateModeTapped.record(it) } + { TabsTray.privateModeTapped.record(it) } ) is Event.TabsTrayNormalModeTapped -> EventWrapper( - { org.mozilla.fenix.GleanMetrics.TabsTray.normalModeTapped.record(it) } + { TabsTray.normalModeTapped.record(it) } ) is Event.NewTabTapped -> EventWrapper( - { org.mozilla.fenix.GleanMetrics.TabsTray.newTabTapped.record(it) } + { TabsTray.newTabTapped.record(it) } ) is Event.NewPrivateTabTapped -> EventWrapper( - { org.mozilla.fenix.GleanMetrics.TabsTray.newPrivateTabTapped.record(it) } + { TabsTray.newPrivateTabTapped.record(it) } ) is Event.TabsTrayMenuOpened -> EventWrapper( - { org.mozilla.fenix.GleanMetrics.TabsTray.menuOpened.record(it) } + { TabsTray.menuOpened.record(it) } ) is Event.TabsTraySaveToCollectionPressed -> EventWrapper( - { org.mozilla.fenix.GleanMetrics.TabsTray.saveToCollection.record(it) } + { TabsTray.saveToCollection.record(it) } ) is Event.TabsTrayShareAllTabsPressed -> EventWrapper( - { org.mozilla.fenix.GleanMetrics.TabsTray.shareAllTabs.record(it) } + { TabsTray.shareAllTabs.record(it) } ) is Event.TabsTrayCloseAllTabsPressed -> EventWrapper( - { org.mozilla.fenix.GleanMetrics.TabsTray.closeAllTabs.record(it) } + { TabsTray.closeAllTabs.record(it) } + ) + Event.AutoPlaySettingVisited -> EventWrapper( + { Autoplay.visitedSetting.record(it) } + ) + is Event.AutoPlaySettingChanged -> EventWrapper( + { Autoplay.settingChanged.record(it) }, + { Autoplay.settingChangedKeys.valueOf(it) } ) // Don't record other events in Glean: diff --git a/app/src/main/java/org/mozilla/fenix/components/metrics/Metrics.kt b/app/src/main/java/org/mozilla/fenix/components/metrics/Metrics.kt index c914dc24e..93ce11cc7 100644 --- a/app/src/main/java/org/mozilla/fenix/components/metrics/Metrics.kt +++ b/app/src/main/java/org/mozilla/fenix/components/metrics/Metrics.kt @@ -33,6 +33,7 @@ import mozilla.components.support.webextensions.facts.WebExtensionFacts import org.mozilla.fenix.BuildConfig import org.mozilla.fenix.GleanMetrics.Addons import org.mozilla.fenix.GleanMetrics.AppTheme +import org.mozilla.fenix.GleanMetrics.Autoplay import org.mozilla.fenix.GleanMetrics.Collections import org.mozilla.fenix.GleanMetrics.ContextMenu import org.mozilla.fenix.GleanMetrics.CrashReporter @@ -514,6 +515,17 @@ sealed class Event { get() = mapOf(Events.tabCounterMenuActionKeys.item to item.toString().toLowerCase(Locale.ROOT)) } + object AutoPlaySettingVisited : Event() + + data class AutoPlaySettingChanged(val setting: AutoplaySetting) : Event() { + enum class AutoplaySetting { + BLOCK_CELLULAR, BLOCK_AUDIO, BLOCK_ALL + } + + override val extras: Map? + get() = mapOf(Autoplay.settingChangedKeys.autoplaySetting to setting.toString().toLowerCase(Locale.ROOT)) + } + sealed class Search internal open val extras: Map<*, String>? diff --git a/app/src/main/java/org/mozilla/fenix/settings/sitepermissions/SitePermissionsFragment.kt b/app/src/main/java/org/mozilla/fenix/settings/sitepermissions/SitePermissionsFragment.kt index 2867f8a62..a87f1041e 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/sitepermissions/SitePermissionsFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/sitepermissions/SitePermissionsFragment.kt @@ -10,7 +10,9 @@ import androidx.preference.Preference import androidx.preference.Preference.OnPreferenceClickListener import androidx.preference.PreferenceFragmentCompat import org.mozilla.fenix.R +import org.mozilla.fenix.components.metrics.Event import org.mozilla.fenix.ext.getPreferenceKey +import org.mozilla.fenix.ext.requireComponents import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.showToolbar import org.mozilla.fenix.settings.PhoneFeature @@ -78,6 +80,11 @@ class SitePermissionsFragment : PreferenceFragmentCompat() { private fun navigateToPhoneFeature(phoneFeature: PhoneFeature) { val directions = SitePermissionsFragmentDirections .actionSitePermissionsToManagePhoneFeatures(phoneFeature) + + if (phoneFeature == PhoneFeature.AUTOPLAY_AUDIBLE) { + requireComponents.analytics.metrics.track(Event.AutoPlaySettingVisited) + } + Navigation.findNavController(requireView()).navigate(directions) } } diff --git a/app/src/main/java/org/mozilla/fenix/settings/sitepermissions/SitePermissionsManagePhoneFeatureFragment.kt b/app/src/main/java/org/mozilla/fenix/settings/sitepermissions/SitePermissionsManagePhoneFeatureFragment.kt index 11b0a4f4d..d96f44836 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/sitepermissions/SitePermissionsManagePhoneFeatureFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/sitepermissions/SitePermissionsManagePhoneFeatureFragment.kt @@ -27,6 +27,8 @@ import mozilla.components.feature.sitepermissions.SitePermissionsRules.Action.AL import mozilla.components.feature.sitepermissions.SitePermissionsRules.Action.ASK_TO_ALLOW import mozilla.components.feature.sitepermissions.SitePermissionsRules.Action.BLOCKED import org.mozilla.fenix.R +import org.mozilla.fenix.components.metrics.Event +import org.mozilla.fenix.ext.requireComponents import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.showToolbar import org.mozilla.fenix.settings.PhoneFeature.AUTOPLAY_AUDIBLE @@ -180,16 +182,27 @@ class SitePermissionsManagePhoneFeatureFragment : Fragment() { */ private fun saveActionInSettings(autoplaySetting: Int) { settings.setAutoplayUserSetting(autoplaySetting) + val setting: Event.AutoPlaySettingChanged.AutoplaySetting + val (audible, inaudible) = when (autoplaySetting) { AUTOPLAY_ALLOW_ALL, AUTOPLAY_ALLOW_ON_WIFI -> { settings.setAutoplayUserSetting(AUTOPLAY_ALLOW_ON_WIFI) + setting = Event.AutoPlaySettingChanged.AutoplaySetting.BLOCK_CELLULAR + BLOCKED to BLOCKED + } + AUTOPLAY_BLOCK_AUDIBLE -> { + setting = Event.AutoPlaySettingChanged.AutoplaySetting.BLOCK_AUDIO + BLOCKED to ALLOWED + } + AUTOPLAY_BLOCK_ALL -> { + setting = Event.AutoPlaySettingChanged.AutoplaySetting.BLOCK_ALL BLOCKED to BLOCKED } - AUTOPLAY_BLOCK_AUDIBLE -> BLOCKED to ALLOWED - AUTOPLAY_BLOCK_ALL -> BLOCKED to BLOCKED else -> return } + + requireComponents.analytics.metrics.track(Event.AutoPlaySettingChanged(setting)) settings.setSitePermissionsPhoneFeatureAction(AUTOPLAY_AUDIBLE, audible) settings.setSitePermissionsPhoneFeatureAction(AUTOPLAY_INAUDIBLE, inaudible) } diff --git a/docs/metrics.md b/docs/metrics.md index 0ea774ade..c9482a603 100644 --- a/docs/metrics.md +++ b/docs/metrics.md @@ -56,6 +56,8 @@ The following metrics are added to the ping: | addons.open_addon_in_toolbar_menu |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user interacted with an installed add-on in the toolbar menu |[1](https://github.com/mozilla-mobile/fenix/pull/8318)|
  • addon_id: The id of the add-on that was interacted with in the toolbar menu
|2020-10-01 | | | addons.open_addons_in_settings |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user accessed "Add-ons" from the Settings |[1](https://github.com/mozilla-mobile/fenix/pull/8318)||2020-10-01 | | | app_theme.dark_theme_selected |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user selected Dark Theme |[1](https://github.com/mozilla-mobile/fenix/pull/7968)|
  • source: The source from where dark theme was selected. The source can be 'SETTINGS' or 'ONBOARDING'
|2020-10-01 | | +| autoplay.setting_changed |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user changed their autoplay setting to either block_cellular, block_audio, or block_all. |[1](https://github.com/mozilla-mobile/fenix/pull/13041#issuecomment-665777411)|
  • autoplay_setting: The new setting for autoplay: block_cellular, block_audio, or block_all.
|2021-02-01 | | +| autoplay.visited_setting |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user visited the autoplay settings screen |[1](https://github.com/mozilla-mobile/fenix/pull/13041#issuecomment-665777411)||2021-02-01 | | | bookmarks_management.copied |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user copied a bookmark. |[1](https://github.com/mozilla-mobile/fenix/pull/1708)||2020-10-01 | | | bookmarks_management.edited |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user edited the title and/or URL of an existing bookmark. |[1](https://github.com/mozilla-mobile/fenix/pull/1708)||2020-10-01 | | | bookmarks_management.folder_add |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user added a new bookmark folder. |[1](https://github.com/mozilla-mobile/fenix/pull/1708)||2020-10-01 | |