For #15121 - Ensure tabs removed while on browser select an available parent session

pull/159/head^2
ekager 4 years ago
parent 9464d4ebd5
commit 030d6a5b36

@ -940,7 +940,12 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session
true true
} else { } else {
if (session.hasParentSession) { if (session.hasParentSession) {
requireComponents.useCases.tabsUseCases.removeTab(session) // The removeTab use case does not currently select a parent session, so
// we are using sessionManager.remove
requireComponents.core.sessionManager.remove(
session,
selectParentIfExists = true
)
} }
// We want to return to home if this session didn't have a parent session to select. // We want to return to home if this session didn't have a parent session to select.
val goToOverview = !session.hasParentSession val goToOverview = !session.hasParentSession

@ -145,7 +145,9 @@ class DefaultBrowserToolbarController(
) )
} else { } else {
onCloseTab.invoke(it) onCloseTab.invoke(it)
activity.components.useCases.tabsUseCases.removeTab.invoke(it) // The removeTab use case does not currently select a parent session, so
// we are using sessionManager.remove
sessionManager.remove(it, selectParentIfExists = true)
} }
} }
} }

@ -21,7 +21,6 @@ import mozilla.components.browser.session.SessionManager
import mozilla.components.concept.engine.EngineView import mozilla.components.concept.engine.EngineView
import mozilla.components.feature.search.SearchUseCases import mozilla.components.feature.search.SearchUseCases
import mozilla.components.feature.session.SessionUseCases import mozilla.components.feature.session.SessionUseCases
import mozilla.components.feature.tabs.TabsUseCases
import mozilla.components.feature.top.sites.TopSitesUseCases import mozilla.components.feature.top.sites.TopSitesUseCases
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Before import org.junit.Before
@ -200,17 +199,13 @@ class DefaultBrowserToolbarControllerTest {
@Test @Test
fun handleToolbarCloseTabPress() { fun handleToolbarCloseTabPress() {
val tabsUseCases: TabsUseCases = mockk(relaxed = true)
val removeTabUseCase: TabsUseCases.RemoveTabUseCase = mockk(relaxed = true)
val item = TabCounterMenu.Item.CloseTab val item = TabCounterMenu.Item.CloseTab
every { sessionManager.sessions } returns emptyList() every { sessionManager.sessions } returns emptyList()
every { activity.components.useCases.tabsUseCases } returns tabsUseCases
every { tabsUseCases.removeTab } returns removeTabUseCase
val controller = createController() val controller = createController()
controller.handleTabCounterItemInteraction(item) controller.handleTabCounterItemInteraction(item)
verify { removeTabUseCase.invoke(currentSession) } verify { sessionManager.remove(currentSession, selectParentIfExists = true) }
} }
@Test @Test

Loading…
Cancel
Save