For #6323 Creating 1st collection from tab shows Name collection screen
Added a check for existence of at least a collection to select from.
This commit is contained in:
parent
d6aeeb2dec
commit
11ad1010a9
|
@ -194,7 +194,8 @@ abstract class BaseBrowserFragment : Fragment(), BackHandler, SessionManager.Obs
|
|||
flags = Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
},
|
||||
bottomSheetBehavior = QuickActionSheetBehavior.from(nestedScrollQuickAction),
|
||||
scope = lifecycleScope
|
||||
scope = lifecycleScope,
|
||||
tabCollectionStorage = requireComponents.core.tabCollectionStorage
|
||||
)
|
||||
|
||||
browserInteractor =
|
||||
|
|
|
@ -33,6 +33,7 @@ import org.mozilla.fenix.browser.browsingmode.BrowsingMode
|
|||
import org.mozilla.fenix.browser.browsingmode.BrowsingModeManager
|
||||
import org.mozilla.fenix.components.FenixSnackbar
|
||||
import org.mozilla.fenix.collections.SaveCollectionStep
|
||||
import org.mozilla.fenix.components.TabCollectionStorage
|
||||
import org.mozilla.fenix.components.metrics.Event
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.ext.nav
|
||||
|
@ -66,7 +67,8 @@ class DefaultBrowserToolbarController(
|
|||
private val getSupportUrl: () -> String,
|
||||
private val openInFenixIntent: Intent,
|
||||
private val bottomSheetBehavior: QuickActionSheetBehavior<NestedScrollView>,
|
||||
private val scope: LifecycleCoroutineScope
|
||||
private val scope: LifecycleCoroutineScope,
|
||||
private val tabCollectionStorage: TabCollectionStorage
|
||||
) : BrowserToolbarController {
|
||||
|
||||
private val currentSession
|
||||
|
@ -184,7 +186,11 @@ class DefaultBrowserToolbarController(
|
|||
previousFragmentId = R.id.browserFragment,
|
||||
tabIds = arrayOf(currentSession.id),
|
||||
selectedTabIds = arrayOf(currentSession.id),
|
||||
saveCollectionStep = SaveCollectionStep.SelectCollection
|
||||
saveCollectionStep = if (tabCollectionStorage.cachedTabCollections.isEmpty()) {
|
||||
SaveCollectionStep.NameCollection
|
||||
} else {
|
||||
SaveCollectionStep.SelectCollection
|
||||
}
|
||||
)
|
||||
navController.nav(R.id.browserFragment, directions)
|
||||
}
|
||||
|
|
|
@ -44,6 +44,7 @@ import org.mozilla.fenix.browser.browsingmode.BrowsingModeManager
|
|||
import org.mozilla.fenix.collections.SaveCollectionStep
|
||||
import org.mozilla.fenix.components.Analytics
|
||||
import org.mozilla.fenix.components.FenixSnackbar
|
||||
import org.mozilla.fenix.components.TabCollectionStorage
|
||||
import org.mozilla.fenix.components.metrics.Event
|
||||
import org.mozilla.fenix.components.metrics.MetricController
|
||||
import org.mozilla.fenix.ext.components
|
||||
|
@ -79,6 +80,7 @@ class DefaultBrowserToolbarControllerTest {
|
|||
private val scope: LifecycleCoroutineScope = mockk(relaxed = true)
|
||||
private val adjustBackgroundAndNavigate: (NavDirections) -> Unit = mockk(relaxed = true)
|
||||
private val snackbar = mockk<FenixSnackbar>(relaxed = true)
|
||||
private val tabCollectionStorage = mockk<TabCollectionStorage>(relaxed = true)
|
||||
|
||||
private lateinit var controller: DefaultBrowserToolbarController
|
||||
|
||||
|
@ -100,7 +102,8 @@ class DefaultBrowserToolbarControllerTest {
|
|||
bottomSheetBehavior = bottomSheetBehavior,
|
||||
scope = scope,
|
||||
browserLayout = browserLayout,
|
||||
swipeRefresh = swipeRefreshLayout
|
||||
swipeRefresh = swipeRefreshLayout,
|
||||
tabCollectionStorage = tabCollectionStorage
|
||||
)
|
||||
|
||||
mockkStatic(
|
||||
|
@ -402,7 +405,7 @@ class DefaultBrowserToolbarControllerTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
fun handleToolbarSaveToCollectionPress() {
|
||||
fun handleToolbarSaveToCollectionPressWhenAtLeastOneCollectionExists() {
|
||||
val item = ToolbarMenu.Item.SaveToCollection
|
||||
val cachedTabCollections: List<TabCollection> = mockk(relaxed = true)
|
||||
every { activity.components.useCases.sessionUseCases } returns sessionUseCases
|
||||
|
@ -410,8 +413,10 @@ class DefaultBrowserToolbarControllerTest {
|
|||
|
||||
controller.handleToolbarItemInteraction(item)
|
||||
|
||||
verify { metrics.track(Event.BrowserMenuItemTapped(Event.BrowserMenuItemTapped.Item.SAVE_TO_COLLECTION)) }
|
||||
verify { metrics.track(Event.CollectionSaveButtonPressed(DefaultBrowserToolbarController.TELEMETRY_BROWSER_IDENTIFIER)) }
|
||||
verify { metrics.track(
|
||||
Event.BrowserMenuItemTapped(Event.BrowserMenuItemTapped.Item.SAVE_TO_COLLECTION)) }
|
||||
verify { metrics.track(
|
||||
Event.CollectionSaveButtonPressed(DefaultBrowserToolbarController.TELEMETRY_BROWSER_IDENTIFIER)) }
|
||||
verify {
|
||||
val directions =
|
||||
BrowserFragmentDirections.actionBrowserFragmentToCreateCollectionFragment(
|
||||
|
@ -424,6 +429,30 @@ class DefaultBrowserToolbarControllerTest {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun handleToolbarSaveToCollectionPressWhenNoCollectionsExists() {
|
||||
val item = ToolbarMenu.Item.SaveToCollection
|
||||
val cachedTabCollectionsEmpty: List<TabCollection> = emptyList()
|
||||
every { activity.components.useCases.sessionUseCases } returns sessionUseCases
|
||||
every { activity.components.core.tabCollectionStorage.cachedTabCollections } returns cachedTabCollectionsEmpty
|
||||
|
||||
controller.handleToolbarItemInteraction(item)
|
||||
|
||||
verify { metrics.track(Event.BrowserMenuItemTapped(Event.BrowserMenuItemTapped.Item.SAVE_TO_COLLECTION)) }
|
||||
verify { metrics.track(Event.CollectionSaveButtonPressed(
|
||||
DefaultBrowserToolbarController.TELEMETRY_BROWSER_IDENTIFIER)) }
|
||||
verify {
|
||||
val directions =
|
||||
BrowserFragmentDirections.actionBrowserFragmentToCreateCollectionFragment(
|
||||
previousFragmentId = R.id.browserFragment,
|
||||
saveCollectionStep = SaveCollectionStep.NameCollection,
|
||||
tabIds = arrayOf(currentSession.id),
|
||||
selectedTabIds = arrayOf(currentSession.id)
|
||||
)
|
||||
navController.nav(R.id.browserFragment, directions)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun handleToolbarOpenInFenixPress() {
|
||||
controller = DefaultBrowserToolbarController(
|
||||
|
@ -440,7 +469,8 @@ class DefaultBrowserToolbarControllerTest {
|
|||
bottomSheetBehavior = bottomSheetBehavior,
|
||||
scope = scope,
|
||||
browserLayout = browserLayout,
|
||||
swipeRefresh = swipeRefreshLayout
|
||||
swipeRefresh = swipeRefreshLayout,
|
||||
tabCollectionStorage = tabCollectionStorage
|
||||
)
|
||||
|
||||
val sessionManager: SessionManager = mockk(relaxed = true)
|
||||
|
|
Loading…
Reference in New Issue
Block a user