Bug 1809998 - Part 4: Refactor OnboardingInteractor from SessionControlInteractor with a standalone default implementation

fenix/115.2.0
Gabriel Luong 1 year ago committed by mergify[bot]
parent 28727ccb99
commit eec79dff59

@ -104,7 +104,6 @@ import org.mozilla.fenix.messaging.DefaultMessageController
import org.mozilla.fenix.messaging.FenixNimbusMessagingController
import org.mozilla.fenix.messaging.MessagingFeature
import org.mozilla.fenix.nimbus.FxNimbus
import org.mozilla.fenix.onboarding.controller.DefaultOnboardingController
import org.mozilla.fenix.perf.MarkersFragmentLifecycleCallbacks
import org.mozilla.fenix.perf.runBlockingIncrement
import org.mozilla.fenix.search.toolbar.DefaultSearchSelectorController
@ -388,10 +387,6 @@ class HomeFragment : Fragment() {
appStore = components.appStore,
navController = findNavController(),
),
onboardingController = DefaultOnboardingController(
activity = activity,
hideOnboarding = ::hideOnboardingAndOpenSearch,
),
searchSelectorController = DefaultSearchSelectorController(
activity = activity,
navController = findNavController(),
@ -864,6 +859,7 @@ class HomeFragment : Fragment() {
}
}
@Suppress("UnusedPrivateMember")
private fun hideOnboardingAndOpenSearch() {
hideOnboardingIfNeeded()
appBarLayout?.setExpanded(true, true)

@ -31,8 +31,6 @@ import org.mozilla.fenix.home.recentvisits.controller.RecentVisitsController
import org.mozilla.fenix.home.recentvisits.interactor.RecentVisitsInteractor
import org.mozilla.fenix.home.toolbar.ToolbarController
import org.mozilla.fenix.home.toolbar.ToolbarInteractor
import org.mozilla.fenix.onboarding.controller.OnboardingController
import org.mozilla.fenix.onboarding.interactor.OnboardingInteractor
import org.mozilla.fenix.search.toolbar.SearchSelectorController
import org.mozilla.fenix.search.toolbar.SearchSelectorInteractor
import org.mozilla.fenix.search.toolbar.SearchSelectorMenu
@ -226,11 +224,9 @@ class SessionControlInteractor(
private val recentVisitsController: RecentVisitsController,
private val pocketStoriesController: PocketStoriesController,
private val privateBrowsingController: PrivateBrowsingController,
private val onboardingController: OnboardingController,
private val searchSelectorController: SearchSelectorController,
private val toolbarController: ToolbarController,
) : CollectionInteractor,
OnboardingInteractor,
TopSiteInteractor,
TabSessionInteractor,
ToolbarInteractor,
@ -297,14 +293,6 @@ class SessionControlInteractor(
controller.handleSponsorPrivacyClicked()
}
override fun onStartBrowsingClicked() {
onboardingController.handleStartBrowsingClicked()
}
override fun onReadPrivacyNoticeClicked() {
onboardingController.handleReadPrivacyNoticeClicked()
}
override fun showWallpapersOnboardingDialog(state: WallpaperState): Boolean {
return controller.handleShowWallpapersOnboardingDialog(state)
}

@ -4,6 +4,8 @@
package org.mozilla.fenix.onboarding.interactor
import org.mozilla.fenix.onboarding.controller.OnboardingController
/**
* Interface for onboarding related actions.
*/
@ -18,3 +20,22 @@ interface OnboardingInteractor {
*/
fun onReadPrivacyNoticeClicked()
}
/**
* The default implementation of [OnboardingInteractor].
*
* @param controller An instance of [OnboardingController] which will be delegated for all user
* interactions.
*/
class DefaultOnboardingInteractor(
private val controller: OnboardingController,
) : OnboardingInteractor {
override fun onStartBrowsingClicked() {
controller.handleStartBrowsingClicked()
}
override fun onReadPrivacyNoticeClicked() {
controller.handleReadPrivacyNoticeClicked()
}
}

@ -26,7 +26,6 @@ import org.mozilla.fenix.home.recentvisits.controller.RecentVisitsController
import org.mozilla.fenix.home.sessioncontrol.DefaultSessionControlController
import org.mozilla.fenix.home.sessioncontrol.SessionControlInteractor
import org.mozilla.fenix.home.toolbar.ToolbarController
import org.mozilla.fenix.onboarding.controller.OnboardingController
import org.mozilla.fenix.search.toolbar.SearchSelectorController
class SessionControlInteractorTest {
@ -37,7 +36,6 @@ class SessionControlInteractorTest {
private val recentBookmarksController: RecentBookmarksController = mockk(relaxed = true)
private val pocketStoriesController: PocketStoriesController = mockk(relaxed = true)
private val privateBrowsingController: PrivateBrowsingController = mockk(relaxed = true)
private val onboardingController: OnboardingController = mockk(relaxed = true)
private val searchSelectorController: SearchSelectorController = mockk(relaxed = true)
private val toolbarController: ToolbarController = mockk(relaxed = true)
@ -56,7 +54,6 @@ class SessionControlInteractorTest {
recentVisitsController,
pocketStoriesController,
privateBrowsingController,
onboardingController,
searchSelectorController,
toolbarController,
)
@ -118,18 +115,6 @@ class SessionControlInteractorTest {
verify { controller.handleRenameCollectionTapped(collection) }
}
@Test
fun onStartBrowsingClicked() {
interactor.onStartBrowsingClicked()
verify { onboardingController.handleStartBrowsingClicked() }
}
@Test
fun onReadPrivacyNoticeClicked() {
interactor.onReadPrivacyNoticeClicked()
verify { onboardingController.handleReadPrivacyNoticeClicked() }
}
@Test
fun onToggleCollectionExpanded() {
val collection: TabCollection = mockk(relaxed = true)

@ -34,7 +34,6 @@ class RecentVisitsInteractorTest {
private val recentVisitsController: RecentVisitsController = mockk(relaxed = true)
private val pocketStoriesController: PocketStoriesController = mockk(relaxed = true)
private val privateBrowsingController: PrivateBrowsingController = mockk(relaxed = true)
private val onboardingController: OnboardingController = mockk(relaxed = true)
private val searchSelectorController: SearchSelectorController = mockk(relaxed = true)
private val toolbarController: ToolbarController = mockk(relaxed = true)
@ -50,7 +49,6 @@ class RecentVisitsInteractorTest {
recentVisitsController,
pocketStoriesController,
privateBrowsingController,
onboardingController,
searchSelectorController,
toolbarController,
)

@ -0,0 +1,38 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.fenix.onboarding
import io.mockk.mockk
import io.mockk.verify
import org.junit.Before
import org.junit.Test
import org.mozilla.fenix.onboarding.controller.OnboardingController
import org.mozilla.fenix.onboarding.interactor.DefaultOnboardingInteractor
class DefaultOnboardingInteractorTest {
private val controller: OnboardingController = mockk(relaxed = true)
private lateinit var interactor: DefaultOnboardingInteractor
@Before
fun setup() {
interactor = DefaultOnboardingInteractor(
controller = controller,
)
}
@Test
fun `WHEN the onboarding is finished THEN forward to controller handler`() {
interactor.onStartBrowsingClicked()
verify { controller.handleStartBrowsingClicked() }
}
@Test
fun `WHEN the privacy notice clicked THEN forward to controller handler`() {
interactor.onReadPrivacyNoticeClicked()
verify { controller.handleReadPrivacyNoticeClicked() }
}
}
Loading…
Cancel
Save