Closes #17889: Wrong tab selected/reloaded when restored from collection

upstream-sync
Christian Sadilek 3 years ago committed by Sebastian Kaspari
parent ca57a132c7
commit 88facc4608

@ -215,10 +215,8 @@ class DefaultSessionControlController(
tab, tab,
onTabRestored = { onTabRestored = {
activity.openToBrowser(BrowserDirection.FromHome) activity.openToBrowser(BrowserDirection.FromHome)
store.state.selectedTabId?.let { selectTabUseCase.invoke(it)
selectTabUseCase.invoke(it) reloadUrlUseCase.invoke(it)
reloadUrlUseCase.invoke(it)
}
}, },
onFailure = { onFailure = {
activity.openToBrowserAndLoad( activity.openToBrowserAndLoad(

@ -182,8 +182,8 @@ class DefaultSessionControlControllerTest {
} }
@Test @Test
fun `handleCollectionOpenTabClicked onTabRestored`() { fun `handleCollectionOpenTabClicked with existing selected tab`() {
val restoredTab = RecoverableTab( val recoverableTab = RecoverableTab(
id = "test", id = "test",
parentId = null, parentId = null,
url = "https://www.mozilla.org", url = "https://www.mozilla.org",
@ -196,13 +196,42 @@ class DefaultSessionControlControllerTest {
) )
val tab = mockk<ComponentTab> { val tab = mockk<ComponentTab> {
every { restore(activity, engine, restoreSessionId = false) } returns restoredTab every { restore(activity, engine, restoreSessionId = false) } returns recoverableTab
} }
store.dispatch(TabListAction.AddTabAction( val restoredTab = createTab(id = recoverableTab.id, url = recoverableTab.url)
createTab(id = restoredTab.id, url = restoredTab.url)) val otherTab = createTab(id = "otherTab", url = "https://mozilla.org")
).joinBlocking() store.dispatch(TabListAction.AddTabAction(otherTab)).joinBlocking()
store.dispatch(TabListAction.SelectTabAction(restoredTab.id)).joinBlocking() store.dispatch(TabListAction.SelectTabAction(otherTab.id)).joinBlocking()
store.dispatch(TabListAction.AddTabAction(restoredTab)).joinBlocking()
controller.handleCollectionOpenTabClicked(tab)
verify { metrics.track(Event.CollectionTabRestored) }
verify { activity.openToBrowser(BrowserDirection.FromHome) }
verify { selectTabUseCase.selectTab.invoke(restoredTab.id) }
verify { reloadUrlUseCase.reload.invoke(restoredTab.id) }
}
@Test
fun `handleCollectionOpenTabClicked without existing selected tab`() {
val recoverableTab = RecoverableTab(
id = "test",
parentId = null,
url = "https://www.mozilla.org",
title = "Mozilla",
state = null,
contextId = null,
readerState = ReaderState(),
lastAccess = 0,
private = false
)
val tab = mockk<ComponentTab> {
every { restore(activity, engine, restoreSessionId = false) } returns recoverableTab
}
val restoredTab = createTab(id = recoverableTab.id, url = recoverableTab.url)
store.dispatch(TabListAction.AddTabAction(restoredTab)).joinBlocking()
controller.handleCollectionOpenTabClicked(tab) controller.handleCollectionOpenTabClicked(tab)
verify { metrics.track(Event.CollectionTabRestored) } verify { metrics.track(Event.CollectionTabRestored) }

Loading…
Cancel
Save