From fd1fcd8b8924e479afc14567d85c14126b3e0647 Mon Sep 17 00:00:00 2001 From: Sawyer Blatz Date: Tue, 17 Sep 2019 12:32:26 -0700 Subject: [PATCH] For #4155: Adds paste & go for search terms --- .../toolbar/BrowserToolbarController.kt | 11 +++++++++-- .../components/toolbar/BrowserToolbarView.kt | 4 ++-- .../DefaultBrowserToolbarControllerTest.kt | 19 ++++++++++++++++--- 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarController.kt b/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarController.kt index 652f5a95f..93c17c7fd 100644 --- a/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarController.kt +++ b/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarController.kt @@ -16,6 +16,7 @@ import kotlinx.coroutines.ObsoleteCoroutinesApi import kotlinx.coroutines.launch import mozilla.components.browser.session.Session import mozilla.components.concept.engine.EngineView +import mozilla.components.support.ktx.kotlin.isUrl import org.mozilla.fenix.NavGraphDirections import org.mozilla.fenix.R import org.mozilla.fenix.browser.BrowserFragment @@ -69,8 +70,14 @@ class DefaultBrowserToolbarController( } override fun handleToolbarPasteAndGo(text: String) { - activity.components.core.sessionManager.selectedSession?.searchTerms = "" - activity.components.useCases.sessionUseCases.loadUrl(text) + if (text.isUrl()) { + activity.components.core.sessionManager.selectedSession?.searchTerms = "" + activity.components.useCases.sessionUseCases.loadUrl.invoke(text) + return + } + + activity.components.core.sessionManager.selectedSession?.searchTerms = text + activity.components.useCases.searchUseCases.defaultSearch.invoke(text) } override fun handleToolbarClick() { diff --git a/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarView.kt b/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarView.kt index 0fd81157e..854f80aea 100644 --- a/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarView.kt +++ b/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarView.kt @@ -64,8 +64,8 @@ class BrowserToolbarView( popupWindow.elevation = view.context.dimen(R.dimen.mozac_browser_menu_elevation).toFloat() - customView.paste.isVisible = !clipboard.url.isNullOrEmpty() && !isCustomTabSession - customView.paste_and_go.isVisible = !clipboard.url.isNullOrEmpty() && !isCustomTabSession + customView.paste.isVisible = !clipboard.text.isNullOrEmpty() && !isCustomTabSession + customView.paste_and_go.isVisible = !clipboard.text.isNullOrEmpty() && !isCustomTabSession customView.copy.setOnClickListener { popupWindow.dismiss() diff --git a/app/src/test/java/org/mozilla/fenix/components/toolbar/DefaultBrowserToolbarControllerTest.kt b/app/src/test/java/org/mozilla/fenix/components/toolbar/DefaultBrowserToolbarControllerTest.kt index be11380ec..4cc3720b6 100644 --- a/app/src/test/java/org/mozilla/fenix/components/toolbar/DefaultBrowserToolbarControllerTest.kt +++ b/app/src/test/java/org/mozilla/fenix/components/toolbar/DefaultBrowserToolbarControllerTest.kt @@ -24,6 +24,7 @@ import kotlinx.coroutines.test.setMain import mozilla.components.browser.session.Session import mozilla.components.browser.session.SessionManager import mozilla.components.concept.engine.EngineView +import mozilla.components.feature.search.SearchUseCases import mozilla.components.feature.session.SessionUseCases import mozilla.components.feature.tabs.TabsUseCases import org.junit.After @@ -65,9 +66,9 @@ class DefaultBrowserToolbarControllerTest { private val getSupportUrl: () -> String = { "https://supportUrl.org" } private val openInFenixIntent: Intent = mockk(relaxed = true) private val currentSessionAsTab: Tab = mockk(relaxed = true) - private val bottomSheetBehavior: QuickActionSheetBehavior = - mockk(relaxed = true) + private val bottomSheetBehavior: QuickActionSheetBehavior = mockk(relaxed = true) private val metrics: MetricController = mockk(relaxed = true) + private val searchUseCases: SearchUseCases = mockk(relaxed = true) private val sessionUseCases: SessionUseCases = mockk(relaxed = true) private val scope: LifecycleCoroutineScope = mockk(relaxed = true) @@ -104,6 +105,7 @@ class DefaultBrowserToolbarControllerTest { every { activity.components.analytics } returns analytics every { analytics.metrics } returns metrics every { activity.components.useCases.sessionUseCases } returns sessionUseCases + every { activity.components.useCases.searchUseCases } returns searchUseCases every { activity.components.core.sessionManager.selectedSession } returns currentSession } @@ -126,9 +128,20 @@ class DefaultBrowserToolbarControllerTest { } @Test - fun handleBrowserToolbarPasteAndGo() { + fun handleBrowserToolbarPasteAndGoSearch() { val pastedText = "Mozilla" + controller.handleToolbarPasteAndGo(pastedText) + verifyOrder { + currentSession.searchTerms = "Mozilla" + searchUseCases.defaultSearch.invoke(pastedText) + } + } + + @Test + fun handleBrowserToolbarPasteAndGoUrl() { + val pastedText = "https://mozilla.org" + controller.handleToolbarPasteAndGo(pastedText) verifyOrder { currentSession.searchTerms = ""