From ed8a9bd1a01db82ab52c876170468df5dfb47d34 Mon Sep 17 00:00:00 2001 From: mcarare Date: Thu, 30 Jul 2020 12:17:13 +0300 Subject: [PATCH] For #12565: Remove activity from DefaultTabTrayController constructor. --- .../fenix/tabtray/TabTrayController.kt | 24 ++++++++++++------- .../fenix/tabtray/TabTrayDialogFragment.kt | 8 +++++-- .../tabtray/DefaultTabTrayControllerTest.kt | 19 ++++++++------- 3 files changed, 31 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayController.kt b/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayController.kt index 6a8958573..ad71ced1c 100644 --- a/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayController.kt +++ b/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayController.kt @@ -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) -> Unit, private val showAddNewCollectionDialog: (List) -> 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) { 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 { - return activity.components.core.sessionManager.sessionsOfType(private = private).toList() + return sessionManager.sessionsOfType(private = private).toList() } override fun onModeRequested(): TabTrayDialogFragmentState.Mode { diff --git a/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayDialogFragment.kt b/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayDialogFragment.kt index f663fdd7c..a4417ef15 100644 --- a/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayDialogFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayDialogFragment.kt @@ -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, diff --git a/app/src/test/java/org/mozilla/fenix/tabtray/DefaultTabTrayControllerTest.kt b/app/src/test/java/org/mozilla/fenix/tabtray/DefaultTabTrayControllerTest.kt index bcf42d32d..57ce54da4 100644 --- a/app/src/test/java/org/mozilla/fenix/tabtray/DefaultTabTrayControllerTest.kt +++ b/app/src/test/java/org/mozilla/fenix/tabtray/DefaultTabTrayControllerTest.kt @@ -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