1
0
Fork 0

For #10462: Removes back button from bookmarks and history fragments (#11721)

master
ValentinTimisica 2020-06-22 20:15:33 +03:00 committed by GitHub
parent 635c30510d
commit c75ab3f720
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 100 additions and 29 deletions

View File

@ -443,7 +443,7 @@ class BookmarksTest {
confirmFolderDeletion()
verifyDeleteSnackBarText()
verifyFolderTitle("3")
}.goBack {
}.closeMenu {
}
homeScreen {
@ -525,4 +525,14 @@ class BookmarksTest {
verifySelectDefaultFolderSnackBarText()
}
}
@Test
fun verifyCloseMenu() {
homeScreen {
}.openThreeDotMenu {
}.openBookmarks {
}.closeMenu {
verifyHomeScreen()
}
}
}

View File

@ -293,11 +293,11 @@ class HistoryTest {
}
@Test
fun verifyBackNavigation() {
fun verifyCloseMenu() {
homeScreen {
}.openThreeDotMenu {
}.openHistory {
}.goBack {
}.closeMenu {
verifyHomeScreen()
}
}

View File

@ -72,7 +72,7 @@ class ThreeDotMenuMainTest {
}.openThreeDotMenu {
}.openBookmarks {
verifyBookmarksMenuView()
}.goBack {
}.closeMenu {
}
homeScreen {

View File

@ -181,11 +181,11 @@ class BookmarksRobot {
}
class Transition {
fun goBack(interact: HomeScreenRobot.() -> Unit): HomeScreenRobot.Transition {
goBackButton().click()
fun closeMenu(interact: HomeScreenRobot.() -> Unit): Transition {
closeButton().click()
HomeScreenRobot().interact()
return HomeScreenRobot.Transition()
return Transition()
}
fun openThreeDotMenu(interact: ThreeDotMenuBookmarksRobot.() -> Unit): ThreeDotMenuBookmarksRobot.Transition {
@ -225,6 +225,8 @@ fun bookmarksMenu(interact: BookmarksRobot.() -> Unit): BookmarksRobot.Transitio
return BookmarksRobot.Transition()
}
private fun closeButton() = onView(withId(R.id.close_bookmarks))
private fun goBackButton() = onView(withContentDescription("Navigate up"))
private fun bookmarkFavicon(url: String) = onView(

View File

@ -10,7 +10,6 @@ import androidx.test.espresso.assertion.ViewAssertions.matches
import androidx.test.espresso.matcher.RootMatchers.isDialog
import androidx.test.espresso.matcher.ViewMatchers
import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
import androidx.test.espresso.matcher.ViewMatchers.withContentDescription
import androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility
import androidx.test.espresso.matcher.ViewMatchers.withId
import androidx.test.espresso.matcher.ViewMatchers.withParent
@ -84,8 +83,8 @@ class HistoryRobot {
}
class Transition {
fun goBack(interact: HistoryRobot.() -> Unit): Transition {
goBackButton().click()
fun closeMenu(interact: HistoryRobot.() -> Unit): Transition {
closeButton().click()
HistoryRobot().interact()
return Transition()
@ -107,7 +106,7 @@ fun historyMenu(interact: HistoryRobot.() -> Unit): HistoryRobot.Transition {
return HistoryRobot.Transition()
}
private fun goBackButton() = onView(withContentDescription("Navigate up"))
private fun closeButton() = onView(withId(R.id.close_history))
private fun testPageTitle() = onView(allOf(withId(R.id.title), withText("Test_Page_1")))

View File

@ -128,6 +128,8 @@ open class HomeActivity : LocaleAwareAppCompatActivity() {
)
}
private lateinit var navigationToolbar: Toolbar
final override fun onCreate(savedInstanceState: Bundle?) {
StrictModeManager.changeStrictModePolicies(supportFragmentManager)
// There is disk read violations on some devices such as samsung and pixel for android 9/10
@ -329,24 +331,29 @@ open class HomeActivity : LocaleAwareAppCompatActivity() {
fun getSupportActionBarAndInflateIfNecessary(): ActionBar {
// Add ids to this that we don't want to have a toolbar back button
if (!isToolbarInflated) {
val navigationToolbar = navigationToolbarStub.inflate() as Toolbar
navigationToolbar = navigationToolbarStub.inflate() as Toolbar
setSupportActionBar(navigationToolbar)
NavigationUI.setupWithNavController(
navigationToolbar,
navHost.navController,
AppBarConfiguration.Builder().build()
)
navigationToolbar.setNavigationOnClickListener {
onBackPressed()
}
setupNavigationToolbar()
isToolbarInflated = true
}
return supportActionBar!!
}
@Suppress("SpreadOperator")
fun setupNavigationToolbar(vararg topLevelDestinationIds: Int) {
NavigationUI.setupWithNavController(
navigationToolbar,
navHost.navController,
AppBarConfiguration.Builder(*topLevelDestinationIds).build()
)
navigationToolbar.setNavigationOnClickListener {
onBackPressed()
}
}
protected open fun getIntentSessionId(intent: SafeIntent): String? = null
@Suppress("LongParameterList")

View File

@ -7,6 +7,7 @@ package org.mozilla.fenix.library
import androidx.appcompat.widget.Toolbar
import androidx.fragment.app.Fragment
import mozilla.components.support.ktx.android.content.getColorFromAttr
import androidx.navigation.fragment.findNavController
import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R
import org.mozilla.fenix.browser.browsingmode.BrowsingMode
@ -18,6 +19,12 @@ abstract class LibraryPageFragment<T> : Fragment() {
abstract val selectedItems: Set<T>
protected fun close() {
if (!findNavController().popBackStack(R.id.browserFragment, false)) {
findNavController().popBackStack(R.id.homeFragment, false)
}
}
protected fun openItemsInNewTab(private: Boolean = false, toUrl: (T) -> String?) {
context?.components?.useCases?.tabsUseCases?.let { tabsUseCases ->
val addTab = if (private) tabsUseCases.addPrivateTab else tabsUseCases.addTab

View File

@ -192,6 +192,11 @@ class BookmarkFragment : LibraryPageFragment<BookmarkNode>(), UserInteractionHan
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.close_bookmarks -> {
invokePendingDeletion()
close()
true
}
R.id.add_bookmark_folder -> {
navigate(
BookmarkFragmentDirections

View File

@ -12,6 +12,7 @@ import kotlinx.android.synthetic.main.component_bookmark.view.*
import mozilla.appservices.places.BookmarkRoot
import mozilla.components.concept.storage.BookmarkNode
import mozilla.components.support.base.feature.UserInteractionHandler
import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R
import org.mozilla.fenix.library.LibraryPageView
import org.mozilla.fenix.library.SelectionInteractor
@ -123,12 +124,25 @@ class BookmarkView(
bookmarkAdapter.updateData(state.tree, mode)
when (mode) {
is BookmarkFragmentState.Mode.Normal ->
is BookmarkFragmentState.Mode.Normal -> {
if (tree != null) {
if (BookmarkRoot.Mobile.id == tree?.guid) {
(activity as HomeActivity).setupNavigationToolbar(R.id.bookmarkFragment)
} else {
(activity as HomeActivity).setupNavigationToolbar()
}
}
setUiForNormalMode(state.tree)
is BookmarkFragmentState.Mode.Selecting ->
}
is BookmarkFragmentState.Mode.Selecting -> {
(activity as HomeActivity).setupNavigationToolbar()
setUiForSelectingMode(
context.getString(R.string.bookmarks_multi_select_title, mode.selectedItems.size)
context.getString(
R.string.bookmarks_multi_select_title,
mode.selectedItems.size
)
)
}
}
view.bookmarks_progress_bar.isVisible = state.isLoading
}

View File

@ -155,6 +155,10 @@ class HistoryFragment : LibraryPageFragment<HistoryItem>(), UserInteractionHandl
}
override fun onOptionsItemSelected(item: MenuItem): Boolean = when (item.itemId) {
R.id.close_history -> {
close()
true
}
R.id.share_history_multi_select -> {
val selectedHistory = historyStore.state.mode.selectedItems
val shareTabs = selectedHistory.map { ShareData(url = it.url, title = it.title) }

View File

@ -13,6 +13,7 @@ import androidx.recyclerview.widget.SimpleItemAnimator
import kotlinx.android.synthetic.main.component_history.*
import kotlinx.android.synthetic.main.component_history.view.*
import mozilla.components.support.base.feature.UserInteractionHandler
import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R
import org.mozilla.fenix.library.LibraryPageView
import org.mozilla.fenix.library.SelectionInteractor
@ -141,12 +142,18 @@ class HistoryView(
}
when (val mode = state.mode) {
is HistoryFragmentState.Mode.Normal ->
is HistoryFragmentState.Mode.Normal -> {
(activity as HomeActivity).setupNavigationToolbar(R.id.historyFragment)
setUiForNormalMode(
context.getString(R.string.library_history))
is HistoryFragmentState.Mode.Editing ->
context.getString(R.string.library_history)
)
}
is HistoryFragmentState.Mode.Editing -> {
(activity as HomeActivity).setupNavigationToolbar()
setUiForSelectingMode(
context.getString(R.string.history_multi_select_title, mode.selectedItems.size))
context.getString(R.string.history_multi_select_title, mode.selectedItems.size)
)
}
}
}

View File

@ -10,4 +10,11 @@
app:iconTint="?primaryText"
android:title="@string/bookmark_add_folder"
app:showAsAction="ifRoom" />
<item
android:id="@+id/close_bookmarks"
android:icon="@drawable/ic_close"
app:iconTint="?primaryText"
android:title="@string/content_description_close_button"
app:showAsAction="ifRoom" />
</menu>

View File

@ -2,4 +2,13 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<menu />
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/close_history"
android:icon="@drawable/ic_close"
app:iconTint="?primaryText"
android:title="@string/content_description_close_button"
app:showAsAction="ifRoom" />
</menu>