Issue #26101: add telementry for deleting history time range
This commit is contained in:
parent
b0acb01f6e
commit
063a09782a
|
@ -2966,6 +2966,70 @@ history:
|
|||
metadata:
|
||||
tags:
|
||||
- History
|
||||
removed_last_hour:
|
||||
type: event
|
||||
description: |
|
||||
A user removed history items opened during last hour.
|
||||
bugs:
|
||||
- https://github.com/mozilla-mobile/fenix/issues/26101
|
||||
data_reviews:
|
||||
- https://github.com/mozilla-mobile/fenix/pull/26153
|
||||
data_sensitivity:
|
||||
- interaction
|
||||
notification_emails:
|
||||
- android-probes@mozilla.com
|
||||
expires: 117
|
||||
metadata:
|
||||
tags:
|
||||
- History
|
||||
removed_today_and_yesterday:
|
||||
type: event
|
||||
description: |
|
||||
A user removed history items opened that day and the day before.
|
||||
bugs:
|
||||
- https://github.com/mozilla-mobile/fenix/issues/26101
|
||||
data_reviews:
|
||||
- https://github.com/mozilla-mobile/fenix/pull/26153
|
||||
data_sensitivity:
|
||||
- interaction
|
||||
notification_emails:
|
||||
- android-probes@mozilla.com
|
||||
expires: 117
|
||||
metadata:
|
||||
tags:
|
||||
- History
|
||||
remove_prompt_opened:
|
||||
type: event
|
||||
description: |
|
||||
A user opened delete history prompt.
|
||||
bugs:
|
||||
- https://github.com/mozilla-mobile/fenix/issues/26101
|
||||
data_reviews:
|
||||
- https://github.com/mozilla-mobile/fenix/pull/26153
|
||||
data_sensitivity:
|
||||
- interaction
|
||||
notification_emails:
|
||||
- android-probes@mozilla.com
|
||||
expires: 117
|
||||
metadata:
|
||||
tags:
|
||||
- History
|
||||
remove_prompt_cancelled:
|
||||
type: event
|
||||
description: |
|
||||
A user cancelled delete history prompt.
|
||||
bugs:
|
||||
- https://github.com/mozilla-mobile/fenix/issues/26101
|
||||
data_reviews:
|
||||
- https://github.com/mozilla-mobile/fenix/pull/26153
|
||||
data_sensitivity:
|
||||
- interaction
|
||||
notification_emails:
|
||||
- android-probes@mozilla.com
|
||||
expires: 117
|
||||
metadata:
|
||||
tags:
|
||||
- History
|
||||
shared:
|
||||
type: event
|
||||
description: |
|
||||
|
|
|
@ -145,14 +145,19 @@ class DefaultHistoryController(
|
|||
scope.launch {
|
||||
store.dispatch(HistoryFragmentAction.EnterDeletionMode)
|
||||
if (timeFrame == null) {
|
||||
GleanHistory.removedAll.record(mozilla.telemetry.glean.private.NoExtras())
|
||||
historyStorage.deleteEverything()
|
||||
} else {
|
||||
val longRange = timeFrame.toLongRange()
|
||||
historyStorage.deleteVisitsBetween(
|
||||
startTime = timeFrame.toLongRange().first,
|
||||
endTime = timeFrame.toLongRange().last,
|
||||
startTime = longRange.first,
|
||||
endTime = longRange.last,
|
||||
)
|
||||
}
|
||||
when (timeFrame) {
|
||||
RemoveTimeFrame.LastHour -> GleanHistory.removedLastHour.record(NoExtras())
|
||||
RemoveTimeFrame.TodayAndYesterday -> GleanHistory.removedTodayAndYesterday.record(NoExtras())
|
||||
null -> GleanHistory.removedAll.record(NoExtras())
|
||||
}
|
||||
// We introduced more deleting options, but are keeping these actions for all options.
|
||||
// The approach could be improved: https://github.com/mozilla-mobile/fenix/issues/26102
|
||||
browserStore.dispatch(RecentlyClosedAction.RemoveAllClosedTabAction)
|
||||
|
|
|
@ -383,6 +383,7 @@ class HistoryFragment : LibraryPageFragment<History>(), UserInteractionHandler {
|
|||
setView(layout)
|
||||
|
||||
setNegativeButton(R.string.delete_browsing_data_prompt_cancel) { dialog: DialogInterface, _ ->
|
||||
GleanHistory.removePromptCancelled.record(NoExtras())
|
||||
dialog.cancel()
|
||||
}
|
||||
setPositiveButton(R.string.delete_browsing_data_prompt_allow) { dialog: DialogInterface, _ ->
|
||||
|
@ -395,6 +396,8 @@ class HistoryFragment : LibraryPageFragment<History>(), UserInteractionHandler {
|
|||
historyInteractor.onDeleteTimeRangeConfirmed(selectedTimeFrame)
|
||||
dialog.dismiss()
|
||||
}
|
||||
|
||||
GleanHistory.removePromptOpened.record(NoExtras())
|
||||
}.create()
|
||||
}
|
||||
|
||||
|
|
|
@ -9,12 +9,17 @@ import io.mockk.coVerifyOrder
|
|||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import io.mockk.verify
|
||||
import mozilla.components.browser.state.action.EngineAction
|
||||
import mozilla.components.browser.state.action.RecentlyClosedAction
|
||||
import mozilla.components.browser.state.store.BrowserStore
|
||||
import mozilla.components.browser.storage.sync.PlacesHistoryStorage
|
||||
import mozilla.components.service.glean.testing.GleanTestRule
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import mozilla.components.support.test.rule.MainCoroutineRule
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Assert.assertFalse
|
||||
import org.junit.Assert.assertNotNull
|
||||
import org.junit.Assert.assertNull
|
||||
import org.junit.Assert.assertTrue
|
||||
import org.junit.Before
|
||||
import org.junit.Rule
|
||||
|
@ -37,6 +42,9 @@ class HistoryControllerTest {
|
|||
HistoryItemTimeGroup.timeGroupForTimestamp(0)
|
||||
)
|
||||
|
||||
@get:Rule
|
||||
val gleanTestRule = GleanTestRule(testContext)
|
||||
|
||||
@get:Rule
|
||||
val coroutinesTestRule = MainCoroutineRule()
|
||||
private val scope = coroutinesTestRule.scope
|
||||
|
@ -157,16 +165,54 @@ class HistoryControllerTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
fun onDeleteTimeRangeConfirmed() {
|
||||
fun `WHEN user confirms history deletion GIVEN timeFrame is null THEN delete all history, log the event, purge history and remove recently closed items`() {
|
||||
val controller = createController()
|
||||
assertNull(org.mozilla.fenix.GleanMetrics.History.removedAll.testGetValue())
|
||||
|
||||
controller.handleDeleteTimeRangeConfirmed(null)
|
||||
coVerifyOrder {
|
||||
store.dispatch(HistoryFragmentAction.EnterDeletionMode)
|
||||
historyStorage.deleteEverything()
|
||||
browserStore.dispatch(RecentlyClosedAction.RemoveAllClosedTabAction)
|
||||
browserStore.dispatch(EngineAction.PurgeHistoryAction)
|
||||
store.dispatch(HistoryFragmentAction.ExitDeletionMode)
|
||||
}
|
||||
|
||||
assertNotNull(org.mozilla.fenix.GleanMetrics.History.removedAll.testGetValue())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `WHEN user confirms history deletion GIVEN timeFrame is lastHour THEN delete visits between the time frame, log the event, purge history and remove recently closed items`() {
|
||||
val controller = createController()
|
||||
assertNull(org.mozilla.fenix.GleanMetrics.History.removedLastHour.testGetValue())
|
||||
|
||||
controller.handleDeleteTimeRangeConfirmed(RemoveTimeFrame.LastHour)
|
||||
coVerifyOrder {
|
||||
store.dispatch(HistoryFragmentAction.EnterDeletionMode)
|
||||
historyStorage.deleteVisitsBetween(any(), any())
|
||||
browserStore.dispatch(RecentlyClosedAction.RemoveAllClosedTabAction)
|
||||
browserStore.dispatch(EngineAction.PurgeHistoryAction)
|
||||
store.dispatch(HistoryFragmentAction.ExitDeletionMode)
|
||||
}
|
||||
|
||||
assertNotNull(org.mozilla.fenix.GleanMetrics.History.removedLastHour.testGetValue())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `WHEN user confirms history deletion GIVEN timeFrame is todayAndYesterday THEN delete visits between the time frame, log the event, purge history and remove recently closed items`() {
|
||||
val controller = createController()
|
||||
assertNull(org.mozilla.fenix.GleanMetrics.History.removedTodayAndYesterday.testGetValue())
|
||||
|
||||
controller.handleDeleteTimeRangeConfirmed(RemoveTimeFrame.TodayAndYesterday)
|
||||
coVerifyOrder {
|
||||
store.dispatch(HistoryFragmentAction.EnterDeletionMode)
|
||||
historyStorage.deleteVisitsBetween(any(), any())
|
||||
browserStore.dispatch(RecentlyClosedAction.RemoveAllClosedTabAction)
|
||||
browserStore.dispatch(EngineAction.PurgeHistoryAction)
|
||||
store.dispatch(HistoryFragmentAction.ExitDeletionMode)
|
||||
}
|
||||
|
||||
assertNotNull(org.mozilla.fenix.GleanMetrics.History.removedTodayAndYesterday.testGetValue())
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
Loading…
Reference in New Issue