chrome-devtools-frontend
Version:
Chrome DevTools UI
879 lines (816 loc) • 29.3 kB
text/typescript
/*
* Copyright (C) 2011 Google Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Google Inc. nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
import {InspectorFrontendHostInstance} from './InspectorFrontendHost.js';
import {EnumeratedHistogram} from './InspectorFrontendHostAPI.js';
export class UserMetrics {
#panelChangedSinceLaunch: boolean;
#firedLaunchHistogram: boolean;
#launchPanelName: string;
constructor() {
this.#panelChangedSinceLaunch = false;
this.#firedLaunchHistogram = false;
this.#launchPanelName = '';
}
panelShown(panelName: string): void {
const code = PanelCodes[panelName] || 0;
const size = Object.keys(PanelCodes).length + 1;
InspectorFrontendHostInstance.recordEnumeratedHistogram(EnumeratedHistogram.PanelShown, code, size);
// Store that the user has changed the panel so we know launch histograms should not be fired.
this.#panelChangedSinceLaunch = true;
}
/**
* Fired when a panel is closed (regardless if it exists in the main panel or the drawer)
*/
panelClosed(panelName: string): void {
const code = PanelCodes[panelName] || 0;
const size = Object.keys(PanelCodes).length + 1;
InspectorFrontendHostInstance.recordEnumeratedHistogram(EnumeratedHistogram.PanelClosed, code, size);
// Store that the user has changed the panel so we know launch histograms should not be fired.
this.#panelChangedSinceLaunch = true;
}
sidebarPaneShown(sidebarPaneName: string): void {
const code = SidebarPaneCodes[sidebarPaneName] || 0;
const size = Object.keys(SidebarPaneCodes).length + 1;
InspectorFrontendHostInstance.recordEnumeratedHistogram(EnumeratedHistogram.SidebarPaneShown, code, size);
}
settingsPanelShown(settingsViewId: string): void {
this.panelShown('settings-' + settingsViewId);
}
actionTaken(action: Action): void {
const size = Object.keys(Action).length + 1;
InspectorFrontendHostInstance.recordEnumeratedHistogram(EnumeratedHistogram.ActionTaken, action, size);
}
panelLoaded(panelName: string, histogramName: string): void {
if (this.#firedLaunchHistogram || panelName !== this.#launchPanelName) {
return;
}
this.#firedLaunchHistogram = true;
// Use rAF and setTimeout to ensure the marker is fired after layout and rendering.
// This will give the most accurate representation of the tool being ready for a user.
requestAnimationFrame(() => {
setTimeout(() => {
// Mark the load time so that we can pinpoint it more easily in a trace.
performance.mark(histogramName);
// If the user has switched panel before we finished loading, ignore the histogram,
// since the launch timings will have been affected and are no longer valid.
if (this.#panelChangedSinceLaunch) {
return;
}
// This fires the event for the appropriate launch histogram.
// The duration is measured as the time elapsed since the time origin of the document.
InspectorFrontendHostInstance.recordPerformanceHistogram(histogramName, performance.now());
}, 0);
});
}
setLaunchPanel(panelName: string|null): void {
this.#launchPanelName = (panelName as string);
}
keybindSetSettingChanged(keybindSet: string): void {
const size = Object.keys(KeybindSetSettings).length + 1;
const value = KeybindSetSettings[keybindSet] || 0;
InspectorFrontendHostInstance.recordEnumeratedHistogram(EnumeratedHistogram.KeybindSetSettingChanged, value, size);
}
keyboardShortcutFired(actionId: string): void {
const size = Object.keys(KeyboardShortcutAction).length + 1;
const action = KeyboardShortcutAction[actionId] || KeyboardShortcutAction.OtherShortcut;
InspectorFrontendHostInstance.recordEnumeratedHistogram(EnumeratedHistogram.KeyboardShortcutFired, action, size);
}
issuesPanelOpenedFrom(issueOpener: IssueOpener): void {
const size = Object.keys(IssueOpener).length + 1;
InspectorFrontendHostInstance.recordEnumeratedHistogram(
EnumeratedHistogram.IssuesPanelOpenedFrom, issueOpener, size);
}
issuesPanelIssueExpanded(issueExpandedCategory: string|undefined): void {
if (issueExpandedCategory === undefined) {
return;
}
const size = Object.keys(IssueExpanded).length + 1;
const issueExpanded = IssueExpanded[issueExpandedCategory];
if (issueExpanded === undefined) {
return;
}
InspectorFrontendHostInstance.recordEnumeratedHistogram(
EnumeratedHistogram.IssuesPanelIssueExpanded, issueExpanded, size);
}
issuesPanelResourceOpened(issueCategory: string, type: string): void {
const size = Object.keys(IssueResourceOpened).length + 1;
const key = issueCategory + type;
const value = IssueResourceOpened[key];
if (value === undefined) {
return;
}
InspectorFrontendHostInstance.recordEnumeratedHistogram(EnumeratedHistogram.IssuesPanelResourceOpened, value, size);
}
issueCreated(code: string): void {
const size = Object.keys(IssueCreated).length + 1;
const issueCreated = IssueCreated[code];
if (issueCreated === undefined) {
return;
}
InspectorFrontendHostInstance.recordEnumeratedHistogram(EnumeratedHistogram.IssueCreated, issueCreated, size);
}
dualScreenDeviceEmulated(emulationAction: DualScreenDeviceEmulated): void {
const size = Object.keys(DualScreenDeviceEmulated).length + 1;
InspectorFrontendHostInstance.recordEnumeratedHistogram(
EnumeratedHistogram.DualScreenDeviceEmulated, emulationAction, size);
}
experimentEnabledAtLaunch(experimentId: string): void {
const size = DevtoolsExperiments['__lastValidEnumPosition'] + 1;
const experiment = DevtoolsExperiments[experimentId];
if (experiment === undefined) {
return;
}
InspectorFrontendHostInstance.recordEnumeratedHistogram(
EnumeratedHistogram.ExperimentEnabledAtLaunch, experiment, size);
}
experimentChanged(experimentId: string, isEnabled: boolean): void {
const size = DevtoolsExperiments['__lastValidEnumPosition'] + 1;
const experiment = DevtoolsExperiments[experimentId];
if (experiment === undefined) {
return;
}
const actionName = isEnabled ? EnumeratedHistogram.ExperimentEnabled : EnumeratedHistogram.ExperimentDisabled;
InspectorFrontendHostInstance.recordEnumeratedHistogram(actionName, experiment, size);
}
developerResourceLoaded(developerResourceLoaded: DeveloperResourceLoaded): void {
const size = Object.keys(DeveloperResourceLoaded).length + 1;
if (developerResourceLoaded >= size) {
return;
}
InspectorFrontendHostInstance.recordEnumeratedHistogram(
EnumeratedHistogram.DeveloperResourceLoaded, developerResourceLoaded, size);
}
developerResourceScheme(developerResourceScheme: DeveloperResourceScheme): void {
const size = Object.keys(DeveloperResourceScheme).length + 1;
if (developerResourceScheme >= size) {
return;
}
InspectorFrontendHostInstance.recordEnumeratedHistogram(
EnumeratedHistogram.DeveloperResourceScheme, developerResourceScheme, size);
}
linearMemoryInspectorRevealedFrom(linearMemoryInspectorRevealedFrom: LinearMemoryInspectorRevealedFrom): void {
const size = Object.keys(LinearMemoryInspectorRevealedFrom).length + 1;
if (linearMemoryInspectorRevealedFrom >= size) {
return;
}
InspectorFrontendHostInstance.recordEnumeratedHistogram(
EnumeratedHistogram.LinearMemoryInspectorRevealedFrom, linearMemoryInspectorRevealedFrom, size);
}
linearMemoryInspectorTarget(linearMemoryInspectorTarget: LinearMemoryInspectorTarget): void {
const size = Object.keys(LinearMemoryInspectorTarget).length + 1;
if (linearMemoryInspectorTarget >= size) {
return;
}
InspectorFrontendHostInstance.recordEnumeratedHistogram(
EnumeratedHistogram.LinearMemoryInspectorTarget, linearMemoryInspectorTarget, size);
}
language(language: Intl.UnicodeBCP47LocaleIdentifier): void {
const size = Object.keys(Language).length + 1;
const languageCode = Language[language];
if (languageCode === undefined) {
return;
}
InspectorFrontendHostInstance.recordEnumeratedHistogram(EnumeratedHistogram.Language, languageCode, size);
}
showCorsErrorsSettingChanged(show: boolean): void {
InspectorFrontendHostInstance.recordEnumeratedHistogram(
EnumeratedHistogram.ConsoleShowsCorsErrors, Number(show), 2);
}
syncSetting(devtoolsSyncSettingEnabled: boolean): void {
const size = Object.keys(SyncSetting).length + 1;
InspectorFrontendHostInstance.getSyncInformation(syncInfo => {
let settingValue = SyncSetting.ChromeSyncDisabled;
if (syncInfo.isSyncActive && !syncInfo.arePreferencesSynced) {
settingValue = SyncSetting.ChromeSyncSettingsDisabled;
} else if (syncInfo.isSyncActive && syncInfo.arePreferencesSynced) {
settingValue = devtoolsSyncSettingEnabled ? SyncSetting.DevToolsSyncSettingEnabled :
SyncSetting.DevToolsSyncSettingDisabled;
}
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.
// Do not change the values below, additional actions are needed on the Chromium side
// in order to add more codes.
// TODO(crbug.com/1167717): Make this a const enum again
// eslint-disable-next-line rulesdir/const_enum
export enum Action {
WindowDocked = 1,
WindowUndocked = 2,
ScriptsBreakpointSet = 3,
TimelineStarted = 4,
ProfilesCPUProfileTaken = 5,
ProfilesHeapProfileTaken = 6,
// Keep key around because length of object is important. See Host.UserMetrics.actionTaken.
'LegacyAuditsStarted-deprecated' = 7,
ConsoleEvaluated = 8,
FileSavedInWorkspace = 9,
DeviceModeEnabled = 10,
AnimationsPlaybackRateChanged = 11,
RevisionApplied = 12,
FileSystemDirectoryContentReceived = 13,
StyleRuleEdited = 14,
CommandEvaluatedInConsolePanel = 15,
DOMPropertiesExpanded = 16,
ResizedViewInResponsiveMode = 17,
TimelinePageReloadStarted = 18,
ConnectToNodeJSFromFrontend = 19,
ConnectToNodeJSDirectly = 20,
CpuThrottlingEnabled = 21,
CpuProfileNodeFocused = 22,
CpuProfileNodeExcluded = 23,
SelectFileFromFilePicker = 24,
SelectCommandFromCommandMenu = 25,
ChangeInspectedNodeInElementsPanel = 26,
StyleRuleCopied = 27,
CoverageStarted = 28,
LighthouseStarted = 29,
LighthouseFinished = 30,
ShowedThirdPartyBadges = 31,
LighthouseViewTrace = 32,
FilmStripStartedRecording = 33,
CoverageReportFiltered = 34,
CoverageStartedPerBlock = 35,
'SettingsOpenedFromGear-deprecated' = 36,
'SettingsOpenedFromMenu-deprecated' = 37,
'SettingsOpenedFromCommandMenu-deprecated' = 38,
TabMovedToDrawer = 39,
TabMovedToMainPanel = 40,
CaptureCssOverviewClicked = 41,
VirtualAuthenticatorEnvironmentEnabled = 42,
SourceOrderViewActivated = 43,
UserShortcutAdded = 44,
ShortcutRemoved = 45,
ShortcutModified = 46,
CustomPropertyLinkClicked = 47,
CustomPropertyEdited = 48,
ServiceWorkerNetworkRequestClicked = 49,
ServiceWorkerNetworkRequestClosedQuickly = 50,
NetworkPanelServiceWorkerRespondWith = 51,
NetworkPanelCopyValue = 52,
ConsoleSidebarOpened = 53,
PerfPanelTraceImported = 54,
PerfPanelTraceExported = 55,
}
export const ContrastThresholds: {
[x: string]: number,
} = {
aa: 0,
aaa: 1,
};
export const PanelCodes: {
[x: string]: number,
} = {
elements: 1,
resources: 2,
network: 3,
sources: 4,
timeline: 5,
heap_profiler: 6,
// Keep key around because length of object is important. See Host.UserMetrics.panelShown.
'legacy-audits-deprecated': 7,
console: 8,
layers: 9,
'console-view': 10,
'animations': 11,
'network.config': 12,
'rendering': 13,
'sensors': 14,
'sources.search': 15,
security: 16,
js_profiler: 17,
lighthouse: 18,
'coverage': 19,
'protocol-monitor': 20,
'remote-devices': 21,
'web-audio': 22,
'changes.changes': 23,
'performance.monitor': 24,
'release-note': 25,
'live_heap_profile': 26,
'sources.quick': 27,
'network.blocked-urls': 28,
'settings-preferences': 29,
'settings-workspace': 30,
'settings-experiments': 31,
'settings-blackbox': 32,
'settings-devices': 33,
'settings-throttling-conditions': 34,
'settings-emulation-locations': 35,
'settings-shortcuts': 36,
'issues-pane': 37,
'settings-keybinds': 38,
'cssoverview': 39,
'chrome_recorder': 40,
};
export const SidebarPaneCodes: {
[x: string]: number,
} = {
'OtherSidebarPane': 0,
'Styles': 1,
'Computed': 2,
'elements.layout': 3,
'elements.eventListeners': 4,
'elements.domBreakpoints': 5,
'elements.domProperties': 6,
'accessibility.view': 7,
};
export const KeybindSetSettings: {
[x: string]: number,
} = {
'devToolsDefault': 0,
'vsCode': 1,
};
export const KeyboardShortcutAction: {
[x: string]: number,
} = {
OtherShortcut: 0,
'commandMenu.show': 1,
'console.clear': 2,
'console.show': 3,
'debugger.step': 4,
'debugger.step-into': 5,
'debugger.step-out': 6,
'debugger.step-over': 7,
'debugger.toggle-breakpoint': 8,
'debugger.toggle-breakpoint-enabled': 9,
'debugger.toggle-pause': 10,
'elements.edit-as-html': 11,
'elements.hide-element': 12,
'elements.redo': 13,
'elements.toggle-element-search': 14,
'elements.undo': 15,
'main.search-in-panel.find': 16,
'main.toggle-drawer': 17,
'network.hide-request-details': 18,
'network.search': 19,
'network.toggle-recording': 20,
'quickOpen.show': 21,
'settings.show': 22,
'sources.search': 23,
'background-service.toggle-recording': 24,
'components.collect-garbage': 25,
'console.clear.history': 26,
'console.create-pin': 27,
'coverage.start-with-reload': 28,
'coverage.toggle-recording': 29,
'debugger.breakpoint-input-window': 30,
'debugger.evaluate-selection': 31,
'debugger.next-call-frame': 32,
'debugger.previous-call-frame': 33,
'debugger.run-snippet': 34,
'debugger.toggle-breakpoints-active': 35,
'elements.capture-area-screenshot': 36,
'emulation.capture-full-height-screenshot': 37,
'emulation.capture-node-screenshot': 38,
'emulation.capture-screenshot': 39,
'emulation.show-sensors': 40,
'emulation.toggle-device-mode': 41,
'help.release-notes': 42,
'help.report-issue': 43,
'input.start-replaying': 44,
'input.toggle-pause': 45,
'input.toggle-recording': 46,
'inspector_main.focus-debuggee': 47,
'inspector_main.hard-reload': 48,
'inspector_main.reload': 49,
'live-heap-profile.start-with-reload': 50,
'live-heap-profile.toggle-recording': 51,
'main.debug-reload': 52,
'main.next-tab': 53,
'main.previous-tab': 54,
'main.search-in-panel.cancel': 55,
'main.search-in-panel.find-next': 56,
'main.search-in-panel.find-previous': 57,
'main.toggle-dock': 58,
'main.zoom-in': 59,
'main.zoom-out': 60,
'main.zoom-reset': 61,
'network-conditions.network-low-end-mobile': 62,
'network-conditions.network-mid-tier-mobile': 63,
'network-conditions.network-offline': 64,
'network-conditions.network-online': 65,
'profiler.heap-toggle-recording': 66,
'profiler.js-toggle-recording': 67,
'resources.clear': 68,
'settings.documentation': 69,
'settings.shortcuts': 70,
'sources.add-folder-to-workspace': 71,
'sources.add-to-watch': 72,
'sources.close-all': 73,
'sources.close-editor-tab': 74,
'sources.create-snippet': 75,
'sources.go-to-line': 76,
'sources.go-to-member': 77,
'sources.jump-to-next-location': 78,
'sources.jump-to-previous-location': 79,
'sources.rename': 80,
'sources.save': 81,
'sources.save-all': 82,
'sources.switch-file': 83,
'timeline.jump-to-next-frame': 84,
'timeline.jump-to-previous-frame': 85,
'timeline.load-from-file': 86,
'timeline.next-recording': 87,
'timeline.previous-recording': 88,
'timeline.record-reload': 89,
'timeline.save-to-file': 90,
'timeline.show-history': 91,
'timeline.toggle-recording': 92,
'sources.increment-css': 93,
'sources.increment-css-by-ten': 94,
'sources.decrement-css': 95,
'sources.decrement-css-by-ten': 96,
'layers.reset-view': 97,
'layers.pan-mode': 98,
'layers.rotate-mode': 99,
'layers.zoom-in': 100,
'layers.zoom-out': 101,
'layers.up': 102,
'layers.down': 103,
'layers.left': 104,
'layers.right': 105,
'help.report-translation-issue': 106,
};
// TODO(crbug.com/1167717): Make this a const enum again
// eslint-disable-next-line rulesdir/const_enum
export enum IssueOpener {
ConsoleInfoBar = 0,
LearnMoreLinkCOEP = 1,
StatusBarIssuesCounter = 2,
HamburgerMenu = 3,
Adorner = 4,
CommandMenu = 5,
}
// TODO(crbug.com/1167717): Make this a const enum again
// eslint-disable-next-line rulesdir/const_enum
export enum DualScreenDeviceEmulated {
DualScreenDeviceSelected = 0,
SpanButtonClicked = 1,
PlatformSupportUsed = 2, // user starts to use platform dual screen support feature.
}
/**
* This list should contain the currently active Devtools Experiments.
* Therefore, it is possible that the id's will no longer be continuous
* as experiemnts are removed.
* When adding a new experiemnt:
* 1. Add an entry to the bottom of the list before '__lastValidEnumPosition'
* 2. Set the value of the new entry and '__lastValidEnumPosition' to
* __lastValidEnumPosition + 1
* When removing an experiment, simply delete the line from the enum.
*/
export const DevtoolsExperiments: {
[x: string]: number,
} = {
'applyCustomStylesheet': 0,
'captureNodeCreationStacks': 1,
'sourcesPrettyPrint': 2,
'backgroundServices': 3,
'backgroundServicesNotifications': 4,
'backgroundServicesPaymentHandler': 5,
'backgroundServicesPushMessaging': 6,
'inputEventsOnTimelineOverview': 10,
'liveHeapProfile': 11,
'protocolMonitor': 13,
'developerResourcesView': 15,
'recordCoverageWithPerformanceTracing': 16,
'samplingHeapProfilerTimeline': 17,
'showOptionToNotTreatGlobalObjectsAsRoots': 18,
'sourceOrderViewer': 20,
'webauthnPane': 22,
'timelineEventInitiators': 24,
'timelineInvalidationTracking': 26,
'timelineShowAllEvents': 27,
'timelineV8RuntimeCallStats': 28,
'timelineWebGL': 29,
'timelineReplayEvent': 30,
'wasmDWARFDebugging': 31,
'dualScreenSupport': 32,
'keyboardShortcutEditor': 35,
'APCA': 39,
'cspViolationsView': 40,
'fontEditor': 41,
'fullAccessibilityTree': 42,
'ignoreListJSFramesOnTimeline': 43,
'contrastIssues': 44,
'experimentalCookieFeatures': 45,
'hideIssuesFeature': 48,
'reportingApiDebugging': 49,
'syncSettings': 50,
'groupAndHideIssuesByKind': 51,
'cssTypeComponentLength': 52,
'preciseChanges': 53,
'__lastValidEnumPosition': 53,
};
export const IssueExpanded: {
[x: string]: number,
} = {
CrossOriginEmbedderPolicy: 0,
MixedContent: 1,
SameSiteCookie: 2,
HeavyAd: 3,
ContentSecurityPolicy: 4,
Other: 5,
};
export const IssueResourceOpened: {
[x: string]: number,
} = {
CrossOriginEmbedderPolicyRequest: 0,
CrossOriginEmbedderPolicyElement: 1,
MixedContentRequest: 2,
SameSiteCookieCookie: 3,
SameSiteCookieRequest: 4,
HeavyAdElement: 5,
ContentSecurityPolicyDirective: 6,
ContentSecurityPolicyElement: 7,
CrossOriginEmbedderPolicyLearnMore: 8,
MixedContentLearnMore: 9,
SameSiteCookieLearnMore: 10,
HeavyAdLearnMore: 11,
ContentSecurityPolicyLearnMore: 12,
};
export const IssueCreated: {
[x: string]: number,
} = {
MixedContentIssue: 0,
'ContentSecurityPolicyIssue::kInlineViolation': 1,
'ContentSecurityPolicyIssue::kEvalViolation': 2,
'ContentSecurityPolicyIssue::kURLViolation': 3,
'ContentSecurityPolicyIssue::kTrustedTypesSinkViolation': 4,
'ContentSecurityPolicyIssue::kTrustedTypesPolicyViolation': 5,
'HeavyAdIssue::NetworkTotalLimit': 6,
'HeavyAdIssue::CpuTotalLimit': 7,
'HeavyAdIssue::CpuPeakLimit': 8,
'CrossOriginEmbedderPolicyIssue::CoepFrameResourceNeedsCoepHeader': 9,
'CrossOriginEmbedderPolicyIssue::CoopSandboxedIFrameCannotNavigateToCoopPage': 10,
'CrossOriginEmbedderPolicyIssue::CorpNotSameOrigin': 11,
'CrossOriginEmbedderPolicyIssue::CorpNotSameOriginAfterDefaultedToSameOriginByCoep': 12,
'CrossOriginEmbedderPolicyIssue::CorpNotSameSite': 13,
'SameSiteCookieIssue::ExcludeSameSiteNoneInsecure::ReadCookie': 14,
'SameSiteCookieIssue::ExcludeSameSiteNoneInsecure::SetCookie': 15,
'SameSiteCookieIssue::WarnSameSiteNoneInsecure::ReadCookie': 16,
'SameSiteCookieIssue::WarnSameSiteNoneInsecure::SetCookie': 17,
'SameSiteCookieIssue::WarnSameSiteStrictLaxDowngradeStrict::Secure': 18,
'SameSiteCookieIssue::WarnSameSiteStrictLaxDowngradeStrict::Insecure': 19,
'SameSiteCookieIssue::WarnCrossDowngrade::ReadCookie::Secure': 20,
'SameSiteCookieIssue::WarnCrossDowngrade::ReadCookie::Insecure': 21,
'SameSiteCookieIssue::WarnCrossDowngrade::SetCookie::Secure': 22,
'SameSiteCookieIssue::WarnCrossDowngrade::SetCookie::Insecure': 23,
'SameSiteCookieIssue::ExcludeNavigationContextDowngrade::Secure': 24,
'SameSiteCookieIssue::ExcludeNavigationContextDowngrade::Insecure': 25,
'SameSiteCookieIssue::ExcludeContextDowngrade::ReadCookie::Secure': 26,
'SameSiteCookieIssue::ExcludeContextDowngrade::ReadCookie::Insecure': 27,
'SameSiteCookieIssue::ExcludeContextDowngrade::SetCookie::Secure': 28,
'SameSiteCookieIssue::ExcludeContextDowngrade::SetCookie::Insecure': 29,
'SameSiteCookieIssue::ExcludeSameSiteUnspecifiedTreatedAsLax::ReadCookie': 30,
'SameSiteCookieIssue::ExcludeSameSiteUnspecifiedTreatedAsLax::SetCookie': 31,
'SameSiteCookieIssue::WarnSameSiteUnspecifiedLaxAllowUnsafe::ReadCookie': 32,
'SameSiteCookieIssue::WarnSameSiteUnspecifiedLaxAllowUnsafe::SetCookie': 33,
'SameSiteCookieIssue::WarnSameSiteUnspecifiedCrossSiteContext::ReadCookie': 34,
'SameSiteCookieIssue::WarnSameSiteUnspecifiedCrossSiteContext::SetCookie': 35,
'SharedArrayBufferIssue::TransferIssue': 36,
'SharedArrayBufferIssue::CreationIssue': 37,
'TrustedWebActivityIssue::kHttpError': 38,
'TrustedWebActivityIssue::kUnavailableOffline': 39,
'TrustedWebActivityIssue::kDigitalAssetLinks': 40,
LowTextContrastIssue: 41,
'CorsIssue::InsecurePrivateNetwork': 42,
'CorsIssue::InsecurePrivateNetworkPreflight': 43,
'CorsIssue::InvalidHeaders': 44,
'CorsIssue::WildcardOriginWithCredentials': 45,
'CorsIssue::PreflightResponseInvalid': 46,
'CorsIssue::OriginMismatch': 47,
'CorsIssue::AllowCredentialsRequired': 48,
'CorsIssue::MethodDisallowedByPreflightResponse': 49,
'CorsIssue::HeaderDisallowedByPreflightResponse': 50,
'CorsIssue::RedirectContainsCredentials': 51,
'CorsIssue::DisallowedByMode': 52,
'CorsIssue::CorsDisabledScheme': 53,
'CorsIssue::PreflightMissingAllowExternal': 54,
'CorsIssue::PreflightInvalidAllowExternal': 55,
'CorsIssue::InvalidResponse': 56,
'CorsIssue::NoCorsRedirectModeNotFollow': 57,
'QuirksModeIssue::QuirksMode': 58,
'QuirksModeIssue::LimitedQuirksMode': 59,
DeprecationIssue: 60,
};
// TODO(crbug.com/1167717): Make this a const enum again
// eslint-disable-next-line rulesdir/const_enum
export enum DeveloperResourceLoaded {
LoadThroughPageViaTarget = 0,
LoadThroughPageViaFrame = 1,
LoadThroughPageFailure = 2,
LoadThroughPageFallback = 3,
FallbackAfterFailure = 4,
FallbackPerOverride = 5,
FallbackPerProtocol = 6,
FallbackFailure = 7,
}
// TODO(crbug.com/1167717): Make this a const enum again
// eslint-disable-next-line rulesdir/const_enum
export enum DeveloperResourceScheme {
SchemeOther = 0,
SchemeUnknown = 1,
SchemeHttp = 2,
SchemeHttps = 3,
SchemeHttpLocalhost = 4,
SchemeHttpsLocalhost = 5,
SchemeData = 6,
SchemeFile = 7,
SchemeBlob = 8,
}
// TODO(crbug.com/1167717): Make this a const enum again
// eslint-disable-next-line rulesdir/const_enum
export enum LinearMemoryInspectorRevealedFrom {
ContextMenu = 0,
MemoryIcon = 1,
}
// TODO(crbug.com/1167717): Make this a const enum again
// eslint-disable-next-line rulesdir/const_enum
export enum LinearMemoryInspectorTarget {
DWARFInspectableAddress = 0,
ArrayBuffer = 1,
DataView = 2,
TypedArray = 3,
WebAssemblyMemory = 4,
}
export const Language: Record<string, number> = {
'af': 1,
'am': 2,
'ar': 3,
'as': 4,
'az': 5,
'be': 6,
'bg': 7,
'bn': 8,
'bs': 9,
'ca': 10,
'cs': 11,
'cy': 12,
'da': 13,
'de': 14,
'el': 15,
'en-GB': 16,
'en-US': 17,
'es-419': 18,
'es': 19,
'et': 20,
'eu': 21,
'fa': 22,
'fi': 23,
'fil': 24,
'fr-CA': 25,
'fr': 26,
'gl': 27,
'gu': 28,
'he': 29,
'hi': 30,
'hr': 31,
'hu': 32,
'hy': 33,
'id': 34,
'is': 35,
'it': 36,
'ja': 37,
'ka': 38,
'kk': 39,
'km': 40,
'kn': 41,
'ko': 42,
'ky': 43,
'lo': 44,
'lt': 45,
'lv': 46,
'mk': 47,
'ml': 48,
'mn': 49,
'mr': 50,
'ms': 51,
'my': 52,
'ne': 53,
'nl': 54,
'no': 55,
'or': 56,
'pa': 57,
'pl': 58,
'pt-PT': 59,
'pt': 60,
'ro': 61,
'ru': 62,
'si': 63,
'sk': 64,
'sl': 65,
'sq': 66,
'sr-Latn': 67,
'sr': 68,
'sv': 69,
'sw': 70,
'ta': 71,
'te': 72,
'th': 73,
'tr': 74,
'uk': 75,
'ur': 76,
'uz': 77,
'vi': 78,
'zh': 79,
'zh-HK': 80,
'zh-TW': 81,
'zu': 82,
};
// TODO(crbug.com/1167717): Make this a const enum again
// eslint-disable-next-line rulesdir/const_enum
export enum SyncSetting {
ChromeSyncDisabled = 1,
ChromeSyncSettingsDisabled = 2,
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,
}