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