From 24b3ed4384d41395abca20757ef2884e2ebe54ef Mon Sep 17 00:00:00 2001 From: ekager Date: Wed, 25 Sep 2019 11:02:06 -0700 Subject: [PATCH] For #5568 - Don't pass in Session for QuickActionSheetController --- .../mozilla/fenix/browser/BrowserFragment.kt | 3 +-- .../QuickActionSheetController.kt | 18 ++++++++++-------- .../DefaultQuickActionSheetControllerTest.kt | 13 +++++++++++-- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt b/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt index 99614ed68..f3b176a87 100644 --- a/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt @@ -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) } diff --git a/app/src/main/java/org/mozilla/fenix/quickactionsheet/QuickActionSheetController.kt b/app/src/main/java/org/mozilla/fenix/quickactionsheet/QuickActionSheetController.kt index 746cf3960..577d24f60 100644 --- a/app/src/main/java/org/mozilla/fenix/quickactionsheet/QuickActionSheetController.kt +++ b/app/src/main/java/org/mozilla/fenix/quickactionsheet/QuickActionSheetController.kt @@ -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) } } diff --git a/app/src/test/java/org/mozilla/fenix/quickactionsheet/DefaultQuickActionSheetControllerTest.kt b/app/src/test/java/org/mozilla/fenix/quickactionsheet/DefaultQuickActionSheetControllerTest.kt index d6eac9a36..1501446f4 100644 --- a/app/src/test/java/org/mozilla/fenix/quickactionsheet/DefaultQuickActionSheetControllerTest.kt +++ b/app/src/test/java/org/mozilla/fenix/quickactionsheet/DefaultQuickActionSheetControllerTest.kt @@ -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