Commit 12b95b49 authored by Jeff Boek's avatar Jeff Boek
Browse files

For #11579 - Adds telemetry for autoplay settings in Site Permissions

parent f75be41d
Loading
Loading
Loading
Loading
+29 −0
Original line number Diff line number Diff line
@@ -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"
+21 −12
Original line number Diff line number Diff line
@@ -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<NoExtraKeys>(
            { org.mozilla.fenix.GleanMetrics.TabsTray.opened.record(it) }
            { TabsTray.opened.record(it) }
        )
        is Event.TabsTrayClosed -> EventWrapper<NoExtraKeys>(
            { org.mozilla.fenix.GleanMetrics.TabsTray.closed.record(it) }
            { TabsTray.closed.record(it) }
        )
        is Event.OpenedExistingTab -> EventWrapper<NoExtraKeys>(
            { org.mozilla.fenix.GleanMetrics.TabsTray.openedExistingTab.record(it) }
            { TabsTray.openedExistingTab.record(it) }
        )
        is Event.ClosedExistingTab -> EventWrapper<NoExtraKeys>(
            { org.mozilla.fenix.GleanMetrics.TabsTray.closedExistingTab.record(it) }
            { TabsTray.closedExistingTab.record(it) }
        )
        is Event.TabsTrayPrivateModeTapped -> EventWrapper<NoExtraKeys>(
            { org.mozilla.fenix.GleanMetrics.TabsTray.privateModeTapped.record(it) }
            { TabsTray.privateModeTapped.record(it) }
        )
        is Event.TabsTrayNormalModeTapped -> EventWrapper<NoExtraKeys>(
            { org.mozilla.fenix.GleanMetrics.TabsTray.normalModeTapped.record(it) }
            { TabsTray.normalModeTapped.record(it) }
        )
        is Event.NewTabTapped -> EventWrapper<NoExtraKeys>(
            { org.mozilla.fenix.GleanMetrics.TabsTray.newTabTapped.record(it) }
            { TabsTray.newTabTapped.record(it) }
        )
        is Event.NewPrivateTabTapped -> EventWrapper<NoExtraKeys>(
            { org.mozilla.fenix.GleanMetrics.TabsTray.newPrivateTabTapped.record(it) }
            { TabsTray.newPrivateTabTapped.record(it) }
        )
        is Event.TabsTrayMenuOpened -> EventWrapper<NoExtraKeys>(
            { org.mozilla.fenix.GleanMetrics.TabsTray.menuOpened.record(it) }
            { TabsTray.menuOpened.record(it) }
        )
        is Event.TabsTraySaveToCollectionPressed -> EventWrapper<NoExtraKeys>(
            { org.mozilla.fenix.GleanMetrics.TabsTray.saveToCollection.record(it) }
            { TabsTray.saveToCollection.record(it) }
        )
        is Event.TabsTrayShareAllTabsPressed -> EventWrapper<NoExtraKeys>(
            { org.mozilla.fenix.GleanMetrics.TabsTray.shareAllTabs.record(it) }
            { TabsTray.shareAllTabs.record(it) }
        )
        is Event.TabsTrayCloseAllTabsPressed -> EventWrapper<NoExtraKeys>(
            { org.mozilla.fenix.GleanMetrics.TabsTray.closeAllTabs.record(it) }
            { TabsTray.closeAllTabs.record(it) }
        )
        Event.AutoPlaySettingVisited -> EventWrapper<NoExtraKeys>(
            { Autoplay.visitedSetting.record(it) }
        )
        is Event.AutoPlaySettingChanged -> EventWrapper(
            { Autoplay.settingChanged.record(it) },
            { Autoplay.settingChangedKeys.valueOf(it) }
        )

        // Don't record other events in Glean:
+12 −0
Original line number Diff line number Diff line
@@ -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<Autoplay.settingChangedKeys, String>?
            get() = mapOf(Autoplay.settingChangedKeys.autoplaySetting to setting.toString().toLowerCase(Locale.ROOT))
    }

    sealed class Search

    internal open val extras: Map<*, String>?
+7 −0
Original line number Diff line number Diff line
@@ -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)
    }
}
+15 −2
Original line number Diff line number Diff line
@@ -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)
    }
Loading