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 kotlinx.coroutines.withContext
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.components.FenixSnackbar import org.mozilla.fenix.components.FenixSnackbar
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.settings
/** /**
@ -21,7 +22,13 @@ import org.mozilla.fenix.ext.settings
fun deleteAndQuit(activity: Activity, coroutineScope: CoroutineScope, snackbar: FenixSnackbar?) { fun deleteAndQuit(activity: Activity, coroutineScope: CoroutineScope, snackbar: FenixSnackbar?) {
coroutineScope.launch { coroutineScope.launch {
val settings = activity.settings() 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 { snackbar?.apply {
setText(activity.getString(R.string.deleting_browsing_data_in_progress)) setText(activity.getString(R.string.deleting_browsing_data_in_progress))

View File

@ -4,11 +4,12 @@
package org.mozilla.fenix.settings.deletebrowsingdata package org.mozilla.fenix.settings.deletebrowsingdata
import android.content.Context
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import mozilla.components.concept.engine.Engine 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 import kotlin.coroutines.CoroutineContext
interface DeleteBrowsingDataController { interface DeleteBrowsingDataController {
@ -21,13 +22,16 @@ interface DeleteBrowsingDataController {
} }
class DefaultDeleteBrowsingDataController( class DefaultDeleteBrowsingDataController(
val context: Context, private val removeAllTabs: TabsUseCases.RemoveAllTabsUseCase,
val coroutineContext: CoroutineContext = Dispatchers.Main private val historyStorage: HistoryStorage,
private val permissionStorage: PermissionStorage,
private val engine: Engine,
private val coroutineContext: CoroutineContext = Dispatchers.Main
) : DeleteBrowsingDataController { ) : DeleteBrowsingDataController {
override suspend fun deleteTabs() { override suspend fun deleteTabs() {
withContext(coroutineContext) { withContext(coroutineContext) {
context.components.useCases.tabsUseCases.removeAllTabs.invoke() removeAllTabs.invoke()
} }
} }
@ -37,14 +41,14 @@ class DefaultDeleteBrowsingDataController(
override suspend fun deleteHistoryAndDOMStorages() { override suspend fun deleteHistoryAndDOMStorages() {
withContext(coroutineContext) { 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() { override suspend fun deleteCookies() {
withContext(coroutineContext) { withContext(coroutineContext) {
context.components.core.engine.clearData( engine.clearData(
Engine.BrowsingData.select( Engine.BrowsingData.select(
Engine.BrowsingData.COOKIES, Engine.BrowsingData.COOKIES,
Engine.BrowsingData.AUTH_SESSIONS Engine.BrowsingData.AUTH_SESSIONS
@ -55,7 +59,7 @@ class DefaultDeleteBrowsingDataController(
override suspend fun deleteCachedFiles() { override suspend fun deleteCachedFiles() {
withContext(coroutineContext) { withContext(coroutineContext) {
context.components.core.engine.clearData( engine.clearData(
Engine.BrowsingData.select(Engine.BrowsingData.ALL_CACHES) Engine.BrowsingData.select(Engine.BrowsingData.ALL_CACHES)
) )
} }
@ -63,10 +67,10 @@ class DefaultDeleteBrowsingDataController(
override suspend fun deleteSitePermissions() { override suspend fun deleteSitePermissions() {
withContext(coroutineContext) { withContext(coroutineContext) {
context.components.core.engine.clearData( engine.clearData(
Engine.BrowsingData.select(Engine.BrowsingData.ALL_SITE_SETTINGS) 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.R
import org.mozilla.fenix.components.FenixSnackbar import org.mozilla.fenix.components.FenixSnackbar
import org.mozilla.fenix.components.metrics.Event import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.requireComponents import org.mozilla.fenix.ext.requireComponents
import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.ext.showToolbar 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?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) 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() settings = requireContext().settings()
getCheckboxes().forEach { getCheckboxes().forEach {

View File

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