Change deleteAndQuit to take an activity
parent
1d66af34b0
commit
42bb3e1410
|
@ -155,7 +155,7 @@ abstract class BaseBrowserFragment : Fragment(), BackHandler, SessionManager.Obs
|
|||
return getSessionById()?.also { session ->
|
||||
|
||||
val browserToolbarController = DefaultBrowserToolbarController(
|
||||
context,
|
||||
requireActivity(),
|
||||
findNavController(),
|
||||
(activity as HomeActivity).browsingModeManager,
|
||||
findInPageLauncher = { findInPageIntegration.withFeature { it.launch() } },
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
package org.mozilla.fenix.components.toolbar
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import androidx.core.widget.NestedScrollView
|
||||
import androidx.lifecycle.LifecycleCoroutineScope
|
||||
|
@ -43,7 +42,7 @@ interface BrowserToolbarController {
|
|||
}
|
||||
|
||||
class DefaultBrowserToolbarController(
|
||||
private val context: Context,
|
||||
private val activity: Activity,
|
||||
private val navController: NavController,
|
||||
private val browsingModeManager: BrowsingModeManager,
|
||||
private val findInPageLauncher: () -> Unit,
|
||||
|
@ -56,30 +55,31 @@ class DefaultBrowserToolbarController(
|
|||
private val scope: LifecycleCoroutineScope
|
||||
) : BrowserToolbarController {
|
||||
|
||||
private val currentSession
|
||||
get() = customTabSession ?: activity.components.core.sessionManager.selectedSession
|
||||
|
||||
override fun handleToolbarPaste(text: String) {
|
||||
navController.nav(
|
||||
R.id.browserFragment,
|
||||
BrowserFragmentDirections.actionBrowserFragmentToSearchFragment(
|
||||
sessionId = customTabSession?.id ?: context.components.core.sessionManager.selectedSession?.id,
|
||||
sessionId = currentSession?.id,
|
||||
pastedText = text
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
override fun handleToolbarPasteAndGo(text: String) {
|
||||
context.components.core.sessionManager.selectedSession?.searchTerms = ""
|
||||
context.components.useCases.sessionUseCases.loadUrl(text)
|
||||
activity.components.core.sessionManager.selectedSession?.searchTerms = ""
|
||||
activity.components.useCases.sessionUseCases.loadUrl(text)
|
||||
}
|
||||
|
||||
override fun handleToolbarClick() {
|
||||
context.components.analytics.metrics.track(
|
||||
activity.components.analytics.metrics.track(
|
||||
Event.SearchBarTapped(Event.SearchBarTapped.Source.BROWSER)
|
||||
)
|
||||
navController.nav(
|
||||
R.id.browserFragment,
|
||||
BrowserFragmentDirections.actionBrowserFragmentToSearchFragment(
|
||||
customTabSession?.id ?: context.components.core.sessionManager.selectedSession?.id
|
||||
)
|
||||
BrowserFragmentDirections.actionBrowserFragmentToSearchFragment(currentSession?.id)
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -87,9 +87,8 @@ class DefaultBrowserToolbarController(
|
|||
@ObsoleteCoroutinesApi
|
||||
@SuppressWarnings("ComplexMethod", "LongMethod")
|
||||
override fun handleToolbarItemInteraction(item: ToolbarMenu.Item) {
|
||||
val sessionUseCases = context.components.useCases.sessionUseCases
|
||||
val sessionUseCases = activity.components.useCases.sessionUseCases
|
||||
trackToolbarItemInteraction(item)
|
||||
val currentSession = customTabSession ?: context.components.core.sessionManager.selectedSession
|
||||
|
||||
Do exhaustive when (item) {
|
||||
ToolbarMenu.Item.Back -> sessionUseCases.goBack.invoke(currentSession)
|
||||
|
@ -110,7 +109,7 @@ class DefaultBrowserToolbarController(
|
|||
)
|
||||
ToolbarMenu.Item.AddToHomeScreen -> {
|
||||
MainScope().launch {
|
||||
with(context.components.useCases.webAppUseCases) {
|
||||
with(activity.components.useCases.webAppUseCases) {
|
||||
if (isInstallable()) {
|
||||
addToHomescreen()
|
||||
} else {
|
||||
|
@ -144,27 +143,27 @@ class DefaultBrowserToolbarController(
|
|||
ToolbarMenu.Item.FindInPage -> {
|
||||
bottomSheetBehavior.state = BottomSheetBehavior.STATE_COLLAPSED
|
||||
findInPageLauncher()
|
||||
context.components.analytics.metrics.track(Event.FindInPageOpened)
|
||||
activity.components.analytics.metrics.track(Event.FindInPageOpened)
|
||||
}
|
||||
ToolbarMenu.Item.ReportIssue -> {
|
||||
val currentUrl = currentSession?.url
|
||||
currentUrl?.apply {
|
||||
val reportUrl = String.format(BrowserFragment.REPORT_SITE_ISSUE_URL, this)
|
||||
context.components.useCases.tabsUseCases.addTab.invoke(reportUrl)
|
||||
activity.components.useCases.tabsUseCases.addTab.invoke(reportUrl)
|
||||
}
|
||||
}
|
||||
ToolbarMenu.Item.Help -> {
|
||||
context.components.useCases.tabsUseCases.addTab.invoke(getSupportUrl())
|
||||
activity.components.useCases.tabsUseCases.addTab.invoke(getSupportUrl())
|
||||
}
|
||||
ToolbarMenu.Item.SaveToCollection -> {
|
||||
context.components.analytics.metrics
|
||||
activity.components.analytics.metrics
|
||||
.track(Event.CollectionSaveButtonPressed(TELEMETRY_BROWSER_IDENTIFIER))
|
||||
|
||||
currentSession?.toTab(context)?.let { currentSessionAsTab ->
|
||||
currentSession?.toTab(activity)?.let { currentSessionAsTab ->
|
||||
viewModel.saveTabToCollection(
|
||||
tabs = listOf(currentSessionAsTab),
|
||||
selectedTab = currentSessionAsTab,
|
||||
cachedTabCollections = context.components.core.tabCollectionStorage.cachedTabCollections
|
||||
cachedTabCollections = activity.components.core.tabCollectionStorage.cachedTabCollections
|
||||
)
|
||||
viewModel.previousFragmentId = R.id.browserFragment
|
||||
|
||||
|
@ -178,15 +177,15 @@ class DefaultBrowserToolbarController(
|
|||
|
||||
// Strip the CustomTabConfig to turn this Session into a regular tab and then select it
|
||||
customTabSession!!.customTabConfig = null
|
||||
context.components.core.sessionManager.select(customTabSession)
|
||||
activity.components.core.sessionManager.select(customTabSession)
|
||||
|
||||
// Switch to the actual browser which should now display our new selected session
|
||||
context.startActivity(openInFenixIntent)
|
||||
activity.startActivity(openInFenixIntent)
|
||||
|
||||
// Close this activity since it is no longer displaying any session
|
||||
(context as Activity).finish()
|
||||
activity.finish()
|
||||
}
|
||||
ToolbarMenu.Item.Quit -> context.deleteAndQuit(scope)
|
||||
ToolbarMenu.Item.Quit -> deleteAndQuit(activity, scope)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -218,7 +217,7 @@ class DefaultBrowserToolbarController(
|
|||
ToolbarMenu.Item.Quit -> Event.BrowserMenuItemTapped.Item.QUIT
|
||||
}
|
||||
|
||||
context.components.analytics.metrics.track(Event.BrowserMenuItemTapped(eventItem))
|
||||
activity.components.analytics.metrics.track(Event.BrowserMenuItemTapped(eventItem))
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
|
|
@ -4,38 +4,37 @@
|
|||
|
||||
package org.mozilla.fenix.utils
|
||||
|
||||
import android.content.Context
|
||||
import android.app.Activity
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import org.mozilla.fenix.ext.asActivity
|
||||
import org.mozilla.fenix.settings.DefaultDeleteBrowsingDataController
|
||||
|
||||
/**
|
||||
* Deletes selected browsing data and finishes the activity
|
||||
* Deletes selected browsing data and finishes the activity.
|
||||
*/
|
||||
fun Context.deleteAndQuit(coroutineScope: CoroutineScope) {
|
||||
fun deleteAndQuit(activity: Activity, coroutineScope: CoroutineScope) {
|
||||
coroutineScope.launch {
|
||||
launch {
|
||||
val controller =
|
||||
DefaultDeleteBrowsingDataController(this@deleteAndQuit, coroutineContext)
|
||||
if (Settings.getInstance(this@deleteAndQuit).deleteCacheOnQuit) {
|
||||
controller.deleteCachedFiles()
|
||||
val controller = DefaultDeleteBrowsingDataController(activity, coroutineContext)
|
||||
|
||||
if (Settings.getInstance(activity).deleteCacheOnQuit) {
|
||||
controller.deleteCachedFiles()
|
||||
}
|
||||
if (Settings.getInstance(activity).deleteTabsOnQuit) {
|
||||
controller.deleteTabs()
|
||||
}
|
||||
if (Settings.getInstance(activity).deletePermissionsOnQuit) {
|
||||
launch(Dispatchers.IO) {
|
||||
controller.deleteSitePermissions()
|
||||
}
|
||||
if (Settings.getInstance(this@deleteAndQuit).deleteTabsOnQuit) {
|
||||
controller.deleteTabs()
|
||||
}
|
||||
if (Settings.getInstance(this@deleteAndQuit).deletePermissionsOnQuit) {
|
||||
launch(Dispatchers.IO) {
|
||||
controller.deleteSitePermissions()
|
||||
}
|
||||
}
|
||||
if (Settings.getInstance(this@deleteAndQuit).deleteCookiesOnQuit) {
|
||||
controller.deleteCookies()
|
||||
}
|
||||
if (Settings.getInstance(this@deleteAndQuit).deleteHistoryOnQuit) {
|
||||
controller.deleteHistoryAndDOMStorages()
|
||||
}
|
||||
}.invokeOnCompletion { this@deleteAndQuit.asActivity()?.finish() }
|
||||
}
|
||||
if (Settings.getInstance(activity).deleteCookiesOnQuit) {
|
||||
controller.deleteCookies()
|
||||
}
|
||||
if (Settings.getInstance(activity).deleteHistoryOnQuit) {
|
||||
controller.deleteHistoryAndDOMStorages()
|
||||
}
|
||||
|
||||
activity.finish()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
|
||||
package org.mozilla.fenix.components.toolbar
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import androidx.core.widget.NestedScrollView
|
||||
import androidx.lifecycle.LifecycleCoroutineScope
|
||||
|
@ -55,7 +54,7 @@ class DefaultBrowserToolbarControllerTest {
|
|||
|
||||
private val mainThreadSurrogate = newSingleThreadContext("UI thread")
|
||||
|
||||
private var context: HomeActivity = mockk(relaxed = true)
|
||||
private var activity: HomeActivity = mockk(relaxed = true)
|
||||
private var analytics: Analytics = mockk(relaxed = true)
|
||||
private val browsingModeManager: BrowsingModeManager = mockk(relaxed = true)
|
||||
private var navController: NavController = mockk(relaxed = true)
|
||||
|
@ -79,7 +78,7 @@ class DefaultBrowserToolbarControllerTest {
|
|||
Dispatchers.setMain(mainThreadSurrogate)
|
||||
|
||||
controller = DefaultBrowserToolbarController(
|
||||
context = context,
|
||||
activity = activity,
|
||||
navController = navController,
|
||||
browsingModeManager = browsingModeManager,
|
||||
findInPageLauncher = findInPageLauncher,
|
||||
|
@ -100,12 +99,12 @@ class DefaultBrowserToolbarControllerTest {
|
|||
mockkStatic(
|
||||
"org.mozilla.fenix.utils.DeleteAndQuitKt"
|
||||
)
|
||||
every { any<Context>().deleteAndQuit(any()) } just Runs
|
||||
every { deleteAndQuit(any(), any()) } just Runs
|
||||
|
||||
every { context.components.analytics } returns analytics
|
||||
every { activity.components.analytics } returns analytics
|
||||
every { analytics.metrics } returns metrics
|
||||
every { context.components.useCases.sessionUseCases } returns sessionUseCases
|
||||
every { context.components.core.sessionManager.selectedSession } returns currentSession
|
||||
every { activity.components.useCases.sessionUseCases } returns sessionUseCases
|
||||
every { activity.components.core.sessionManager.selectedSession } returns currentSession
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -184,7 +183,7 @@ class DefaultBrowserToolbarControllerTest {
|
|||
fun handleToolbarReloadPress() {
|
||||
val item = ToolbarMenu.Item.Reload
|
||||
|
||||
every { context.components.useCases.sessionUseCases } returns sessionUseCases
|
||||
every { activity.components.useCases.sessionUseCases } returns sessionUseCases
|
||||
|
||||
controller.handleToolbarItemInteraction(item)
|
||||
|
||||
|
@ -329,7 +328,7 @@ class DefaultBrowserToolbarControllerTest {
|
|||
|
||||
every { currentSession.id } returns "1"
|
||||
every { currentSession.url } returns "https://mozilla.org"
|
||||
every { context.components.useCases.tabsUseCases } returns tabsUseCases
|
||||
every { activity.components.useCases.tabsUseCases } returns tabsUseCases
|
||||
every { tabsUseCases.addTab } returns addTabUseCase
|
||||
|
||||
controller.handleToolbarItemInteraction(item)
|
||||
|
@ -353,7 +352,7 @@ class DefaultBrowserToolbarControllerTest {
|
|||
|
||||
val item = ToolbarMenu.Item.Help
|
||||
|
||||
every { context.components.useCases.tabsUseCases } returns tabsUseCases
|
||||
every { activity.components.useCases.tabsUseCases } returns tabsUseCases
|
||||
every { tabsUseCases.addTab } returns addTabUseCase
|
||||
|
||||
controller.handleToolbarItemInteraction(item)
|
||||
|
@ -385,8 +384,8 @@ class DefaultBrowserToolbarControllerTest {
|
|||
fun handleToolbarSaveToCollectionPress() {
|
||||
val item = ToolbarMenu.Item.SaveToCollection
|
||||
val cachedTabCollections: List<TabCollection> = mockk(relaxed = true)
|
||||
every { context.components.useCases.sessionUseCases } returns sessionUseCases
|
||||
every { context.components.core.tabCollectionStorage.cachedTabCollections } returns cachedTabCollections
|
||||
every { activity.components.useCases.sessionUseCases } returns sessionUseCases
|
||||
every { activity.components.core.tabCollectionStorage.cachedTabCollections } returns cachedTabCollections
|
||||
|
||||
controller.handleToolbarItemInteraction(item)
|
||||
|
||||
|
@ -410,7 +409,7 @@ class DefaultBrowserToolbarControllerTest {
|
|||
@Test
|
||||
fun handleToolbarOpenInFenixPress() {
|
||||
controller = DefaultBrowserToolbarController(
|
||||
context = context,
|
||||
activity = activity,
|
||||
navController = navController,
|
||||
browsingModeManager = browsingModeManager,
|
||||
findInPageLauncher = findInPageLauncher,
|
||||
|
@ -426,17 +425,17 @@ class DefaultBrowserToolbarControllerTest {
|
|||
val sessionManager: SessionManager = mockk(relaxed = true)
|
||||
val item = ToolbarMenu.Item.OpenInFenix
|
||||
|
||||
every { context.components.core.sessionManager } returns sessionManager
|
||||
every { activity.components.core.sessionManager } returns sessionManager
|
||||
every { currentSession.customTabConfig } returns mockk()
|
||||
every { context.startActivity(any()) } just Runs
|
||||
every { activity.startActivity(any()) } just Runs
|
||||
|
||||
controller.handleToolbarItemInteraction(item)
|
||||
|
||||
verify { engineView.release() }
|
||||
verify { currentSession.customTabConfig = null }
|
||||
verify { sessionManager.select(currentSession) }
|
||||
verify { context.startActivity(openInFenixIntent) }
|
||||
verify { context.finish() }
|
||||
verify { activity.startActivity(openInFenixIntent) }
|
||||
verify { activity.finish() }
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -445,6 +444,6 @@ class DefaultBrowserToolbarControllerTest {
|
|||
|
||||
controller.handleToolbarItemInteraction(item)
|
||||
|
||||
verify { context.deleteAndQuit(scope) }
|
||||
verify { deleteAndQuit(activity, scope) }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,7 +28,6 @@ import org.junit.runner.RunWith
|
|||
import org.mozilla.fenix.HomeActivity
|
||||
import org.mozilla.fenix.TestApplication
|
||||
import org.mozilla.fenix.components.PermissionStorage
|
||||
import org.mozilla.fenix.ext.asActivity
|
||||
import org.mozilla.fenix.ext.clearAndCommit
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.robolectric.annotation.Config
|
||||
|
@ -41,7 +40,7 @@ class DeleteAndQuitTest {
|
|||
|
||||
private val mainThreadSurrogate = newSingleThreadContext("UI thread")
|
||||
|
||||
private var context: HomeActivity = mockk(relaxed = true)
|
||||
private var activity: HomeActivity = mockk(relaxed = true)
|
||||
lateinit var settings: Settings
|
||||
private val tabUseCases: TabsUseCases = mockk(relaxed = true)
|
||||
private val historyStorage: PlacesHistoryStorage = mockk(relaxed = true)
|
||||
|
@ -57,11 +56,11 @@ class DeleteAndQuitTest {
|
|||
|
||||
Dispatchers.setMain(mainThreadSurrogate)
|
||||
|
||||
every { context.components.core.historyStorage } returns historyStorage
|
||||
every { context.components.core.permissionStorage } returns permissionStorage
|
||||
every { context.components.useCases.tabsUseCases } returns tabUseCases
|
||||
every { activity.components.core.historyStorage } returns historyStorage
|
||||
every { activity.components.core.permissionStorage } returns permissionStorage
|
||||
every { activity.components.useCases.tabsUseCases } returns tabUseCases
|
||||
every { tabUseCases.removeAllTabs } returns removeAllTabsUseCases
|
||||
every { context.components.core.engine } returns engine
|
||||
every { activity.components.core.engine } returns engine
|
||||
}
|
||||
|
||||
@After
|
||||
|
@ -79,11 +78,11 @@ class DeleteAndQuitTest {
|
|||
// When
|
||||
settings.deleteTabsOnQuit = true
|
||||
|
||||
context.deleteAndQuit(this)
|
||||
deleteAndQuit(activity, this)
|
||||
|
||||
verify {
|
||||
removeAllTabsUseCases.invoke()
|
||||
context.asActivity()?.finish()
|
||||
activity.finish()
|
||||
}
|
||||
|
||||
verify(exactly = 0) {
|
||||
|
@ -110,7 +109,7 @@ class DeleteAndQuitTest {
|
|||
settings.deleteCookiesOnQuit = true
|
||||
settings.deleteCacheOnQuit = true
|
||||
|
||||
context.deleteAndQuit(this)
|
||||
deleteAndQuit(activity, this)
|
||||
|
||||
verify(exactly = 1) {
|
||||
engine.clearData(Engine.BrowsingData.allCaches())
|
||||
|
@ -134,7 +133,7 @@ class DeleteAndQuitTest {
|
|||
|
||||
historyStorage
|
||||
|
||||
context.asActivity()?.finish()
|
||||
activity.finish()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue