Skip to content
This repository has been archived by the owner on Feb 20, 2023. It is now read-only.

Commit

Permalink
Issue #19956: Add telemetry for tab view setting changes
Browse files Browse the repository at this point in the history
This differs from `tab_view_setting` which tells us what the user's tab
setting is at startup. It does not tell us if the user explicitly
changed it instead of just using the default (which was recently
changed in #19809).
  • Loading branch information
jonalmeida committed Jun 11, 2021
1 parent 9d3cf79 commit 705aebe
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 0 deletions.
20 changes: 20 additions & 0 deletions app/metrics.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -433,6 +433,26 @@ events:
notification_emails:
- fenix-core@mozilla.com
expires: "2021-05-10"
tab_view_changed:
type: event
description: |
Indicates that the user has changed their tab view
settings, either from the default or by personal
preference.
extra_keys:
type:
description: |
A string containing the name of the tab view the user tapped.
These items include: list or grid.
bugs:
- https://github.com/mozilla-mobile/fenix/issues/19956
data_reviews:
- https://example.com
data_sensitivity:
- interaction
notification_emails:
- fenix-core@mozilla.com
expires: "2022-05-10"

onboarding:
fxa_auto_signin:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -621,6 +621,13 @@ sealed class Event {
get() = mapOf(Autoplay.settingChangedKeys.autoplaySetting to setting.toString().toLowerCase(Locale.ROOT))
}

data class TabViewSettingChanged(val type: Type) : Event() {
enum class Type { LIST, GRID }

override val extras: Map<Events.tabViewChangedKeys, String>?
get() = mapOf(Events.tabViewChangedKeys.type to type.toString().toLowerCase(Locale.ROOT))
}

sealed class Search

internal open val extras: Map<*, String>?
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -832,6 +832,10 @@ private val Event.wrapper: EventWrapper<*>?
is Event.HomeScreenDisplayed -> EventWrapper<NoExtraKeys>(
{ HomeScreen.homeScreenDisplayed.record(it) }
)
is Event.TabViewSettingChanged -> EventWrapper(
{ Events.tabViewChanged.record(it) },
{ Events.tabViewChangedKeys.valueOf(it) }
)

// Don't record other events in Glean:
is Event.AddBookmark -> null
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ open class RadioButtonPreference @JvmOverloads constructor(
private var defaultValue: Boolean = false
private var clickListener: (() -> Unit)? = null

val isChecked: Boolean
get() = radioButton?.isChecked == true

init {
layoutResource = R.layout.preference_widget_radiobutton

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import android.view.View
import androidx.preference.PreferenceFragmentCompat
import org.mozilla.fenix.R
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.components.metrics.Event.TabViewSettingChanged
import org.mozilla.fenix.components.metrics.Event.TabViewSettingChanged.Type
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.showToolbar
import org.mozilla.fenix.utils.view.addToRadioGroup
Expand Down Expand Up @@ -60,6 +62,9 @@ class TabsSettingsFragment : PreferenceFragmentCompat() {
startOnHomeRadioAlways = requirePreference(R.string.pref_key_start_on_home_always)
startOnHomeRadioNever = requirePreference(R.string.pref_key_start_on_home_never)

listRadioButton.onClickListener(::sendTabViewTelemetry)
gridRadioButton.onClickListener(::sendTabViewTelemetry)

setupRadioGroups()
}

Expand All @@ -82,4 +87,14 @@ class TabsSettingsFragment : PreferenceFragmentCompat() {
startOnHomeRadioNever
)
}

private fun sendTabViewTelemetry() {
val metrics = requireContext().components.analytics.metrics

if (listRadioButton.isChecked && !gridRadioButton.isChecked) {
metrics.track(TabViewSettingChanged(Type.LIST))
} else {
metrics.track(TabViewSettingChanged(Type.GRID))
}
}
}

0 comments on commit 705aebe

Please sign in to comment.