|
|
|
@ -11,11 +11,11 @@ import io.mockk.every
|
|
|
|
|
import io.mockk.mockk
|
|
|
|
|
import io.mockk.verifyOrder
|
|
|
|
|
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
|
|
|
|
import kotlinx.coroutines.test.TestCoroutineDispatcher
|
|
|
|
|
import kotlinx.coroutines.test.runBlockingTest
|
|
|
|
|
import mozilla.components.browser.icons.BrowserIcons
|
|
|
|
|
import mozilla.components.browser.storage.sync.PlacesHistoryStorage
|
|
|
|
|
import mozilla.components.concept.engine.Engine
|
|
|
|
|
import mozilla.components.feature.downloads.DownloadsUseCases.RemoveAllDownloadsUseCase
|
|
|
|
|
import mozilla.components.feature.tabs.TabsUseCases
|
|
|
|
|
import mozilla.components.support.test.rule.MainCoroutineRule
|
|
|
|
|
import org.junit.After
|
|
|
|
@ -27,15 +27,19 @@ import org.mozilla.fenix.HomeActivity
|
|
|
|
|
import org.mozilla.fenix.components.FenixSnackbar
|
|
|
|
|
import org.mozilla.fenix.components.PermissionStorage
|
|
|
|
|
import org.mozilla.fenix.ext.components
|
|
|
|
|
import org.mozilla.fenix.settings.deletebrowsingdata.DeleteBrowsingDataOnQuitType.TABS
|
|
|
|
|
import org.mozilla.fenix.settings.deletebrowsingdata.DeleteBrowsingDataOnQuitType.CACHE
|
|
|
|
|
import org.mozilla.fenix.settings.deletebrowsingdata.DeleteBrowsingDataOnQuitType.COOKIES
|
|
|
|
|
import org.mozilla.fenix.settings.deletebrowsingdata.DeleteBrowsingDataOnQuitType.DOWNLOADS
|
|
|
|
|
import org.mozilla.fenix.settings.deletebrowsingdata.DeleteBrowsingDataOnQuitType.PERMISSIONS
|
|
|
|
|
import org.mozilla.fenix.settings.deletebrowsingdata.DeleteBrowsingDataOnQuitType.HISTORY
|
|
|
|
|
import org.mozilla.fenix.utils.Settings
|
|
|
|
|
|
|
|
|
|
@OptIn(ExperimentalCoroutinesApi::class)
|
|
|
|
|
class DeleteAndQuitTest {
|
|
|
|
|
|
|
|
|
|
val testDispatcher = TestCoroutineDispatcher()
|
|
|
|
|
|
|
|
|
|
@get:Rule
|
|
|
|
|
val coroutinesTestRule = MainCoroutineRule(testDispatcher)
|
|
|
|
|
val coroutinesTestRule = MainCoroutineRule()
|
|
|
|
|
|
|
|
|
|
private val activity: HomeActivity = mockk(relaxed = true)
|
|
|
|
|
private val settings: Settings = mockk(relaxed = true)
|
|
|
|
@ -46,12 +50,14 @@ class DeleteAndQuitTest {
|
|
|
|
|
private val engine: Engine = mockk(relaxed = true)
|
|
|
|
|
private val removeAllTabsUseCases: TabsUseCases.RemoveAllTabsUseCase = mockk(relaxed = true)
|
|
|
|
|
private val snackbar = mockk<FenixSnackbar>(relaxed = true)
|
|
|
|
|
private val downloadsUseCases: RemoveAllDownloadsUseCase = mockk(relaxed = true)
|
|
|
|
|
|
|
|
|
|
@Before
|
|
|
|
|
fun setUp() {
|
|
|
|
|
every { activity.components.core.historyStorage } returns historyStorage
|
|
|
|
|
every { activity.components.core.permissionStorage } returns permissionStorage
|
|
|
|
|
every { activity.components.useCases.tabsUseCases } returns tabUseCases
|
|
|
|
|
every { activity.components.useCases.downloadUseCases.removeAllDownloads } returns downloadsUseCases
|
|
|
|
|
every { tabUseCases.removeAllTabs } returns removeAllTabsUseCases
|
|
|
|
|
every { activity.components.core.engine } returns engine
|
|
|
|
|
every { activity.components.settings } returns settings
|
|
|
|
@ -60,16 +66,19 @@ class DeleteAndQuitTest {
|
|
|
|
|
|
|
|
|
|
@After
|
|
|
|
|
fun cleanUp() {
|
|
|
|
|
testDispatcher.cleanupTestCoroutines()
|
|
|
|
|
coroutinesTestRule.testDispatcher.cleanupTestCoroutines()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Ignore("Failing test; need more investigation.")
|
|
|
|
|
@Test
|
|
|
|
|
fun `delete only tabs and quit`() = runBlockingTest {
|
|
|
|
|
// When
|
|
|
|
|
every { settings.getDeleteDataOnQuit(DeleteBrowsingDataOnQuitType.TABS) } returns true
|
|
|
|
|
every { settings.getDeleteDataOnQuit(TABS) } returns true
|
|
|
|
|
|
|
|
|
|
deleteAndQuit(activity, this, snackbar)
|
|
|
|
|
|
|
|
|
|
coroutinesTestRule.testDispatcher.advanceUntilIdle()
|
|
|
|
|
|
|
|
|
|
verifyOrder {
|
|
|
|
|
snackbar.show()
|
|
|
|
|
removeAllTabsUseCases.invoke(false)
|
|
|
|
@ -94,29 +103,33 @@ class DeleteAndQuitTest {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Ignore("Intermittently failing; will be fixed with #5406.")
|
|
|
|
|
@Ignore("Failing test; need more investigation.")
|
|
|
|
|
@Test
|
|
|
|
|
fun `delete everything and quit`() = runBlockingTest {
|
|
|
|
|
// When
|
|
|
|
|
DeleteBrowsingDataOnQuitType.values().forEach {
|
|
|
|
|
every { settings.getDeleteDataOnQuit(it) } returns true
|
|
|
|
|
}
|
|
|
|
|
every { settings.getDeleteDataOnQuit(TABS) } returns true
|
|
|
|
|
every { settings.getDeleteDataOnQuit(HISTORY) } returns true
|
|
|
|
|
every { settings.getDeleteDataOnQuit(COOKIES) } returns true
|
|
|
|
|
every { settings.getDeleteDataOnQuit(CACHE) } returns true
|
|
|
|
|
every { settings.getDeleteDataOnQuit(PERMISSIONS) } returns true
|
|
|
|
|
every { settings.getDeleteDataOnQuit(DOWNLOADS) } returns true
|
|
|
|
|
|
|
|
|
|
deleteAndQuit(activity, this, snackbar)
|
|
|
|
|
|
|
|
|
|
coroutinesTestRule.testDispatcher.advanceUntilIdle()
|
|
|
|
|
|
|
|
|
|
coVerify(exactly = 1) {
|
|
|
|
|
snackbar.show()
|
|
|
|
|
|
|
|
|
|
engine.clearData(Engine.BrowsingData.allCaches())
|
|
|
|
|
|
|
|
|
|
removeAllTabsUseCases.invoke()
|
|
|
|
|
|
|
|
|
|
engine.clearData(
|
|
|
|
|
Engine.BrowsingData.select(Engine.BrowsingData.ALL_SITE_SETTINGS)
|
|
|
|
|
)
|
|
|
|
|
// Delete tabs
|
|
|
|
|
removeAllTabsUseCases.invoke(false)
|
|
|
|
|
|
|
|
|
|
permissionStorage.deleteAllSitePermissions()
|
|
|
|
|
// Delete browsing data
|
|
|
|
|
engine.clearData(Engine.BrowsingData.select(Engine.BrowsingData.DOM_STORAGES))
|
|
|
|
|
historyStorage.deleteEverything()
|
|
|
|
|
iconsStorage.clear()
|
|
|
|
|
|
|
|
|
|
// Delete cookies
|
|
|
|
|
engine.clearData(
|
|
|
|
|
Engine.BrowsingData.select(
|
|
|
|
|
Engine.BrowsingData.COOKIES,
|
|
|
|
@ -124,14 +137,18 @@ class DeleteAndQuitTest {
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
engine.clearData(Engine.BrowsingData.select(Engine.BrowsingData.DOM_STORAGES))
|
|
|
|
|
// Delete cached files
|
|
|
|
|
engine.clearData(Engine.BrowsingData.select(Engine.BrowsingData.ALL_CACHES))
|
|
|
|
|
|
|
|
|
|
activity.finish()
|
|
|
|
|
}
|
|
|
|
|
// Delete permissions
|
|
|
|
|
engine.clearData(Engine.BrowsingData.select(Engine.BrowsingData.ALL_SITE_SETTINGS))
|
|
|
|
|
permissionStorage.deleteAllSitePermissions()
|
|
|
|
|
|
|
|
|
|
coVerify {
|
|
|
|
|
historyStorage.deleteEverything()
|
|
|
|
|
iconsStorage.clear()
|
|
|
|
|
// Delete downloads
|
|
|
|
|
downloadsUseCases.invoke()
|
|
|
|
|
|
|
|
|
|
// Finish activity
|
|
|
|
|
activity.finishAndRemoveTask()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|