For #3440 - Reduce BrowserFragment require calls
parent
8d363d68b1
commit
16115f57d1
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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) }
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue