1
0
Fork 0

For #3440 - Reduce BrowserFragment require calls

master
Tiger Oakes 2019-08-30 13:10:58 -04:00 committed by Emily Kager
parent 8d363d68b1
commit 16115f57d1
2 changed files with 35 additions and 30 deletions

View File

@ -148,12 +148,13 @@ abstract class BaseBrowserFragment : Fragment(), BackHandler, SessionManager.Obs
@Suppress("ComplexMethod", "LongMethod")
@CallSuper
protected open fun initializeUI(view: View): Session? {
val sessionManager = requireComponents.core.sessionManager
val context = requireContext()
val sessionManager = context.components.core.sessionManager
return getSessionById()?.also { session ->
val browserToolbarController = DefaultBrowserToolbarController(
context!!,
context,
findNavController(),
(activity as HomeActivity).browsingModeManager,
findInPageLauncher = { findInPageIntegration.withFeature { it.launch() } },
@ -162,13 +163,13 @@ abstract class BaseBrowserFragment : Fragment(), BackHandler, SessionManager.Obs
viewModel = viewModel,
getSupportUrl = {
SupportUtils.getSumoURLForTopic(
context!!,
context,
SupportUtils.SumoTopic.HELP
)
},
openInFenixIntent = Intent(context, IntentReceiverActivity::class.java).also {
it.action = Intent.ACTION_VIEW
it.flags = Intent.FLAG_ACTIVITY_NEW_TASK
openInFenixIntent = Intent(context, IntentReceiverActivity::class.java).apply {
action = Intent.ACTION_VIEW
flags = Intent.FLAG_ACTIVITY_NEW_TASK
},
bottomSheetBehavior = QuickActionSheetBehavior.from(nestedScrollQuickAction)
)
@ -192,7 +193,7 @@ abstract class BaseBrowserFragment : Fragment(), BackHandler, SessionManager.Obs
findInPageIntegration.set(
feature = FindInPageIntegration(
sessionManager = requireComponents.core.sessionManager,
sessionManager = sessionManager,
sessionId = customTabSessionId,
stub = view.stubFindInPage,
engineView = view.engineView,
@ -211,8 +212,8 @@ abstract class BaseBrowserFragment : Fragment(), BackHandler, SessionManager.Obs
requireFragmentManager(),
sessionManager,
FenixContextMenuCandidate.defaultCandidates(
requireContext(),
requireComponents.useCases.tabsUseCases,
context,
context.components.useCases.tabsUseCases,
view,
FenixSnackbarDelegate(
view,
@ -226,19 +227,19 @@ abstract class BaseBrowserFragment : Fragment(), BackHandler, SessionManager.Obs
)
windowFeature.set(
feature = WindowFeature(requireComponents.core.sessionManager),
feature = WindowFeature(sessionManager),
owner = this,
view = view
)
downloadsFeature.set(
feature = DownloadsFeature(
requireContext().applicationContext,
context.applicationContext,
sessionManager = sessionManager,
fragmentManager = childFragmentManager,
sessionId = customTabSessionId,
downloadManager = FetchDownloadManager(
requireContext().applicationContext,
context.applicationContext,
DownloadService::class
),
onNeedToRequestPermissions = { permissions ->
@ -250,7 +251,7 @@ abstract class BaseBrowserFragment : Fragment(), BackHandler, SessionManager.Obs
appLinksFeature.set(
feature = AppLinksFeature(
requireContext(),
context,
sessionManager = sessionManager,
sessionId = customTabSessionId,
interceptLinkClicks = true,
@ -285,11 +286,11 @@ abstract class BaseBrowserFragment : Fragment(), BackHandler, SessionManager.Obs
)
val accentHighContrastColor =
ThemeManager.resolveAttribute(R.attr.accentHighContrast, requireContext())
ThemeManager.resolveAttribute(R.attr.accentHighContrast, context)
sitePermissionsFeature.set(
feature = SitePermissionsFeature(
context = requireContext(),
context = context,
sessionManager = sessionManager,
fragmentManager = requireFragmentManager(),
promptsStyling = SitePermissionsFeature.PromptsStyling(
@ -347,12 +348,12 @@ abstract class BaseBrowserFragment : Fragment(), BackHandler, SessionManager.Obs
@Suppress("ConstantConditionIf")
if (FeatureFlags.pullToRefreshEnabled) {
val primaryTextColor =
ThemeManager.resolveAttribute(R.attr.primaryText, requireContext())
ThemeManager.resolveAttribute(R.attr.primaryText, context)
view.swipeRefresh.setColorSchemeColors(primaryTextColor)
swipeRefreshFeature.set(
feature = SwipeRefreshFeature(
requireComponents.core.sessionManager,
requireComponents.useCases.sessionUseCases.reload,
sessionManager,
context.components.useCases.sessionUseCases.reload,
view.swipeRefresh,
customTabSessionId
),
@ -472,9 +473,9 @@ abstract class BaseBrowserFragment : Fragment(), BackHandler, SessionManager.Obs
*/
protected open fun removeSessionIfNeeded(): Boolean {
getSessionById()?.let { session ->
if (session.source == Session.Source.ACTION_VIEW) requireComponents.core.sessionManager.remove(
session
)
if (session.source == Session.Source.ACTION_VIEW) {
requireComponents.core.sessionManager.remove(session)
}
}
return false
}

View File

@ -41,6 +41,7 @@ import org.mozilla.fenix.components.toolbar.BrowserInteractor
import org.mozilla.fenix.components.toolbar.BrowserToolbarController
import org.mozilla.fenix.components.toolbar.BrowserToolbarViewInteractor
import org.mozilla.fenix.components.toolbar.QuickActionSheetAction
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.nav
import org.mozilla.fenix.ext.requireComponents
import org.mozilla.fenix.home.sessioncontrol.SessionControlChange
@ -86,19 +87,20 @@ class BrowserFragment : BaseBrowserFragment(), BackHandler {
}
override fun initializeUI(view: View): Session? {
val sessionManager = requireComponents.core.sessionManager
val context = requireContext()
val sessionManager = context.components.core.sessionManager
return super.initializeUI(view)?.also {
readerViewFeature.set(
feature = ReaderViewFeature(
requireContext(),
requireComponents.core.engine,
requireComponents.core.sessionManager,
context,
context.components.core.engine,
sessionManager,
view.readerViewControlsBar
) { available ->
if (available) {
requireComponents.analytics.metrics.track(Event.ReaderModeAvailable)
context.components.analytics.metrics.track(Event.ReaderModeAvailable)
}
browserStore.apply {
@ -153,16 +155,18 @@ class BrowserFragment : BaseBrowserFragment(), BackHandler {
browserToolbarController: BrowserToolbarController,
session: Session?
): BrowserToolbarViewInteractor {
val context = requireContext()
val interactor = BrowserInteractor(
context = context!!,
context = context,
store = browserStore,
browserToolbarController = browserToolbarController,
quickActionSheetController = DefaultQuickActionSheetController(
context = context!!,
context = context,
navController = findNavController(),
currentSession = getSessionById()
?: requireComponents.core.sessionManager.selectedSessionOrThrow,
appLinksUseCases = requireComponents.useCases.appLinksUseCases,
?: context.components.core.sessionManager.selectedSessionOrThrow,
appLinksUseCases = context.components.useCases.appLinksUseCases,
bookmarkTapped = {
lifecycleScope.launch { bookmarkTapped(it) }
}