diff --git a/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt b/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt
index 8f9c59803d..16c4c987f5 100644
--- a/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt
+++ b/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt
@@ -37,6 +37,7 @@ import mozilla.components.support.base.feature.UserInteractionHandler
import mozilla.components.support.base.feature.ViewBoundFeatureWrapper
import mozilla.components.support.ktx.kotlinx.coroutines.flow.ifAnyChanged
import org.mozilla.fenix.GleanMetrics.ReaderMode
+import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R
import org.mozilla.fenix.components.FenixSnackbar
import org.mozilla.fenix.components.TabCollectionStorage
@@ -96,17 +97,30 @@ class BrowserFragment : BaseBrowserFragment(), UserInteractionHandler {
)
}
- val homeAction = BrowserToolbar.Button(
- imageDrawable = AppCompatResources.getDrawable(
- context,
- R.drawable.mozac_ic_home_24,
- )!!,
- contentDescription = context.getString(R.string.browser_toolbar_home),
- iconTintColorResource = ThemeManager.resolveAttribute(R.attr.textPrimary, context),
- listener = browserToolbarInteractor::onHomeButtonClicked,
- )
+ val isPrivate = (activity as HomeActivity).browsingModeManager.mode.isPrivate
+ val leadingAction = if (isPrivate && context.settings().feltPrivateBrowsingEnabled) {
+ BrowserToolbar.Button(
+ imageDrawable = AppCompatResources.getDrawable(
+ context,
+ R.drawable.mozac_ic_data_clearance_24,
+ )!!,
+ contentDescription = context.getString(R.string.browser_toolbar_erase),
+ iconTintColorResource = ThemeManager.resolveAttribute(R.attr.textPrimary, context),
+ listener = browserToolbarInteractor::onEraseButtonClicked,
+ )
+ } else {
+ BrowserToolbar.Button(
+ imageDrawable = AppCompatResources.getDrawable(
+ context,
+ R.drawable.mozac_ic_home_24,
+ )!!,
+ contentDescription = context.getString(R.string.browser_toolbar_home),
+ iconTintColorResource = ThemeManager.resolveAttribute(R.attr.textPrimary, context),
+ listener = browserToolbarInteractor::onHomeButtonClicked,
+ )
+ }
- browserToolbarView.view.addNavigationAction(homeAction)
+ browserToolbarView.view.addNavigationAction(leadingAction)
updateToolbarActions(isTablet = resources.getBoolean(R.bool.tablet))
diff --git a/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarController.kt b/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarController.kt
index 08545bfcfd..979afddb33 100644
--- a/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarController.kt
+++ b/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarController.kt
@@ -29,6 +29,7 @@ import org.mozilla.fenix.components.toolbar.interactor.BrowserToolbarInteractor
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.nav
import org.mozilla.fenix.ext.settings
+import org.mozilla.fenix.home.HomeFragment
import org.mozilla.fenix.home.HomeScreenViewModel
/**
@@ -47,6 +48,11 @@ interface BrowserToolbarController {
* @see [BrowserToolbarInteractor.onHomeButtonClicked]
*/
fun handleHomeButtonClick()
+
+ /**
+ * @see [BrowserToolbarInteractor.onEraseButtonClicked]
+ */
+ fun handleEraseButtonClick()
}
@Suppress("LongParameterList")
@@ -180,6 +186,12 @@ class DefaultBrowserToolbarController(
}
}
+ override fun handleEraseButtonClick() {
+ homeViewModel.sessionToDelete = HomeFragment.ALL_PRIVATE_TABS
+ val directions = BrowserFragmentDirections.actionGlobalHome()
+ navController.navigate(directions)
+ }
+
companion object {
internal const val TELEMETRY_BROWSER_IDENTIFIER = "browserMenu"
}
diff --git a/app/src/main/java/org/mozilla/fenix/components/toolbar/interactor/BrowserToolbarInteractor.kt b/app/src/main/java/org/mozilla/fenix/components/toolbar/interactor/BrowserToolbarInteractor.kt
index 9bad624884..ce0f732866 100644
--- a/app/src/main/java/org/mozilla/fenix/components/toolbar/interactor/BrowserToolbarInteractor.kt
+++ b/app/src/main/java/org/mozilla/fenix/components/toolbar/interactor/BrowserToolbarInteractor.kt
@@ -27,6 +27,11 @@ interface BrowserToolbarInteractor {
* Navigates to the Home screen. Called when a user taps on the Home button.
*/
fun onHomeButtonClicked()
+
+ /**
+ * Deletase all tabs and navigates to the Home screen. Called when a user taps on the erase button.
+ */
+ fun onEraseButtonClicked()
}
/**
@@ -77,4 +82,8 @@ class DefaultBrowserToolbarInteractor(
override fun onHomeButtonClicked() {
browserToolbarController.handleHomeButtonClick()
}
+
+ override fun onEraseButtonClicked() {
+ browserToolbarController.handleEraseButtonClick()
+ }
}
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 c7c0e1f046..5edb3dd00a 100644
--- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt
+++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt
@@ -664,7 +664,11 @@ class HomeFragment : Fragment() {
}
val snackbarMessage = if (sessionCode == ALL_PRIVATE_TABS) {
- getString(R.string.snackbar_private_tabs_closed)
+ if (requireContext().settings().feltPrivateBrowsingEnabled) {
+ getString(R.string.snackbar_private_data_deleted)
+ } else {
+ getString(R.string.snackbar_private_tabs_closed)
+ }
} else {
getString(R.string.snackbar_tabs_closed)
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index e2149b8c89..c576c360f8 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -214,7 +214,9 @@
Home screen
-
+
+ Erase browsing history
Selected language
@@ -1273,6 +1275,8 @@
Private tab closed
Private tabs closed
+
+ Private browsing data deleted
UNDO
diff --git a/app/src/test/java/org/mozilla/fenix/components/toolbar/DefaultBrowserToolbarControllerTest.kt b/app/src/test/java/org/mozilla/fenix/components/toolbar/DefaultBrowserToolbarControllerTest.kt
index ce652ca7bd..0d3376590a 100644
--- a/app/src/test/java/org/mozilla/fenix/components/toolbar/DefaultBrowserToolbarControllerTest.kt
+++ b/app/src/test/java/org/mozilla/fenix/components/toolbar/DefaultBrowserToolbarControllerTest.kt
@@ -53,6 +53,7 @@ import org.mozilla.fenix.browser.readermode.ReaderModeController
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
+import org.mozilla.fenix.home.HomeFragment
import org.mozilla.fenix.home.HomeScreenViewModel
@RunWith(FenixRobolectricTestRunner::class)
@@ -366,6 +367,17 @@ class DefaultBrowserToolbarControllerTest {
assertNotNull(Events.browserToolbarHomeTapped.testGetValue())
}
+ @Test
+ fun handleEraseButtonClicked() {
+ val controller = createController()
+ controller.handleEraseButtonClick()
+
+ verify {
+ homeViewModel.sessionToDelete = HomeFragment.ALL_PRIVATE_TABS
+ navController.navigate(BrowserFragmentDirections.actionGlobalHome())
+ }
+ }
+
private fun createController(
activity: HomeActivity = this.activity,
customTabSessionId: String? = null,
diff --git a/app/src/test/java/org/mozilla/fenix/components/toolbar/DefaultBrowserToolbarInteractorTest.kt b/app/src/test/java/org/mozilla/fenix/components/toolbar/DefaultBrowserToolbarInteractorTest.kt
index e68d763ad5..f6a4107dbd 100644
--- a/app/src/test/java/org/mozilla/fenix/components/toolbar/DefaultBrowserToolbarInteractorTest.kt
+++ b/app/src/test/java/org/mozilla/fenix/components/toolbar/DefaultBrowserToolbarInteractorTest.kt
@@ -80,4 +80,11 @@ class DefaultBrowserToolbarInteractorTest {
verify { browserToolbarController.handleHomeButtonClick() }
}
+
+ @Test
+ fun onEraseButtonClicked() {
+ interactor.onEraseButtonClicked()
+
+ verify { browserToolbarController.handleEraseButtonClick() }
+ }
}