Add UMA for Network panel "more filters"
Chromium CL: https://crrev.com/c/5025097
Bug: 1486431
Change-Id: Ifc50cda4a6678e0c2231ba4318f1ff4e7639ff15
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/5025097
Reviewed-by: Kateryna Prokopenko <[email protected]>
Auto-Submit: Wolfgang Beyer <[email protected]>
Commit-Queue: Wolfgang Beyer <[email protected]>
diff --git a/front_end/core/host/InspectorFrontendHostAPI.ts b/front_end/core/host/InspectorFrontendHostAPI.ts
index 7d0294d..0e7b5a9 100644
--- a/front_end/core/host/InspectorFrontendHostAPI.ts
+++ b/front_end/core/host/InspectorFrontendHostAPI.ts
@@ -466,4 +466,6 @@
LegacyResourceTypeFilterItemSelected = 'DevTools.LegacyResourceTypeFilterItemSelected',
ResourceTypeFilterNumberOfSelectedChanged = 'DevTools.ResourceTypeFilterNumberOfSelectedChanged',
ResourceTypeFilterItemSelected = 'DevTools.ResourceTypeFilterItemSelected',
+ NetworkPanelMoreFiltersNumberOfSelectedChanged = 'DevTools.NetworkPanelMoreFiltersNumberOfSelectedChanged',
+ NetworkPanelMoreFiltersItemSelected = 'DevTools.NetworkPanelMoreFiltersItemSelected',
}
diff --git a/front_end/core/host/UserMetrics.ts b/front_end/core/host/UserMetrics.ts
index bde54c5..8d54056 100644
--- a/front_end/core/host/UserMetrics.ts
+++ b/front_end/core/host/UserMetrics.ts
@@ -488,6 +488,22 @@
InspectorFrontendHostInstance.recordEnumeratedHistogram(
EnumeratedHistogram.ResourceTypeFilterItemSelected, resourceType, ResourceType.MaxValue);
}
+
+ networkPanelMoreFiltersNumberOfSelectedChanged(itemCount: number): void {
+ const boundItemCount = Math.max(Math.min(itemCount, NetworkPanelMoreFilters.MaxValue), 0);
+ InspectorFrontendHostInstance.recordEnumeratedHistogram(
+ EnumeratedHistogram.NetworkPanelMoreFiltersNumberOfSelectedChanged, boundItemCount,
+ NetworkPanelMoreFilters.MaxValue);
+ }
+
+ networkPanelMoreFiltersItemSelected(filterName: string): void {
+ const filter = NetworkPanelMoreFilters[filterName as keyof typeof NetworkPanelMoreFilters];
+ if (filter === undefined) {
+ return;
+ }
+ InspectorFrontendHostInstance.recordEnumeratedHistogram(
+ EnumeratedHistogram.NetworkPanelMoreFiltersItemSelected, filter, NetworkPanelMoreFilters.MaxValue);
+ }
}
/**
@@ -1209,6 +1225,19 @@
}
// TODO(crbug.com/1167717): Make this a const enum again
+/* eslint-disable @typescript-eslint/naming-convention */
+// eslint-disable-next-line rulesdir/const_enum
+export enum NetworkPanelMoreFilters {
+ 'Hide data URLs' = 0,
+ 'Hide extension URLs' = 1,
+ 'Blocked response cookies' = 2,
+ 'Blocked requests' = 3,
+ '3rd-party requests' = 4,
+ MaxValue = 5,
+}
+/* eslint-enable @typescript-eslint/naming-convention */
+
+// TODO(crbug.com/1167717): Make this a const enum again
// eslint-disable-next-line rulesdir/const_enum
export enum LinearMemoryInspectorRevealedFrom {
ContextMenu = 0,
diff --git a/front_end/panels/network/NetworkLogView.ts b/front_end/panels/network/NetworkLogView.ts
index 7e4eea0..4125e6d 100644
--- a/front_end/panels/network/NetworkLogView.ts
+++ b/front_end/panels/network/NetworkLogView.ts
@@ -2768,6 +2768,7 @@
private contextMenu?: UI.ContextMenu.ContextMenu;
private activeFiltersCount: HTMLElement;
private activeFiltersCountAdorner: Adorners.Adorner.Adorner;
+ private hasChanged = false;
constructor(filterChangedCallback: () => void) {
super();
@@ -2806,20 +2807,37 @@
this.updateTooltip();
}
+ emitUMA(): void {
+ if (this.hasChanged) {
+ const selectedFilters = this.selectedFilters();
+ Host.userMetrics.networkPanelMoreFiltersNumberOfSelectedChanged(selectedFilters.length);
+ for (const selectedFilter of selectedFilters) {
+ Host.userMetrics.networkPanelMoreFiltersItemSelected(selectedFilter);
+ }
+ }
+ }
+
+ #onSettingChanged(): void {
+ this.hasChanged = true;
+ this.filterChangedCallback();
+ }
+
showMoreFiltersContextMenu(event: Common.EventTarget.EventTargetEvent<Event>): void {
const mouseEvent = event.data;
+ this.hasChanged = false;
- this.networkHideDataURLSetting.addChangeListener(this.filterChangedCallback.bind(this));
- this.networkHideChromeExtensionsSetting.addChangeListener(this.filterChangedCallback.bind(this));
- this.networkShowBlockedCookiesOnlySetting.addChangeListener(this.filterChangedCallback.bind(this));
- this.networkOnlyBlockedRequestsSetting.addChangeListener(this.filterChangedCallback.bind(this));
- this.networkOnlyThirdPartySetting.addChangeListener(this.filterChangedCallback.bind(this));
+ this.networkHideDataURLSetting.addChangeListener(this.#onSettingChanged.bind(this));
+ this.networkHideChromeExtensionsSetting.addChangeListener(this.#onSettingChanged.bind(this));
+ this.networkShowBlockedCookiesOnlySetting.addChangeListener(this.#onSettingChanged.bind(this));
+ this.networkOnlyBlockedRequestsSetting.addChangeListener(this.#onSettingChanged.bind(this));
+ this.networkOnlyThirdPartySetting.addChangeListener(this.#onSettingChanged.bind(this));
this.contextMenu = new UI.ContextMenu.ContextMenu(mouseEvent, {
useSoftMenu: true,
keepOpen: true,
x: this.dropDownButton.element.getBoundingClientRect().left,
y: this.dropDownButton.element.getBoundingClientRect().top +
(this.dropDownButton.element as HTMLElement).offsetHeight,
+ onSoftMenuClosed: this.emitUMA.bind(this),
});
this.contextMenu.defaultSection().appendCheckboxItem(