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 bf800f4676..8cc8feda98 100644
--- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt
+++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt
@@ -206,7 +206,8 @@ class HomeFragment : Fragment() {
invokePendingDeleteJobs = ::invokePendingDeleteJobs,
registerCollectionStorageObserver = ::registerCollectionStorageObserver,
scrollToTheTop = ::scrollToTheTop,
- showDeleteCollectionPrompt = ::showDeleteCollectionPrompt
+ showDeleteCollectionPrompt = ::showDeleteCollectionPrompt,
+ openSettingsScreen = :: openSettingsScreen
)
)
updateLayout(view)
@@ -548,6 +549,11 @@ class HomeFragment : Fragment() {
nav(R.id.homeFragment, directions)
}
+ private fun openSettingsScreen() {
+ val directions = HomeFragmentDirections.actionHomeFragmentToPrivateBrowsingFragment()
+ nav(R.id.homeFragment, directions)
+ }
+
private fun createHomeMenu(context: Context): HomeMenu {
return HomeMenu(context) {
when (it) {
diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt
index 5cacf64856..b911b7c53c 100644
--- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt
+++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt
@@ -170,7 +170,7 @@ class SessionControlAdapter(
OnboardingManualSignInViewHolder.LAYOUT_ID -> OnboardingManualSignInViewHolder(view)
OnboardingThemePickerViewHolder.LAYOUT_ID -> OnboardingThemePickerViewHolder(view)
OnboardingTrackingProtectionViewHolder.LAYOUT_ID -> OnboardingTrackingProtectionViewHolder(view)
- OnboardingPrivateBrowsingViewHolder.LAYOUT_ID -> OnboardingPrivateBrowsingViewHolder(view)
+ OnboardingPrivateBrowsingViewHolder.LAYOUT_ID -> OnboardingPrivateBrowsingViewHolder(view, interactor)
OnboardingPrivacyNoticeViewHolder.LAYOUT_ID -> OnboardingPrivacyNoticeViewHolder(view)
OnboardingFinishViewHolder.LAYOUT_ID -> OnboardingFinishViewHolder(view, interactor)
OnboardingWhatsNewViewHolder.LAYOUT_ID -> OnboardingWhatsNewViewHolder(view)
diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlController.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlController.kt
index 78932e0d78..39aeae0760 100644
--- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlController.kt
+++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlController.kt
@@ -139,6 +139,11 @@ interface SessionControlController {
*/
fun handleStartBrowsingClicked()
+ /**
+ * @see [OnboardingInteractor.onOpenSettingsClicked]
+ */
+ fun handleOpenSettingsClicked()
+
/**
* @see [CollectionInteractor.onToggleCollectionExpanded]
*/
@@ -159,7 +164,8 @@ class DefaultSessionControlController(
private val invokePendingDeleteJobs: () -> Unit,
private val registerCollectionStorageObserver: () -> Unit,
private val scrollToTheTop: () -> Unit,
- private val showDeleteCollectionPrompt: (tabCollection: TabCollection) -> Unit
+ private val showDeleteCollectionPrompt: (tabCollection: TabCollection) -> Unit,
+ private val openSettingsScreen: () -> Unit
) : SessionControlController {
private val metrics: MetricController
get() = activity.components.analytics.metrics
@@ -358,6 +364,10 @@ class DefaultSessionControlController(
hideOnboarding()
}
+ override fun handleOpenSettingsClicked() {
+ openSettingsScreen()
+ }
+
override fun handleToggleCollectionExpanded(collection: TabCollection, expand: Boolean) {
store.dispatch(HomeFragmentAction.CollectionExpanded(collection, expand))
}
diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlInteractor.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlInteractor.kt
index 0c4581cdd7..8052af2d9a 100644
--- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlInteractor.kt
+++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlInteractor.kt
@@ -87,6 +87,11 @@ interface OnboardingInteractor {
* Hides the onboarding and navigates to Search. Called when a user clicks on the "Start Browsing" button.
*/
fun onStartBrowsingClicked()
+
+ /**
+ * Hides the onboarding and navigates to Settings. Called when a user clicks on the "Open settings" button.
+ */
+ fun onOpenSettingsClicked()
}
/**
@@ -262,6 +267,10 @@ class SessionControlInteractor(
controller.handleStartBrowsingClicked()
}
+ override fun onOpenSettingsClicked() {
+ controller.handleOpenSettingsClicked()
+ }
+
override fun onToggleCollectionExpanded(collection: TabCollection, expand: Boolean) {
controller.handleToggleCollectionExpanded(collection, expand)
}
diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlView.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlView.kt
index 79ea9d910c..506fd18e89 100644
--- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlView.kt
+++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlView.kt
@@ -110,8 +110,8 @@ private fun onboardingAdapterItems(onboardingState: OnboardingState): List
+ app:layout_constraintBottom_toTopOf="@id/description_text_always" />
+
+
+
+
+
diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml
index 57d4e27c93..3f87d7c216 100644
--- a/app/src/main/res/navigation/nav_graph.xml
+++ b/app/src/main/res/navigation/nav_graph.xml
@@ -92,6 +92,9 @@
+
Unit = mockk(relaxed = true)
private val getListOfTabs: () -> List = { emptyList() }
private val hideOnboarding: () -> Unit = mockk(relaxed = true)
+ private val openSettingsScreen: () -> Unit = mockk(relaxed = true)
private val invokePendingDeleteJobs: () -> Unit = mockk(relaxed = true)
private val registerCollectionStorageObserver: () -> Unit = mockk(relaxed = true)
private val scrollToTheTop: () -> Unit = mockk(relaxed = true)
@@ -81,7 +82,8 @@ class DefaultSessionControlControllerTest {
invokePendingDeleteJobs = invokePendingDeleteJobs,
registerCollectionStorageObserver = registerCollectionStorageObserver,
scrollToTheTop = scrollToTheTop,
- showDeleteCollectionPrompt = showDeleteCollectionPrompt
+ showDeleteCollectionPrompt = showDeleteCollectionPrompt,
+ openSettingsScreen = openSettingsScreen
)
}
@@ -199,6 +201,12 @@ class DefaultSessionControlControllerTest {
verify { hideOnboarding() }
}
+ @Test
+ fun handleOpenSettingsClicked() {
+ controller.handleOpenSettingsClicked()
+ verify { openSettingsScreen() }
+ }
+
@Test
fun handleToggleCollectionExpanded() {
val collection: TabCollection = mockk(relaxed = true)