UNPKG

chrome-devtools-frontend

Version:
1,266 lines (1,181 loc) • 43.8 kB
/* * 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, isLaunching?: boolean): void { const code = PanelCodes[panelName as keyof typeof PanelCodes] || 0; InspectorFrontendHostInstance.recordEnumeratedHistogram(EnumeratedHistogram.PanelShown, code, PanelCodes.MAX_VALUE); InspectorFrontendHostInstance.recordUserMetricsAction('DevTools_PanelShown_' + panelName); // Store that the user has changed the panel so we know launch histograms should not be fired. if (!isLaunching) { this.#panelChangedSinceLaunch = true; } } settingsPanelShown(settingsViewId: string): void { this.panelShown('settings-' + settingsViewId); } sourcesPanelFileDebugged(mediaType?: string): void { const code = (mediaType && MediaTypes[mediaType as keyof typeof MediaTypes]) || MediaTypes.Unknown; InspectorFrontendHostInstance.recordEnumeratedHistogram( EnumeratedHistogram.SourcesPanelFileDebugged, code, MediaTypes.MAX_VALUE); } sourcesPanelFileOpened(mediaType?: string): void { const code = (mediaType && MediaTypes[mediaType as keyof typeof MediaTypes]) || MediaTypes.Unknown; InspectorFrontendHostInstance.recordEnumeratedHistogram( EnumeratedHistogram.SourcesPanelFileOpened, code, MediaTypes.MAX_VALUE); } networkPanelResponsePreviewOpened(mediaType: string): void { const code = (mediaType && MediaTypes[mediaType as keyof typeof MediaTypes]) || MediaTypes.Unknown; InspectorFrontendHostInstance.recordEnumeratedHistogram( EnumeratedHistogram.NetworkPanelResponsePreviewOpened, code, MediaTypes.MAX_VALUE); } actionTaken(action: Action): void { InspectorFrontendHostInstance.recordEnumeratedHistogram(EnumeratedHistogram.ActionTaken, action, Action.MAX_VALUE); } panelLoaded(panelName: string, histogramName: string): void { if (this.#firedLaunchHistogram || panelName !== this.#launchPanelName) { return; } this.#firedLaunchHistogram = true; // Use rAF and window.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(() => { window.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); } performanceTraceLoad(measure: PerformanceMeasure): void { InspectorFrontendHostInstance.recordPerformanceHistogram('DevTools.TraceLoad', measure.duration); } keybindSetSettingChanged(keybindSet: string): void { const value = KeybindSetSettings[keybindSet as keyof typeof KeybindSetSettings] || 0; InspectorFrontendHostInstance.recordEnumeratedHistogram( EnumeratedHistogram.KeybindSetSettingChanged, value, KeybindSetSettings.MAX_VALUE); } keyboardShortcutFired(actionId: string): void { const action = KeyboardShortcutAction[actionId as keyof typeof KeyboardShortcutAction] || KeyboardShortcutAction.OtherShortcut; InspectorFrontendHostInstance.recordEnumeratedHistogram( EnumeratedHistogram.KeyboardShortcutFired, action, KeyboardShortcutAction.MAX_VALUE); } issuesPanelOpenedFrom(issueOpener: IssueOpener): void { InspectorFrontendHostInstance.recordEnumeratedHistogram( EnumeratedHistogram.IssuesPanelOpenedFrom, issueOpener, IssueOpener.MAX_VALUE); } issuesPanelIssueExpanded(issueExpandedCategory: string|undefined): void { if (issueExpandedCategory === undefined) { return; } const issueExpanded = IssueExpanded[issueExpandedCategory as keyof typeof IssueExpanded]; if (issueExpanded === undefined) { return; } InspectorFrontendHostInstance.recordEnumeratedHistogram( EnumeratedHistogram.IssuesPanelIssueExpanded, issueExpanded, IssueExpanded.MAX_VALUE); } issuesPanelResourceOpened(issueCategory: string, type: string): void { const key = issueCategory + type; const value = IssueResourceOpened[key as keyof typeof IssueResourceOpened]; if (value === undefined) { return; } InspectorFrontendHostInstance.recordEnumeratedHistogram( EnumeratedHistogram.IssuesPanelResourceOpened, value, IssueResourceOpened.MAX_VALUE); } issueCreated(code: string): void { const issueCreated = IssueCreated[code as keyof typeof IssueCreated]; if (issueCreated === undefined) { return; } InspectorFrontendHostInstance.recordEnumeratedHistogram( EnumeratedHistogram.IssueCreated, issueCreated, IssueCreated.MAX_VALUE); } experimentEnabledAtLaunch(experimentId: string): void { const experiment = DevtoolsExperiments[experimentId as keyof typeof DevtoolsExperiments]; if (experiment === undefined) { return; } InspectorFrontendHostInstance.recordEnumeratedHistogram( EnumeratedHistogram.ExperimentEnabledAtLaunch, experiment, DevtoolsExperiments.MAX_VALUE); } navigationSettingAtFirstTimelineLoad(state: TimelineNavigationSetting): void { InspectorFrontendHostInstance.recordEnumeratedHistogram( EnumeratedHistogram.TimelineNavigationSettingState, state, TimelineNavigationSetting.MAX_VALUE); } experimentDisabledAtLaunch(experimentId: string): void { const experiment = DevtoolsExperiments[experimentId as keyof typeof DevtoolsExperiments]; if (experiment === undefined) { return; } InspectorFrontendHostInstance.recordEnumeratedHistogram( EnumeratedHistogram.ExperimentDisabledAtLaunch, experiment, DevtoolsExperiments.MAX_VALUE); } experimentChanged(experimentId: string, isEnabled: boolean): void { const experiment = DevtoolsExperiments[experimentId as keyof typeof DevtoolsExperiments]; if (experiment === undefined) { return; } const actionName = isEnabled ? EnumeratedHistogram.ExperimentEnabled : EnumeratedHistogram.ExperimentDisabled; InspectorFrontendHostInstance.recordEnumeratedHistogram(actionName, experiment, DevtoolsExperiments.MAX_VALUE); } developerResourceLoaded(developerResourceLoaded: DeveloperResourceLoaded): void { if (developerResourceLoaded >= DeveloperResourceLoaded.MAX_VALUE) { return; } InspectorFrontendHostInstance.recordEnumeratedHistogram( EnumeratedHistogram.DeveloperResourceLoaded, developerResourceLoaded, DeveloperResourceLoaded.MAX_VALUE); } developerResourceScheme(developerResourceScheme: DeveloperResourceScheme): void { if (developerResourceScheme >= DeveloperResourceScheme.MAX_VALUE) { return; } InspectorFrontendHostInstance.recordEnumeratedHistogram( EnumeratedHistogram.DeveloperResourceScheme, developerResourceScheme, DeveloperResourceScheme.MAX_VALUE); } language(language: Intl.UnicodeBCP47LocaleIdentifier): void { const languageCode = Language[language as keyof typeof Language]; if (languageCode === undefined) { return; } InspectorFrontendHostInstance.recordEnumeratedHistogram( EnumeratedHistogram.Language, languageCode, Language.MAX_VALUE); } syncSetting(devtoolsSyncSettingEnabled: boolean): void { InspectorFrontendHostInstance.getSyncInformation(syncInfo => { let settingValue = SyncSetting.CHROME_SYNC_DISABLED; if (syncInfo.isSyncActive && !syncInfo.arePreferencesSynced) { settingValue = SyncSetting.CHROME_SYNC_SETTINGS_DISABLED; } else if (syncInfo.isSyncActive && syncInfo.arePreferencesSynced) { settingValue = devtoolsSyncSettingEnabled ? SyncSetting.DEVTOOLS_SYNC_SETTING_ENABLED : SyncSetting.DEVTOOLS_SYNC_SETTING_DISABLED; } InspectorFrontendHostInstance.recordEnumeratedHistogram( EnumeratedHistogram.SyncSetting, settingValue, SyncSetting.MAX_VALUE); }); } recordingAssertion(value: RecordingAssertion): void { InspectorFrontendHostInstance.recordEnumeratedHistogram( EnumeratedHistogram.RecordingAssertion, value, RecordingAssertion.MAX_VALUE); } recordingToggled(value: RecordingToggled): void { InspectorFrontendHostInstance.recordEnumeratedHistogram( EnumeratedHistogram.RecordingToggled, value, RecordingToggled.MAX_VALUE); } recordingReplayFinished(value: RecordingReplayFinished): void { InspectorFrontendHostInstance.recordEnumeratedHistogram( EnumeratedHistogram.RecordingReplayFinished, value, RecordingReplayFinished.MAX_VALUE); } recordingReplaySpeed(value: RecordingReplaySpeed): void { InspectorFrontendHostInstance.recordEnumeratedHistogram( EnumeratedHistogram.RecordingReplaySpeed, value, RecordingReplaySpeed.MAX_VALUE); } recordingReplayStarted(value: RecordingReplayStarted): void { InspectorFrontendHostInstance.recordEnumeratedHistogram( EnumeratedHistogram.RecordingReplayStarted, value, RecordingReplayStarted.MAX_VALUE); } recordingEdited(value: RecordingEdited): void { InspectorFrontendHostInstance.recordEnumeratedHistogram( EnumeratedHistogram.RecordingEdited, value, RecordingEdited.MAX_VALUE); } recordingExported(value: RecordingExported): void { InspectorFrontendHostInstance.recordEnumeratedHistogram( EnumeratedHistogram.RecordingExported, value, RecordingExported.MAX_VALUE); } recordingCodeToggled(value: RecordingCodeToggled): void { InspectorFrontendHostInstance.recordEnumeratedHistogram( EnumeratedHistogram.RecordingCodeToggled, value, RecordingCodeToggled.MAX_VALUE); } recordingCopiedToClipboard(value: RecordingCopiedToClipboard): void { InspectorFrontendHostInstance.recordEnumeratedHistogram( EnumeratedHistogram.RecordingCopiedToClipboard, value, RecordingCopiedToClipboard.MAX_VALUE); } cssHintShown(type: CSSHintType): void { InspectorFrontendHostInstance.recordEnumeratedHistogram( EnumeratedHistogram.CSSHintShown, type, CSSHintType.MAX_VALUE); } lighthouseModeRun(type: LighthouseModeRun): void { InspectorFrontendHostInstance.recordEnumeratedHistogram( EnumeratedHistogram.LighthouseModeRun, type, LighthouseModeRun.MAX_VALUE); } lighthouseCategoryUsed(type: LighthouseCategoryUsed): void { InspectorFrontendHostInstance.recordEnumeratedHistogram( EnumeratedHistogram.LighthouseCategoryUsed, type, LighthouseCategoryUsed.MAX_VALUE); } swatchActivated(swatch: SwatchType): void { InspectorFrontendHostInstance.recordEnumeratedHistogram( EnumeratedHistogram.SwatchActivated, swatch, SwatchType.MAX_VALUE); } animationPlaybackRateChanged(playbackRate: AnimationsPlaybackRate): void { InspectorFrontendHostInstance.recordEnumeratedHistogram( EnumeratedHistogram.AnimationPlaybackRateChanged, playbackRate, AnimationsPlaybackRate.MAX_VALUE); } workspacesPopulated(wallClockTimeInMilliseconds: number): void { InspectorFrontendHostInstance.recordPerformanceHistogram( 'DevTools.Workspaces.PopulateWallClocktime', wallClockTimeInMilliseconds); } visualLoggingProcessingDone(timeInMilliseconds: number): void { InspectorFrontendHostInstance.recordPerformanceHistogram( 'DevTools.VisualLogging.ProcessingTime', timeInMilliseconds); } freestylerQueryLength(numberOfCharacters: number): void { InspectorFrontendHostInstance.recordCountHistogram( 'DevTools.Freestyler.QueryLength', numberOfCharacters, 0, 100_000, 100); } freestylerEvalResponseSize(bytes: number): void { InspectorFrontendHostInstance.recordCountHistogram('DevTools.Freestyler.EvalResponseSize', bytes, 0, 100_000, 100); } performanceAINetworkSummaryResponseSize(bytes: number): void { InspectorFrontendHostInstance.recordCountHistogram( 'DevTools.PerformanceAI.NetworkSummaryResponseSize', bytes, 0, 100_000, 100); } } /** * The numeric enum values are not necessarily continuous! It is possible that * values have been removed, which results in gaps in the sequence of values. * When adding a new value: * 1. Add an entry to the bottom of the enum before 'MAX_VALUE'. * 2. Set the value of the new entry to the current value of 'MAX_VALUE'. * 2. Increment the value of 'MAX_VALUE' by 1. * When removing a value which is no longer needed: * 1. Delete the line with the unneeded value * 2. Do not update any 'MAX_VALUE' or any other value. */ // 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. export enum Action { /* eslint-disable @typescript-eslint/naming-convention */ WindowDocked = 1, WindowUndocked = 2, ScriptsBreakpointSet = 3, TimelineStarted = 4, ProfilesCPUProfileTaken = 5, ProfilesHeapProfileTaken = 6, 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, StackFrameRestarted = 56, CaptureTestProtocolClicked = 57, BreakpointRemovedFromRemoveButton = 58, BreakpointGroupExpandedStateChanged = 59, HeaderOverrideFileCreated = 60, HeaderOverrideEnableEditingClicked = 61, HeaderOverrideHeaderAdded = 62, HeaderOverrideHeaderEdited = 63, HeaderOverrideHeaderRemoved = 64, HeaderOverrideHeadersFileEdited = 65, PersistenceNetworkOverridesEnabled = 66, PersistenceNetworkOverridesDisabled = 67, BreakpointRemovedFromContextMenu = 68, BreakpointsInFileRemovedFromRemoveButton = 69, BreakpointsInFileRemovedFromContextMenu = 70, BreakpointsInFileCheckboxToggled = 71, BreakpointsInFileEnabledDisabledFromContextMenu = 72, BreakpointConditionEditedFromSidebar = 73, WorkspaceTabAddFolder = 74, WorkspaceTabRemoveFolder = 75, OverrideTabAddFolder = 76, OverrideTabRemoveFolder = 77, WorkspaceSourceSelected = 78, OverridesSourceSelected = 79, StyleSheetInitiatorLinkClicked = 80, BreakpointRemovedFromGutterContextMenu = 81, BreakpointRemovedFromGutterToggle = 82, StylePropertyInsideKeyframeEdited = 83, OverrideContentFromSourcesContextMenu = 84, OverrideContentFromNetworkContextMenu = 85, OverrideScript = 86, OverrideStyleSheet = 87, OverrideDocument = 88, OverrideFetchXHR = 89, OverrideImage = 90, OverrideFont = 91, OverrideContentContextMenuSetup = 92, OverrideContentContextMenuAbandonSetup = 93, OverrideContentContextMenuActivateDisabled = 94, OverrideContentContextMenuOpenExistingFile = 95, OverrideContentContextMenuSaveNewFile = 96, ShowAllOverridesFromSourcesContextMenu = 97, ShowAllOverridesFromNetworkContextMenu = 98, AnimationGroupsCleared = 99, AnimationsPaused = 100, AnimationsResumed = 101, AnimatedNodeDescriptionClicked = 102, AnimationGroupScrubbed = 103, AnimationGroupReplayed = 104, OverrideTabDeleteFolderContextMenu = 105, WorkspaceDropFolder = 107, WorkspaceSelectFolder = 108, OverrideContentContextMenuSourceMappedWarning = 109, OverrideContentContextMenuRedirectToDeployed = 110, NewStyleRuleAdded = 111, TraceExpanded = 112, InsightConsoleMessageShown = 113, InsightRequestedViaContextMenu = 114, InsightRequestedViaHoverButton = 115, InsightRatedPositive = 117, InsightRatedNegative = 118, InsightClosed = 119, InsightErrored = 120, InsightHoverButtonShown = 121, SelfXssWarningConsoleMessageShown = 122, SelfXssWarningDialogShown = 123, SelfXssAllowPastingInConsole = 124, SelfXssAllowPastingInDialog = 125, ToggleEmulateFocusedPageFromStylesPaneOn = 126, ToggleEmulateFocusedPageFromStylesPaneOff = 127, ToggleEmulateFocusedPageFromRenderingTab = 128, ToggleEmulateFocusedPageFromCommandMenu = 129, InsightGenerated = 130, InsightErroredApi = 131, InsightErroredMarkdown = 132, ToggleShowWebVitals = 133, InsightErroredPermissionDenied = 134, InsightErroredCannotSend = 135, InsightErroredRequestFailed = 136, InsightErroredCannotParseChunk = 137, InsightErroredUnknownChunk = 138, InsightErroredOther = 139, AutofillReceived = 140, AutofillReceivedAndTabAutoOpened = 141, AnimationGroupSelected = 142, ScrollDrivenAnimationGroupSelected = 143, ScrollDrivenAnimationGroupScrubbed = 144, AiAssistanceOpenedFromElementsPanel = 145, AiAssistanceOpenedFromStylesTab = 146, ConsoleFilterByContext = 147, ConsoleFilterBySource = 148, ConsoleFilterByUrl = 149, InsightConsentReminderShown = 150, InsightConsentReminderCanceled = 151, InsightConsentReminderConfirmed = 152, InsightsOnboardingShown = 153, InsightsOnboardingCanceledOnPage1 = 154, InsightsOnboardingCanceledOnPage2 = 155, InsightsOnboardingConfirmed = 156, InsightsOnboardingNextPage = 157, InsightsOnboardingPrevPage = 158, InsightsOnboardingFeatureDisabled = 159, InsightsOptInTeaserShown = 160, InsightsOptInTeaserSettingsLinkClicked = 161, InsightsOptInTeaserConfirmedInSettings = 162, InsightsReminderTeaserShown = 163, InsightsReminderTeaserConfirmed = 164, InsightsReminderTeaserCanceled = 165, InsightsReminderTeaserSettingsLinkClicked = 166, InsightsReminderTeaserAbortedInSettings = 167, GeneratingInsightWithoutDisclaimer = 168, AiAssistanceOpenedFromElementsPanelFloatingButton = 169, AiAssistanceOpenedFromNetworkPanel = 170, AiAssistanceOpenedFromSourcesPanel = 171, AiAssistanceOpenedFromSourcesPanelFloatingButton = 172, AiAssistanceOpenedFromPerformancePanel = 173, AiAssistanceOpenedFromNetworkPanelFloatingButton = 174, AiAssistancePanelOpened = 175, AiAssistanceQuerySubmitted = 176, AiAssistanceAnswerReceived = 177, AiAssistanceDynamicSuggestionClicked = 178, AiAssistanceSideEffectConfirmed = 179, AiAssistanceSideEffectRejected = 180, AiAssistanceError = 181, AiAssistanceOpenedFromPerformanceInsight = 182, MAX_VALUE = 183, /* eslint-enable @typescript-eslint/naming-convention */ } export enum PanelCodes { /* eslint-disable @typescript-eslint/naming-convention */ elements = 1, resources = 2, network = 3, sources = 4, timeline = 5, 'heap-profiler' = 6, 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, 'trust-tokens' = 41, 'reporting-api' = 42, 'interest-groups' = 43, 'back-forward-cache' = 44, 'service-worker-cache' = 45, 'background-service-background-fetch' = 46, 'background-service-background-sync' = 47, 'background-service-push-messaging' = 48, 'background-service-notifications' = 49, 'background-service-payment-handler' = 50, 'background-service-periodic-background-sync' = 51, 'service-workers' = 52, 'app-manifest' = 53, storage = 54, cookies = 55, 'frame-details' = 56, 'frame-resource' = 57, 'frame-window' = 58, 'frame-worker' = 59, 'dom-storage' = 60, 'indexed-db' = 61, 'web-sql' = 62, 'performance-insights' = 63, preloading = 64, 'bounce-tracking-mitigations' = 65, 'developer-resources' = 66, 'autofill-view' = 67, freestyler = 68, /* eslint-enable @typescript-eslint/naming-convention */ MAX_VALUE = 69, } export enum MediaTypes { /* eslint-disable @typescript-eslint/naming-convention */ Unknown = 0, 'text/css' = 2, 'text/html' = 3, 'application/xml' = 4, 'application/wasm' = 5, 'application/manifest+json' = 6, 'application/x-aspx' = 7, 'application/jsp' = 8, 'text/x-c++src' = 9, 'text/x-coffeescript' = 10, 'application/vnd.dart' = 11, 'text/typescript' = 12, 'text/typescript-jsx' = 13, 'application/json' = 14, 'text/x-csharp' = 15, 'text/x-java' = 16, 'text/x-less' = 17, 'application/x-httpd-php' = 18, 'text/x-python' = 19, 'text/x-sh' = 20, 'text/x-gss' = 21, 'text/x-sass' = 22, 'text/x-scss' = 23, 'text/markdown' = 24, 'text/x-clojure' = 25, 'text/jsx' = 26, 'text/x-go' = 27, 'text/x-kotlin' = 28, 'text/x-scala' = 29, 'text/x.svelte' = 30, 'text/javascript+plain' = 31, 'text/javascript+minified' = 32, 'text/javascript+sourcemapped' = 33, 'text/x.angular' = 34, 'text/x.vue' = 35, 'text/javascript+snippet' = 36, 'text/javascript+eval' = 37, // Scripts resulting from console inputs or page "eval"s with no sourceUrl comment. /* eslint-enable @typescript-eslint/naming-convention */ MAX_VALUE = 38, } export enum KeybindSetSettings { /* eslint-disable @typescript-eslint/naming-convention */ devToolsDefault = 0, vsCode = 1, /* eslint-enable @typescript-eslint/naming-convention */ MAX_VALUE = 2, } export enum KeyboardShortcutAction { /* eslint-disable @typescript-eslint/naming-convention */ OtherShortcut = 0, 'quick-open.show-command-menu' = 1, 'console.clear' = 2, 'console.toggle' = 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, 'quick-open.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, 'rendering.toggle-prefers-color-scheme' = 107, 'chrome-recorder.start-recording' = 108, 'chrome-recorder.replay-recording' = 109, 'chrome-recorder.toggle-code-view' = 110, 'chrome-recorder.copy-recording-or-step' = 111, 'elements.new-style-rule' = 114, 'elements.refresh-event-listeners' = 115, 'coverage.clear' = 116, 'coverage.export' = 117, 'timeline.dim-third-parties' = 118, /* eslint-enable @typescript-eslint/naming-convention */ MAX_VALUE = 119, } export const enum IssueOpener { CONSOLE_INFO_BAR = 0, LEARN_MORE_LINK_COEP = 1, STATUS_BAR_ISSUES_COUNTER = 2, HAMBURGER_MENU = 3, ADORNER = 4, COMMAND_MENU = 5, MAX_VALUE = 6, } /** * This list should contain the currently active Devtools Experiments, * gaps are expected. */ export enum DevtoolsExperiments { /* eslint-disable @typescript-eslint/naming-convention */ 'capture-node-creation-stacks' = 1, 'live-heap-profile' = 11, 'protocol-monitor' = 13, 'sampling-heap-profiler-timeline' = 17, 'show-option-tp-expose-internals-in-heap-snapshot' = 18, 'timeline-invalidation-tracking' = 26, 'timeline-show-all-events' = 27, 'timeline-v8-runtime-call-stats' = 28, apca = 39, 'font-editor' = 41, 'full-accessibility-tree' = 42, 'contrast-issues' = 44, 'experimental-cookie-features' = 45, 'instrumentation-breakpoints' = 61, 'authored-deployed-grouping' = 63, 'just-my-code' = 65, 'highlight-errors-elements-panel' = 73, 'use-source-map-scopes' = 76, 'timeline-show-postmessage-events' = 86, 'timeline-enhanced-traces' = 90, 'timeline-compiled-sources' = 91, 'timeline-debug-mode' = 93, 'timeline-experimental-insights' = 102, // 106 was historically used [https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/6230097] // next experiment should be 107 /* eslint-enable @typescript-eslint/naming-convention */ // Increment this when new experiments are added. MAX_VALUE = 106, } // Update DevToolsIssuesPanelIssueExpanded from tools/metrics/histograms/enums.xml if new enum is added. export enum IssueExpanded { /* eslint-disable @typescript-eslint/naming-convention */ CrossOriginEmbedderPolicy = 0, MixedContent = 1, SameSiteCookie = 2, HeavyAd = 3, ContentSecurityPolicy = 4, Other = 5, Generic = 6, ThirdPartyPhaseoutCookie = 7, GenericCookie = 8, /* eslint-enable @typescript-eslint/naming-convention */ MAX_VALUE = 9, } export enum IssueResourceOpened { /* eslint-disable @typescript-eslint/naming-convention */ CrossOriginEmbedderPolicyRequest = 0, CrossOriginEmbedderPolicyElement = 1, MixedContentRequest = 2, SameSiteCookieCookie = 3, SameSiteCookieRequest = 4, HeavyAdElement = 5, ContentSecurityPolicyDirective = 6, ContentSecurityPolicyElement = 7, /* eslint-enable @typescript-eslint/naming-convention */ MAX_VALUE = 13, } /** * This list should contain the currently active issue types, * gaps are expected. */ export enum IssueCreated { /* eslint-disable @typescript-eslint/naming-convention */ 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, 'CookieIssue::ExcludeSameSiteNoneInsecure::ReadCookie' = 14, 'CookieIssue::ExcludeSameSiteNoneInsecure::SetCookie' = 15, 'CookieIssue::WarnSameSiteNoneInsecure::ReadCookie' = 16, 'CookieIssue::WarnSameSiteNoneInsecure::SetCookie' = 17, 'CookieIssue::WarnSameSiteStrictLaxDowngradeStrict::Secure' = 18, 'CookieIssue::WarnSameSiteStrictLaxDowngradeStrict::Insecure' = 19, 'CookieIssue::WarnCrossDowngrade::ReadCookie::Secure' = 20, 'CookieIssue::WarnCrossDowngrade::ReadCookie::Insecure' = 21, 'CookieIssue::WarnCrossDowngrade::SetCookie::Secure' = 22, 'CookieIssue::WarnCrossDowngrade::SetCookie::Insecure' = 23, 'CookieIssue::ExcludeNavigationContextDowngrade::Secure' = 24, 'CookieIssue::ExcludeNavigationContextDowngrade::Insecure' = 25, 'CookieIssue::ExcludeContextDowngrade::ReadCookie::Secure' = 26, 'CookieIssue::ExcludeContextDowngrade::ReadCookie::Insecure' = 27, 'CookieIssue::ExcludeContextDowngrade::SetCookie::Secure' = 28, 'CookieIssue::ExcludeContextDowngrade::SetCookie::Insecure' = 29, 'CookieIssue::ExcludeSameSiteUnspecifiedTreatedAsLax::ReadCookie' = 30, 'CookieIssue::ExcludeSameSiteUnspecifiedTreatedAsLax::SetCookie' = 31, 'CookieIssue::WarnSameSiteUnspecifiedLaxAllowUnsafe::ReadCookie' = 32, 'CookieIssue::WarnSameSiteUnspecifiedLaxAllowUnsafe::SetCookie' = 33, 'CookieIssue::WarnSameSiteUnspecifiedCrossSiteContext::ReadCookie' = 34, 'CookieIssue::WarnSameSiteUnspecifiedCrossSiteContext::SetCookie' = 35, 'SharedArrayBufferIssue::TransferIssue' = 36, 'SharedArrayBufferIssue::CreationIssue' = 37, LowTextContrastIssue = 41, 'CorsIssue::InsecurePrivateNetwork' = 42, '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::NoCorsRedirectModeNotFollow' = 57, 'QuirksModeIssue::QuirksMode' = 58, 'QuirksModeIssue::LimitedQuirksMode' = 59, DeprecationIssue = 60, 'ClientHintIssue::MetaTagAllowListInvalidOrigin' = 61, 'ClientHintIssue::MetaTagModifiedHTML' = 62, 'CorsIssue::PreflightAllowPrivateNetworkError' = 63, 'GenericIssue::CrossOriginPortalPostMessageError' = 64, 'GenericIssue::FormLabelForNameError' = 65, 'GenericIssue::FormDuplicateIdForInputError' = 66, 'GenericIssue::FormInputWithNoLabelError' = 67, 'GenericIssue::FormAutocompleteAttributeEmptyError' = 68, 'GenericIssue::FormEmptyIdAndNameAttributesForInputError' = 69, 'GenericIssue::FormAriaLabelledByToNonExistingId' = 70, 'GenericIssue::FormInputAssignedAutocompleteValueToIdOrNameAttributeError' = 71, 'GenericIssue::FormLabelHasNeitherForNorNestedInput' = 72, 'GenericIssue::FormLabelForMatchesNonExistingIdError' = 73, 'GenericIssue::FormHasPasswordFieldWithoutUsernameFieldError' = 74, 'GenericIssue::FormInputHasWrongButWellIntendedAutocompleteValueError' = 75, 'StylesheetLoadingIssue::LateImportRule' = 76, 'StylesheetLoadingIssue::RequestFailed' = 77, 'CorsIssue::PreflightMissingPrivateNetworkAccessId' = 78, 'CorsIssue::PreflightMissingPrivateNetworkAccessName' = 79, 'CorsIssue::PrivateNetworkAccessPermissionUnavailable' = 80, 'CorsIssue::PrivateNetworkAccessPermissionDenied' = 81, 'CookieIssue::WarnThirdPartyPhaseout::ReadCookie' = 82, 'CookieIssue::WarnThirdPartyPhaseout::SetCookie' = 83, 'CookieIssue::ExcludeThirdPartyPhaseout::ReadCookie' = 84, 'CookieIssue::ExcludeThirdPartyPhaseout::SetCookie' = 85, 'SelectElementAccessibilityIssue::DisallowedSelectChild' = 86, 'SelectElementAccessibilityIssue::DisallowedOptGroupChild' = 87, 'SelectElementAccessibilityIssue::NonPhrasingContentOptionChild' = 88, 'SelectElementAccessibilityIssue::InteractiveContentOptionChild' = 89, 'SelectElementAccessibilityIssue::InteractiveContentLegendChild' = 90, 'SRIMessageSignatureIssue::MissingSignatureHeader' = 91, 'SRIMessageSignatureIssue::MissingSignatureInputHeader' = 92, 'SRIMessageSignatureIssue::InvalidSignatureHeader' = 93, 'SRIMessageSignatureIssue::InvalidSignatureInputHeader' = 94, 'SRIMessageSignatureIssue::SignatureHeaderValueIsNotByteSequence' = 95, 'SRIMessageSignatureIssue::SignatureHeaderValueIsParameterized' = 96, 'SRIMessageSignatureIssue::SignatureHeaderValueIsIncorrectLength' = 97, 'SRIMessageSignatureIssue::SignatureInputHeaderMissingLabel' = 98, 'SRIMessageSignatureIssue::SignatureInputHeaderValueNotInnerList' = 99, 'SRIMessageSignatureIssue::SignatureInputHeaderValueMissingComponents' = 100, 'SRIMessageSignatureIssue::SignatureInputHeaderInvalidComponentType' = 101, 'SRIMessageSignatureIssue::SignatureInputHeaderInvalidComponentName' = 102, 'SRIMessageSignatureIssue::SignatureInputHeaderInvalidHeaderComponentParameter' = 103, 'SRIMessageSignatureIssue::SignatureInputHeaderInvalidDerivedComponentParameter' = 104, 'SRIMessageSignatureIssue::SignatureInputHeaderKeyIdLength' = 105, 'SRIMessageSignatureIssue::SignatureInputHeaderInvalidParameter' = 106, 'SRIMessageSignatureIssue::SignatureInputHeaderMissingRequiredParameters' = 107, 'SRIMessageSignatureIssue::ValidationFailedSignatureExpired' = 108, 'SRIMessageSignatureIssue::ValidationFailedInvalidLength' = 109, 'SRIMessageSignatureIssue::ValidationFailedSignatureMismatch' = 110, 'CorsIssue::LocalNetworkAccessPermissionDenied' = 111, 'SRIMessageSignatureIssue::ValidationFailedIntegrityMismatch' = 112, /* eslint-enable @typescript-eslint/naming-convention */ MAX_VALUE = 113, } export const enum DeveloperResourceLoaded { LOAD_THROUGH_PAGE_VIA_TARGET = 0, LOAD_THROUGH_PAGE_VIA_FRAME = 1, LOAD_THROUGH_PAGE_FAILURE = 2, LOAD_THROUGH_PAGE_FALLBACK = 3, FALLBACK_AFTER_FAILURE = 4, FALLBACK_PER_OVERRIDE = 5, FALLBACK_PER_PROTOCOL = 6, FALLBACK_FAILURE = 7, MAX_VALUE = 8, } export const enum DeveloperResourceScheme { OTHER = 0, UKNOWN = 1, HTTP = 2, HTTPS = 3, HTTP_LOCALHOST = 4, HTTPS_LOCALHOST = 5, DATA = 6, FILE = 7, BLOB = 8, MAX_VALUE = 9, } export enum Language { /* eslint-disable @typescript-eslint/naming-convention */ 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, /* eslint-enable @typescript-eslint/naming-convention */ MAX_VALUE = 83, } export const enum SyncSetting { CHROME_SYNC_DISABLED = 1, CHROME_SYNC_SETTINGS_DISABLED = 2, DEVTOOLS_SYNC_SETTING_DISABLED = 3, DEVTOOLS_SYNC_SETTING_ENABLED = 4, MAX_VALUE = 5, } export const enum RecordingToggled { RECORDING_STARTED = 1, RECORDING_FINISHED = 2, MAX_VALUE = 3, } export const enum RecordingAssertion { ASSERTION_ADDED = 1, PROPERTY_ASSERTION_EDITED = 2, ATTRIBUTE_ASSERTION_EDITED = 3, MAX_VALUE = 4, } export const enum RecordingReplayFinished { SUCCESS = 1, TIMEOUT_ERROR_SELECTORS = 2, TIMEOUT_ERROR_TARGET = 3, OTHER_ERROR = 4, MAX_VALUE = 5, } export const enum RecordingReplaySpeed { NORMAL = 1, SLOW = 2, VERY_SLOW = 3, EXTREMELY_SLOW = 4, MAX_VALUE = 5, } export const enum RecordingReplayStarted { REPLAY_ONLY = 1, REPLAY_WITH_PERFORMANCE_TRACING = 2, REPLAY_VIA_EXTENSION = 3, MAX_VALUE = 4, } export const enum RecordingEdited { SELECTOR_PICKER_USED = 1, STEP_ADDED = 2, STEP_REMOVED = 3, SELECTOR_ADDED = 4, SELECTOR_REMOVED = 5, SELECTOR_PART_ADDED = 6, SELECTOR_PART_EDITED = 7, SELECTOR_PART_REMOVED = 8, TYPE_CHANGED = 9, OTHER_EDITING = 10, MAX_VALUE = 11, } export const enum RecordingExported { TO_PUPPETEER = 1, TO_JSON = 2, TO_PUPPETEER_REPLAY = 3, TO_EXTENSION = 4, TO_LIGHTHOUSE = 5, MAX_VALUE = 6, } export const enum RecordingCodeToggled { CODE_SHOWN = 1, CODE_HIDDEN = 2, MAX_VALUE = 3, } export const enum RecordingCopiedToClipboard { COPIED_RECORDING_WITH_PUPPETEER = 1, COPIED_RECORDING_WITH_JSON = 2, COPIED_RECORDING_WITH_REPLAY = 3, COPIED_RECORDING_WITH_EXTENSION = 4, COPIED_STEP_WITH_PUPPETEER = 5, COPIED_STEP_WITH_JSON = 6, COPIED_STEP_WITH_REPLAY = 7, COPIED_STEP_WITH_EXTENSION = 8, MAX_VALUE = 9, } export enum ManifestSectionCodes { /* eslint-disable @typescript-eslint/naming-convention -- Indexed access. */ OtherSection = 0, Identity = 1, Presentation = 2, 'Protocol Handlers' = 3, Icons = 4, 'Window Controls Overlay' = 5, /* eslint-enable @typescript-eslint/naming-convention */ MAX_VALUE = 6, } // The names here match the CSSRuleValidator names in CSSRuleValidator.ts. export const enum CSSHintType { OTHER = 0, ALIGN_CONTENT = 1, FLEX_ITEM = 2, FLEX_CONTAINER = 3, GRID_CONTAINER = 4, GRID_ITEM = 5, FLEX_GRID = 6, MULTICOL_FLEX_GRID = 7, PADDING = 8, POSITION = 9, Z_INDEX = 10, SIZING = 11, FLEX_OR_GRID_ITEM = 12, FONT_VARIATION_SETTINGS = 13, MAX_VALUE = 14, } export const enum LighthouseModeRun { NAVIGATION = 0, TIMESPAN = 1, SNAPSHOT = 2, LEGACY_NAVIGATION = 3, MAX_VALUE = 4, } export const enum LighthouseCategoryUsed { PERFORMANCE = 0, ACCESSIBILITY = 1, BEST_PRACTICES = 2, SEO = 3, PWA = 4, PUB_ADS = 5, MAX_VALUE = 6, } export const enum SwatchType { VAR_LINK = 0, ANIMATION_NAME_LINK = 1, COLOR = 2, ANIMATION_TIMING = 3, SHADOW = 4, GRID = 5, FLEX = 6, ANGLE = 7, LENGTH = 8, POSITION_TRY_LINK = 10, MAX_VALUE = 11, } export const enum BadgeType { GRID = 0, SUBGRID = 1, FLEX = 2, AD = 3, SCROLL_SNAP = 4, CONTAINER = 5, SLOT = 6, TOP_LAYER = 7, REVEAL = 8, MAX_VALUE = 9, } export const enum AnimationsPlaybackRate { PERCENT_100 = 0, PERCENT_25 = 1, PERCENT_10 = 2, OTHER = 3, MAX_VALUE = 4, } export const enum TimelineNavigationSetting { // Setting is set to classic when the first trace of the session is recorded or loaded. CLASSIC_AT_SESSION_FIRST_TRACE = 0, // Setting is set to modern when the first trace of the session is recorded or loaded. MODERN_AT_SESSION_FIRST_TRACE = 1, SWITCHED_TO_CLASSIC = 2, SWITCHED_TO_MODERN = 3, MAX_VALUE = 4, }