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.FenixNimbusMessagingController
import org.mozilla.fenix.messaging.MessagingFeature import org.mozilla.fenix.messaging.MessagingFeature
import org.mozilla.fenix.nimbus.FxNimbus import org.mozilla.fenix.nimbus.FxNimbus
import org.mozilla.fenix.onboarding.controller.DefaultOnboardingController
import org.mozilla.fenix.perf.MarkersFragmentLifecycleCallbacks import org.mozilla.fenix.perf.MarkersFragmentLifecycleCallbacks
import org.mozilla.fenix.perf.runBlockingIncrement import org.mozilla.fenix.perf.runBlockingIncrement
import org.mozilla.fenix.search.toolbar.DefaultSearchSelectorController import org.mozilla.fenix.search.toolbar.DefaultSearchSelectorController
@ -388,10 +387,6 @@ class HomeFragment : Fragment() {
appStore = components.appStore, appStore = components.appStore,
navController = findNavController(), navController = findNavController(),
), ),
onboardingController = DefaultOnboardingController(
activity = activity,
hideOnboarding = ::hideOnboardingAndOpenSearch,
),
searchSelectorController = DefaultSearchSelectorController( searchSelectorController = DefaultSearchSelectorController(
activity = activity, activity = activity,
navController = findNavController(), navController = findNavController(),
@ -864,6 +859,7 @@ class HomeFragment : Fragment() {
} }
} }
@Suppress("UnusedPrivateMember")
private fun hideOnboardingAndOpenSearch() { private fun hideOnboardingAndOpenSearch() {
hideOnboardingIfNeeded() hideOnboardingIfNeeded()
appBarLayout?.setExpanded(true, true) 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.recentvisits.interactor.RecentVisitsInteractor
import org.mozilla.fenix.home.toolbar.ToolbarController import org.mozilla.fenix.home.toolbar.ToolbarController
import org.mozilla.fenix.home.toolbar.ToolbarInteractor 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.SearchSelectorController
import org.mozilla.fenix.search.toolbar.SearchSelectorInteractor import org.mozilla.fenix.search.toolbar.SearchSelectorInteractor
import org.mozilla.fenix.search.toolbar.SearchSelectorMenu import org.mozilla.fenix.search.toolbar.SearchSelectorMenu
@ -226,11 +224,9 @@ class SessionControlInteractor(
private val recentVisitsController: RecentVisitsController, private val recentVisitsController: RecentVisitsController,
private val pocketStoriesController: PocketStoriesController, private val pocketStoriesController: PocketStoriesController,
private val privateBrowsingController: PrivateBrowsingController, private val privateBrowsingController: PrivateBrowsingController,
private val onboardingController: OnboardingController,
private val searchSelectorController: SearchSelectorController, private val searchSelectorController: SearchSelectorController,
private val toolbarController: ToolbarController, private val toolbarController: ToolbarController,
) : CollectionInteractor, ) : CollectionInteractor,
OnboardingInteractor,
TopSiteInteractor, TopSiteInteractor,
TabSessionInteractor, TabSessionInteractor,
ToolbarInteractor, ToolbarInteractor,
@ -297,14 +293,6 @@ class SessionControlInteractor(
controller.handleSponsorPrivacyClicked() controller.handleSponsorPrivacyClicked()
} }
override fun onStartBrowsingClicked() {
onboardingController.handleStartBrowsingClicked()
}
override fun onReadPrivacyNoticeClicked() {
onboardingController.handleReadPrivacyNoticeClicked()
}
override fun showWallpapersOnboardingDialog(state: WallpaperState): Boolean { override fun showWallpapersOnboardingDialog(state: WallpaperState): Boolean {
return controller.handleShowWallpapersOnboardingDialog(state) return controller.handleShowWallpapersOnboardingDialog(state)
} }

@ -4,6 +4,8 @@
package org.mozilla.fenix.onboarding.interactor package org.mozilla.fenix.onboarding.interactor
import org.mozilla.fenix.onboarding.controller.OnboardingController
/** /**
* Interface for onboarding related actions. * Interface for onboarding related actions.
*/ */
@ -18,3 +20,22 @@ interface OnboardingInteractor {
*/ */
fun onReadPrivacyNoticeClicked() 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.DefaultSessionControlController
import org.mozilla.fenix.home.sessioncontrol.SessionControlInteractor import org.mozilla.fenix.home.sessioncontrol.SessionControlInteractor
import org.mozilla.fenix.home.toolbar.ToolbarController import org.mozilla.fenix.home.toolbar.ToolbarController
import org.mozilla.fenix.onboarding.controller.OnboardingController
import org.mozilla.fenix.search.toolbar.SearchSelectorController import org.mozilla.fenix.search.toolbar.SearchSelectorController
class SessionControlInteractorTest { class SessionControlInteractorTest {
@ -37,7 +36,6 @@ class SessionControlInteractorTest {
private val recentBookmarksController: RecentBookmarksController = mockk(relaxed = true) private val recentBookmarksController: RecentBookmarksController = mockk(relaxed = true)
private val pocketStoriesController: PocketStoriesController = mockk(relaxed = true) private val pocketStoriesController: PocketStoriesController = mockk(relaxed = true)
private val privateBrowsingController: PrivateBrowsingController = 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 searchSelectorController: SearchSelectorController = mockk(relaxed = true)
private val toolbarController: ToolbarController = mockk(relaxed = true) private val toolbarController: ToolbarController = mockk(relaxed = true)
@ -56,7 +54,6 @@ class SessionControlInteractorTest {
recentVisitsController, recentVisitsController,
pocketStoriesController, pocketStoriesController,
privateBrowsingController, privateBrowsingController,
onboardingController,
searchSelectorController, searchSelectorController,
toolbarController, toolbarController,
) )
@ -118,18 +115,6 @@ class SessionControlInteractorTest {
verify { controller.handleRenameCollectionTapped(collection) } verify { controller.handleRenameCollectionTapped(collection) }
} }
@Test
fun onStartBrowsingClicked() {
interactor.onStartBrowsingClicked()
verify { onboardingController.handleStartBrowsingClicked() }
}
@Test
fun onReadPrivacyNoticeClicked() {
interactor.onReadPrivacyNoticeClicked()
verify { onboardingController.handleReadPrivacyNoticeClicked() }
}
@Test @Test
fun onToggleCollectionExpanded() { fun onToggleCollectionExpanded() {
val collection: TabCollection = mockk(relaxed = true) val collection: TabCollection = mockk(relaxed = true)

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