1
0
Fork 0

For #1607 - Passes "custom" as the search engine identifier for custom engines

master
Jeff Boek 2019-12-06 11:12:23 -08:00
parent dfea877fb7
commit 45c6e3a784
4 changed files with 20 additions and 10 deletions

View File

@ -244,8 +244,16 @@ sealed class Event {
data class PerformedSearch(val eventSource: EventSource) : Event() {
sealed class EngineSource {
data class Default(val engine: SearchEngine) : EngineSource()
data class Shortcut(val engine: SearchEngine) : EngineSource()
abstract val engine: SearchEngine
abstract val isCustom: Boolean
data class Default(override val engine: SearchEngine, override val isCustom: Boolean) : EngineSource()
data class Shortcut(override val engine: SearchEngine, override val isCustom: Boolean) : EngineSource()
// https://github.com/mozilla-mobile/fenix/issues/1607
// Sanitize identifiers for custom search engines.
val identifier: String
get() = if (isCustom) "custom" else engine.identifier
val searchEngine: SearchEngine
get() = when (this) {
@ -277,7 +285,7 @@ sealed class Event {
}
val countLabel: String
get() = "${source.searchEngine.identifier.toLowerCase(Locale.ROOT)}.$label"
get() = "${source.identifier.toLowerCase(Locale.getDefault())}.$label"
val sourceLabel: String
get() = "${source.descriptor}.$label"

View File

@ -14,6 +14,7 @@ import org.mozilla.fenix.BrowserDirection
import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.components.searchengine.CustomSearchEngineStore
import org.mozilla.fenix.ext.metrics
import org.mozilla.fenix.ext.nav
import org.mozilla.fenix.ext.settings
@ -126,10 +127,11 @@ class DefaultSearchController(
isSuggestion: Boolean
): Event.PerformedSearch {
val isShortcut = engine != context.searchEngineManager.defaultSearchEngine
val isCustom = CustomSearchEngineStore.isCustomSearchEngine(context, engine.identifier)
val engineSource =
if (isShortcut) Event.PerformedSearch.EngineSource.Shortcut(engine)
else Event.PerformedSearch.EngineSource.Default(engine)
if (isShortcut) Event.PerformedSearch.EngineSource.Shortcut(engine, isCustom)
else Event.PerformedSearch.EngineSource.Default(engine, isCustom)
val source =
if (isSuggestion) Event.PerformedSearch.EventSource.Suggestion(engineSource)

View File

@ -38,7 +38,7 @@ class PerformedSearchTest {
@Test
fun testThatCountLabelIsValid() {
val labels = searchEngines.map {
PerformedSearch(EventSource.Action(EngineSource.Shortcut(it))).eventSource.countLabel
PerformedSearch(EventSource.Action(EngineSource.Shortcut(it, false))).eventSource.countLabel
}
labels.forEach {

View File

@ -38,11 +38,11 @@ import org.robolectric.annotation.Config
class SearchInteractorTest {
@Test
fun onUrlCommitted() {
val context: HomeActivity = mockk()
val context: HomeActivity = mockk(relaxed = true)
val store: SearchFragmentStore = mockk()
val state: SearchFragmentState = mockk()
val searchEngineManager: SearchEngineManager = mockk(relaxed = true)
val searchEngine = SearchEngineSource.Default(mockk())
val searchEngine = SearchEngineSource.Default(mockk(relaxed = true))
every { context.metrics } returns mockk(relaxed = true)
every { context.searchEngineManager } returns searchEngineManager
@ -148,11 +148,11 @@ class SearchInteractorTest {
@Test
fun onSearchTermsTapped() {
val context: HomeActivity = mockk()
val context: HomeActivity = mockk(relaxed = true)
val store: SearchFragmentStore = mockk()
val state: SearchFragmentState = mockk()
val searchEngineManager: SearchEngineManager = mockk(relaxed = true)
val searchEngine = SearchEngineSource.Default(mockk())
val searchEngine = SearchEngineSource.Default(mockk(relaxed = true))
every { context.metrics } returns mockk(relaxed = true)
every { context.searchEngineManager } returns searchEngineManager