From 0a76fdaa58eef8f692049bb3b594d2ef9df86b6d Mon Sep 17 00:00:00 2001 From: ValentinTimisica Date: Wed, 29 Jan 2020 11:52:56 +0200 Subject: [PATCH] For #7289: Adds telemetry for selecting dark theme --- app/metrics.yaml | 16 ++++++++++++++++ .../components/metrics/GleanMetricsService.kt | 5 +++++ .../mozilla/fenix/components/metrics/Metrics.kt | 7 +++++++ .../OnboardingThemePickerViewHolder.kt | 6 ++++++ .../org/mozilla/fenix/settings/ThemeFragment.kt | 7 +++++++ docs/metrics.md | 1 + 6 files changed, 42 insertions(+) diff --git a/app/metrics.yaml b/app/metrics.yaml index 9566559eb..00b93cc00 100644 --- a/app/metrics.yaml +++ b/app/metrics.yaml @@ -1760,3 +1760,19 @@ about_page: notification_emails: - fenix-core@mozilla.com expires: "2020-09-01" + +app_theme: + dark_theme_selected: + type: event + description: > + A user selected Dark Theme + extra_keys: + source: + description: "The source from where dark theme was selected. The source can be 'SETTINGS' or 'ONBOARDING'" + bugs: + - https://github.com/mozilla-mobile/fenix/issues/7289 + data_reviews: + - https://github.com/mozilla-mobile/fenix/pull/7968 + notification_emails: + - fenix-core@mozilla.com + expires: "2020-09-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 0bcd5c8c5..fed584c95 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.service.glean.Glean import mozilla.components.service.glean.private.NoExtraKeys import mozilla.components.support.base.log.logger.Logger import org.mozilla.fenix.GleanMetrics.AboutPage +import org.mozilla.fenix.GleanMetrics.AppTheme import org.mozilla.fenix.GleanMetrics.BookmarksManagement import org.mozilla.fenix.GleanMetrics.Collections import org.mozilla.fenix.GleanMetrics.ContextMenu @@ -482,6 +483,10 @@ private val Event.wrapper: EventWrapper<*>? is Event.LibrariesThatWeUseTapped -> EventWrapper( { AboutPage.librariesTapped.record(it) } ) + is Event.DarkThemeSelected -> EventWrapper( + { AppTheme.darkThemeSelected.record(it) }, + { AppTheme.darkThemeSelectedKeys.valueOf(it) } + ) // Don't record other events in Glean: is Event.AddBookmark -> null is Event.OpenedBookmark -> null 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 484d42cba..024b88abf 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 @@ -20,6 +20,7 @@ import mozilla.components.support.base.facts.FactProcessor import mozilla.components.support.base.facts.Facts import mozilla.components.support.base.log.logger.Logger import org.mozilla.fenix.BuildConfig +import org.mozilla.fenix.GleanMetrics.AppTheme import org.mozilla.fenix.GleanMetrics.Collections import org.mozilla.fenix.GleanMetrics.ContextMenu import org.mozilla.fenix.GleanMetrics.CrashReporter @@ -316,6 +317,12 @@ sealed class Event { get() = mapOf(SearchShortcuts.selectedKeys.engine to engineName) } + data class DarkThemeSelected(val source: Source) : Event() { + enum class Source { SETTINGS, ONBOARDING } + override val extras: Map? + get() = mapOf(AppTheme.darkThemeSelectedKeys.source to source.name) + } + class ContextMenuItemTapped private constructor(val item: String) : Event() { override val extras: Map? get() = mapOf(ContextMenu.itemTappedKeys.named to item) diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingThemePickerViewHolder.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingThemePickerViewHolder.kt index 1ddfa92cf..288063fa0 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingThemePickerViewHolder.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingThemePickerViewHolder.kt @@ -11,6 +11,7 @@ import androidx.appcompat.app.AppCompatDelegate import androidx.recyclerview.widget.RecyclerView import kotlinx.android.synthetic.main.onboarding_theme_picker.view.* import org.mozilla.fenix.R +import org.mozilla.fenix.components.metrics.Event import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.settings @@ -57,6 +58,11 @@ class OnboardingThemePickerViewHolder(view: View) : RecyclerView.ViewHolder(view } radioDarkTheme.onClickListener { + view.context.components.analytics.metrics.track( + Event.DarkThemeSelected( + Event.DarkThemeSelected.Source.ONBOARDING + ) + ) setNewTheme(AppCompatDelegate.MODE_NIGHT_YES) } diff --git a/app/src/main/java/org/mozilla/fenix/settings/ThemeFragment.kt b/app/src/main/java/org/mozilla/fenix/settings/ThemeFragment.kt index c99efda6f..983246198 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/ThemeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/ThemeFragment.kt @@ -11,6 +11,8 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatDelegate import androidx.preference.PreferenceFragmentCompat import org.mozilla.fenix.R +import org.mozilla.fenix.components.metrics.Event +import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.getPreferenceKey import org.mozilla.fenix.ext.requireComponents import org.mozilla.fenix.ext.showToolbar @@ -81,6 +83,11 @@ class ThemeFragment : PreferenceFragmentCompat() { val keyDarkTheme = getPreferenceKey(R.string.pref_key_dark_theme) radioDarkTheme = requireNotNull(findPreference(keyDarkTheme)) radioDarkTheme.onClickListener { + requireContext().components.analytics.metrics.track( + Event.DarkThemeSelected( + Event.DarkThemeSelected.Source.SETTINGS + ) + ) setNewTheme(AppCompatDelegate.MODE_NIGHT_YES) } } diff --git a/docs/metrics.md b/docs/metrics.md index 019fd9174..eb4df6653 100644 --- a/docs/metrics.md +++ b/docs/metrics.md @@ -45,6 +45,7 @@ The following metrics are added to the ping: | about_page.privacy_notice_tapped |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user tapped on "Privacy notice" item from About page |[1](https://github.com/mozilla-mobile/fenix/pull/8047)||2020-09-01 | | about_page.rights_tapped |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user tapped on "Know your rights" item from About page |[1](https://github.com/mozilla-mobile/fenix/pull/8047)||2020-09-01 | | about_page.support_tapped |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user tapped on "Support" item from About page |[1](https://github.com/mozilla-mobile/fenix/pull/8047)||2020-09-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-09-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-09-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-09-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-09-01 |