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