<!--
Copyright 2020 The Chromium Authors
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->

<!--
This file is used to generate a comprehensive list of Dev histograms
along with a detailed description for each histogram.

For best practices on writing histogram descriptions, see
https://chromium.googlesource.com/chromium/src.git/+/HEAD/tools/metrics/histograms/README.md

Please follow the instructions in the OWNERS file in this directory to find a
reviewer. If no OWNERS file exists, please consider signing up at
go/reviewing-metrics (Googlers only), as all subdirectories are expected to
have an OWNERS file. As a last resort you can send the CL to
chromium-metrics-reviews@google.com.
-->

<histogram-configuration>

<histograms>

<histogram name="DevTools.ActionTaken" enum="DevToolsAction"
    expires_after="2027-02-07">
  <owner>yangguo@google.com</owner>
  <owner>bmeurer@google.com</owner>
  <summary>Specified DevTools action has been taken.</summary>
</histogram>

<histogram name="DevTools.AidaResponseTime" units="ms"
    expires_after="2024-07-21">
  <owner>yangguo@google.com</owner>
  <owner>danilsomsikov@google.com</owner>
  <component>1633102</component>
  <summary>
    Measures the time until a full response from AIDA backend is received.
  </summary>
</histogram>

<histogram name="DevTools.BuiltInAiAvailability"
    enum="DevToolsBuiltInAiAvailability" expires_after="2027-02-14">
  <owner>wolfi@google.com</owner>
  <owner>alexrudenko@google.com</owner>
  <component>1559716</component>
  <summary>Availability of the built-in AI in DevTools.</summary>
</histogram>

<histogram name="DevTools.CDPCommandFrom{ClientType}" enum="CDPCommands"
    expires_after="2027-02-07">
  <owner>wolfi@google.com</owner>
  <owner>danilsomsikov@google.com</owner>
  <owner>yangguo@google.com</owner>
  <component>1559716</component>
  <summary>
    Records CDP command usage originating from {ClientType}. This is recorded
    whenever a CDP session receives and handles a command from a CDP client.
  </summary>
  <token key="ClientType">
    <variant name="DevTools"/>
    <variant name="Extension" summary="an extension"/>
    <variant name="Other" summary="other sources"/>
    <variant name="RemoteDebugger" summary="remote debugging"/>
  </token>
</histogram>

<histogram name="DevTools.Comments.ChangeRecorded" units="count"
    expires_after="2027-08-12">
  <owner>nharshunova@google.com</owner>
  <owner>yulunz@google.com</owner>
  <summary>The number of changes made by the agent in one turn.</summary>
</histogram>

<histogram name="DevTools.Comments.ChangeSharedWithAgent" units="count"
    expires_after="2027-08-12">
  <owner>nharshunova@google.com</owner>
  <owner>yulunz@google.com</owner>
  <summary>The number of changes shared with the AI agent in one turn.</summary>
</histogram>

<histogram name="DevTools.Comments.CommentCreated" units="count"
    expires_after="2027-08-12">
  <owner>nharshunova@google.com</owner>
  <owner>yulunz@google.com</owner>
  <summary>The number of comments created in one turn.</summary>
</histogram>

<histogram name="DevTools.Comments.CommentResolvedBy{Resolver}" units="count"
    expires_after="2027-08-12">
  <owner>nharshunova@google.com</owner>
  <owner>yulunz@google.com</owner>
  <summary>The number of comments resolved by {Resolver} in one turn.</summary>
  <token key="Resolver">
    <variant name="Agent" summary="the AI agent"/>
    <variant name="User" summary="the user"/>
  </token>
</histogram>

<histogram name="DevTools.Comments.CommentSharedWithAgent" units="count"
    expires_after="2027-08-12">
  <owner>nharshunova@google.com</owner>
  <owner>yulunz@google.com</owner>
  <summary>
    The number of comments shared with the AI agent in one turn.
  </summary>
</histogram>

<histogram name="DevTools.Comments.CommentSize" units="characters"
    expires_after="2027-08-12">
  <owner>nharshunova@google.com</owner>
  <owner>yulunz@google.com</owner>
  <summary>The length of a comment in characters when created.</summary>
</histogram>

<histogram name="DevTools.DeveloperResourceLoaded"
    enum="DevToolsDeveloperResourceLoaded" expires_after="2026-12-27">
  <owner>bmeurer@google.com</owner>
  <owner>danilsomsikov@google.com</owner>
  <summary>
    Records for each developer resource load that the DevTools front-end issues
    (e.g. to load a source map) several enum values encoding which load method
    was used, whether a fallback was used (and why), and whether the method
    succeeded or not.

    Some explanations to make sense of the enum values:

    LoadsThroughPage = LoadThroughPageViaTarget + LoadThroughPageViaFrame

    SuccessfulLoadsThroughPage = LoadsThroughPage - LoadThroughPageFailure

    LoadThroughPageFallback is the number of loads that can in principle be
    loaded through the page, but had to use the fallback because either loading
    through the page failed (LoadThroughPageFailure), or there was insufficient
    information to dispatch the load through the page; the number of such loads
    can be computed as LoadThroughPageFallback - LoadThroughPageFailure.

    The number of loads not eligible for loading through the page can be
    computed as FallbackPerOverride + FallbackPerProtocol, where
    FallbackPerOverride indicates loads where the DevTools user disabled loading
    through the page via an override, and FallbackPerProtocol indicates loads
    where DevTools could not load the resource via the page due to the
    resource's protocol scheme.

    The total number of loads that used the fallback can be computed as
    LoadThroughPageFallback + FallbackPerOverride + FallbackPerProtocol. Adding
    SuccessfulLoadsThroughPage to that number gives the total number of loads.
  </summary>
</histogram>

<histogram name="DevTools.DeveloperResourceScheme"
    enum="DevToolsDeveloperResourceScheme" expires_after="2027-02-14">
  <owner>bmeurer@google.com</owner>
  <owner>danilsomsikov@google.com</owner>
  <summary>
    Records for each developer resource load that the DevTools front-end issues
    (e.g. to load a source map) one enum value that records the scheme of the
    resource's URL. For HTTP and HTTPS schemes, there are two enums each: One
    that signifies that the host was localhost, and one that signifies that it
    wasn't, i.e. to get the total number of resource loads using a HTTP scheme
    one must add the numbers of SchemeHttp and SchemeHttpLocalhost.

    The value SchemeUnknown signifies that parsing the scheme from the URL
    failed (note that at the point the enum is recorded, only absolute URLs
    arrive).
  </summary>
</histogram>

<histogram name="DevTools.EditResendRequest" enum="DevToolsResendRequestType"
    expires_after="2027-06-18">
  <owner>dsv@chromium.org</owner>
  <owner>dgarber@microsoft.com</owner>
  <component>1456922</component>
  <summary>
    Records the resource type of a network request that the user selects to edit
    and resend. Fired at the start of resendFromConsole(), at the point that a
    fetch command is pasted into the console for user edit.
  </summary>
</histogram>

<histogram name="DevTools.ExperimentDisabled" enum="DevtoolsExperiments"
    expires_after="2027-03-01">
  <owner>yangguo@google.com</owner>
  <owner>changhaohan@google.com</owner>
  <summary>
    Fired when a devtools experiment is disabled from the experiments tab.
  </summary>
</histogram>

<histogram name="DevTools.ExperimentDisabledAtLaunch"
    enum="DevtoolsExperiments" expires_after="2027-03-01">
  <owner>yangguo@google.com</owner>
  <owner>changhaohan@google.com</owner>
  <summary>
    Fires for each experiment that is disabled at the time of Devtools Launch.
  </summary>
</histogram>

<histogram name="DevTools.ExperimentEnabled" enum="DevtoolsExperiments"
    expires_after="2027-03-01">
  <owner>yangguo@google.com</owner>
  <owner>changhaohan@google.com</owner>
  <summary>
    Fired when a devtools experiment is enabled from the experiments tab.
  </summary>
</histogram>

<histogram name="DevTools.ExperimentEnabledAtLaunch" enum="DevtoolsExperiments"
    expires_after="2027-03-01">
  <owner>yangguo@google.com</owner>
  <owner>changhaohan@google.com</owner>
  <summary>
    Fires for each experiment that is enabled at the time of Devtools Launch.
  </summary>
</histogram>

<histogram name="DevTools.ExtensionEvalTarget"
    enum="DevToolsExtensionEvalTarget" expires_after="2026-12-16">
  <owner>danilsomsikov@google.com</owner>
  <owner>devtools-dev@chromium.org</owner>
  <summary>
    Tracks the target page type of chrome.devtools.inspectedWindow.eval calls.
    Used to measure cross-extension debugging frequency for crbug.com/375959766.
  </summary>
</histogram>

<histogram name="DevTools.Freestyler.EvalResponseSize" units="count"
    expires_after="2026-11-11">
  <owner>ergunsh@google.com</owner>
  <owner>alexrudenko@google.com</owner>
  <component>1633102</component>
  <summary>
    The size (in bytes) of the code evaluation output returned by the
    FreestylerAgent.
  </summary>
</histogram>

<histogram name="DevTools.Freestyler.QueryLength" units="count"
    expires_after="2026-07-19">
  <owner>ergunsh@google.com</owner>
  <owner>alexrudenko@google.com</owner>
  <component>1633102</component>
  <summary>
    The length of the query (number of characters) given to the FreestylerAgent.
  </summary>
</histogram>

<histogram name="DevTools.FrontendLocation" enum="DevToolsFrontendLocation"
    expires_after="2027-01-16">
  <owner>dsv@chromium.org</owner>
  <owner>chrome-devtools@google.com</owner>
  <summary>
    Records whether the DevTools frontend being loaded is local (bundled/custom)
    or remote (served via CDN). Recorded once per DevTools session at session
    start.
  </summary>
</histogram>

<histogram name="DevTools.Insights.LongTeaserGenerationTime" units="ms"
    expires_after="2026-10-24">
  <owner>wolfi@google.com</owner>
  <owner>alexrudenko@google.com</owner>
  <summary>
    Measures the time it takes to generate a console insight teaser which is at
    least 301 characters long.
  </summary>
</histogram>

<histogram name="DevTools.Insights.ShortTeaserGenerationTime" units="ms"
    expires_after="2026-10-24">
  <owner>wolfi@google.com</owner>
  <owner>alexrudenko@google.com</owner>
  <summary>
    Measures the time it takes to generate a console insight teaser which is
    shorter than 301 characters.
  </summary>
</histogram>

<histogram name="DevTools.Insights.TeaserAfterFirstCharacterAbortionTime"
    units="ms" expires_after="2026-10-24">
  <owner>wolfi@google.com</owner>
  <owner>alexrudenko@google.com</owner>
  <summary>
    Measures the time after which console insight teaser generation is aborted.
    Abortion is triggered after the first character of the teaser has already
    been generated.
  </summary>
</histogram>

<histogram name="DevTools.Insights.TeaserBeforeFirstCharacterAbortionTime"
    units="ms" expires_after="2026-10-24">
  <owner>wolfi@google.com</owner>
  <owner>alexrudenko@google.com</owner>
  <summary>
    Measures the time after which console insight teaser generation is aborted.
    Abortion is triggered before the first character of the teaser has been
    generated.
  </summary>
</histogram>

<histogram name="DevTools.Insights.TeaserChunkToEndMedium" units="ms"
    expires_after="2027-01-26">
  <owner>wolfi@google.com</owner>
  <owner>alexrudenko@google.com</owner>
  <summary>
    Measures the time from first character generated to full response for
    console insights teasers (maximum 3 minutes).
  </summary>
</histogram>

<histogram name="DevTools.Insights.TeaserFirstChunkGenerationTime" units="ms"
    expires_after="2026-11-10">
  <owner>wolfi@google.com</owner>
  <owner>alexrudenko@google.com</owner>
  <summary>
    Measures the time it takes to generate the first chunk of a console insight
    teaser (maximum 10 seconds).
  </summary>
</histogram>

<histogram name="DevTools.Insights.TeaserFirstChunkGenerationTimeMedium"
    units="ms" expires_after="2027-01-26">
  <owner>wolfi@google.com</owner>
  <owner>alexrudenko@google.com</owner>
  <summary>
    Measures the time it takes to generate the first chunk of a console insight
    teaser (maximum 3 minutes).
  </summary>
</histogram>

<histogram name="DevTools.Insights.TeaserGenerationTime" units="ms"
    expires_after="2026-10-24">
  <owner>wolfi@google.com</owner>
  <owner>alexrudenko@google.com</owner>
  <summary>
    Measures the time it takes to generate a console insight teaser (maximum 10
    seconds).
  </summary>
</histogram>

<histogram name="DevTools.Insights.TeaserGenerationTimeMedium" units="ms"
    expires_after="2027-01-26">
  <owner>wolfi@google.com</owner>
  <owner>alexrudenko@google.com</owner>
  <summary>
    Measures the time it takes to generate a console insight teaser (maximum 3
    minutes).
  </summary>
</histogram>

<histogram name="DevTools.InspectElement" units="ms" expires_after="2026-10-25">
  <owner>yangguo@google.com</owner>
  <owner>bmeurer@google.com</owner>
  <summary>
    Time to load Developer Tools when user clicks Inspect Element in the context
    menu.
  </summary>
</histogram>

<histogram name="DevTools.IsSameOriginDebuggerPausedInAnotherRenderer"
    enum="Boolean" expires_after="2025-04-13">
  <owner>bashi@google.com</owner>
  <owner>blink-network-stack@google.com</owner>
  <summary>
    Records whether a DevTools debugger is already paused in another outermost
    renderer. Recorded at the first pause of a DevTools debugger after the
    debugger is associated with a particular renderer channel.
  </summary>
</histogram>

<histogram name="DevTools.IssueCreated" enum="DevToolsIssueCreated"
    expires_after="M160">
  <owner>yangguo@google.com</owner>
  <owner>danilsomsikov@google.com</owner>
  <component>1519296</component>
  <summary>
    Records the issue type when an issue is created for the Issues Panel.
  </summary>
</histogram>

<histogram name="DevTools.IssuesPanelIssueExpanded"
    enum="DevToolsIssuesPanelIssueExpanded" expires_after="M160">
  <owner>bmeurer@google.com</owner>
  <owner>danilsomsikov@google.com</owner>
  <component>1519296</component>
  <summary>
    Records which type of issue is expanded in the issues panel.
  </summary>
</histogram>

<histogram name="DevTools.IssuesPanelOpenedFrom"
    enum="DevToolsIssuesPanelOpenedFrom" expires_after="M160">
  <owner>bmeurer@google.com</owner>
  <owner>danilsomsikov@google.com</owner>
  <component>1519296</component>
  <summary>
    Records which UI element is being used to open the Issues Panel.
  </summary>
</histogram>

<histogram name="DevTools.IssuesPanelResourceOpened"
    enum="DevToolsIssuesPanelResourceOpened" expires_after="M160">
  <owner>bmeurer@google.com</owner>
  <owner>danilsomsikov@google.com</owner>
  <component>1519296</component>
  <summary>
    Records which resource from what issue category is opened in the issue
    panel.
  </summary>
</histogram>

<histogram name="DevTools.KeybindSetSettingChanged" enum="DevToolsKeybindSets"
    expires_after="M160">
  <owner>bmeurer@google.com</owner>
  <owner>jalyn@microsoft.com</owner>
  <owner>leo.lee@microsoft.com</owner>
  <summary>
    Recorded when the user changes which keyboard shortcut presets they are
    using in the DevTools.
  </summary>
</histogram>

<histogram name="DevTools.KeyboardShortcutFired"
    enum="DevToolsKeyboardShortcutAction" expires_after="M160">
  <owner>bmeurer@google.com</owner>
  <owner>jalyn@microsoft.com</owner>
  <owner>leo.lee@microsoft.com</owner>
  <summary>
    Recorded when a DevTools keyboard shortcut has been processed and
    successfully executed its action.
  </summary>
</histogram>

<histogram name="DevTools.Language" enum="DevToolsLanguage"
    expires_after="M160">
  <owner>bmeurer@google.com</owner>
  <owner>szuend@google.com</owner>
  <owner>yangguo@google.com</owner>
  <summary>
    The actual display language used for the DevTools UI. Logged once per
    DevTools session when DevTools is booted up.
  </summary>
</histogram>

<histogram name="DevTools.Launch{DevToolsLaunchPanels}" units="ms"
    expires_after="M160">
  <owner>yangguo@google.com</owner>
  <owner>bmeurer@google.com</owner>
  <summary>
    Measures the time until a given tool is interactive during a cold start of
    DevTools. {DevToolsLaunchPanels}
  </summary>
  <token key="DevToolsLaunchPanels">
    <variant name=".Console" summary="DevTools launched to the Console panel"/>
    <variant name=".Elements"
        summary="DevTools launched to the Elements panel"/>
    <variant name=".Network" summary="DevTools launched to the Network panel"/>
    <variant name=".Sources" summary="DevTools launched to the Sources panel"/>
  </token>
</histogram>

<histogram name="DevTools.LighthouseModeRun" enum="DevToolsLighthouseModeRun"
    expires_after="2025-07-13">
  <owner>asraine@google.com</owner>
  <owner>paulirish@google.com</owner>
  <owner>cjamcl@google.com</owner>
  <summary>Records which Lighthouse mode was used to audit the page.</summary>
</histogram>

<histogram name="DevTools.NetworkPanelResponsePreviewOpened"
    enum="DevToolsMediaType" expires_after="2026-12-20">
  <owner>bmeurer@google.com</owner>
  <owner>szuend@google.com</owner>
  <summary>
    Records the media types of files opened in the DevTools Network panel
    response preview.
  </summary>
</histogram>

<histogram name="DevTools.OpenedByAction" enum="DevToolsOpenedByAction"
    expires_after="2027-01-18">
  <owner>changhaohan@google.com</owner>
  <owner>yangguo@google.com</owner>
  <owner>mathiasb@google.com</owner>
  <summary>
    Recorded when a particular action was taken to launch DevTools.
  </summary>
</histogram>

<histogram name="DevTools.PanelShown" enum="DevToolsPanel"
    expires_after="2027-02-07">
  <owner>yangguo@google.com</owner>
  <owner>bmeurer@google.com</owner>
  <summary>Specified DevTools panel was shown.</summary>
</histogram>

<histogram name="DevTools.RecordingReplayFinished"
    enum="DevToolsRecordingReplayFinished" expires_after="2027-01-01">
  <owner>alexrudenko@google.com</owner>
  <owner>mathiasb@google.com</owner>
  <owner>yangguo@google.com</owner>
  <component>1456922</component>
  <summary>Recorded when a replay is over.</summary>
</histogram>

<histogram name="DevTools.RecordingReplayStarted"
    enum="DevToolsRecordingReplayStarted" expires_after="2027-01-01">
  <owner>alexrudenko@google.com</owner>
  <owner>mathiasb@google.com</owner>
  <owner>yangguo@google.com</owner>
  <component>1456922</component>
  <summary>Recorded when a recording is being replayed.</summary>
</histogram>

<histogram name="DevTools.RecordingToggled" enum="DevToolsRecordingToggled"
    expires_after="2027-01-01">
  <owner>alexrudenko@google.com</owner>
  <owner>mathiasb@google.com</owner>
  <owner>yangguo@google.com</owner>
  <component>1456922</component>
  <summary>
    Recorded when a recording is started or finished in the Recorder panel.
  </summary>
</histogram>

<histogram name="DevTools.RemoteDebugging.ConnectionPermission"
    enum="DevToolsRemoteDebuggingConnectionPermission"
    expires_after="2027-01-01">
  <owner>alexrudenko@google.com</owner>
  <owner>hablich@google.com</owner>
  <summary>
    Records user's choice on the remote debugging connection dialog.
  </summary>
</histogram>

<histogram name="DevTools.RemoteDebugging.ServerAction"
    enum="DevToolsRemoteDebuggingServerAction" expires_after="2027-01-01">
  <owner>alexrudenko@google.com</owner>
  <owner>hablich@google.com</owner>
  <summary>
    Actions taken on the remote debugging server on chrome://inspect.
  </summary>
</histogram>

<histogram name="DevTools.ResendRequest" enum="DevToolsResendRequestType"
    expires_after="2027-06-18">
  <owner>dsv@chromium.org</owner>
  <owner>dgarber@microsoft.com</owner>
  <component>1456922</component>
  <summary>
    Records the resource type of a network request resent from DevTools. Fired
    at the start of resendRequest(), regardless of success or failure.
  </summary>
</histogram>

<histogram name="DevTools.SourcesPanelFileDebugged" enum="DevToolsMediaType"
    expires_after="M160">
  <owner>bmeurer@google.com</owner>
  <owner>szuend@google.com</owner>
  <component>1456920</component>
  <summary>
    Records the media types of files debugged in the DevTools Sources panel.
    This means the user eiter sets a breakpoint, pauses or steps in a file of
    the recorded media type.
  </summary>
</histogram>

<histogram name="DevTools.SourcesPanelFileOpened" enum="DevToolsMediaType"
    expires_after="M160">
  <owner>bmeurer@google.com</owner>
  <owner>szuend@google.com</owner>
  <component>1456920</component>
  <summary>
    Records the media types of files opened in the DevTools Sources panel.
  </summary>
</histogram>

<histogram name="DevTools.SwatchActivated" enum="DevToolsSwatchActivated"
    expires_after="M160">
  <owner>pfaffe@google.com</owner>
  <owner>bmeurer@google.com</owner>
  <summary>Records the swatch usages in the Styles pane.</summary>
</histogram>

<histogram name="DevTools.SyncSetting" enum="DevToolsSyncSetting"
    expires_after="M160">
  <owner>szuend@google.com</owner>
  <owner>yangguo@google.com</owner>
  <summary>
    Records whether syncing DevTools settings via Chrome Sync is enabled or why
    it's disabled. Logged once per DevTools session when DevTools is booted up.
  </summary>
</histogram>

<histogram name="DevTools.TraceLoad" units="ms" expires_after="2027-05-01">
  <owner>paulirish@google.com</owner>
  <owner>jacktfranklin@google.com</owner>
  <owner>victorporof@google.com</owner>
  <summary>
    Measures the time a trace is loading. Starts when recording is stopped or
    file/url load was started. Stops after the first render of the flamechart.

    Warning: this histogram was expired from 2026-03-01 to M149 (2026-06-02);
    data may be missing.
  </summary>
</histogram>

<histogram name="DevTools.TraceLoad2" units="ms" expires_after="2027-05-01">
  <owner>paulirish@google.com</owner>
  <owner>jacktfranklin@google.com</owner>
  <owner>victorporof@google.com</owner>
  <summary>
    Measures the time a trace is loading. Starts when recording is stopped or
    file/url load was started. Stops after the first render of the flamechart.
    Supports values over 10s.

    Warning: this histogram was expired from 2025-07-18 to M149 (2026-06-02);
    data may be missing.
  </summary>
</histogram>

<histogram name="DevTools.VisualLogging.ProcessingTime" units="ms"
    expires_after="2027-01-24">
  <owner>danilsomsikov@google.com</owner>
  <owner>hablich@google.com</owner>
  <summary>
    Clock time elapsed to process changes in DOM and log Visual Elements
    impressions.
  </summary>
</histogram>

<histogram name="DevTools.Workspaces.NumberOfDirectoriesTraversed"
    units="count" expires_after="M160">
  <owner>bmeurer@google.com</owner>
  <owner>hablich@google.com</owner>
  <component>1456920</component>
  <summary>
    Number of directories within a workspace folder traversed while loading the
    files from the folder.
  </summary>
</histogram>

<histogram name="DevTools.Workspaces.NumberOfFilesLoaded" units="count"
    expires_after="M160">
  <owner>bmeurer@google.com</owner>
  <owner>hablich@google.com</owner>
  <component>1456920</component>
  <summary>
    Number of files loaded from a workspace folder (after the exclusion patterns
    are applied).
  </summary>
</histogram>

<histogram name="DevTools.Workspaces.PopulateWallClockTime" units="ms"
    expires_after="M160">
  <owner>bmeurer@google.com</owner>
  <owner>hablich@google.com</owner>
  <component>1456920</component>
  <summary>
    Wall clock time elapsed to initially populate a Workspaces folder. Recorded
    in the FileSystem#populate() method of FileSystemWorkspaceBinding.ts.
  </summary>
</histogram>

</histograms>

</histogram-configuration>
