For #12565: Remove activity from DefaultTabTrayController constructor.
This commit is contained in:
parent
ef4e865105
commit
ed8a9bd1a0
|
@ -8,13 +8,15 @@ import androidx.annotation.VisibleForTesting
|
|||
import androidx.navigation.NavController
|
||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import mozilla.components.browser.session.Session
|
||||
import mozilla.components.browser.session.SessionManager
|
||||
import mozilla.components.concept.engine.profiler.Profiler
|
||||
import mozilla.components.concept.engine.prompt.ShareData
|
||||
import mozilla.components.concept.tabstray.Tab
|
||||
import mozilla.components.feature.tabs.TabsUseCases
|
||||
import org.mozilla.fenix.HomeActivity
|
||||
import org.mozilla.fenix.browser.browsingmode.BrowsingMode
|
||||
import org.mozilla.fenix.browser.browsingmode.BrowsingModeManager
|
||||
import org.mozilla.fenix.components.TabCollectionStorage
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.ext.sessionsOfType
|
||||
import org.mozilla.fenix.home.HomeFragment
|
||||
|
||||
|
@ -41,7 +43,9 @@ interface TabTrayController {
|
|||
/**
|
||||
* Default behavior of [TabTrayController]. Other implementations are possible.
|
||||
*
|
||||
* @param activity [HomeActivity] used for context and other Android interactions.
|
||||
* @param profiler [Profiler] used for profiling.
|
||||
* @param sessionManager [HomeActivity] used for retrieving a list of sessions.
|
||||
* @param browsingModeManager [HomeActivity] used for registering browsing mode.
|
||||
* @param navController [NavController] used for navigation.
|
||||
* @param dismissTabTray callback allowing to request this entire Fragment to be dismissed.
|
||||
* @param tabTrayDialogFragmentStore [TabTrayDialogFragmentStore] holding the State for all Views displayed
|
||||
|
@ -55,7 +59,10 @@ interface TabTrayController {
|
|||
*/
|
||||
@Suppress("TooManyFunctions")
|
||||
class DefaultTabTrayController(
|
||||
private val activity: HomeActivity,
|
||||
private val profiler: Profiler?,
|
||||
private val sessionManager: SessionManager,
|
||||
private val browsingModeManager: BrowsingModeManager,
|
||||
private val tabCollectionStorage: TabCollectionStorage,
|
||||
private val navController: NavController,
|
||||
private val dismissTabTray: () -> Unit,
|
||||
private val dismissTabTrayAndNavigateHome: (String) -> Unit,
|
||||
|
@ -65,14 +72,13 @@ class DefaultTabTrayController(
|
|||
private val showChooseCollectionDialog: (List<Session>) -> Unit,
|
||||
private val showAddNewCollectionDialog: (List<Session>) -> Unit
|
||||
) : TabTrayController {
|
||||
private val tabCollectionStorage = activity.components.core.tabCollectionStorage
|
||||
|
||||
override fun onNewTabTapped(private: Boolean) {
|
||||
val startTime = activity.components.core.engine.profiler?.getProfilerTime()
|
||||
activity.browsingModeManager.mode = BrowsingMode.fromBoolean(private)
|
||||
val startTime = profiler?.getProfilerTime()
|
||||
browsingModeManager.mode = BrowsingMode.fromBoolean(private)
|
||||
navController.navigate(TabTrayDialogFragmentDirections.actionGlobalHome(focusOnAddressBar = true))
|
||||
dismissTabTray()
|
||||
activity.components.core.engine.profiler?.addMarker(
|
||||
profiler?.addMarker(
|
||||
"DefaultTabTrayController.onNewTabTapped",
|
||||
startTime
|
||||
)
|
||||
|
@ -84,7 +90,7 @@ class DefaultTabTrayController(
|
|||
|
||||
override fun onSaveToCollectionClicked(selectedTabs: Set<Tab>) {
|
||||
val sessionList = selectedTabs.map {
|
||||
activity.components.core.sessionManager.findSessionById(it.id) ?: return
|
||||
sessionManager.findSessionById(it.id) ?: return
|
||||
}
|
||||
|
||||
// Only register the observer right before moving to collection creation
|
||||
|
@ -141,7 +147,7 @@ class DefaultTabTrayController(
|
|||
|
||||
@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
|
||||
private fun getListOfSessions(private: Boolean): List<Session> {
|
||||
return activity.components.core.sessionManager.sessionsOfType(private = private).toList()
|
||||
return sessionManager.sessionsOfType(private = private).toList()
|
||||
}
|
||||
|
||||
override fun onModeRequested(): TabTrayDialogFragmentState.Mode {
|
||||
|
|
|
@ -163,7 +163,8 @@ class TabTrayDialogFragment : AppCompatDialogFragment(), UserInteractionHandler
|
|||
@OptIn(ExperimentalCoroutinesApi::class)
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
val isPrivate = (activity as HomeActivity).browsingModeManager.mode.isPrivate
|
||||
val activity = activity as HomeActivity
|
||||
val isPrivate = activity.browsingModeManager.mode.isPrivate
|
||||
|
||||
val thumbnailLoader = ThumbnailLoader(requireContext().components.core.thumbnailStorage)
|
||||
val adapter = FenixTabsAdapter(requireContext(), thumbnailLoader)
|
||||
|
@ -173,7 +174,10 @@ class TabTrayDialogFragment : AppCompatDialogFragment(), UserInteractionHandler
|
|||
adapter,
|
||||
interactor = TabTrayFragmentInteractor(
|
||||
DefaultTabTrayController(
|
||||
activity = (activity as HomeActivity),
|
||||
profiler = activity.components.core.engine.profiler,
|
||||
sessionManager = activity.components.core.sessionManager,
|
||||
browsingModeManager = activity.browsingModeManager,
|
||||
tabCollectionStorage = activity.components.core.tabCollectionStorage,
|
||||
navController = findNavController(),
|
||||
dismissTabTray = ::dismissAllowingStateLoss,
|
||||
dismissTabTrayAndNavigateHome = ::dismissTabTrayAndNavigateHome,
|
||||
|
|
|
@ -18,6 +18,7 @@ import io.mockk.verifyOrder
|
|||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import mozilla.components.browser.session.Session
|
||||
import mozilla.components.browser.session.SessionManager
|
||||
import mozilla.components.concept.engine.profiler.Profiler
|
||||
import mozilla.components.concept.tabstray.Tab
|
||||
import mozilla.components.feature.tab.collections.TabCollection
|
||||
import mozilla.components.feature.tabs.TabsUseCases
|
||||
|
@ -25,18 +26,18 @@ import org.junit.Assert.assertEquals
|
|||
import org.junit.Assert.assertTrue
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.mozilla.fenix.HomeActivity
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.browser.browsingmode.BrowsingMode
|
||||
import org.mozilla.fenix.browser.browsingmode.BrowsingModeManager
|
||||
import org.mozilla.fenix.components.TabCollectionStorage
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.ext.sessionsOfType
|
||||
|
||||
@OptIn(ExperimentalCoroutinesApi::class)
|
||||
class DefaultTabTrayControllerTest {
|
||||
private val activity: HomeActivity = mockk(relaxed = true)
|
||||
private val profiler: Profiler? = mockk(relaxed = true)
|
||||
private val navController: NavController = mockk()
|
||||
private val sessionManager: SessionManager = mockk(relaxed = true)
|
||||
private val browsingModeManager: BrowsingModeManager = mockk(relaxed = true)
|
||||
private val dismissTabTray: (() -> Unit) = mockk(relaxed = true)
|
||||
private val dismissTabTrayAndNavigateHome: ((String) -> Unit) = mockk(relaxed = true)
|
||||
private val registerCollectionStorageObserver: (() -> Unit) = mockk(relaxed = true)
|
||||
|
@ -64,9 +65,6 @@ class DefaultTabTrayControllerTest {
|
|||
@Before
|
||||
fun setUp() {
|
||||
mockkStatic("org.mozilla.fenix.ext.SessionManagerKt")
|
||||
every { activity.components.core.sessionManager } returns sessionManager
|
||||
every { activity.components.core.tabCollectionStorage } returns tabCollectionStorage
|
||||
every { activity.components.core.engine.profiler } returns mockk(relaxed = true)
|
||||
|
||||
every { sessionManager.sessionsOfType(private = true) } returns listOf(session).asSequence()
|
||||
every { sessionManager.sessionsOfType(private = false) } returns listOf(nonPrivateSession).asSequence()
|
||||
|
@ -83,7 +81,10 @@ class DefaultTabTrayControllerTest {
|
|||
every { tabCollection.title } returns "Collection title"
|
||||
|
||||
controller = DefaultTabTrayController(
|
||||
activity = activity,
|
||||
profiler = profiler,
|
||||
sessionManager = sessionManager,
|
||||
browsingModeManager = browsingModeManager,
|
||||
tabCollectionStorage = tabCollectionStorage,
|
||||
navController = navController,
|
||||
dismissTabTray = dismissTabTray,
|
||||
dismissTabTrayAndNavigateHome = dismissTabTrayAndNavigateHome,
|
||||
|
@ -100,7 +101,7 @@ class DefaultTabTrayControllerTest {
|
|||
controller.onNewTabTapped(private = false)
|
||||
|
||||
verifyOrder {
|
||||
activity.browsingModeManager.mode = BrowsingMode.fromBoolean(false)
|
||||
browsingModeManager.mode = BrowsingMode.fromBoolean(false)
|
||||
navController.navigate(
|
||||
TabTrayDialogFragmentDirections.actionGlobalHome(
|
||||
focusOnAddressBar = true
|
||||
|
@ -112,7 +113,7 @@ class DefaultTabTrayControllerTest {
|
|||
controller.onNewTabTapped(private = true)
|
||||
|
||||
verifyOrder {
|
||||
activity.browsingModeManager.mode = BrowsingMode.fromBoolean(true)
|
||||
browsingModeManager.mode = BrowsingMode.fromBoolean(true)
|
||||
navController.navigate(
|
||||
TabTrayDialogFragmentDirections.actionGlobalHome(
|
||||
focusOnAddressBar = true
|
||||
|
|
Loading…
Reference in New Issue
Block a user