Commit ed8a9bd1 authored by mcarare's avatar mcarare Committed by Mihai Adrian Carare
Browse files

For #12565: Remove activity from DefaultTabTrayController constructor.

parent ef4e8651
Loading
Loading
Loading
Loading
+15 −9
Original line number Diff line number Diff line
@@ -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 {
+6 −2
Original line number Diff line number Diff line
@@ -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,
+10 −9
Original line number Diff line number Diff line
@@ -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