1
0
Fork 0

For #12565: Remove activity from DefaultTabTrayController constructor.

master
mcarare 2020-07-30 12:17:13 +03:00 committed by Mihai Adrian Carare
parent ef4e865105
commit ed8a9bd1a0
3 changed files with 31 additions and 20 deletions

View File

@ -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 {

View File

@ -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,

View File

@ -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