Closes #18150: select tabs button not displayed (#18216)

For #18150: Improve showing/hiding of "Select tabs" button in tabs tray

Payload argument is unavailable after first call of notifyItemChanged() as the
whole View need to be updated.
Inject a "isPrivate" lambda in the adapter so it will always know what tabs are
currently showing and so always ensure the expected behavior.
upstream-sync
Vitaly V. Pinchuk 3 years ago committed by GitHub
parent dabc658c5c
commit 8f5244d528
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1055,6 +1055,33 @@ class SmokeTest {
}
}
@Test
fun selectTabsButtonVisibilityTest() {
homeScreen {
}.dismissOnboarding()
val firstWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
val secondWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 2)
navigationToolbar {
}.enterURLAndEnterToBrowser(firstWebPage.url) {
mDevice.waitForIdle()
}.openTabDrawer {
}.openNewTab {
}.submitQuery(secondWebPage.url.toString()) {
mDevice.waitForIdle()
}.openTabDrawer {
}.toggleToPrivateTabs {
}.openNewTab {
}.dismissSearchBar { }
homeScreen {
}.openTabDrawer {
}.toggleToNormalTabs {
verifySelectTabsButton()
}
}
@Test
fun privateTabsTrayWithOpenedTabTest() {
val website = TestAssetHelper.getGenericAsset(mockWebServer, 1)

@ -77,6 +77,7 @@ class TabDrawerRobot {
fun verifyPrivateModeSelected() = assertPrivateModeSelected()
fun verifyNormalModeSelected() = assertNormalModeSelected()
fun verifyNewTabButton() = assertNewTabButton()
fun verifySelectTabsButton() = assertSelectTabsButton()
fun verifyTabTrayOverflowMenu(visibility: Boolean) = assertTabTrayOverflowButton(visibility)
fun verifyTabTrayIsClosed() = assertTabTrayDoesNotExist()
@ -391,6 +392,10 @@ private fun assertNewTabButton() =
onView(withId(R.id.new_tab_button))
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
private fun assertSelectTabsButton() =
onView(withText("Select tabs"))
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
private fun assertNormalModeSelected() =
normalBrowsingButton()
.check(matches(ViewMatchers.isSelected()))

@ -23,7 +23,7 @@ import org.mozilla.fenix.tabtray.SaveToCollectionsButtonAdapter.ViewHolder
*/
class SaveToCollectionsButtonAdapter(
private val interactor: TabTrayInteractor,
private val isPrivate: Boolean = false
private val isPrivate: () -> Boolean = { false }
) : ListAdapter<Item, ViewHolder>(DiffCallback) {
init {
@ -66,7 +66,7 @@ class SaveToCollectionsButtonAdapter(
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.itemView.isVisible = !isPrivate &&
holder.itemView.isVisible = !isPrivate() &&
interactor.onModeRequested() is TabTrayDialogFragmentState.Mode.Normal
}

@ -92,7 +92,8 @@ class TabTrayView(
private var multiselectMenu: BrowserMenu? = null
private var tabsTouchHelper: TabsTouchHelper
private val collectionsButtonAdapter = SaveToCollectionsButtonAdapter(interactor, isPrivate)
private val collectionsButtonAdapter =
SaveToCollectionsButtonAdapter(interactor) { isPrivateModeSelected }
private var hasLoaded = false

Loading…
Cancel
Save