For #5568 - Don't pass in Session for QuickActionSheetController
parent
b0b60aa27d
commit
24b3ed4384
|
@ -193,8 +193,7 @@ class BrowserFragment : BaseBrowserFragment(), BackHandler {
|
|||
quickActionSheetController = DefaultQuickActionSheetController(
|
||||
context = context,
|
||||
navController = findNavController(),
|
||||
currentSession = getSessionById()
|
||||
?: context.components.core.sessionManager.selectedSessionOrThrow,
|
||||
sessionManager = context.components.core.sessionManager,
|
||||
appLinksUseCases = context.components.useCases.appLinksUseCases,
|
||||
bookmarkTapped = {
|
||||
lifecycleScope.launch { bookmarkTapped(it) }
|
||||
|
|
|
@ -8,6 +8,7 @@ import android.content.Context
|
|||
import android.content.Intent
|
||||
import androidx.navigation.NavController
|
||||
import mozilla.components.browser.session.Session
|
||||
import mozilla.components.browser.session.SessionManager
|
||||
import mozilla.components.feature.app.links.AppLinksUseCases
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.browser.BrowserFragmentDirections
|
||||
|
@ -29,14 +30,14 @@ interface QuickActionSheetController {
|
|||
class DefaultQuickActionSheetController(
|
||||
private val context: Context,
|
||||
private val navController: NavController,
|
||||
private val currentSession: Session,
|
||||
private val sessionManager: SessionManager,
|
||||
private val appLinksUseCases: AppLinksUseCases,
|
||||
private val bookmarkTapped: (Session) -> Unit
|
||||
) : QuickActionSheetController {
|
||||
|
||||
override fun handleShare() {
|
||||
context.metrics.track(Event.QuickActionSheetShareTapped)
|
||||
currentSession.url.let {
|
||||
sessionManager.selectedSession?.url.let {
|
||||
val directions = BrowserFragmentDirections.actionBrowserFragmentToShareFragment(it)
|
||||
navController.nav(R.id.browserFragment, directions)
|
||||
}
|
||||
|
@ -49,18 +50,19 @@ class DefaultQuickActionSheetController(
|
|||
|
||||
override fun handleBookmark() {
|
||||
context.metrics.track(Event.QuickActionSheetBookmarkTapped)
|
||||
bookmarkTapped(currentSession)
|
||||
sessionManager.selectedSession?.let {
|
||||
bookmarkTapped(it)
|
||||
}
|
||||
}
|
||||
|
||||
override fun handleOpenLink() {
|
||||
context.metrics.track(Event.QuickActionSheetOpenInAppTapped)
|
||||
|
||||
val getRedirect = appLinksUseCases.appLinkRedirect
|
||||
val redirect = currentSession.let {
|
||||
getRedirect.invoke(it.url)
|
||||
sessionManager.selectedSession?.let {
|
||||
val redirect = getRedirect.invoke(it.url)
|
||||
redirect.appIntent?.flags = Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
appLinksUseCases.openAppLink.invoke(redirect)
|
||||
}
|
||||
|
||||
redirect.appIntent?.flags = Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
appLinksUseCases.openAppLink.invoke(redirect)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@ import io.mockk.every
|
|||
import io.mockk.mockk
|
||||
import io.mockk.verify
|
||||
import mozilla.components.browser.session.Session
|
||||
import mozilla.components.browser.session.SessionManager
|
||||
import mozilla.components.feature.app.links.AppLinksUseCases
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
|
@ -26,6 +27,7 @@ import org.mozilla.fenix.utils.ItsNotBrokenSnack
|
|||
class DefaultQuickActionSheetControllerTest {
|
||||
private val context: HomeActivity = mockk(relaxed = true)
|
||||
private val navController: NavController = mockk(relaxed = true)
|
||||
private val sessionManager: SessionManager = mockk(relaxed = true)
|
||||
private val currentSession: Session = mockk(relaxed = true)
|
||||
private val appLinksUseCases: AppLinksUseCases = mockk(relaxed = true)
|
||||
private val bookmarkTapped: (Session) -> Unit = mockk(relaxed = true)
|
||||
|
@ -38,11 +40,13 @@ class DefaultQuickActionSheetControllerTest {
|
|||
controller = DefaultQuickActionSheetController(
|
||||
context,
|
||||
navController,
|
||||
currentSession,
|
||||
sessionManager,
|
||||
appLinksUseCases,
|
||||
bookmarkTapped
|
||||
)
|
||||
|
||||
every { sessionManager.selectedSession } returns currentSession
|
||||
|
||||
every { context.metrics } returns metrics
|
||||
}
|
||||
|
||||
|
@ -51,7 +55,12 @@ class DefaultQuickActionSheetControllerTest {
|
|||
controller.handleShare()
|
||||
|
||||
verify { metrics.track(Event.QuickActionSheetShareTapped) }
|
||||
verify { navController.nav(R.id.browserFragment, BrowserFragmentDirections.actionBrowserFragmentToShareFragment(currentSession.url)) }
|
||||
verify {
|
||||
navController.nav(
|
||||
R.id.browserFragment,
|
||||
BrowserFragmentDirections.actionBrowserFragmentToShareFragment(currentSession.url)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
Loading…
Reference in New Issue