1
0
Fork 0

For #5568 - Don't pass in Session for QuickActionSheetController

master
ekager 2019-09-25 11:02:06 -07:00 committed by Emily Kager
parent b0b60aa27d
commit 24b3ed4384
3 changed files with 22 additions and 12 deletions

View File

@ -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) }

View File

@ -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)
}
}

View File

@ -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