For #1607 - Passes "custom" as the search engine identifier for custom engines
parent
dfea877fb7
commit
45c6e3a784
|
@ -244,8 +244,16 @@ sealed class Event {
|
||||||
|
|
||||||
data class PerformedSearch(val eventSource: EventSource) : Event() {
|
data class PerformedSearch(val eventSource: EventSource) : Event() {
|
||||||
sealed class EngineSource {
|
sealed class EngineSource {
|
||||||
data class Default(val engine: SearchEngine) : EngineSource()
|
abstract val engine: SearchEngine
|
||||||
data class Shortcut(val engine: SearchEngine) : EngineSource()
|
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
|
val searchEngine: SearchEngine
|
||||||
get() = when (this) {
|
get() = when (this) {
|
||||||
|
@ -277,7 +285,7 @@ sealed class Event {
|
||||||
}
|
}
|
||||||
|
|
||||||
val countLabel: String
|
val countLabel: String
|
||||||
get() = "${source.searchEngine.identifier.toLowerCase(Locale.ROOT)}.$label"
|
get() = "${source.identifier.toLowerCase(Locale.getDefault())}.$label"
|
||||||
|
|
||||||
val sourceLabel: String
|
val sourceLabel: String
|
||||||
get() = "${source.descriptor}.$label"
|
get() = "${source.descriptor}.$label"
|
||||||
|
|
|
@ -14,6 +14,7 @@ import org.mozilla.fenix.BrowserDirection
|
||||||
import org.mozilla.fenix.HomeActivity
|
import org.mozilla.fenix.HomeActivity
|
||||||
import org.mozilla.fenix.R
|
import org.mozilla.fenix.R
|
||||||
import org.mozilla.fenix.components.metrics.Event
|
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.metrics
|
||||||
import org.mozilla.fenix.ext.nav
|
import org.mozilla.fenix.ext.nav
|
||||||
import org.mozilla.fenix.ext.settings
|
import org.mozilla.fenix.ext.settings
|
||||||
|
@ -126,10 +127,11 @@ class DefaultSearchController(
|
||||||
isSuggestion: Boolean
|
isSuggestion: Boolean
|
||||||
): Event.PerformedSearch {
|
): Event.PerformedSearch {
|
||||||
val isShortcut = engine != context.searchEngineManager.defaultSearchEngine
|
val isShortcut = engine != context.searchEngineManager.defaultSearchEngine
|
||||||
|
val isCustom = CustomSearchEngineStore.isCustomSearchEngine(context, engine.identifier)
|
||||||
|
|
||||||
val engineSource =
|
val engineSource =
|
||||||
if (isShortcut) Event.PerformedSearch.EngineSource.Shortcut(engine)
|
if (isShortcut) Event.PerformedSearch.EngineSource.Shortcut(engine, isCustom)
|
||||||
else Event.PerformedSearch.EngineSource.Default(engine)
|
else Event.PerformedSearch.EngineSource.Default(engine, isCustom)
|
||||||
|
|
||||||
val source =
|
val source =
|
||||||
if (isSuggestion) Event.PerformedSearch.EventSource.Suggestion(engineSource)
|
if (isSuggestion) Event.PerformedSearch.EventSource.Suggestion(engineSource)
|
||||||
|
|
|
@ -38,7 +38,7 @@ class PerformedSearchTest {
|
||||||
@Test
|
@Test
|
||||||
fun testThatCountLabelIsValid() {
|
fun testThatCountLabelIsValid() {
|
||||||
val labels = searchEngines.map {
|
val labels = searchEngines.map {
|
||||||
PerformedSearch(EventSource.Action(EngineSource.Shortcut(it))).eventSource.countLabel
|
PerformedSearch(EventSource.Action(EngineSource.Shortcut(it, false))).eventSource.countLabel
|
||||||
}
|
}
|
||||||
|
|
||||||
labels.forEach {
|
labels.forEach {
|
||||||
|
|
|
@ -38,11 +38,11 @@ import org.robolectric.annotation.Config
|
||||||
class SearchInteractorTest {
|
class SearchInteractorTest {
|
||||||
@Test
|
@Test
|
||||||
fun onUrlCommitted() {
|
fun onUrlCommitted() {
|
||||||
val context: HomeActivity = mockk()
|
val context: HomeActivity = mockk(relaxed = true)
|
||||||
val store: SearchFragmentStore = mockk()
|
val store: SearchFragmentStore = mockk()
|
||||||
val state: SearchFragmentState = mockk()
|
val state: SearchFragmentState = mockk()
|
||||||
val searchEngineManager: SearchEngineManager = mockk(relaxed = true)
|
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.metrics } returns mockk(relaxed = true)
|
||||||
every { context.searchEngineManager } returns searchEngineManager
|
every { context.searchEngineManager } returns searchEngineManager
|
||||||
|
@ -148,11 +148,11 @@ class SearchInteractorTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun onSearchTermsTapped() {
|
fun onSearchTermsTapped() {
|
||||||
val context: HomeActivity = mockk()
|
val context: HomeActivity = mockk(relaxed = true)
|
||||||
val store: SearchFragmentStore = mockk()
|
val store: SearchFragmentStore = mockk()
|
||||||
val state: SearchFragmentState = mockk()
|
val state: SearchFragmentState = mockk()
|
||||||
val searchEngineManager: SearchEngineManager = mockk(relaxed = true)
|
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.metrics } returns mockk(relaxed = true)
|
||||||
every { context.searchEngineManager } returns searchEngineManager
|
every { context.searchEngineManager } returns searchEngineManager
|
||||||
|
|
Loading…
Reference in New Issue