For #959 - Adds search related telemetry
parent
786592e8d0
commit
32f8e06e98
|
@ -31,6 +31,32 @@ events:
|
||||||
notification_emails:
|
notification_emails:
|
||||||
- telemetry-client-dev@mozilla.com
|
- telemetry-client-dev@mozilla.com
|
||||||
expires: never
|
expires: never
|
||||||
|
entered_url:
|
||||||
|
type: event
|
||||||
|
description: >
|
||||||
|
A user entered a url
|
||||||
|
extra_keys:
|
||||||
|
autocomplete: "The url was filled by the autocomplete"
|
||||||
|
bugs:
|
||||||
|
- 123456789
|
||||||
|
data_reviews:
|
||||||
|
- N/A
|
||||||
|
notification_emails:
|
||||||
|
- telemetry-client-dev@mozilla.com
|
||||||
|
expires: never
|
||||||
|
performed_search:
|
||||||
|
type: event
|
||||||
|
description: >
|
||||||
|
A user performed a search
|
||||||
|
extra_keys:
|
||||||
|
search_suggestion: "The search was initiated from a search suggestion"
|
||||||
|
bugs:
|
||||||
|
- 123456789
|
||||||
|
data_reviews:
|
||||||
|
- N/A
|
||||||
|
notification_emails:
|
||||||
|
- telemetry-client-dev@mozilla.com
|
||||||
|
expires: never
|
||||||
|
|
||||||
metrics:
|
metrics:
|
||||||
default_browser:
|
default_browser:
|
||||||
|
|
|
@ -16,6 +16,8 @@ private val Event.metricType: EventMetricType?
|
||||||
get() = when(this) {
|
get() = when(this) {
|
||||||
is Event.OpenedApp -> Events.appOpened
|
is Event.OpenedApp -> Events.appOpened
|
||||||
is Event.SearchBarTapped -> Events.searchBarTapped
|
is Event.SearchBarTapped -> Events.searchBarTapped
|
||||||
|
is Event.EnteredUrl -> Events.enteredUrl
|
||||||
|
is Event.PerformedSearch -> Events.performedSearch
|
||||||
else -> null
|
else -> null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,41 +13,43 @@ import org.mozilla.fenix.utils.Settings
|
||||||
|
|
||||||
private val Event.name: String?
|
private val Event.name: String?
|
||||||
get() = when (this) {
|
get() = when (this) {
|
||||||
is Event.AddBookmark -> "E_Add_Bookmark"
|
is Event.AddBookmark -> "E_Add_Bookmark"
|
||||||
is Event.RemoveBookmark -> "E_Remove_Bookmark"
|
is Event.RemoveBookmark -> "E_Remove_Bookmark"
|
||||||
is Event.OpenedBookmark -> "E_Opened_Bookmark"
|
is Event.OpenedBookmark -> "E_Opened_Bookmark"
|
||||||
is Event.OpenedApp -> "E_Opened_App"
|
is Event.OpenedApp -> "E_Opened_App"
|
||||||
is Event.OpenedAppFirstRun -> "E_Opened_App_FirstRun"
|
is Event.OpenedAppFirstRun -> "E_Opened_App_FirstRun"
|
||||||
is Event.InteractWithSearchURLArea -> "E_Interact_With_Search_URL_Area"
|
is Event.InteractWithSearchURLArea -> "E_Interact_With_Search_URL_Area"
|
||||||
is Event.SavedLoginandPassword -> "E_Saved_Login_and_Password"
|
is Event.SavedLoginandPassword -> "E_Saved_Login_and_Password"
|
||||||
is Event.FXANewSignup -> "E_FXA_New_Signup"
|
is Event.FXANewSignup -> "E_FXA_New_Signup"
|
||||||
is Event.UserSignedInToFxA -> "E_User_Signed_In_To_FxA"
|
is Event.UserSignedInToFxA -> "E_User_Signed_In_To_FxA"
|
||||||
is Event.UserDownloadedFocus -> "E_User_Downloaded_Focus"
|
is Event.UserDownloadedFocus -> "E_User_Downloaded_Focus"
|
||||||
is Event.UserDownloadedLockbox -> "E_User_Downloaded_Lockbox"
|
is Event.UserDownloadedLockbox -> "E_User_Downloaded_Lockbox"
|
||||||
is Event.UserDownloadedFennec -> "E_User_Downloaded_Fennec"
|
is Event.UserDownloadedFennec -> "E_User_Downloaded_Fennec"
|
||||||
is Event.TrackingProtectionSettingsChanged -> "E_Tracking_Protection_Settings_Changed"
|
is Event.TrackingProtectionSettingsChanged -> "E_Tracking_Protection_Settings_Changed"
|
||||||
is Event.FXASyncedNewDevice -> "E_FXA_Synced_New_Device"
|
is Event.FXASyncedNewDevice -> "E_FXA_Synced_New_Device"
|
||||||
is Event.DismissedOnboarding -> "E_Dismissed_Onboarding"
|
is Event.DismissedOnboarding -> "E_Dismissed_Onboarding"
|
||||||
is Event.Uninstall -> "E_Uninstall"
|
is Event.Uninstall -> "E_Uninstall"
|
||||||
is Event.OpenNewNormalTab -> "E_Open_New_Normal_Tab"
|
is Event.OpenNewNormalTab -> "E_Open_New_Normal_Tab"
|
||||||
is Event.OpenNewPrivateTab -> "E_Open_New_Private_Tab"
|
is Event.OpenNewPrivateTab -> "E_Open_New_Private_Tab"
|
||||||
is Event.ShareStarted -> "E_Share_Started"
|
is Event.ShareStarted -> "E_Share_Started"
|
||||||
is Event.ShareCanceled -> "E_Share_Canceled"
|
is Event.ShareCanceled -> "E_Share_Canceled"
|
||||||
is Event.ShareCompleted -> "E_Share_Completed"
|
is Event.ShareCompleted -> "E_Share_Completed"
|
||||||
is Event.ClosePrivateTabs -> "E_Close_Private_Tabs"
|
is Event.ClosePrivateTabs -> "E_Close_Private_Tabs"
|
||||||
is Event.ClearedPrivateData -> "E_Cleared_Private_Data"
|
is Event.ClearedPrivateData -> "E_Cleared_Private_Data"
|
||||||
is Event.OpenedLoginManager -> "E_Opened_Login_Manager"
|
is Event.OpenedLoginManager -> "E_Opened_Login_Manager"
|
||||||
is Event.OpenedMailtoLink -> "E_Opened_Mailto_Link"
|
is Event.OpenedMailtoLink -> "E_Opened_Mailto_Link"
|
||||||
is Event.DownloadMediaSavedImage -> "E_Download_Media_Saved_Image"
|
is Event.DownloadMediaSavedImage -> "E_Download_Media_Saved_Image"
|
||||||
is Event.UserUsedReaderView -> "E_User_Used_Reader_View"
|
is Event.UserUsedReaderView -> "E_User_Used_Reader_View"
|
||||||
is Event.UserDownloadedPocket -> "E_User_Downloaded_Pocket"
|
is Event.UserDownloadedPocket -> "E_User_Downloaded_Pocket"
|
||||||
is Event.UserDownloadedSend -> "E_User_Downloaded_Send"
|
is Event.UserDownloadedSend -> "E_User_Downloaded_Send"
|
||||||
is Event.OpenedPocketStory -> "E_Opened_Pocket_Story"
|
is Event.OpenedPocketStory -> "E_Opened_Pocket_Story"
|
||||||
is Event.DarkModeEnabled -> "E_Dark_Mode_Enabled"
|
is Event.DarkModeEnabled -> "E_Dark_Mode_Enabled"
|
||||||
|
|
||||||
// Do not track these events in Leanplum
|
// Do not track these events in Leanplum
|
||||||
is Event.SearchBarTapped -> ""
|
is Event.SearchBarTapped -> ""
|
||||||
}
|
is Event.EnteredUrl -> ""
|
||||||
|
is Event.PerformedSearch -> ""
|
||||||
|
}
|
||||||
|
|
||||||
class LeanplumMetricsService(private val application: Application) : MetricsService {
|
class LeanplumMetricsService(private val application: Application) : MetricsService {
|
||||||
data class Token(val id: String, val token: String) {
|
data class Token(val id: String, val token: String) {
|
||||||
|
|
|
@ -52,6 +52,16 @@ sealed class Event {
|
||||||
get() = mapOf("source" to source.name)
|
get() = mapOf("source" to source.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
data class EnteredUrl(val autoCompleted: Boolean) : Event() {
|
||||||
|
override val extras: Map<String, String>?
|
||||||
|
get() = mapOf("autocomplete" to autoCompleted.toString())
|
||||||
|
}
|
||||||
|
|
||||||
|
data class PerformedSearch(val fromSearchSuggestion: Boolean) : Event() {
|
||||||
|
override val extras: Map<String, String>?
|
||||||
|
get() = mapOf("search_suggestion" to fromSearchSuggestion.toString())
|
||||||
|
}
|
||||||
|
|
||||||
open val extras: Map<String, String>?
|
open val extras: Map<String, String>?
|
||||||
get() = null
|
get() = null
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,10 +14,12 @@ import androidx.fragment.app.Fragment
|
||||||
import kotlinx.android.synthetic.main.fragment_search.view.*
|
import kotlinx.android.synthetic.main.fragment_search.view.*
|
||||||
import mozilla.components.feature.search.SearchUseCases
|
import mozilla.components.feature.search.SearchUseCases
|
||||||
import mozilla.components.feature.session.SessionUseCases
|
import mozilla.components.feature.session.SessionUseCases
|
||||||
|
import mozilla.components.support.ktx.kotlin.isUrl
|
||||||
import org.mozilla.fenix.BrowserDirection
|
import org.mozilla.fenix.BrowserDirection
|
||||||
import org.mozilla.fenix.HomeActivity
|
import org.mozilla.fenix.HomeActivity
|
||||||
import org.mozilla.fenix.utils.ItsNotBrokenSnack
|
import org.mozilla.fenix.utils.ItsNotBrokenSnack
|
||||||
import org.mozilla.fenix.R
|
import org.mozilla.fenix.R
|
||||||
|
import org.mozilla.fenix.components.metrics.Event
|
||||||
import org.mozilla.fenix.components.toolbar.SearchAction
|
import org.mozilla.fenix.components.toolbar.SearchAction
|
||||||
import org.mozilla.fenix.components.toolbar.SearchState
|
import org.mozilla.fenix.components.toolbar.SearchState
|
||||||
import org.mozilla.fenix.components.toolbar.ToolbarComponent
|
import org.mozilla.fenix.components.toolbar.ToolbarComponent
|
||||||
|
@ -92,6 +94,14 @@ class SearchFragment : Fragment() {
|
||||||
if (it.url.isNotBlank()) {
|
if (it.url.isNotBlank()) {
|
||||||
(activity as HomeActivity).openToBrowserAndLoad(it.url, it.session,
|
(activity as HomeActivity).openToBrowserAndLoad(it.url, it.session,
|
||||||
BrowserDirection.FromSearch)
|
BrowserDirection.FromSearch)
|
||||||
|
|
||||||
|
val event = if (it.url.isUrl()) {
|
||||||
|
Event.EnteredUrl(false)
|
||||||
|
} else {
|
||||||
|
Event.PerformedSearch(false)
|
||||||
|
}
|
||||||
|
|
||||||
|
requireComponents.analytics.metrics.track(event)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
is SearchAction.TextChanged -> {
|
is SearchAction.TextChanged -> {
|
||||||
|
@ -109,11 +119,13 @@ class SearchFragment : Fragment() {
|
||||||
is AwesomeBarAction.URLTapped -> {
|
is AwesomeBarAction.URLTapped -> {
|
||||||
getSessionUseCase(requireContext(), sessionId == null).invoke(it.url)
|
getSessionUseCase(requireContext(), sessionId == null).invoke(it.url)
|
||||||
(activity as HomeActivity).openToBrowser(sessionId, BrowserDirection.FromSearch)
|
(activity as HomeActivity).openToBrowser(sessionId, BrowserDirection.FromSearch)
|
||||||
|
requireComponents.analytics.metrics.track(Event.EnteredUrl(false))
|
||||||
}
|
}
|
||||||
is AwesomeBarAction.SearchTermsTapped -> {
|
is AwesomeBarAction.SearchTermsTapped -> {
|
||||||
getSearchUseCase(requireContext(), sessionId == null)
|
getSearchUseCase(requireContext(), sessionId == null)
|
||||||
.invoke(it.searchTerms, it.engine)
|
.invoke(it.searchTerms, it.engine)
|
||||||
(activity as HomeActivity).openToBrowser(sessionId, BrowserDirection.FromSearch)
|
(activity as HomeActivity).openToBrowser(sessionId, BrowserDirection.FromSearch)
|
||||||
|
requireComponents.analytics.metrics.track(Event.PerformedSearch(true))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue