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

Commit

Permalink
Addresses metrics nits
Browse files Browse the repository at this point in the history
  • Loading branch information
boek committed Mar 22, 2019
1 parent e4d9797 commit 5b34874
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 32 deletions.
29 changes: 17 additions & 12 deletions app/metrics.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# This file defines the metrics that are recorded by glean telemetry. They are
# automatically converted to Kotlin code at build time using the `glean_parser`
# PyPI package.
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.


$schema: moz://mozilla.org/schemas/glean/metrics/1-0-0

Expand All @@ -10,53 +11,57 @@ events:
description: >
A user opened the app
extra_keys:
source: "The source from which the app was opened"
source:
description: "The method used to open Fenix. Possible values are: `app_icon`, `custom_tab` or `link`"
bugs:
- 968
data_reviews:
- https://github.com/mozilla-mobile/fenix/pull/1067#issuecomment-474598673
notification_emails:
- telemetry-client-dev@mozilla.com
expires: never
expires: "2020-03-01"
search_bar_tapped:
type: event
description: >
A user tapped the search bar
extra_keys:
source: "The source from which the search bar was tapped"
source:
description: "The view the user was on when they initiated the search (For example: `Home` or `Browser`)"
bugs:
- 959
data_reviews:
- https://github.com/mozilla-mobile/fenix/pull/1067#issuecomment-474598673
notification_emails:
- telemetry-client-dev@mozilla.com
expires: never
expires: "2020-03-01"
entered_url:
type: event
description: >
A user entered a url
extra_keys:
autocomplete: "The url was filled by the autocomplete"
autocomplete:
description: "A boolean that tells us whether the URL was autofilled by an Autocomplete suggestion"
bugs:
- 959
data_reviews:
- https://github.com/mozilla-mobile/fenix/pull/1067#issuecomment-474598673
notification_emails:
- telemetry-client-dev@mozilla.com
expires: never
expires: "2020-03-01"
performed_search:
type: event
description: >
A user performed a search
extra_keys:
search_suggestion: "The search was initiated from a search suggestion"
search_suggestion:
description: "A boolean that tells us whether or not the search term was suggested by the Awesomebar"
bugs:
- 959
data_reviews:
- https://github.com/mozilla-mobile/fenix/pull/1067#issuecomment-474598673
notification_emails:
- telemetry-client-dev@mozilla.com
expires: never
expires: "2020-03-01"

metrics:
default_browser:
Expand All @@ -71,4 +76,4 @@ metrics:
- https://github.com/mozilla-mobile/fenix/pull/1067#issuecomment-474598673
notification_emails:
- telemetry-client-dev@mozilla.com
expires: never
expires: "2020-03-01"
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,24 @@ import org.mozilla.fenix.utils.Settings
import org.mozilla.fenix.debug.GleanMetrics.Metrics
import org.mozilla.fenix.debug.GleanMetrics.Events

private val Event.metricType: EventMetricType?
private class EventWrapper<T: Enum<T>>(private val event: EventMetricType<T>, private val keyMapper: ((String) -> T)? = null) {
fun track(event: Event) {
val extras = if (keyMapper != null) {
event.extras?.mapKeys { keyMapper.invoke(it.key) }
} else {
null
}

this.event.record(extras)
}
}

private val Event.wrapper
get() = when (this) {
is Event.OpenedApp -> Events.appOpened
is Event.SearchBarTapped -> Events.searchBarTapped
is Event.EnteredUrl -> Events.enteredUrl
is Event.PerformedSearch -> Events.performedSearch
is Event.OpenedApp -> EventWrapper(Events.appOpened) { Events.appOpenedKeys.valueOf(it) }
is Event.SearchBarTapped -> EventWrapper(Events.searchBarTapped) { Events.searchBarTappedKeys.valueOf(it) }
is Event.EnteredUrl ->EventWrapper(Events.enteredUrl) { Events.enteredUrlKeys.valueOf(it) }
is Event.PerformedSearch -> EventWrapper(Events.performedSearch) { Events.performedSearchKeys.valueOf(it) }
else -> null
}

Expand All @@ -32,11 +44,11 @@ class GleanMetricsService(private val context: Context) : MetricsService {
}

override fun track(event: Event) {
event.metricType?.record(event.extras)
event.wrapper?.track(event)
}

override fun shouldTrack(event: Event): Boolean {
return Settings.getInstance(context).isTelemetryEnabled && event.metricType != null
return Settings.getInstance(context).isTelemetryEnabled && event.wrapper != null
}

companion object {
Expand Down
14 changes: 1 addition & 13 deletions docs/telemetry.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,4 @@ Fenix creates and tries to send a "baseline" ping. It is defined inside the [`me

## Events

Fenix sends event pings that allows us to measure feature performance.

| Event | Glean Key | Leanplum Key | extras |
|-----------------|-------------------|--------------|-----------------------|
| OpenedApp | app_opened | E_Opened_App | source* |
| SearchBarTapped | search_bar_tapped | | source** |
| EnteredUrl | entered_url | | autocomplete*** |
| PerformedSearch | performed_search | | search_suggestion**** |

* `source`: The method used to open Fenix (For exmaple: `app_icon` or `link`)
** `source`: The view the user was on when they initiated the search (For example: `Home` or `Browser`)
*** `autocomplete`: A boolean that tells us wether the URL was autofilled by an Autocomplete suggestion
**** `search_suggestion`: A boolean that tells us wether or not the search term was suggested by the Awesomebar
Fenix sends event pings that allows us to measure feature performance. These are defined inside the It is defined inside the [`metrics.yaml`](https://github.com/mozilla-mobile/fenix/blob/master/app/metrics.yaml) file.

0 comments on commit 5b34874

Please sign in to comment.