1
0
Fork 0

For #12565: Remove context from DeleteBrowsingDataController constructor

master
mcarare 2020-07-29 16:21:01 +03:00 committed by Mihai Adrian Carare
parent e2e684b4d4
commit 4b74ff186b
4 changed files with 53 additions and 38 deletions

View File

@ -13,6 +13,7 @@ import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.mozilla.fenix.R
import org.mozilla.fenix.components.FenixSnackbar
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.settings
/**
@ -21,7 +22,13 @@ import org.mozilla.fenix.ext.settings
fun deleteAndQuit(activity: Activity, coroutineScope: CoroutineScope, snackbar: FenixSnackbar?) {
coroutineScope.launch {
val settings = activity.settings()
val controller = DefaultDeleteBrowsingDataController(activity, coroutineContext)
val controller = DefaultDeleteBrowsingDataController(
activity.components.useCases.tabsUseCases.removeAllTabs,
activity.components.core.historyStorage,
activity.components.core.permissionStorage,
activity.components.core.engine,
coroutineContext
)
snackbar?.apply {
setText(activity.getString(R.string.deleting_browsing_data_in_progress))

View File

@ -4,11 +4,12 @@
package org.mozilla.fenix.settings.deletebrowsingdata
import android.content.Context
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import mozilla.components.concept.engine.Engine
import org.mozilla.fenix.ext.components
import mozilla.components.concept.storage.HistoryStorage
import mozilla.components.feature.tabs.TabsUseCases
import org.mozilla.fenix.components.PermissionStorage
import kotlin.coroutines.CoroutineContext
interface DeleteBrowsingDataController {
@ -21,13 +22,16 @@ interface DeleteBrowsingDataController {
}
class DefaultDeleteBrowsingDataController(
val context: Context,
val coroutineContext: CoroutineContext = Dispatchers.Main
private val removeAllTabs: TabsUseCases.RemoveAllTabsUseCase,
private val historyStorage: HistoryStorage,
private val permissionStorage: PermissionStorage,
private val engine: Engine,
private val coroutineContext: CoroutineContext = Dispatchers.Main
) : DeleteBrowsingDataController {
override suspend fun deleteTabs() {
withContext(coroutineContext) {
context.components.useCases.tabsUseCases.removeAllTabs.invoke()
removeAllTabs.invoke()
}
}
@ -37,14 +41,14 @@ class DefaultDeleteBrowsingDataController(
override suspend fun deleteHistoryAndDOMStorages() {
withContext(coroutineContext) {
context.components.core.engine.clearData(Engine.BrowsingData.select(Engine.BrowsingData.DOM_STORAGES))
engine.clearData(Engine.BrowsingData.select(Engine.BrowsingData.DOM_STORAGES))
}
context.components.core.historyStorage.deleteEverything()
historyStorage.deleteEverything()
}
override suspend fun deleteCookies() {
withContext(coroutineContext) {
context.components.core.engine.clearData(
engine.clearData(
Engine.BrowsingData.select(
Engine.BrowsingData.COOKIES,
Engine.BrowsingData.AUTH_SESSIONS
@ -55,7 +59,7 @@ class DefaultDeleteBrowsingDataController(
override suspend fun deleteCachedFiles() {
withContext(coroutineContext) {
context.components.core.engine.clearData(
engine.clearData(
Engine.BrowsingData.select(Engine.BrowsingData.ALL_CACHES)
)
}
@ -63,10 +67,10 @@ class DefaultDeleteBrowsingDataController(
override suspend fun deleteSitePermissions() {
withContext(coroutineContext) {
context.components.core.engine.clearData(
engine.clearData(
Engine.BrowsingData.select(Engine.BrowsingData.ALL_SITE_SETTINGS)
)
}
context.components.core.permissionStorage.deleteAllSitePermissions()
permissionStorage.deleteAllSitePermissions()
}
}

View File

@ -25,6 +25,7 @@ import mozilla.components.support.ktx.kotlinx.coroutines.flow.ifChanged
import org.mozilla.fenix.R
import org.mozilla.fenix.components.FenixSnackbar
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.requireComponents
import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.ext.showToolbar
@ -40,7 +41,12 @@ class DeleteBrowsingDataFragment : Fragment(R.layout.fragment_delete_browsing_da
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
controller = DefaultDeleteBrowsingDataController(requireContext())
controller = DefaultDeleteBrowsingDataController(
requireContext().components.useCases.tabsUseCases.removeAllTabs,
requireContext().components.core.historyStorage,
requireContext().components.core.permissionStorage,
requireContext().components.core.engine
)
settings = requireContext().settings()
getCheckboxes().forEach {

View File

@ -4,21 +4,21 @@
package org.mozilla.fenix.settings.deletebrowsingdata
import android.content.Context
import io.mockk.Runs
import io.mockk.every
import io.mockk.just
import io.mockk.mockk
import io.mockk.verify
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.GlobalScope.coroutineContext
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.TestCoroutineDispatcher
import kotlinx.coroutines.test.runBlockingTest
import mozilla.components.concept.engine.Engine
import mozilla.components.concept.storage.HistoryStorage
import mozilla.components.feature.tabs.TabsUseCases
import mozilla.components.support.test.rule.MainCoroutineRule
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.components.PermissionStorage
@OptIn(ExperimentalCoroutinesApi::class)
class DefaultDeleteBrowsingDataControllerTest {
@ -26,47 +26,49 @@ class DefaultDeleteBrowsingDataControllerTest {
@get:Rule
val coroutinesTestRule = MainCoroutineRule(TestCoroutineDispatcher())
private val context: Context = mockk(relaxed = true)
private var removeAllTabs: TabsUseCases.RemoveAllTabsUseCase = mockk(relaxed = true)
private var historyStorage: HistoryStorage = mockk(relaxed = true)
private var permissionStorage: PermissionStorage = mockk(relaxed = true)
private val engine: Engine = mockk(relaxed = true)
private lateinit var controller: DefaultDeleteBrowsingDataController
@Before
fun setup() {
every { context.components.core.engine.clearData(any()) } just Runs
controller = DefaultDeleteBrowsingDataController(
removeAllTabs = removeAllTabs,
historyStorage = historyStorage,
permissionStorage = permissionStorage,
engine = engine,
coroutineContext = coroutineContext
)
}
@Test
fun deleteTabs() = runBlockingTest {
controller = DefaultDeleteBrowsingDataController(context, coroutineContext)
every { context.components.useCases.tabsUseCases.removeAllTabs.invoke() } just Runs
controller.deleteTabs()
verify {
context.components.useCases.tabsUseCases.removeAllTabs.invoke()
removeAllTabs.invoke()
}
}
@Test
fun deleteBrowsingData() = runBlockingTest {
controller = DefaultDeleteBrowsingDataController(context, coroutineContext)
every { context.components.core.historyStorage } returns mockk(relaxed = true)
controller.deleteBrowsingData()
verify {
context.components.core.engine.clearData(Engine.BrowsingData.select(Engine.BrowsingData.DOM_STORAGES))
context.components.core.historyStorage
engine.clearData(Engine.BrowsingData.select(Engine.BrowsingData.DOM_STORAGES))
}
verify { launch { historyStorage.deleteEverything() } }
}
@Test
fun deleteCookies() = runBlockingTest {
controller = DefaultDeleteBrowsingDataController(context, coroutineContext)
controller.deleteCookies()
verify {
context.components.core.engine.clearData(
engine.clearData(
Engine.BrowsingData.select(
Engine.BrowsingData.COOKIES,
Engine.BrowsingData.AUTH_SESSIONS
@ -77,25 +79,21 @@ class DefaultDeleteBrowsingDataControllerTest {
@Test
fun deleteCachedFiles() = runBlockingTest {
controller = DefaultDeleteBrowsingDataController(context, coroutineContext)
controller.deleteCachedFiles()
verify {
context.components.core.engine.clearData(Engine.BrowsingData.select(Engine.BrowsingData.ALL_CACHES))
engine.clearData(Engine.BrowsingData.select(Engine.BrowsingData.ALL_CACHES))
}
}
@Test
fun deleteSitePermissions() = runBlockingTest {
controller = DefaultDeleteBrowsingDataController(context, coroutineContext)
every { context.components.core.permissionStorage.deleteAllSitePermissions() } just Runs
controller.deleteSitePermissions()
verify {
context.components.core.engine.clearData(Engine.BrowsingData.select(Engine.BrowsingData.ALL_SITE_SETTINGS))
context.components.core.permissionStorage.deleteAllSitePermissions()
engine.clearData(Engine.BrowsingData.select(Engine.BrowsingData.ALL_SITE_SETTINGS))
permissionStorage.deleteAllSitePermissions()
}
}
}