Closes #17531: Use shared preference to store top sites count for telemetry (#18557)

upstream-sync
Roger Yang 3 years ago committed by GitHub
parent 70c3e1777b
commit d2ffaa85f9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -362,10 +362,6 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity {
window.addFlags(FLAG_SECURE)
}
// We will remove this when AC code lands to emit a fact on getTopSites in DefaultTopSitesStorage
// https://github.com/mozilla-mobile/android-components/issues/8679
settings().topSitesSize = components.core.topSitesStorage.cachedTopSites.size
lifecycleScope.launch(IO) {
components.core.bookmarksStorage.getTree(BookmarkRoot.Root.id, true)?.let {
val desktopRootNode = DesktopFolders(

@ -216,9 +216,6 @@ sealed class Event {
object ContextMenuSelectAllTapped : Event()
object ContextMenuShareTapped : Event()
object HaveTopSites : Event()
object HaveNoTopSites : Event()
object SyncedTabSuggestionClicked : Event()
object BookmarkSuggestionClicked : Event()
object ClipboardSuggestionClicked : Event()

@ -751,13 +751,6 @@ private val Event.wrapper: EventWrapper<*>?
Event.HaveNoOpenTabs -> EventWrapper<NoExtraKeys>(
{ Metrics.hasOpenTabs.set(false) }
)
Event.HaveTopSites -> EventWrapper<NoExtraKeys>(
{ Metrics.hasTopSites.set(true) }
)
Event.HaveNoTopSites -> EventWrapper<NoExtraKeys>(
{ Metrics.hasTopSites.set(false) }
)
is Event.BannerOpenInAppDisplayed -> EventWrapper<NoExtraKeys>(
{ BannerOpenInApp.displayed.record(it) }
)

@ -266,11 +266,7 @@ internal class ReleaseMetricController(
// Do nothing
}
return if (count > 0) {
Event.HaveTopSites
} else {
Event.HaveNoTopSites
}
settings.topSitesSize = count
}
null
}

@ -16,7 +16,6 @@ import mozilla.components.support.base.facts.Action
import mozilla.components.support.base.facts.Fact
import mozilla.components.support.base.log.logger.Logger
import mozilla.components.support.webextensions.facts.WebExtensionFacts
import org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Test
import org.mozilla.fenix.utils.Settings
@ -182,59 +181,26 @@ class MetricControllerTest {
}
@Test
fun `topsites fact should convert to the right events`() {
var enabled = true
fun `topsites fact should set value in SharedPreference`() {
val enabled = true
val settings: Settings = mockk(relaxed = true)
val controller = ReleaseMetricController(
services = listOf(dataService1),
isDataTelemetryEnabled = { enabled },
isMarketingDataTelemetryEnabled = { enabled },
mockk()
settings
)
var fact = Fact(
val fact = Fact(
Component.FEATURE_TOP_SITES,
Action.INTERACTION,
TopSitesFacts.Items.COUNT,
"1"
)
assertEquals(controller.factToEvent(fact), Event.HaveTopSites)
fact = Fact(
Component.FEATURE_TOP_SITES,
Action.INTERACTION,
TopSitesFacts.Items.COUNT,
"0"
)
assertEquals(controller.factToEvent(fact), Event.HaveNoTopSites)
fact = Fact(
Component.FEATURE_TOP_SITES,
Action.INTERACTION,
TopSitesFacts.Items.COUNT,
"10"
)
assertEquals(controller.factToEvent(fact), Event.HaveTopSites)
fact = Fact(
Component.FEATURE_TOP_SITES,
Action.INTERACTION,
TopSitesFacts.Items.COUNT,
"-4"
)
assertEquals(controller.factToEvent(fact), Event.HaveNoTopSites)
fact = Fact(
Component.FEATURE_TOP_SITES,
Action.INTERACTION,
TopSitesFacts.Items.COUNT,
"test"
)
assertEquals(controller.factToEvent(fact), Event.HaveNoTopSites)
verify(exactly = 0) { settings.topSitesSize = any() }
controller.factToEvent(fact)
verify(exactly = 1) { settings.topSitesSize = any() }
}
@Test

Loading…
Cancel
Save