diff --git a/app/src/main/java/org/mozilla/fenix/library/history/HistoryFragment.kt b/app/src/main/java/org/mozilla/fenix/library/history/HistoryFragment.kt index 26ebe09eb3..259d7ce11f 100644 --- a/app/src/main/java/org/mozilla/fenix/library/history/HistoryFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/library/history/HistoryFragment.kt @@ -26,7 +26,9 @@ import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.Dispatchers.Main import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.launch +import mozilla.components.browser.state.action.EngineAction import mozilla.components.browser.state.action.RecentlyClosedAction +import mozilla.components.browser.state.store.BrowserStore import mozilla.components.concept.engine.prompt.ShareData import mozilla.components.lib.state.ext.consumeFrom import mozilla.components.service.fxa.sync.SyncReason @@ -94,7 +96,7 @@ class HistoryFragment : LibraryPageFragment(), UserInteractionHandl ::deleteHistoryItems, ::syncHistory, requireComponents.analytics.metrics - ) + ) historyInteractor = HistoryInteractor( historyController ) @@ -271,6 +273,7 @@ class HistoryFragment : LibraryPageFragment(), UserInteractionHandl requireComponents.analytics.metrics.track(Event.HistoryAllItemsRemoved) requireComponents.core.store.dispatch(RecentlyClosedAction.RemoveAllClosedTabAction) requireComponents.core.historyStorage.deleteEverything() + deleteOpenTabsEngineHistory(requireComponents.core.store) launch(Main) { viewModel.invalidate() historyStore.dispatch(HistoryFragmentAction.ExitDeletionMode) @@ -288,6 +291,10 @@ class HistoryFragment : LibraryPageFragment(), UserInteractionHandl } } + private suspend fun deleteOpenTabsEngineHistory(store: BrowserStore) { + store.dispatch(EngineAction.PurgeHistoryAction).join() + } + private fun share(data: List) { requireComponents.analytics.metrics.track(Event.HistoryItemShared) val directions = HistoryFragmentDirections.actionGlobalShareFragment( diff --git a/app/src/main/java/org/mozilla/fenix/settings/deletebrowsingdata/DeleteBrowsingDataController.kt b/app/src/main/java/org/mozilla/fenix/settings/deletebrowsingdata/DeleteBrowsingDataController.kt index 7b02cd526e..9f17a34540 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/deletebrowsingdata/DeleteBrowsingDataController.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/deletebrowsingdata/DeleteBrowsingDataController.kt @@ -7,6 +7,7 @@ package org.mozilla.fenix.settings.deletebrowsingdata import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import mozilla.components.browser.icons.BrowserIcons +import mozilla.components.browser.state.action.EngineAction import mozilla.components.browser.state.action.RecentlyClosedAction import mozilla.components.browser.state.store.BrowserStore import mozilla.components.concept.engine.Engine @@ -43,6 +44,7 @@ class DefaultDeleteBrowsingDataController( withContext(coroutineContext) { engine.clearData(Engine.BrowsingData.select(Engine.BrowsingData.DOM_STORAGES)) historyStorage.deleteEverything() + store.dispatch(EngineAction.PurgeHistoryAction) iconsStorage.clear() store.dispatch(RecentlyClosedAction.RemoveAllClosedTabAction) } diff --git a/app/src/test/java/org/mozilla/fenix/settings/deletebrowsingdata/DefaultDeleteBrowsingDataControllerTest.kt b/app/src/test/java/org/mozilla/fenix/settings/deletebrowsingdata/DefaultDeleteBrowsingDataControllerTest.kt index 414c8dfd4f..9d3d6fc784 100644 --- a/app/src/test/java/org/mozilla/fenix/settings/deletebrowsingdata/DefaultDeleteBrowsingDataControllerTest.kt +++ b/app/src/test/java/org/mozilla/fenix/settings/deletebrowsingdata/DefaultDeleteBrowsingDataControllerTest.kt @@ -13,6 +13,7 @@ import kotlinx.coroutines.GlobalScope.coroutineContext import kotlinx.coroutines.test.TestCoroutineDispatcher import kotlinx.coroutines.test.runBlockingTest import mozilla.components.browser.icons.BrowserIcons +import mozilla.components.browser.state.action.EngineAction import mozilla.components.browser.state.action.RecentlyClosedAction import mozilla.components.browser.state.store.BrowserStore import mozilla.components.concept.engine.Engine @@ -77,6 +78,7 @@ class DefaultDeleteBrowsingDataControllerTest { coVerify { engine.clearData(Engine.BrowsingData.select(Engine.BrowsingData.DOM_STORAGES)) historyStorage.deleteEverything() + store.dispatch(EngineAction.PurgeHistoryAction) store.dispatch(RecentlyClosedAction.RemoveAllClosedTabAction) iconsStorage.clear() }