1
0
Fork 0

For #6323 Creating 1st collection from tab shows Name collection screen

Added a check for existence of at least a collection to select from.
master
mcarare 2019-10-29 18:02:29 +02:00 committed by Emily Kager
parent d6aeeb2dec
commit 11ad1010a9
3 changed files with 45 additions and 8 deletions

View File

@ -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 =

View File

@ -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)
}

View File

@ -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)