Issue #26101: add telementry for deleting history time range

This commit is contained in:
mike a 2022-07-26 12:24:00 -07:00 committed by mergify[bot]
parent b0acb01f6e
commit 063a09782a
4 changed files with 122 additions and 4 deletions

View File

@ -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: |

View File

@ -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)

View File

@ -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()
}

View File

@ -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