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") @Suppress("ComplexMethod", "LongMethod")
@CallSuper @CallSuper
protected open fun initializeUI(view: View): Session? { 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 -> return getSessionById()?.also { session ->
val browserToolbarController = DefaultBrowserToolbarController( val browserToolbarController = DefaultBrowserToolbarController(
context!!, context,
findNavController(), findNavController(),
(activity as HomeActivity).browsingModeManager, (activity as HomeActivity).browsingModeManager,
findInPageLauncher = { findInPageIntegration.withFeature { it.launch() } }, findInPageLauncher = { findInPageIntegration.withFeature { it.launch() } },
@ -162,13 +163,13 @@ abstract class BaseBrowserFragment : Fragment(), BackHandler, SessionManager.Obs
viewModel = viewModel, viewModel = viewModel,
getSupportUrl = { getSupportUrl = {
SupportUtils.getSumoURLForTopic( SupportUtils.getSumoURLForTopic(
context!!, context,
SupportUtils.SumoTopic.HELP SupportUtils.SumoTopic.HELP
) )
}, },
openInFenixIntent = Intent(context, IntentReceiverActivity::class.java).also { openInFenixIntent = Intent(context, IntentReceiverActivity::class.java).apply {
it.action = Intent.ACTION_VIEW action = Intent.ACTION_VIEW
it.flags = Intent.FLAG_ACTIVITY_NEW_TASK flags = Intent.FLAG_ACTIVITY_NEW_TASK
}, },
bottomSheetBehavior = QuickActionSheetBehavior.from(nestedScrollQuickAction) bottomSheetBehavior = QuickActionSheetBehavior.from(nestedScrollQuickAction)
) )
@ -192,7 +193,7 @@ abstract class BaseBrowserFragment : Fragment(), BackHandler, SessionManager.Obs
findInPageIntegration.set( findInPageIntegration.set(
feature = FindInPageIntegration( feature = FindInPageIntegration(
sessionManager = requireComponents.core.sessionManager, sessionManager = sessionManager,
sessionId = customTabSessionId, sessionId = customTabSessionId,
stub = view.stubFindInPage, stub = view.stubFindInPage,
engineView = view.engineView, engineView = view.engineView,
@ -211,8 +212,8 @@ abstract class BaseBrowserFragment : Fragment(), BackHandler, SessionManager.Obs
requireFragmentManager(), requireFragmentManager(),
sessionManager, sessionManager,
FenixContextMenuCandidate.defaultCandidates( FenixContextMenuCandidate.defaultCandidates(
requireContext(), context,
requireComponents.useCases.tabsUseCases, context.components.useCases.tabsUseCases,
view, view,
FenixSnackbarDelegate( FenixSnackbarDelegate(
view, view,
@ -226,19 +227,19 @@ abstract class BaseBrowserFragment : Fragment(), BackHandler, SessionManager.Obs
) )
windowFeature.set( windowFeature.set(
feature = WindowFeature(requireComponents.core.sessionManager), feature = WindowFeature(sessionManager),
owner = this, owner = this,
view = view view = view
) )
downloadsFeature.set( downloadsFeature.set(
feature = DownloadsFeature( feature = DownloadsFeature(
requireContext().applicationContext, context.applicationContext,
sessionManager = sessionManager, sessionManager = sessionManager,
fragmentManager = childFragmentManager, fragmentManager = childFragmentManager,
sessionId = customTabSessionId, sessionId = customTabSessionId,
downloadManager = FetchDownloadManager( downloadManager = FetchDownloadManager(
requireContext().applicationContext, context.applicationContext,
DownloadService::class DownloadService::class
), ),
onNeedToRequestPermissions = { permissions -> onNeedToRequestPermissions = { permissions ->
@ -250,7 +251,7 @@ abstract class BaseBrowserFragment : Fragment(), BackHandler, SessionManager.Obs
appLinksFeature.set( appLinksFeature.set(
feature = AppLinksFeature( feature = AppLinksFeature(
requireContext(), context,
sessionManager = sessionManager, sessionManager = sessionManager,
sessionId = customTabSessionId, sessionId = customTabSessionId,
interceptLinkClicks = true, interceptLinkClicks = true,
@ -285,11 +286,11 @@ abstract class BaseBrowserFragment : Fragment(), BackHandler, SessionManager.Obs
) )
val accentHighContrastColor = val accentHighContrastColor =
ThemeManager.resolveAttribute(R.attr.accentHighContrast, requireContext()) ThemeManager.resolveAttribute(R.attr.accentHighContrast, context)
sitePermissionsFeature.set( sitePermissionsFeature.set(
feature = SitePermissionsFeature( feature = SitePermissionsFeature(
context = requireContext(), context = context,
sessionManager = sessionManager, sessionManager = sessionManager,
fragmentManager = requireFragmentManager(), fragmentManager = requireFragmentManager(),
promptsStyling = SitePermissionsFeature.PromptsStyling( promptsStyling = SitePermissionsFeature.PromptsStyling(
@ -347,12 +348,12 @@ abstract class BaseBrowserFragment : Fragment(), BackHandler, SessionManager.Obs
@Suppress("ConstantConditionIf") @Suppress("ConstantConditionIf")
if (FeatureFlags.pullToRefreshEnabled) { if (FeatureFlags.pullToRefreshEnabled) {
val primaryTextColor = val primaryTextColor =
ThemeManager.resolveAttribute(R.attr.primaryText, requireContext()) ThemeManager.resolveAttribute(R.attr.primaryText, context)
view.swipeRefresh.setColorSchemeColors(primaryTextColor) view.swipeRefresh.setColorSchemeColors(primaryTextColor)
swipeRefreshFeature.set( swipeRefreshFeature.set(
feature = SwipeRefreshFeature( feature = SwipeRefreshFeature(
requireComponents.core.sessionManager, sessionManager,
requireComponents.useCases.sessionUseCases.reload, context.components.useCases.sessionUseCases.reload,
view.swipeRefresh, view.swipeRefresh,
customTabSessionId customTabSessionId
), ),
@ -472,9 +473,9 @@ abstract class BaseBrowserFragment : Fragment(), BackHandler, SessionManager.Obs
*/ */
protected open fun removeSessionIfNeeded(): Boolean { protected open fun removeSessionIfNeeded(): Boolean {
getSessionById()?.let { session -> getSessionById()?.let { session ->
if (session.source == Session.Source.ACTION_VIEW) requireComponents.core.sessionManager.remove( if (session.source == Session.Source.ACTION_VIEW) {
session requireComponents.core.sessionManager.remove(session)
) }
} }
return false 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.BrowserToolbarController
import org.mozilla.fenix.components.toolbar.BrowserToolbarViewInteractor import org.mozilla.fenix.components.toolbar.BrowserToolbarViewInteractor
import org.mozilla.fenix.components.toolbar.QuickActionSheetAction import org.mozilla.fenix.components.toolbar.QuickActionSheetAction
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.nav import org.mozilla.fenix.ext.nav
import org.mozilla.fenix.ext.requireComponents import org.mozilla.fenix.ext.requireComponents
import org.mozilla.fenix.home.sessioncontrol.SessionControlChange import org.mozilla.fenix.home.sessioncontrol.SessionControlChange
@ -86,19 +87,20 @@ class BrowserFragment : BaseBrowserFragment(), BackHandler {
} }
override fun initializeUI(view: View): Session? { 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 { return super.initializeUI(view)?.also {
readerViewFeature.set( readerViewFeature.set(
feature = ReaderViewFeature( feature = ReaderViewFeature(
requireContext(), context,
requireComponents.core.engine, context.components.core.engine,
requireComponents.core.sessionManager, sessionManager,
view.readerViewControlsBar view.readerViewControlsBar
) { available -> ) { available ->
if (available) { if (available) {
requireComponents.analytics.metrics.track(Event.ReaderModeAvailable) context.components.analytics.metrics.track(Event.ReaderModeAvailable)
} }
browserStore.apply { browserStore.apply {
@ -153,16 +155,18 @@ class BrowserFragment : BaseBrowserFragment(), BackHandler {
browserToolbarController: BrowserToolbarController, browserToolbarController: BrowserToolbarController,
session: Session? session: Session?
): BrowserToolbarViewInteractor { ): BrowserToolbarViewInteractor {
val context = requireContext()
val interactor = BrowserInteractor( val interactor = BrowserInteractor(
context = context!!, context = context,
store = browserStore, store = browserStore,
browserToolbarController = browserToolbarController, browserToolbarController = browserToolbarController,
quickActionSheetController = DefaultQuickActionSheetController( quickActionSheetController = DefaultQuickActionSheetController(
context = context!!, context = context,
navController = findNavController(), navController = findNavController(),
currentSession = getSessionById() currentSession = getSessionById()
?: requireComponents.core.sessionManager.selectedSessionOrThrow, ?: context.components.core.sessionManager.selectedSessionOrThrow,
appLinksUseCases = requireComponents.useCases.appLinksUseCases, appLinksUseCases = context.components.useCases.appLinksUseCases,
bookmarkTapped = { bookmarkTapped = {
lifecycleScope.launch { bookmarkTapped(it) } lifecycleScope.launch { bookmarkTapped(it) }
} }