Loading app/src/main/java/org/mozilla/fenix/tabtray/TabTrayController.kt +15 −9 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading @@ -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, Loading @@ -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 ) Loading @@ -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 Loading Loading @@ -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 { Loading app/src/main/java/org/mozilla/fenix/tabtray/TabTrayDialogFragment.kt +6 −2 Original line number Diff line number Diff line Loading @@ -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) Loading @@ -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, Loading app/src/test/java/org/mozilla/fenix/tabtray/DefaultTabTrayControllerTest.kt +10 −9 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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) Loading Loading @@ -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() Loading @@ -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, Loading @@ -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 Loading @@ -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 Loading
app/src/main/java/org/mozilla/fenix/tabtray/TabTrayController.kt +15 −9 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading @@ -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, Loading @@ -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 ) Loading @@ -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 Loading Loading @@ -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 { Loading
app/src/main/java/org/mozilla/fenix/tabtray/TabTrayDialogFragment.kt +6 −2 Original line number Diff line number Diff line Loading @@ -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) Loading @@ -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, Loading
app/src/test/java/org/mozilla/fenix/tabtray/DefaultTabTrayControllerTest.kt +10 −9 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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) Loading Loading @@ -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() Loading @@ -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, Loading @@ -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 Loading @@ -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