diff --git a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt index 863e0dce2..ffb13ba6d 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -394,14 +394,14 @@ class HomeFragment : Fragment() { } is TabAction.Close -> { if (pendingSessionDeletion?.deletionJob == null) { - removeTabWithUndo(action.sessionId) + removeTabWithUndo(action.sessionId, browsingModeManager.mode.isPrivate) } else { pendingSessionDeletion?.deletionJob?.let { viewLifecycleOwner.lifecycleScope.launch { it.invoke() }.invokeOnCompletion { pendingSessionDeletion = null - removeTabWithUndo(action.sessionId) + removeTabWithUndo(action.sessionId, browsingModeManager.mode.isPrivate) } } } @@ -727,9 +727,9 @@ class HomeFragment : Fragment() { deleteAllSessionsJob = deleteOperation val snackbarMessage = if (private) { - getString(R.string.snackbar_private_tabs_deleted) + getString(R.string.snackbar_private_tabs_closed) } else { - getString(R.string.snackbar_tab_deleted) + getString(R.string.snackbar_tabs_closed) } viewLifecycleOwner.lifecycleScope.allowUndo( @@ -747,7 +747,7 @@ class HomeFragment : Fragment() { ) } - private fun removeTabWithUndo(sessionId: String) { + private fun removeTabWithUndo(sessionId: String, private: Boolean) { val sessionManager = requireComponents.core.sessionManager val deleteOperation: (suspend () -> Unit) = { sessionManager.findSessionById(sessionId) @@ -759,9 +759,15 @@ class HomeFragment : Fragment() { pendingSessionDeletion = PendingSessionDeletion(deleteOperation, sessionId) + val snackbarMessage = if (private) { + getString(R.string.snackbar_private_tab_closed) + } else { + getString(R.string.snackbar_tab_closed) + } + viewLifecycleOwner.lifecycleScope.allowUndo( view!!, - getString(R.string.snackbar_tab_deleted), + snackbarMessage, getString(R.string.snackbar_deleted_undo), { pendingSessionDeletion = null emitSessionChanges() diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/TabViewHolder.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/TabViewHolder.kt index bd483ad6a..102e9ba5f 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/TabViewHolder.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/TabViewHolder.kt @@ -98,6 +98,7 @@ class TabViewHolder( updateSelected(tab.selected ?: false) updatePlayPauseButton(tab.mediaState ?: MediaState.None) item_tab.transitionName = "$TAB_ITEM_TRANSITION_NAME${tab.sessionId}" + updateCloseButtonDescription(tab.title) } internal fun updatePlayPauseButton(mediaState: MediaState) { @@ -142,6 +143,10 @@ class TabViewHolder( internal fun updateSelected(selected: Boolean) { selected_border.visibility = if (selected) View.VISIBLE else View.GONE } + private fun updateCloseButtonDescription(title: String) { + close_tab_button.contentDescription = + close_tab_button.context.getString(R.string.close_tab_title, title) + } companion object { private const val TAB_ITEM_TRANSITION_NAME = "tab_item" diff --git a/app/src/main/res/layout/tab_list_row.xml b/app/src/main/res/layout/tab_list_row.xml index 3b64f9c44..5ba25a9f5 100644 --- a/app/src/main/res/layout/tab_list_row.xml +++ b/app/src/main/res/layout/tab_list_row.xml @@ -83,7 +83,6 @@ android:layout_width="48dp" android:layout_height="48dp" android:alpha="0.8" - android:contentDescription="@string/close_tab" android:src="@drawable/ic_close" android:background="?android:attr/selectableItemBackgroundBorderless" app:layout_constraintEnd_toEndOf="parent" diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c396daad3..9e89b42dc 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -357,6 +357,8 @@ Add tab Close tab + + Close tab %s Open tabs menu @@ -641,6 +643,14 @@ Tab deleted Tabs deleted + + Tab closed + + Tabs closed + + Private tab closed + + Private tabs closed Private tabs deleted