|
|
@ -15,6 +15,7 @@ import mozilla.components.feature.media.ext.pauseIfPlaying
|
|
|
|
import mozilla.components.feature.media.ext.playIfPaused
|
|
|
|
import mozilla.components.feature.media.ext.playIfPaused
|
|
|
|
import mozilla.components.feature.media.state.MediaStateMachine
|
|
|
|
import mozilla.components.feature.media.state.MediaStateMachine
|
|
|
|
import mozilla.components.feature.tab.collections.TabCollection
|
|
|
|
import mozilla.components.feature.tab.collections.TabCollection
|
|
|
|
|
|
|
|
import mozilla.components.feature.tab.collections.ext.restore
|
|
|
|
import mozilla.components.feature.top.sites.TopSite
|
|
|
|
import mozilla.components.feature.top.sites.TopSite
|
|
|
|
import org.mozilla.fenix.BrowserDirection
|
|
|
|
import org.mozilla.fenix.BrowserDirection
|
|
|
|
import org.mozilla.fenix.HomeActivity
|
|
|
|
import org.mozilla.fenix.HomeActivity
|
|
|
@ -200,27 +201,21 @@ class DefaultSessionControlController(
|
|
|
|
override fun handleCollectionOpenTabClicked(tab: ComponentTab) {
|
|
|
|
override fun handleCollectionOpenTabClicked(tab: ComponentTab) {
|
|
|
|
invokePendingDeleteJobs()
|
|
|
|
invokePendingDeleteJobs()
|
|
|
|
|
|
|
|
|
|
|
|
val session = tab.restore(
|
|
|
|
sessionManager.restore(
|
|
|
|
context = activity,
|
|
|
|
activity,
|
|
|
|
engine = activity.components.core.engine,
|
|
|
|
activity.components.core.engine,
|
|
|
|
tab = tab,
|
|
|
|
tab,
|
|
|
|
restoreSessionId = false
|
|
|
|
onTabRestored = {
|
|
|
|
)
|
|
|
|
activity.openToBrowser(BrowserDirection.FromHome)
|
|
|
|
|
|
|
|
},
|
|
|
|
if (session == null) {
|
|
|
|
onFailure = {
|
|
|
|
// We were unable to create a snapshot, so just load the tab instead
|
|
|
|
|
|
|
|
activity.openToBrowserAndLoad(
|
|
|
|
activity.openToBrowserAndLoad(
|
|
|
|
searchTermOrURL = tab.url,
|
|
|
|
searchTermOrURL = tab.url,
|
|
|
|
newTab = true,
|
|
|
|
newTab = true,
|
|
|
|
from = BrowserDirection.FromHome
|
|
|
|
from = BrowserDirection.FromHome
|
|
|
|
)
|
|
|
|
)
|
|
|
|
} else {
|
|
|
|
|
|
|
|
sessionManager.add(
|
|
|
|
|
|
|
|
session,
|
|
|
|
|
|
|
|
true
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
activity.openToBrowser(BrowserDirection.FromHome)
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
metrics.track(Event.CollectionTabRestored)
|
|
|
|
metrics.track(Event.CollectionTabRestored)
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -228,24 +223,14 @@ class DefaultSessionControlController(
|
|
|
|
override fun handleCollectionOpenTabsTapped(collection: TabCollection) {
|
|
|
|
override fun handleCollectionOpenTabsTapped(collection: TabCollection) {
|
|
|
|
invokePendingDeleteJobs()
|
|
|
|
invokePendingDeleteJobs()
|
|
|
|
|
|
|
|
|
|
|
|
collection.tabs.reversed().forEach {
|
|
|
|
sessionManager.restore(
|
|
|
|
val session = it.restore(
|
|
|
|
activity,
|
|
|
|
context = activity,
|
|
|
|
activity.components.core.engine,
|
|
|
|
engine = activity.components.core.engine,
|
|
|
|
collection,
|
|
|
|
tab = it,
|
|
|
|
onFailure = { url ->
|
|
|
|
restoreSessionId = false
|
|
|
|
activity.components.useCases.tabsUseCases.addTab.invoke(url)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (session == null) {
|
|
|
|
|
|
|
|
// We were unable to create a snapshot, so just load the tab instead
|
|
|
|
|
|
|
|
activity.components.useCases.tabsUseCases.addTab.invoke(it.url)
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
sessionManager.add(
|
|
|
|
|
|
|
|
session,
|
|
|
|
|
|
|
|
activity.components.core.sessionManager.selectedSession == null
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
scrollToTheTop()
|
|
|
|
scrollToTheTop()
|
|
|
|
metrics.track(Event.CollectionAllTabsRestored)
|
|
|
|
metrics.track(Event.CollectionAllTabsRestored)
|
|
|
|