Closes #2147: Refactors usage of openToBrowserAndLoad
parent
0e44921e08
commit
70486039c0
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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<String>, grantResults: IntArray) {
|
||||
when (requestCode) {
|
||||
REQUEST_CODE_CAMERA_PERMISSIONS -> qrFeature.withFeature {
|
||||
|
|
|
@ -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
|
||||
)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue