From 70486039c09c432bfd817398841044e08146eb12 Mon Sep 17 00:00:00 2001 From: Sawyer Blatz Date: Mon, 29 Apr 2019 12:32:30 -0700 Subject: [PATCH] Closes #2147: Refactors usage of openToBrowserAndLoad --- .../java/org/mozilla/fenix/HomeActivity.kt | 22 ++++---- .../mozilla/fenix/browser/BrowserFragment.kt | 4 +- .../org/mozilla/fenix/home/HomeFragment.kt | 13 +++-- .../library/bookmarks/BookmarkFragment.kt | 7 ++- .../fenix/library/history/HistoryFragment.kt | 5 +- .../mozilla/fenix/search/SearchFragment.kt | 53 +++++++------------ .../fenix/settings/SettingsFragment.kt | 10 ++-- 7 files changed, 57 insertions(+), 57 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt index 1a38a2ef6..5daf2bb38 100644 --- a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt +++ b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt @@ -140,22 +140,22 @@ open class HomeActivity : AppCompatActivity() { this.intent.putExtra(OPEN_TO_BROWSER, false) var customTabSessionId: String? = null - intent.let { - if (isCustomTab) { - customTabSessionId = SafeIntent(intent).getStringExtra(IntentProcessor.ACTIVE_SESSION_ID) - } - openToBrowser(BrowserDirection.FromGlobal, customTabSessionId) + if (isCustomTab) { + customTabSessionId = SafeIntent(intent).getStringExtra(IntentProcessor.ACTIVE_SESSION_ID) } + + openToBrowser(BrowserDirection.FromGlobal, customTabSessionId) } fun openToBrowserAndLoad( searchTermOrURL: String, + newTab: Boolean, + from: BrowserDirection, customTabSessionId: String? = null, - engine: SearchEngine? = null, - from: BrowserDirection + engine: SearchEngine? = null ) { openToBrowser(from, customTabSessionId) - load(searchTermOrURL, customTabSessionId, engine) + load(searchTermOrURL, newTab, engine) } fun openToBrowser(from: BrowserDirection, customTabSessionId: String? = null) { @@ -180,10 +180,10 @@ open class HomeActivity : AppCompatActivity() { navHost.navController.navigate(directions) } - private fun load(searchTermOrURL: String, sessionId: String?, engine: SearchEngine?) { + private fun load(searchTermOrURL: String, newTab: Boolean, engine: SearchEngine?) { val isPrivate = this.browsingModeManager.isPrivate - val loadUrlUseCase = if (sessionId == null) { + val loadUrlUseCase = if (newTab) { if (isPrivate) { components.useCases.tabsUseCases.addPrivateTab } else { @@ -192,7 +192,7 @@ open class HomeActivity : AppCompatActivity() { } else components.useCases.sessionUseCases.loadUrl val searchUseCase: (String) -> Unit = { searchTerms -> - if (sessionId == null) { + if (newTab) { components.useCases.searchUseCases.newTabSearch .invoke(searchTerms, Session.Source.USER_ENTERED, true, isPrivate, searchEngine = engine) } else components.useCases.searchUseCases.defaultSearch.invoke(searchTerms, engine) diff --git a/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt b/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt index fe7651834..ad8d984b0 100644 --- a/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt @@ -418,7 +418,7 @@ class BrowserFragment : Fragment(), BackHandler, CoroutineScope, override fun onStop() { super.onStop() sessionObserver?.let { - requireComponents.core.sessionManager.selectedSession?.unregister(it) + getSessionById()?.unregister(it) } } @@ -602,7 +602,7 @@ class BrowserFragment : Fragment(), BackHandler, CoroutineScope, setToolbarBehavior(loading) } } - requireComponents.core.sessionManager.selectedSession?.register(observer) + getSessionById()?.register(observer) return observer } diff --git a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt index c261661b8..18109817e 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -220,8 +220,11 @@ class HomeFragment : Fragment(), CoroutineScope { requireComponents.useCases.tabsUseCases.removeAllTabsOfType.invoke(action.private) } is TabAction.PrivateBrowsingLearnMore -> { - (activity as HomeActivity).openToBrowserAndLoad(SupportUtils.getGenericSumoURLForTopic - (SupportUtils.SumoTopic.PRIVATE_BROWSING_MYTHS), from = BrowserDirection.FromHome) + (activity as HomeActivity).openToBrowserAndLoad( + searchTermOrURL = SupportUtils.getGenericSumoURLForTopic + (SupportUtils.SumoTopic.PRIVATE_BROWSING_MYTHS), + newTab = true, + from = BrowserDirection.FromHome) } is TabAction.Add -> { val directions = HomeFragmentDirections.actionHomeFragmentToSearchFragment(null) @@ -251,10 +254,12 @@ class HomeFragment : Fragment(), CoroutineScope { ) HomeMenu.Item.Help -> { (activity as HomeActivity).openToBrowserAndLoad( - SupportUtils.getSumoURLForTopic( + searchTermOrURL = SupportUtils.getSumoURLForTopic( context!!, SupportUtils.SumoTopic.HELP - ), from = BrowserDirection.FromHome + ), + newTab = true, + from = BrowserDirection.FromHome ) } } diff --git a/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkFragment.kt b/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkFragment.kt index a40ad7ab6..c6a44cbb6 100644 --- a/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkFragment.kt @@ -145,7 +145,10 @@ class BookmarkFragment : Fragment(), CoroutineScope, BackHandler, AccountObserve if (it.item.type == BookmarkNodeType.ITEM) { it.item.url?.let { url -> (activity as HomeActivity) - .openToBrowserAndLoad(url, from = BrowserDirection.FromBookmarks) + .openToBrowserAndLoad( + searchTermOrURL = url, + newTab = false, + from = BrowserDirection.FromBookmarks) } } requireComponents.analytics.metrics.track(Event.OpenedBookmark) @@ -188,6 +191,7 @@ class BookmarkFragment : Fragment(), CoroutineScope, BackHandler, AccountObserve BrowsingModeManager.Mode.Normal (activity as HomeActivity).openToBrowserAndLoad( searchTermOrURL = url, + newTab = true, from = BrowserDirection.FromBookmarks ) requireComponents.analytics.metrics.track(Event.OpenedBookmarkInNewTab) @@ -199,6 +203,7 @@ class BookmarkFragment : Fragment(), CoroutineScope, BackHandler, AccountObserve BrowsingModeManager.Mode.Private (activity as HomeActivity).openToBrowserAndLoad( searchTermOrURL = url, + newTab = true, from = BrowserDirection.FromBookmarks ) requireComponents.analytics.metrics.track(Event.OpenedBookmarkInPrivateTab) diff --git a/app/src/main/java/org/mozilla/fenix/library/history/HistoryFragment.kt b/app/src/main/java/org/mozilla/fenix/library/history/HistoryFragment.kt index 5306c72ad..ab4d027c9 100644 --- a/app/src/main/java/org/mozilla/fenix/library/history/HistoryFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/library/history/HistoryFragment.kt @@ -67,7 +67,10 @@ class HistoryFragment : Fragment(), CoroutineScope, BackHandler { } private fun selectItem(item: HistoryItem) { - (activity as HomeActivity).openToBrowserAndLoad(item.url, from = BrowserDirection.FromHistory) + (activity as HomeActivity).openToBrowserAndLoad( + searchTermOrURL = item.url, + newTab = false, + from = BrowserDirection.FromHistory) } override fun onDestroy() { diff --git a/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt b/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt index e5e6fe4f5..b2154bc26 100644 --- a/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt @@ -21,8 +21,6 @@ import kotlinx.android.synthetic.main.fragment_search.* import kotlinx.android.synthetic.main.fragment_search.view.* import mozilla.components.browser.search.SearchEngine import mozilla.components.feature.qr.QrFeature -import mozilla.components.feature.search.SearchUseCases -import mozilla.components.feature.session.SessionUseCases import mozilla.components.support.base.feature.BackHandler import mozilla.components.support.base.feature.ViewBoundFeatureWrapper import mozilla.components.support.ktx.android.content.isPermissionGranted @@ -36,7 +34,6 @@ import org.mozilla.fenix.components.toolbar.SearchChange import org.mozilla.fenix.components.toolbar.SearchState import org.mozilla.fenix.components.toolbar.ToolbarComponent import org.mozilla.fenix.components.toolbar.ToolbarUIView -import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.getSpannable import org.mozilla.fenix.ext.requireComponents import org.mozilla.fenix.mvi.ActionBusFactory @@ -110,7 +107,11 @@ class SearchFragment : Fragment(), BackHandler { } setPositiveButton("ALLOW") { dialog: DialogInterface, _ -> (activity as HomeActivity) - .openToBrowserAndLoad(result, from = BrowserDirection.FromSearch) + .openToBrowserAndLoad( + searchTermOrURL = result, + newTab = sessionId == null, + from = BrowserDirection.FromSearch + ) dialog.dismiss() // TODO add metrics } @@ -182,7 +183,10 @@ class SearchFragment : Fragment(), BackHandler { is SearchAction.UrlCommitted -> { if (it.url.isNotBlank()) { (activity as HomeActivity).openToBrowserAndLoad( - it.url, engine = it.engine, from = BrowserDirection.FromSearch + searchTermOrURL = it.url, + newTab = sessionId == null, + from = BrowserDirection.FromSearch, + engine = it.engine ) val event = if (it.url.isUrl()) { @@ -212,18 +216,23 @@ class SearchFragment : Fragment(), BackHandler { .subscribe { when (it) { is AwesomeBarAction.URLTapped -> { - getSessionUseCase(requireContext(), sessionId == null).invoke(it.url) - (activity as HomeActivity).openToBrowser(BrowserDirection.FromSearch) + (activity as HomeActivity).openToBrowserAndLoad( + searchTermOrURL = it.url, + newTab = sessionId == null, + from = BrowserDirection.FromSearch + ) requireComponents.analytics.metrics.track(Event.EnteredUrl(false)) } is AwesomeBarAction.SearchTermsTapped -> { - getSearchUseCase(requireContext(), sessionId == null) - .invoke(it.searchTerms, it.engine) - (activity as HomeActivity).openToBrowser(BrowserDirection.FromSearch) + (activity as HomeActivity).openToBrowserAndLoad( + searchTermOrURL = it.searchTerms, + newTab = sessionId == null, + from = BrowserDirection.FromSearch, + engine = it.engine + ) val engine = it.engine ?: requireComponents .search.searchEngineManager.getDefaultSearchEngine(requireContext()) - val event = createSearchEvent(engine, true) requireComponents.analytics.metrics.track(event) @@ -254,28 +263,6 @@ class SearchFragment : Fragment(), BackHandler { return Event.PerformedSearch(source) } - private fun getSearchUseCase(context: Context, useNewTab: Boolean): SearchUseCases.SearchUseCase { - if (!useNewTab) { - return context.components.useCases.searchUseCases.defaultSearch - } - - return when (isPrivate) { - true -> context.components.useCases.searchUseCases.newPrivateTabSearch - false -> context.components.useCases.searchUseCases.newTabSearch - } - } - - private fun getSessionUseCase(context: Context, useNewTab: Boolean): SessionUseCases.LoadUrlUseCase { - if (!useNewTab) { - return context.components.useCases.sessionUseCases.loadUrl - } - - return when (isPrivate) { - true -> context.components.useCases.tabsUseCases.addPrivateTab - false -> context.components.useCases.tabsUseCases.addTab - } - } - override fun onRequestPermissionsResult(requestCode: Int, permissions: Array, grantResults: IntArray) { when (requestCode) { REQUEST_CODE_CAMERA_PERMISSIONS -> qrFeature.withFeature { diff --git a/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt b/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt index 1d111429f..5831e763e 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt @@ -142,10 +142,9 @@ class SettingsFragment : PreferenceFragmentCompat(), CoroutineScope, AccountObse } resources.getString(pref_key_help) -> { (activity as HomeActivity).openToBrowserAndLoad( - SupportUtils.getSumoURLForTopic( - context!!, - SupportUtils.SumoTopic.HELP - ), from = BrowserDirection.FromSettings + searchTermOrURL = SupportUtils.getSumoURLForTopic(context!!, SupportUtils.SumoTopic.HELP), + newTab = true, + from = BrowserDirection.FromSettings ) } resources.getString(pref_key_rate) -> { @@ -153,7 +152,8 @@ class SettingsFragment : PreferenceFragmentCompat(), CoroutineScope, AccountObse } resources.getString(pref_key_feedback) -> { (activity as HomeActivity).openToBrowserAndLoad( - SupportUtils.FEEDBACK_URL, + searchTermOrURL = SupportUtils.FEEDBACK_URL, + newTab = true, from = BrowserDirection.FromSettings ) }