From 45c6e3a78474af741dc9f2ca32569cd1b39625ef Mon Sep 17 00:00:00 2001 From: Jeff Boek Date: Fri, 6 Dec 2019 11:12:23 -0800 Subject: [PATCH] For #1607 - Passes "custom" as the search engine identifier for custom engines --- .../mozilla/fenix/components/metrics/Metrics.kt | 14 +++++++++++--- .../org/mozilla/fenix/search/SearchController.kt | 6 ++++-- .../components/metrics/PerformedSearchTest.kt | 2 +- .../mozilla/fenix/search/SearchInteractorTest.kt | 8 ++++---- 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/components/metrics/Metrics.kt b/app/src/main/java/org/mozilla/fenix/components/metrics/Metrics.kt index daf0f5f89..ee5fcd870 100644 --- a/app/src/main/java/org/mozilla/fenix/components/metrics/Metrics.kt +++ b/app/src/main/java/org/mozilla/fenix/components/metrics/Metrics.kt @@ -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" diff --git a/app/src/main/java/org/mozilla/fenix/search/SearchController.kt b/app/src/main/java/org/mozilla/fenix/search/SearchController.kt index 4454b7f22..0f31da903 100644 --- a/app/src/main/java/org/mozilla/fenix/search/SearchController.kt +++ b/app/src/main/java/org/mozilla/fenix/search/SearchController.kt @@ -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) diff --git a/app/src/test/java/org/mozilla/fenix/components/metrics/PerformedSearchTest.kt b/app/src/test/java/org/mozilla/fenix/components/metrics/PerformedSearchTest.kt index cff586d12..8e79e2fb2 100644 --- a/app/src/test/java/org/mozilla/fenix/components/metrics/PerformedSearchTest.kt +++ b/app/src/test/java/org/mozilla/fenix/components/metrics/PerformedSearchTest.kt @@ -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 { diff --git a/app/src/test/java/org/mozilla/fenix/search/SearchInteractorTest.kt b/app/src/test/java/org/mozilla/fenix/search/SearchInteractorTest.kt index 8c9e2a263..159dfd81d 100644 --- a/app/src/test/java/org/mozilla/fenix/search/SearchInteractorTest.kt +++ b/app/src/test/java/org/mozilla/fenix/search/SearchInteractorTest.kt @@ -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