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 bf800f467..8cc8feda9 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 5cacf6485..b911b7c53 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 78932e0d7..39aeae076 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 0c4581cdd..8052af2d9 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 79ea9d910..506fd18e8 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 57d4e27c9..3f87d7c21 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)