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