parent
c6415ce18f
commit
8a08cb941e
|
@ -689,6 +689,38 @@ metrics:
|
|||
notification_emails:
|
||||
- fenix-core@mozilla.com
|
||||
expires: "2020-09-01"
|
||||
tabs_open_count:
|
||||
type: counter
|
||||
lifetime: application
|
||||
description: |
|
||||
A counter that indicates how many NORMAL tabs a user has open. This
|
||||
value will only be set if the user has at least *one* open tab. If they
|
||||
have 0, this ping will not get sent, resulting in a null value. To
|
||||
disambiguate between a failed `tabs_open_count` ping and 0 open tabs,
|
||||
please see `has_open_tabs`.
|
||||
send_in_pings:
|
||||
- metrics
|
||||
bugs:
|
||||
- https://github.com/mozilla-mobile/fenix/issues/11479
|
||||
data_reviews:
|
||||
- https://github.com/mozilla-mobile/fenix/pull/12024
|
||||
notification_emails:
|
||||
- fenix-core@mozilla.com
|
||||
expires: "2020-09-01"
|
||||
has_open_tabs:
|
||||
type: boolean
|
||||
lifetime: application
|
||||
description: |
|
||||
A boolean that indicates if the user has any open NORMAL tabs.
|
||||
send_in_pings:
|
||||
- metrics
|
||||
bugs:
|
||||
- https://github.com/mozilla-mobile/fenix/issues/11479
|
||||
data_reviews:
|
||||
- https://github.com/mozilla-mobile/fenix/pull/12024
|
||||
notification_emails:
|
||||
- fenix-core@mozilla.com
|
||||
expires: "2020-09-01"
|
||||
|
||||
preferences:
|
||||
show_search_suggestions:
|
||||
|
|
|
@ -12,9 +12,12 @@ import mozilla.components.browser.session.SessionManager
|
|||
import org.mozilla.fenix.components.metrics.MetricController
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.ext.metrics
|
||||
import org.mozilla.fenix.ext.settings
|
||||
import org.mozilla.fenix.search.telemetry.ads.AdsTelemetry
|
||||
import org.mozilla.fenix.utils.Settings
|
||||
|
||||
class UriOpenedObserver(
|
||||
private val settings: Settings,
|
||||
private val owner: LifecycleOwner,
|
||||
private val sessionManager: SessionManager,
|
||||
metrics: MetricController,
|
||||
|
@ -22,6 +25,7 @@ class UriOpenedObserver(
|
|||
) : SessionManager.Observer {
|
||||
|
||||
constructor(activity: FragmentActivity) : this(
|
||||
activity.applicationContext.settings(),
|
||||
activity,
|
||||
activity.components.core.sessionManager,
|
||||
activity.metrics,
|
||||
|
@ -41,20 +45,24 @@ class UriOpenedObserver(
|
|||
}
|
||||
|
||||
override fun onAllSessionsRemoved() {
|
||||
settings.setOpenTabsCount(sessionManager.sessions.filter { !it.private }.size)
|
||||
sessionManager.sessions.forEach {
|
||||
it.unregister(singleSessionObserver)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onSessionAdded(session: Session) {
|
||||
settings.setOpenTabsCount(sessionManager.sessions.filter { !it.private }.size)
|
||||
session.register(singleSessionObserver, owner)
|
||||
}
|
||||
|
||||
override fun onSessionRemoved(session: Session) {
|
||||
settings.setOpenTabsCount(sessionManager.sessions.filter { !it.private }.size)
|
||||
session.unregister(singleSessionObserver)
|
||||
}
|
||||
|
||||
override fun onSessionsRestored() {
|
||||
settings.setOpenTabsCount(sessionManager.sessions.filter { !it.private }.size)
|
||||
sessionManager.sessions.forEach {
|
||||
it.register(singleSessionObserver, owner)
|
||||
}
|
||||
|
|
|
@ -697,6 +697,12 @@ class GleanMetricsService(private val context: Context) : MetricsService {
|
|||
|
||||
searchWidgetInstalled.set(context.settings().searchWidgetInstalled)
|
||||
|
||||
val openTabsCount = context.settings().openTabsCount
|
||||
hasOpenTabs.set(openTabsCount > 0)
|
||||
if (openTabsCount > 0) {
|
||||
tabsOpenCount.add(openTabsCount)
|
||||
}
|
||||
|
||||
val topSitesSize = context.settings().topSitesSize
|
||||
hasTopSites.set(topSitesSize > 0)
|
||||
if (topSitesSize > 0) {
|
||||
|
|
|
@ -775,6 +775,19 @@ class Settings private constructor(
|
|||
default = 0
|
||||
)
|
||||
|
||||
fun setOpenTabsCount(count: Int) {
|
||||
preferences.edit().putInt(
|
||||
appContext.getPreferenceKey(R.string.pref_key_open_tabs_count),
|
||||
count
|
||||
).apply()
|
||||
}
|
||||
|
||||
val openTabsCount: Int
|
||||
get() = preferences.getInt(
|
||||
appContext.getPreferenceKey(R.string.pref_key_open_tabs_count),
|
||||
0
|
||||
)
|
||||
|
||||
private var savedLoginsSortingStrategyString by stringPreference(
|
||||
appContext.getPreferenceKey(R.string.pref_key_saved_logins_sorting_strategy),
|
||||
default = SavedLoginsFragment.SORTING_STRATEGY_ALPHABETICALLY
|
||||
|
|
|
@ -177,6 +177,8 @@
|
|||
|
||||
<string name="pref_key_debug_settings" translatable="false">pref_key_debug_settings</string>
|
||||
|
||||
<string name="pref_key_open_tabs_count" translatable="false">pref_key_open_tabs_count</string>
|
||||
|
||||
<string name="pref_key_search_count" translatable="false">pref_key_search_count</string>
|
||||
<string name="pref_key_search_widget_cfr_display_count" translatable="false">pref_key_search_widget_cfr_display_count</string>
|
||||
<string name="pref_key_search_widget_cfr_dismiss_count" translatable="false">pref_key_search_widget_cfr_dismiss_count</string>
|
||||
|
|
|
@ -16,9 +16,11 @@ import org.junit.Test
|
|||
import org.mozilla.fenix.components.metrics.Event
|
||||
import org.mozilla.fenix.components.metrics.MetricController
|
||||
import org.mozilla.fenix.search.telemetry.ads.AdsTelemetry
|
||||
import org.mozilla.fenix.utils.Settings
|
||||
|
||||
class TelemetrySessionObserverTest {
|
||||
|
||||
private val settings: Settings = mockk(relaxed = true)
|
||||
private val owner: LifecycleOwner = mockk(relaxed = true)
|
||||
private val sessionManager: SessionManager = mockk(relaxed = true)
|
||||
private val metrics: MetricController = mockk(relaxed = true)
|
||||
|
@ -29,7 +31,7 @@ class TelemetrySessionObserverTest {
|
|||
@Before
|
||||
fun setup() {
|
||||
singleSessionObserver =
|
||||
UriOpenedObserver(owner, sessionManager, metrics, ads).singleSessionObserver
|
||||
UriOpenedObserver(settings, owner, sessionManager, metrics, ads).singleSessionObserver
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
@ -11,11 +11,13 @@ import mozilla.components.browser.session.Session
|
|||
import mozilla.components.browser.session.SessionManager
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.mozilla.fenix.search.telemetry.ads.AdsTelemetry
|
||||
import org.mozilla.fenix.components.metrics.MetricController
|
||||
import org.mozilla.fenix.search.telemetry.ads.AdsTelemetry
|
||||
import org.mozilla.fenix.utils.Settings
|
||||
|
||||
class UriOpenedObserverTest {
|
||||
|
||||
private val settings: Settings = mockk(relaxed = true)
|
||||
private val owner: LifecycleOwner = mockk(relaxed = true)
|
||||
private val sessionManager: SessionManager = mockk(relaxed = true)
|
||||
private val metrics: MetricController = mockk()
|
||||
|
@ -24,7 +26,7 @@ class UriOpenedObserverTest {
|
|||
|
||||
@Before
|
||||
fun setup() {
|
||||
observer = UriOpenedObserver(owner, sessionManager, metrics, ads)
|
||||
observer = UriOpenedObserver(settings, owner, sessionManager, metrics, ads)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue