From e3c100e5f7c8cd8b04caed007fa5feb1034feb8e Mon Sep 17 00:00:00 2001 From: Alex Rudenko Date: Mon, 8 Nov 2021 14:16:38 +0000 Subject: [PATCH] Add UMA for the Recorder panel Backend CL: crrev.com/c/3268130 Bug: 1267792 Change-Id: I62857d299b9e6cd9da0ef369554508df23229053 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/3268285 Reviewed-by: Mathias Bynens Commit-Queue: Alex Rudenko --- .../core/host/InspectorFrontendHostAPI.ts | 5 ++ front_end/core/host/UserMetrics.ts | 70 +++++++++++++++++++ front_end/devtools_compatibility.js | 5 ++ 3 files changed, 80 insertions(+) diff --git a/front_end/core/host/InspectorFrontendHostAPI.ts b/front_end/core/host/InspectorFrontendHostAPI.ts index 83493b721d..a9d96b65f3 100644 --- a/front_end/core/host/InspectorFrontendHostAPI.ts +++ b/front_end/core/host/InspectorFrontendHostAPI.ts @@ -369,4 +369,9 @@ export enum EnumeratedHistogram { Language = 'DevTools.Language', ConsoleShowsCorsErrors = 'DevTools.ConsoleShowsCorsErrors', SyncSetting = 'DevTools.SyncSetting', + RecordingEdited = 'DevTools.RecordingEdited', + RecordingExported = 'DevTools.RecordingExported', + RecordingReplayFinished = 'DevTools.RecordingReplayFinished', + RecordingReplayStarted = 'DevTools.RecordingReplayStarted', + RecordingToggled = 'DevTools.RecordingToggled', } diff --git a/front_end/core/host/UserMetrics.ts b/front_end/core/host/UserMetrics.ts index b03da9f2d3..7343504635 100644 --- a/front_end/core/host/UserMetrics.ts +++ b/front_end/core/host/UserMetrics.ts @@ -261,6 +261,31 @@ export class UserMetrics { InspectorFrontendHostInstance.recordEnumeratedHistogram(EnumeratedHistogram.SyncSetting, settingValue, size); }); } + + recordingToggled(value: RecordingToggled): void { + const size = Object.keys(RecordingToggled).length + 1; + InspectorFrontendHostInstance.recordEnumeratedHistogram(EnumeratedHistogram.RecordingToggled, value, size); + } + + recordingReplayFinished(value: RecordingReplayFinished): void { + const size = Object.keys(RecordingReplayFinished).length + 1; + InspectorFrontendHostInstance.recordEnumeratedHistogram(EnumeratedHistogram.RecordingReplayFinished, value, size); + } + + recordingReplayStarted(value: RecordingReplayStarted): void { + const size = Object.keys(RecordingReplayStarted).length + 1; + InspectorFrontendHostInstance.recordEnumeratedHistogram(EnumeratedHistogram.RecordingReplayStarted, value, size); + } + + recordingEdited(value: RecordingEdited): void { + const size = Object.keys(RecordingEdited).length + 1; + InspectorFrontendHostInstance.recordEnumeratedHistogram(EnumeratedHistogram.RecordingEdited, value, size); + } + + recordingExported(value: RecordingExported): void { + const size = Object.keys(RecordingExported).length + 1; + InspectorFrontendHostInstance.recordEnumeratedHistogram(EnumeratedHistogram.RecordingExported, value, size); + } } // Codes below are used to collect UMA histograms in the Chromium port. @@ -827,3 +852,48 @@ export enum SyncSetting { DevToolsSyncSettingDisabled = 3, DevToolsSyncSettingEnabled = 4, } + +// TODO(crbug.com/1167717): Make this a const enum again +// eslint-disable-next-line rulesdir/const_enum +export enum RecordingToggled { + RecordingStarted = 1, + RecordingFinished = 2, +} + +// TODO(crbug.com/1167717): Make this a const enum again +// eslint-disable-next-line rulesdir/const_enum +export enum RecordingReplayFinished { + Success = 1, + TimeoutErrorSelectors = 2, + TimeoutErrorTarget = 3, + OtherError = 4, +} + +// TODO(crbug.com/1167717): Make this a const enum again +// eslint-disable-next-line rulesdir/const_enum +export enum RecordingReplayStarted { + ReplayOnly = 1, + ReplayWithPerformanceTracing = 2, +} + +// TODO(crbug.com/1167717): Make this a const enum again +// eslint-disable-next-line rulesdir/const_enum +export enum RecordingEdited { + SelectorPickerUsed = 1, + StepAdded = 2, + StepRemoved = 3, + SelectorAdded = 4, + SelectorRemoved = 5, + SelectorPartAdded = 6, + SelectorPartEdited = 7, + SelectorPartRemoved = 8, + TypeChanged = 9, + OtherEditing = 10, +} + +// TODO(crbug.com/1167717): Make this a const enum again +// eslint-disable-next-line rulesdir/const_enum +export enum RecordingExported { + ToPuppeteer = 1, + ToJSON = 2, +} diff --git a/front_end/devtools_compatibility.js b/front_end/devtools_compatibility.js index ba470f15d5..34c2ee4d99 100644 --- a/front_end/devtools_compatibility.js +++ b/front_end/devtools_compatibility.js @@ -396,6 +396,11 @@ LinearMemoryInspectorTarget: 'DevTools.LinearMemoryInspector.Target', Language: 'DevTools.Language', ConsoleShowsCorsErrors: 'DevTools.ConsoleShowsCorsErrors', + RecordingEdited: 'DevTools.RecordingEdited', + RecordingExported: 'DevTools.RecordingExported', + RecordingReplayFinished: 'DevTools.RecordingReplayFinished', + RecordingReplayStarted: 'DevTools.RecordingReplayStarted', + RecordingToggled: 'DevTools.RecordingToggled', }; /**