1
0
Fork 0

For #5312 - Add Telemetry for Tracking Protection

master
Emily Kager 2019-09-18 12:59:30 -07:00 committed by Emily Kager
parent e9a645a1bd
commit 9d9ff959b5
10 changed files with 148 additions and 4 deletions

View File

@ -1288,6 +1288,77 @@ private_browsing_mode:
- fenix-core@mozilla.com
expires: "2020-03-01"
tracking_protection:
exception_added:
type: event
description: >
A user added a tracking protection exception through the TP toggle in the panel.
bugs:
- 5312
data_reviews:
- https://github.com/mozilla-mobile/fenix/pull/5414#issuecomment-532847188
notification_emails:
- fenix-core@mozilla.com
expires: "2020-03-01"
panel_settings:
type: event
description: >
A user opened tracking protection settings from the panel.
bugs:
- 5312
data_reviews:
- https://github.com/mozilla-mobile/fenix/pull/5414#issuecomment-532847188
notification_emails:
- fenix-core@mozilla.com
expires: "2020-03-01"
etp_shield:
type: event
description: >
A user pressed the tracking protection shield icon in toolbar.
bugs:
- 5312
data_reviews:
- https://github.com/mozilla-mobile/fenix/pull/5414#issuecomment-532847188
notification_emails:
- fenix-core@mozilla.com
expires: "2020-03-01"
etp_tracker_list:
type: event
description: >
A user pressed into a list of categorized trackers in tracking protection panel.
bugs:
- 5312
data_reviews:
- https://github.com/mozilla-mobile/fenix/pull/5414#issuecomment-532847188
notification_emails:
- fenix-core@mozilla.com
expires: "2020-03-01"
etp_settings:
type: event
description: >
A user opened tracking protection settings through settings.
bugs:
- 5312
data_reviews:
- https://github.com/mozilla-mobile/fenix/pull/5414#issuecomment-532847188
notification_emails:
- fenix-core@mozilla.com
expires: "2020-03-01"
etp_setting_changed:
type: event
description: >
A user added a tracking protection exception through the TP toggle in the panel.
extra_keys:
etp_setting:
description: "The new setting for ETP: strict, standard"
bugs:
- 5312
data_reviews:
- https://github.com/mozilla-mobile/fenix/pull/5414#issuecomment-532847188
notification_emails:
- fenix-core@mozilla.com
expires: "2020-03-01"
private_browsing_shortcut:
create_shortcut:
type: event

View File

@ -59,6 +59,7 @@ import org.mozilla.fenix.collections.CreateCollectionViewModel
import org.mozilla.fenix.components.FenixSnackbar
import org.mozilla.fenix.components.FindInPageIntegration
import org.mozilla.fenix.components.StoreProvider
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.components.toolbar.BrowserFragmentState
import org.mozilla.fenix.components.toolbar.BrowserFragmentStore
import org.mozilla.fenix.components.toolbar.BrowserToolbarController
@ -70,6 +71,7 @@ import org.mozilla.fenix.components.toolbar.ToolbarIntegration
import org.mozilla.fenix.downloads.DownloadService
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.enterToImmersiveMode
import org.mozilla.fenix.ext.metrics
import org.mozilla.fenix.ext.requireComponents
import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.isInExperiment
@ -214,6 +216,7 @@ abstract class BaseBrowserFragment : Fragment(), BackHandler, SessionManager.Obs
}
browserToolbarView.view.setOnTrackingProtectionClickedListener {
context.metrics.track(Event.TrackingProtectionIconPressed)
showTrackingProtectionPanel()
}

View File

@ -37,6 +37,7 @@ import org.mozilla.fenix.GleanMetrics.SearchWidget
import org.mozilla.fenix.GleanMetrics.SyncAccount
import org.mozilla.fenix.GleanMetrics.SyncAuth
import org.mozilla.fenix.GleanMetrics.Tab
import org.mozilla.fenix.GleanMetrics.TrackingProtection
import org.mozilla.fenix.ext.components
private class EventWrapper<T : Enum<T>>(
@ -377,7 +378,25 @@ private val Event.wrapper: EventWrapper<*>?
is Event.TabMediaPause -> EventWrapper<NoExtraKeys>(
{ Tab.mediaPause.record(it) }
)
is Event.TrackingProtectionTrackerList -> EventWrapper<NoExtraKeys>(
{ TrackingProtection.etpTrackerList.record(it) }
)
is Event.TrackingProtectionIconPressed -> EventWrapper<NoExtraKeys>(
{ TrackingProtection.etpShield.record(it) }
)
is Event.TrackingProtectionSettingsPanel -> EventWrapper<NoExtraKeys>(
{ TrackingProtection.panelSettings.record(it) }
)
is Event.TrackingProtectionSettings -> EventWrapper<NoExtraKeys>(
{ TrackingProtection.etpSettings.record(it) }
)
is Event.TrackingProtectionException -> EventWrapper<NoExtraKeys>(
{ TrackingProtection.exceptionAdded.record(it) }
)
is Event.TrackingProtectionSettingChanged -> EventWrapper(
{ TrackingProtection.etpSettingChanged.record(it) },
{ TrackingProtection.etpSettingChangedKeys.valueOf(it) }
)
// Don't record other events in Glean:
is Event.AddBookmark -> null
is Event.OpenedBookmark -> null

View File

@ -20,6 +20,7 @@ import org.mozilla.fenix.GleanMetrics.ErrorPage
import org.mozilla.fenix.GleanMetrics.Events
import org.mozilla.fenix.GleanMetrics.Library
import org.mozilla.fenix.GleanMetrics.SearchShortcuts
import org.mozilla.fenix.GleanMetrics.TrackingProtection
import org.mozilla.fenix.R
import java.util.Locale
@ -115,6 +116,11 @@ sealed class Event {
object PrivateBrowsingStaticShortcutPrivateTab : Event()
object TabMediaPlay : Event()
object TabMediaPause : Event()
object TrackingProtectionTrackerList : Event()
object TrackingProtectionIconPressed : Event()
object TrackingProtectionSettingsPanel : Event()
object TrackingProtectionSettings : Event()
object TrackingProtectionException : Event()
// Interaction events with extras
@ -138,6 +144,12 @@ sealed class Event {
}
}
data class TrackingProtectionSettingChanged(val setting: Setting) : Event() {
enum class Setting { STRICT, STANDARD }
override val extras: Map<TrackingProtection.etpSettingChangedKeys, String>?
get() = hashMapOf(TrackingProtection.etpSettingChangedKeys.etpSetting to setting.name)
}
data class OpenedApp(val source: Source) : Event() {
enum class Source { APP_ICON, LINK, CUSTOM_TAB }
override val extras: Map<Events.appOpenedKeys, String>?

View File

@ -8,11 +8,13 @@ import android.content.Context
import android.content.SharedPreferences
import mozilla.components.support.ktx.android.content.PreferencesHolder
import mozilla.components.support.ktx.android.content.stringPreference
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.ext.metrics
/**
* Contains functionality to manage custom domains for allow-list.
*/
class ExceptionDomains(context: Context) : PreferencesHolder {
class ExceptionDomains(val context: Context) : PreferencesHolder {
override val preferences: SharedPreferences =
context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE)
@ -70,6 +72,7 @@ class ExceptionDomains(context: Context) : PreferencesHolder {
if (domain in load()) {
remove(listOf(domain))
} else {
context.metrics.track(Event.TrackingProtectionException)
add(domain)
}
}

View File

@ -160,6 +160,7 @@ class SettingsFragment : PreferenceFragmentCompat(), AccountObserver {
navigateToSearchEngineSettings()
}
resources.getString(pref_key_tracking_protection_settings) -> {
requireContext().metrics.track(Event.TrackingProtectionSettings)
navigateToTrackingProtectionSettings()
}
resources.getString(pref_key_site_permissions) -> {

View File

@ -14,8 +14,10 @@ import org.mozilla.fenix.BrowserDirection
import org.mozilla.fenix.FeatureFlags
import org.mozilla.fenix.HomeActivity
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.metrics
import org.mozilla.fenix.ext.nav
import org.mozilla.fenix.ext.settings
@ -60,7 +62,7 @@ class TrackingProtectionFragment : PreferenceFragmentCompat() {
}
bindStrict()
bindRecommended()
bindStandard()
setupRadioGroups()
val trackingProtectionLearnMore =
@ -88,7 +90,18 @@ class TrackingProtectionFragment : PreferenceFragmentCompat() {
private fun bindStrict() {
val keyStrict = getString(R.string.pref_key_tracking_protection_strict)
radioStrict = requireNotNull(findPreference(keyStrict))
radioStrict.onPreferenceChangeListener = SharedPreferenceUpdater()
radioStrict.isVisible = FeatureFlags.etpCategories
radioStrict.onPreferenceChangeListener = object : SharedPreferenceUpdater() {
override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean {
context?.metrics?.track(
Event.TrackingProtectionSettingChanged(
Event.TrackingProtectionSettingChanged.Setting.STRICT
)
)
return super.onPreferenceChange(preference, newValue)
}
}
radioStrict.onInfoClickListener {
nav(
R.id.trackingProtectionFragment,
@ -101,10 +114,20 @@ class TrackingProtectionFragment : PreferenceFragmentCompat() {
}
}
private fun bindRecommended() {
private fun bindStandard() {
val keyStandard = getString(R.string.pref_key_tracking_protection_standard)
radioStandard = requireNotNull(findPreference(keyStandard))
radioStandard.isVisible = FeatureFlags.etpCategories
radioStandard.onPreferenceChangeListener = object : SharedPreferenceUpdater() {
override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean {
context?.metrics?.track(
Event.TrackingProtectionSettingChanged(
Event.TrackingProtectionSettingChanged.Setting.STANDARD
)
)
return super.onPreferenceChange(preference, newValue)
}
}
radioStandard.onInfoClickListener {
nav(
R.id.trackingProtectionFragment,

View File

@ -29,8 +29,10 @@ import mozilla.components.support.base.feature.BackHandler
import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R
import org.mozilla.fenix.components.StoreProvider
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.exceptions.ExceptionDomains
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.metrics
import org.mozilla.fenix.ext.nav
import org.mozilla.fenix.ext.requireComponents
import org.mozilla.fenix.ext.tryGetHostFromUrl
@ -145,6 +147,7 @@ class TrackingProtectionPanelDialogFragment : AppCompatDialogFragment(), BackHan
}
private fun openTrackingProtectionSettings() {
requireContext().metrics.track(Event.TrackingProtectionSettingsPanel)
nav(
R.id.trackingProtectionPanelDialogFragment,
TrackingProtectionPanelDialogFragmentDirections

View File

@ -16,6 +16,8 @@ import kotlinx.android.synthetic.main.fragment_quick_settings_dialog_sheet.url
import kotlinx.android.synthetic.main.switch_with_description.view.*
import mozilla.components.support.ktx.android.net.hostWithoutCommonPrefixes
import org.mozilla.fenix.R
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.ext.metrics
import org.mozilla.fenix.trackingprotection.TrackingProtectionCategory.CROSS_SITE_TRACKING_COOKIES
import org.mozilla.fenix.trackingprotection.TrackingProtectionCategory.CRYPTOMINERS
import org.mozilla.fenix.trackingprotection.TrackingProtectionCategory.FINGERPRINTERS
@ -133,6 +135,7 @@ class TrackingProtectionPanelView(
override fun onClick(v: View) {
val category = getCategory(v) ?: return
v.context.metrics.track(Event.TrackingProtectionTrackerList)
interactor.openDetails(category, categoryBlocked = !isLoaded(v))
}

View File

@ -140,6 +140,12 @@ The following metrics are added to the ping:
| sync_auth.sign_up |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |User registered a new Firefox Account, and was signed into it |[1](https://github.com/mozilla-mobile/fenix/pull/4931#issuecomment-529740300)||2020-03-01 |
| tab.media_pause |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user pressed the pause icon on a tab from the home screen |[1](https://github.com/mozilla-mobile/fenix/pull/5266)||2020-03-01 |
| tab.media_play |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user pressed the play icon on a tab from the home screen |[1](https://github.com/mozilla-mobile/fenix/pull/5266)||2020-03-01 |
| tracking_protection.etp_setting_changed |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user added a tracking protection exception through the TP toggle in the panel. |[1](https://github.com/mozilla-mobile/fenix/pull/5414#issuecomment-532847188)|<ul><li>etp_setting: The new setting for ETP: strict, standard</li></ul>|2020-03-01 |
| tracking_protection.etp_settings |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user opened tracking protection settings through settings. |[1](https://github.com/mozilla-mobile/fenix/pull/5414#issuecomment-532847188)||2020-03-01 |
| tracking_protection.etp_shield |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user pressed the tracking protection shield icon in toolbar. |[1](https://github.com/mozilla-mobile/fenix/pull/5414#issuecomment-532847188)||2020-03-01 |
| tracking_protection.etp_tracker_list |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user pressed into a list of categorized trackers in tracking protection panel. |[1](https://github.com/mozilla-mobile/fenix/pull/5414#issuecomment-532847188)||2020-03-01 |
| tracking_protection.exception_added |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user added a tracking protection exception through the TP toggle in the panel. |[1](https://github.com/mozilla-mobile/fenix/pull/5414#issuecomment-532847188)||2020-03-01 |
| tracking_protection.panel_settings |[event](https://mozilla.github.io/glean/book/user/metrics/event.html) |A user opened tracking protection settings from the panel. |[1](https://github.com/mozilla-mobile/fenix/pull/5414#issuecomment-532847188)||2020-03-01 |
## metrics
This is a built-in ping that is assembled out of the box by the Glean SDK.