For #6556: Adds Telemetry counts for Search Access Points
Added two new sources to be counted ('widget' and 'shortcut') besides 'action' and 'suggestion'. Also modified/fixed some tests.fennec/nightly
parent
9c25d274d0
commit
981d19de13
@ -0,0 +1,54 @@
|
||||
/* 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/. */
|
||||
|
||||
package org.mozilla.fenix.components.metrics
|
||||
|
||||
import android.content.Context
|
||||
import mozilla.components.browser.search.SearchEngine
|
||||
import org.mozilla.fenix.components.metrics.Event.PerformedSearch.SearchAccessPoint
|
||||
import org.mozilla.fenix.components.searchengine.CustomSearchEngineStore
|
||||
import org.mozilla.fenix.ext.searchEngineManager
|
||||
|
||||
object MetricsUtils {
|
||||
fun createSearchEvent(
|
||||
engine: SearchEngine,
|
||||
context: Context,
|
||||
searchAccessPoint: SearchAccessPoint
|
||||
): Event.PerformedSearch? {
|
||||
val isShortcut = engine != context.searchEngineManager.defaultSearchEngine
|
||||
val isCustom = CustomSearchEngineStore.isCustomSearchEngine(context, engine.identifier)
|
||||
|
||||
val engineSource =
|
||||
if (isShortcut) Event.PerformedSearch.EngineSource.Shortcut(engine, isCustom)
|
||||
else Event.PerformedSearch.EngineSource.Default(engine, isCustom)
|
||||
|
||||
return when (searchAccessPoint) {
|
||||
SearchAccessPoint.SUGGESTION -> Event.PerformedSearch(
|
||||
Event.PerformedSearch.EventSource.Suggestion(
|
||||
engineSource
|
||||
)
|
||||
)
|
||||
SearchAccessPoint.ACTION -> Event.PerformedSearch(
|
||||
Event.PerformedSearch.EventSource.Action(
|
||||
engineSource
|
||||
)
|
||||
)
|
||||
SearchAccessPoint.WIDGET -> Event.PerformedSearch(
|
||||
Event.PerformedSearch.EventSource.Widget(
|
||||
engineSource
|
||||
)
|
||||
)
|
||||
SearchAccessPoint.SHORTCUT -> Event.PerformedSearch(
|
||||
Event.PerformedSearch.EventSource.Shortcut(
|
||||
engineSource
|
||||
)
|
||||
)
|
||||
SearchAccessPoint.NONE -> Event.PerformedSearch(
|
||||
Event.PerformedSearch.EventSource.Other(
|
||||
engineSource
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,62 @@
|
||||
package org.mozilla.fenix.components.metrics
|
||||
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import mozilla.components.browser.search.SearchEngine
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.TestApplication
|
||||
import org.robolectric.RobolectricTestRunner
|
||||
import org.robolectric.annotation.Config
|
||||
|
||||
@RunWith(RobolectricTestRunner::class)
|
||||
@Config(application = TestApplication::class)
|
||||
class MetricsUtilsTest {
|
||||
|
||||
@Test
|
||||
fun createSearchEvent() {
|
||||
val engine: SearchEngine = mockk(relaxed = true)
|
||||
val context = testContext
|
||||
|
||||
every { engine.identifier } returns ENGINE_SOURCE_IDENTIFIER
|
||||
|
||||
assertEquals(
|
||||
"$ENGINE_SOURCE_IDENTIFIER.suggestion",
|
||||
MetricsUtils.createSearchEvent(
|
||||
engine,
|
||||
context,
|
||||
Event.PerformedSearch.SearchAccessPoint.SUGGESTION
|
||||
)?.eventSource?.countLabel
|
||||
)
|
||||
assertEquals(
|
||||
"$ENGINE_SOURCE_IDENTIFIER.action",
|
||||
MetricsUtils.createSearchEvent(
|
||||
engine,
|
||||
context,
|
||||
Event.PerformedSearch.SearchAccessPoint.ACTION
|
||||
)?.eventSource?.countLabel
|
||||
)
|
||||
assertEquals(
|
||||
"$ENGINE_SOURCE_IDENTIFIER.widget",
|
||||
MetricsUtils.createSearchEvent(
|
||||
engine,
|
||||
context,
|
||||
Event.PerformedSearch.SearchAccessPoint.WIDGET
|
||||
)?.eventSource?.countLabel
|
||||
)
|
||||
assertEquals(
|
||||
"$ENGINE_SOURCE_IDENTIFIER.shortcut",
|
||||
MetricsUtils.createSearchEvent(
|
||||
engine,
|
||||
context,
|
||||
Event.PerformedSearch.SearchAccessPoint.SHORTCUT
|
||||
)?.eventSource?.countLabel
|
||||
)
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val ENGINE_SOURCE_IDENTIFIER = "google-2018"
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue