<!--
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 Accessibility 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>

<variants name="AccessibilityEveryReport">
  <variant name=".EveryReport"
      summary="sent with every metrics report, and preferred for computing
               uniques"/>
</variants>

<variants name="SodaLanguageCode">
  <variant name="de-DE" summary="German language code"/>
  <variant name="en-US" summary="English language code"/>
  <variant name="es-ES" summary="Spanish language code"/>
  <variant name="fr-FR" summary="French language code"/>
  <variant name="it-IT" summary="Italian language code"/>
  <variant name="ja-JP" summary="Japanese language code"/>
</variants>

<variants name="SwitchAccessMenuAction">
  <variant name="ActionRecorder"
      summary="Switch Access Menu Action: Action Recorder"/>
  <variant name="Copy" summary="Switch Access Menu Action: Copy"/>
  <variant name="Cut" summary="Switch Access Menu Action: Cut"/>
  <variant name="Decrement" summary="Switch Access Menu Action: Decrement"/>
  <variant name="Dictation" summary="Switch Access Menu Action: Dictation"/>
  <variant name="DisplayBrightnessDown"
      summary="Switch Access Menu Action: Display Brightness Down"/>
  <variant name="DisplayBrightnessUp"
      summary="Switch Access Menu Action: Display Brightness Up"/>
  <variant name="DisplayMenu"
      summary="Switch Access Menu Action: Display Menu"/>
  <variant name="DisplayMirror"
      summary="Switch Access Menu Action: Display Mirror"/>
  <variant name="DisplayRotate"
      summary="Switch Access Menu Action: Display Rotate"/>
  <variant name="DisplayZoomIn"
      summary="Switch Access Menu Action: Display Zoom In"/>
  <variant name="DisplayZoomOut"
      summary="Switch Access Menu Action: Display Zoom Out"/>
  <variant name="EndTextSelection"
      summary="Switch Access Menu Action: End Text Selection"/>
  <variant name="ExecuteMacro"
      summary="Switch Access Menu Action: Execute Macro"/>
  <variant name="Increment" summary="Switch Access Menu Action: Increment"/>
  <variant name="ItemScan" summary="Switch Access Menu Action: Item Scan"/>
  <variant name="JumpToBeginningOfText"
      summary="Switch Access Menu Action: Jump To Beginning Of Text"/>
  <variant name="JumpToEndOfText"
      summary="Switch Access Menu Action: Jump To End Of Text"/>
  <variant name="Keyboard" summary="Switch Access Menu Action: Keyboard"/>
  <variant name="LeaveGroup" summary="Switch Access Menu Action: Leave Group"/>
  <variant name="LeftClick" summary="Switch Access Menu Action: Left Click"/>
  <variant name="MediaFastforward"
      summary="Switch Access Menu Action: Media Fastforward"/>
  <variant name="MediaMenu" summary="Switch Access Menu Action: Media Menu"/>
  <variant name="MediaMute" summary="Switch Access Menu Action: Media Mute"/>
  <variant name="MediaPlayPause"
      summary="Switch Access Menu Action: Media Play Pause"/>
  <variant name="MediaRewind"
      summary="Switch Access Menu Action: Media Rewind"/>
  <variant name="MediaVolumeDown"
      summary="Switch Access Menu Action: Media Volume Down"/>
  <variant name="MediaVolumeUp"
      summary="Switch Access Menu Action: Media Volume Up"/>
  <variant name="MoveBackwardOneCharOfText"
      summary="Switch Access Menu Action: Move Backward One Char Of Text"/>
  <variant name="MoveBackwardOneWordOfText"
      summary="Switch Access Menu Action: Move Backward One Word Of Text"/>
  <variant name="MoveCursor" summary="Switch Access Menu Action: Move Cursor"/>
  <variant name="MoveDownOneLineOfText"
      summary="Switch Access Menu Action: Move Down One Line Of Text"/>
  <variant name="MoveForwardOneCharOfText"
      summary="Switch Access Menu Action: Move Forward One Char Of Text"/>
  <variant name="MoveForwardOneWordOfText"
      summary="Switch Access Menu Action: Move Forward One Word Of Text"/>
  <variant name="MoveUpOneLineOfText"
      summary="Switch Access Menu Action: Move Up One Line Of Text"/>
  <variant name="Paste" summary="Switch Access Menu Action: Paste"/>
  <variant name="PointScan" summary="Switch Access Menu Action: Point Scan"/>
  <variant name="RightClick" summary="Switch Access Menu Action: Right Click"/>
  <variant name="ScrollDown" summary="Switch Access Menu Action: Scroll Down"/>
  <variant name="ScrollLeft" summary="Switch Access Menu Action: Scroll Left"/>
  <variant name="ScrollRight"
      summary="Switch Access Menu Action: Scroll Right"/>
  <variant name="ScrollUp" summary="Switch Access Menu Action: Scroll Up"/>
  <variant name="Select" summary="Switch Access Menu Action: Select"/>
  <variant name="Settings" summary="Switch Access Menu Action: Settings"/>
  <variant name="Shortcuts" summary="Switch Access Menu Action: Shortcuts"/>
  <variant name="StartRecording"
      summary="Switch Access Menu Action: Start Recording"/>
  <variant name="StartTextSelection"
      summary="Switch Access Menu Action: Start Text Selection"/>
  <variant name="StopRecording"
      summary="Switch Access Menu Action: Stop Recording"/>
  <variant name="SystemDiagnostics"
      summary="Switch Access Menu Action: System Diagnostics"/>
  <variant name="SystemHelp" summary="Switch Access Menu Action: System Help"/>
  <variant name="SystemLauncher"
      summary="Switch Access Menu Action: System Launcher"/>
  <variant name="SystemMenu" summary="Switch Access Menu Action: System Menu"/>
  <variant name="SystemScreenshot"
      summary="Switch Access Menu Action: System Screenshot"/>
  <variant name="SystemStatusBar"
      summary="Switch Access Menu Action: System Status Bar"/>
  <variant name="SystemTaskManager"
      summary="Switch Access Menu Action: System Task Manager"/>
  <variant name="UserLock" summary="Switch Access Menu Action: User Lock"/>
  <variant name="UserMenu" summary="Switch Access Menu Action: User Menu"/>
  <variant name="UserNextUser"
      summary="Switch Access Menu Action: User Next User"/>
  <variant name="UserPreviousUser"
      summary="Switch Access Menu Action: User Previous User"/>
  <variant name="UserSignOut"
      summary="Switch Access Menu Action: User Sign Out"/>
  <variant name="WebBookmark"
      summary="Switch Access Menu Action: Web Bookmark"/>
  <variant name="WebBottomOfPage"
      summary="Switch Access Menu Action: Web Bottom Of Page"/>
  <variant name="WebClearHistory"
      summary="Switch Access Menu Action: Web Clear History"/>
  <variant name="WebDownloads"
      summary="Switch Access Menu Action: Web Downloads"/>
  <variant name="WebFindInPage"
      summary="Switch Access Menu Action: Web Find In Page"/>
  <variant name="WebMenu" summary="Switch Access Menu Action: Web Menu"/>
  <variant name="WebTopOfPage"
      summary="Switch Access Menu Action: Web Top Of Page"/>
</variants>

<histogram name="Accessibility.ActiveTime" units="ms"
    expires_after="2024-02-04">
  <owner>aleventhal@chromium.org</owner>
  <owner>janewman@microsoft.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    The amount of time accessibility was enabled and actively used. Reported
    when we switch states from active to inactive.
  </summary>
</histogram>

<histogram
    name="Accessibility.Android.AutoDisableV2.{CurrentState}Time.{CallType}"
    units="ms" expires_after="2024-02-25">
  <owner>mschillaci@google.com</owner>
  <owner>aldietz@google.com</owner>
  <owner>dtseng@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Tracks the amount of time (in ms) that the accessibility engine was
    {CurrentState} before {CallType}. This is recorded either at the start of
    the onDisabled callback, or immediately before the call to
    reEnableRendererAccessibility.
  </summary>
  <token key="CurrentState">
    <variant name="Disabled" summary="disabled"/>
    <variant name="Enabled" summary="enabled"/>
  </token>
  <token key="CallType">
    <variant name="Initial"
        summary="the initial call to the onDisable or
                 reEnableRendererAccessibility methods. Can only be recorded
                 once per instance."/>
    <variant name="Successive"
        summary="a subsequent call to the onDisable or
                 reEnableRendererAccessibility methods. Can be recorded up to
                 3 times per instance."/>
  </token>
</histogram>

<histogram
    name="Accessibility.Android.AutoDisableV2.{MethodCall}Called.{CallType}"
    units="count" expires_after="2024-02-25">
  <owner>mschillaci@google.com</owner>
  <owner>aldietz@google.com</owner>
  <owner>dtseng@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Tracks when the Auto-disable Accessibility feature changes the state of the
    accessibility engine by calling {MethodCall}. This is {CallType}.
  </summary>
  <token key="MethodCall">
    <variant name="Disable" summary="the onDisabled callback"/>
    <variant name="ReEnable" summary="reEnableRendererAccessibility"/>
  </token>
  <token key="CallType">
    <variant name="Initial"
        summary="the initial call to the onDisable or
                 reEnableRendererAccessibility methods. Can only be recorded
                 once per instance."/>
    <variant name="Successive"
        summary="a subsequent call to the onDisable or
                 reEnableRendererAccessibility methods. Can be recorded up to
                 3 times per instance."/>
  </token>
</histogram>

<histogram name="Accessibility.Android.Cache.MaxNodesInCache" units="count"
    expires_after="2024-02-04">
  <owner>mschillaci@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Tracks the maximum number of AccessibilityNodeInfo objects that were stored
    in the Java-side cache during a single session.
  </summary>
</histogram>

<histogram name="Accessibility.Android.Cache.PercentageRetrievedFromCache"
    units="%" expires_after="2024-02-04">
  <owner>mschillaci@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Tracks the percentage of calls from the Android framework to create a new
    AccessibilityNodeInfo object that were serviced from the cache rather than
    constructing the object from scratch during a single session.
  </summary>
</histogram>

<histogram name="Accessibility.Android.OnDemand.EventsDropped" units="count"
    expires_after="2024-02-04">
  <owner>mschillaci@google.com</owner>
  <owner>abigailbklein@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Tracks the number of AccessibilityEvents dropped when the OnDemand
    accessibility services feature is enabled. Recorded at the end of a session.
  </summary>
</histogram>

<histogram name="Accessibility.Android.OnDemand.OneHundredPercentEventsDropped"
    units="count" expires_after="2024-02-05">
  <owner>mschillaci@google.com</owner>
  <owner>abigailbklein@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Tracks the number of AccessibilityEvents dropped when the OnDemand
    accessibility services feature is enabled, and when the total percentage of
    dropped events is 100%. Recorded at the end of a session.
  </summary>
</histogram>

<histogram
    name="Accessibility.Android.OnDemand.OneHundredPercentEventsDropped.{AXMode}"
    units="count" expires_after="2024-02-20">
  <owner>mschillaci@google.com</owner>
  <owner>abigailbklein@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Tracks the number of AccessibilityEvents dropped when the OnDemand
    accessibility services feature is enabled, and the
    AccessibilityPerformanceFiltering feature is enabled, and the number of
    events dropped is 100%. Tracks for when the AXMode is set to {AXMode}.
    Recorded at the end of a session. Updated in M114 to add FormControls
    variant.
  </summary>
  <token key="AXMode">
    <variant name="Basic"
        summary="kAXModeBasic - Includes only NativeAPIs and WebContents"/>
    <variant name="Complete"
        summary="kAXModeComplete - Includes NativeAPIs, WebContents,
                 InlineTextBoxes, ScreenReader, and HTML"/>
    <variant name="FormControls"
        summary="kAXModeFormControls - Includes only NativeAPIs, WebContents,
                 HTML, and ExperimentalFormControls"/>
  </token>
</histogram>

<histogram name="Accessibility.Android.OnDemand.PercentageDropped" units="%"
    expires_after="2024-02-05">
  <owner>mschillaci@google.com</owner>
  <owner>abigailbklein@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Tracks the percentage of AccessibilityEvents dropped when the OnDemand
    accessibility services feature is enabled. Recorded at the end of a session.
  </summary>
</histogram>

<histogram name="Accessibility.Android.OnDemand.PercentageDropped.{AXMode}"
    units="%" expires_after="2024-02-20">
  <owner>mschillaci@google.com</owner>
  <owner>abigailbklein@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Tracks the percentage of AccessibilityEvents dropped when the OnDemand
    accessibility services feature is enabled, and the
    AccessibilityPerformanceFiltering feature is enabled. Tracks for when the
    AXMode is set to {AXMode}. Recorded at the end of a session. Updated in M114
    to add FormControls variant.
  </summary>
  <token key="AXMode">
    <variant name="Basic"
        summary="kAXModeBasic - Includes only NativeAPIs and WebContents"/>
    <variant name="Complete"
        summary="kAXModeComplete - Includes NativeAPIs, WebContents,
                 InlineTextBoxes, ScreenReader, and HTML"/>
    <variant name="FormControls"
        summary="kAXModeFormControls - Includes only NativeAPIs, WebContents,
                 HTML, and ExperimentalFormControls"/>
  </token>
</histogram>

<histogram name="Accessibility.Android.PageZoom.AppMenuEnabledState"
    enum="AccessibilityPageZoomAppMenuEnabledState" expires_after="2024-02-04">
  <owner>mschillaci@google.com</owner>
  <owner>aldietz@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Tracks the enabled state for the Page Zoom option on the main app menu. The
    state will be one of the following enumerated states: 0) not enabled, 1)
    enabled explicitly by the user on the Accessibility Page Zoom setting, 2)
    enabled automatically if the user has an Android OS-wide default font size,
    3) disabled explicitly by the user on the Accessibility Page Zoom setting.
    Recorded each time the app menu is opened.
  </summary>
</histogram>

<histogram name="Accessibility.Android.PageZoom.AppMenuSliderOpened"
    enum="Boolean" expires_after="2024-02-04">
  <owner>mschillaci@google.com</owner>
  <owner>aldietz@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Tracks whether the user opened the Page Zoom slider from the app menu
    option. Recorded each time the slider is opened from the app menu.
  </summary>
</histogram>

<histogram name="Accessibility.Android.PageZoom.AppMenuSliderZoomLevelChanged"
    enum="Boolean" expires_after="2024-02-04">
  <owner>mschillaci@google.com</owner>
  <owner>aldietz@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Tracks whether the user changed the individual page zoom level on at least
    one webpage from the app menu slider view. Recorded each time the slider is
    dismissed if the user changed the zoom level before dismissal.
  </summary>
</histogram>

<histogram name="Accessibility.Android.PageZoom.AppMenuSliderZoomLevelValue"
    units="%" expires_after="2024-02-04">
  <owner>mschillaci@google.com</owner>
  <owner>aldietz@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    For users who changed the individual page zoom level on at least one webpage
    from the app menu slider view, tracks what zoom level has been set on the
    page. Recorded each time the slider is dismissed if the user changed the
    zoom level before dismissal.
  </summary>
</histogram>

<histogram
    name="Accessibility.Android.PageZoom.SettingsDefaultZoomLevelChanged"
    enum="Boolean" expires_after="2024-02-04">
  <owner>mschillaci@google.com</owner>
  <owner>aldietz@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Tracks whether the user changed the default page zoom level from the
    Accessibility Page Zoom settings page. Recorded each time the user closes
    the Accessibility Page Zoom settings page if the user changed the zoom level
    while the settings page was showing.
  </summary>
</histogram>

<histogram name="Accessibility.Android.PageZoom.SettingsDefaultZoomLevelValue"
    units="%" expires_after="2024-02-04">
  <owner>mschillaci@google.com</owner>
  <owner>aldietz@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    For users who changed the default page zoom level from the Accessibility
    Page Zoom settings page, tracks what default zoom level has been set in the
    settings. Recorded each time the user closes the Accessibility Page Zoom
    settings page if the user changed the zoom level while the settings page was
    showing.
  </summary>
</histogram>

<histogram name="Accessibility.Android.ScreenReader{AccessibilityEveryReport}"
    enum="BooleanEnabled" expires_after="never">
<!-- expires-never: usage drives a11y prioritization in browser and content. -->

  <owner>aleventhal@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Tracks whether a screen reader is enabled on Android (e.g. Talkback). This
    is checked once, 45 seconds after startup. Note: prefer
    Accessibility.Android.ScreenReader.EveryReport when querying for unique
    users, as it is logged more frequently. {AccessibilityEveryReport}
  </summary>
  <token key="AccessibilityEveryReport" variants="AccessibilityEveryReport">
    <variant name=""/>
  </token>
</histogram>

<histogram name="Accessibility.Android.Usage.A11yAlwaysOn" units="ms"
    expires_after="2024-02-20">
  <owner>mschillaci@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Tracks the total amount of time that this WebContents spent in the
    foreground for usages with the native accessibility engine always
    initialized. That is, this is a measure of time spent on the web for users
    that always have an accessibility service running. Recorded when an instance
    is hidden per WebContentsObserver#wasHidden (e.g. backgrounded Chrome,
    opened a new Tab, went to Settings etc), and is equal to the time since the
    last call to WebContentsObserver#wasShown. This can be recorded multiple
    times for a single WebContents.
  </summary>
</histogram>

<histogram name="Accessibility.Android.Usage.{UsageType}" units="ms"
    expires_after="2024-02-20">
  <owner>mschillaci@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Tracks the total amount of time that this WebContents spent {UsageType}.
    Recorded when an instance is hidden per WebContentsObserver#wasHidden (e.g.
    backgrounded Chrome, opened a new Tab, went to Settings etc), and is equal
    to the time since the last call to WebContentsObserver#wasShown. This can be
    recorded multiple times for a single WebContents.
  </summary>
  <token key="UsageType">
    <variant name="Foreground" summary="in the foreground of the app"/>
    <variant name="NativeInit"
        summary="with the native accessibility code initialized"/>
  </token>
</histogram>

<histogram name="Accessibility.Android.UserFontSizePref.Change" units="%"
    expires_after="2024-01-14">
  <owner>twellington@chromium.org</owner>
  <owner>skym@chromium.org</owner>
  <summary>
    Records the current user font size pref when exiting accessibility settings
    if the preference was changed. The font size ranges from 50% to 200% and can
    be set in increments of 5%; the default is 100%.
  </summary>
</histogram>

<histogram name="Accessibility.Android.UserFontSizePref.OnStartup" units="%"
    expires_after="2024-03-17">
  <owner>twellington@chromium.org</owner>
  <owner>skym@chromium.org</owner>
  <summary>
    Records the current user font size pref during deferred startup for
    ChromeActivity. The font size ranges from 50% to 200% and can be set in
    increments of 5%; the default is 100%.
  </summary>
</histogram>

<histogram name="Accessibility.AndroidServiceInfo"
    enum="AccessibilityAndroidServiceInfoEnum" expires_after="M109">
  <owner>aleventhal@chromium.org</owner>
  <owner>mschillaci@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Deprecated as of 10/2022, M109. Now using the per-variant enum (below).
    Tracks flags and capabilities of enabled accessibility services. Recorded
    every time an Android web content view first creates a virtual view
    hierarchy, indicating that some accessibility service is running. The number
    of emits of this histogram won't be as useful as the unique user counts. The
    primary purpose of this is to guide optimization by determining what
    capabilities of accessibility services are widespread and which ones are
    relatively rare.
  </summary>
</histogram>

<histogram name="Accessibility.AndroidServiceInfo.{RunningApps}"
    enum="AccessibilityAndroidServiceInfoEnum" expires_after="2024-02-20">
  <owner>mschillaci@google.com</owner>
  <owner>aldietz@google.com</owner>
  <owner>dtseng@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Tracks events, flags, feedback and capabilities of enabled accessibility
    services separated into variants based on the types of running accessibility
    services. This information would be a subset of the (now deprecated)
    Accessibility.AndroidServiceInfo histogram. It will allow us to look at the
    same histograms but only for a subset of users (e.g. what are the requested
    flags etc of enabled accessibility services for clients running only a
    password manager).
  </summary>
  <token key="RunningApps">
    <variant name="ALL_VARIANTS"/>
    <variant name="ASSISTIVE_TECH"/>
    <variant name="ASSISTIVE_TECH_WITH_PASSWORD_MANAGER"/>
    <variant name="ASSISTIVE_TECH_WITH_UNKNOWN"/>
    <variant name="PASSWORD_MANAGER"/>
    <variant name="PASSWORD_MANAGER_WITH_UNKNOWN"/>
    <variant name="UNKNOWN"/>
  </token>
</histogram>

<histogram name="Accessibility.ATK-APIs" enum="AccessibilityATKAPIEnum"
    expires_after="2024-03-10">
  <owner>jdiggs@chromium.org</owner>
  <owner>jkim@igalia.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Tracks usage of ATK APIs on Linux Desktop. Recorded when ATK APIs that are
    supposed to trigger AX mode enabled is called.
  </summary>
</histogram>

<histogram name="Accessibility.AutoDisabled.DisabledTime" units="ms"
    expires_after="2024-02-04">
  <owner>abigailbklein@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    The total amount of time accessibility was disabled due to being
    auto-disabled, before being enabled again.
  </summary>
</histogram>

<histogram name="Accessibility.AutoDisabled.EnabledTime" units="ms"
    expires_after="2024-02-04">
  <owner>abigailbklein@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    The total amount of time accessibility was enabled before being
    auto-disabled.
  </summary>
</histogram>

<histogram name="Accessibility.AutoDisabled.EventCount" units="count"
    expires_after="2024-02-04">
  <owner>abigailbklein@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    The number of user input events that were received within one time window,
    without any accompanying accessibility API usage, that triggered
    accessibility to be auto-disabled.
  </summary>
</histogram>

<histogram name="Accessibility.Bundle" enum="AccessibilityModeBundleEnum"
    expires_after="2024-02-01">
  <owner>kevers@chromium.org</owner>
  <owner>chrome-a11y-core@chromium.org</owner>
  <summary>
    Tracks when combinations of mode flags are set. Records when the mode flag
    changes and aligns with one of the common (named) flag bundles.
  </summary>
</histogram>

<histogram name="Accessibility.CaptionSettingsLoadedFromPrefs"
    enum="BooleanEnabled" expires_after="2024-08-07">
  <owner>evliu@google.com</owner>
  <owner>chrome-media-ux@google.com</owner>
  <summary>
    Whether custom caption settings were loaded from the user preferences.
    Recorded when WebKit preferences are overridden.
  </summary>
</histogram>

<histogram name="Accessibility.CaptionSettingsLoadedFromSystemSettings"
    enum="BooleanEnabled" expires_after="2024-08-07">
  <owner>evliu@google.com</owner>
  <owner>chrome-media-ux@google.com</owner>
  <summary>
    Whether custom caption settings were loaded from the system preferences.
    Recorded when WebKit preferences are overridden.
  </summary>
</histogram>

<histogram name="Accessibility.ChromeVox.PerformGestureType"
    enum="ChromeVoxGestureType" expires_after="2023-11-30">
  <owner>dtseng@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    A user can control ChromeVox via a variety of gestures on the touch screen.
    For example, swiping right with one finger causes ChromeVox to navigate to
    the next object. Track all possible gestures here.
  </summary>
</histogram>

<histogram name="Accessibility.CrosAlwaysShowA11yMenu" enum="BooleanEnabled"
    expires_after="2023-11-30">
  <owner>dtseng@chromium.org</owner>
  <owner>kenjibaheux@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether the Chrome OS Accessibility Menu is set to be shown regardless of
    the state of a11y features.(logged once 45 secs after startup).
  </summary>
</histogram>

<histogram name="Accessibility.CrosAutoclick" enum="BooleanEnabled"
    expires_after="2023-11-30">
  <owner>kenjibaheux@google.com</owner>
  <owner>dtseng@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether the Chrome OS Autoclick feature is on (logged once 45 secs after
    startup). Warning: this histogram was expired 2021-12-31 to 2022-07-07, data
    might be missing.
  </summary>
</histogram>

<histogram name="Accessibility.CrosAutoclick.TrayMenu.ChangeAction"
    enum="AutoclickActionType" expires_after="2024-03-24">
  <owner>katie@chromium.org</owner>
  <owner>dtseng@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Recorded when a user has picked a new autoclick action type from the bubble
    menu.
  </summary>
</histogram>

<histogram name="Accessibility.CrosCaretHighlight" enum="BooleanEnabled"
    expires_after="2024-02-04">
  <owner>dtseng@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether the Chrome OS caret highlighting is on (logged once 45 secs after
    startup).
  </summary>
</histogram>

<histogram name="Accessibility.CrosColorCorrection" enum="BooleanEnabled"
    expires_after="2024-06-14">
  <owner>katie@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether the Chrome OS color correction settings are on (logged once 45 secs
    after startup).
  </summary>
</histogram>

<histogram name="Accessibility.CrosColorCorrection.FilterAmount" units="%"
    expires_after="2024-06-14">
  <owner>katie@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    The color correction filter intensity chosen by the user. Logged once, 45
    seconds after startup. For how users adjust the setting from settings, see
    ChromeOS.Settings.Accessibility.ColorCorrection.FilterAmount, which logs
    each time the setting changes.
  </summary>
</histogram>

<histogram name="Accessibility.CrosColorCorrection.FilterType"
    enum="ColorCorrectionFilterTypes" expires_after="2024-06-14">
  <owner>katie@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    The color correction filter type chosen by the user. Logged once, 45 seconds
    after startup. For how users adjust the setting from settings, see
    ChromeOS.Settings.Accessibility.ColorCorrection.FilterType, which logs each
    time the setting changes.
  </summary>
</histogram>

<histogram name="Accessibility.CrosCursorColor" enum="BooleanEnabled"
    expires_after="2024-02-04">
  <owner>dtseng@chromium.org</owner>
  <owner>katie@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether the Chrome OS feature to colorize the cursor is enabled (logged once
    45 secs after startup).
  </summary>
</histogram>

<histogram name="Accessibility.CrosCursorHighlight" enum="BooleanEnabled"
    expires_after="2024-02-04">
  <owner>dtseng@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether the Chrome OS cursor highlighting is on (logged once 45 secs after
    startup).
  </summary>
</histogram>

<histogram name="Accessibility.CrosDictation" enum="BooleanEnabled"
    expires_after="2024-02-04">
  <owner>anastasi@google.com</owner>
  <owner>dtseng@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether the ChromeOS dictation feature is enabled (logged once 45 secs after
    startup).
  </summary>
</histogram>

<histogram name="Accessibility.CrosDictation.Language" enum="LocaleCodeISO639"
    expires_after="2024-02-04">
  <owner>katie@chromium.org</owner>
  <owner>dtseng@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    The language used for speech recognition in dictation on ChromeOS. This is
    logged each time Dictation is toggled on. From M99 to M104 this was logged
    using base::PersistantHash instead of base::HashMetricName; data from that
    period can be decoded using a map between the two hashing functions. See
    crbug.com/1342966.
  </summary>
</histogram>

<histogram
    name="Accessibility.CrosDictation.ListeningDuration.NetworkRecognition"
    units="ms" expires_after="2024-02-04">
  <owner>katie@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Duration that the network speech recognition service was listening for
    dictation. Recorded each time a user toggles dictation on until dictation is
    stopped, either by the user action, error, or timeout.
  </summary>
</histogram>

<histogram
    name="Accessibility.CrosDictation.ListeningDuration.OnDeviceRecognition"
    units="ms" expires_after="2023-11-30">
  <owner>katie@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Duration that the on-device speech recognition service was listening for
    dictation. Recorded each time a user toggles dictation on until dictation is
    stopped, either by the user action, error, or timeout.
  </summary>
</histogram>

<histogram name="Accessibility.CrosDictation.MacroFailed"
    enum="CrosDictationMacroName" expires_after="2023-11-30">
  <owner>akihiroota@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>Recorded whenever Dictation fails to perform a macro.</summary>
</histogram>

<histogram name="Accessibility.CrosDictation.MacroRecognized"
    enum="CrosDictationMacroName" expires_after="2024-02-04">
  <owner>akihiroota@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>Recorded whenever Dictation recognizes a macro.</summary>
</histogram>

<histogram name="Accessibility.CrosDictation.MacroSucceeded"
    enum="CrosDictationMacroName" expires_after="2023-11-30">
  <owner>akihiroota@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>Recorded whenever Dictation successfully performs a macro.</summary>
</histogram>

<histogram name="Accessibility.CrosDictation.PumpkinSucceeded"
    enum="BooleanUsage" expires_after="2023-11-30">
  <owner>akihiroota@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Records whether Pumpkin successfully parsed a command. This histogram is
    recorded each time Pumpkin is used to parse a command.
  </summary>
</histogram>

<histogram name="Accessibility.CrosDictation.ToggleDictationMethod"
    enum="CrosDictationToggleDictationMethod" expires_after="2024-02-04">
  <owner>anastasi@google.com</owner>
  <owner>dtseng@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>Records how users invoke Dictation.</summary>
</histogram>

<histogram name="Accessibility.CrosDictation.UsedOnDeviceSpeech"
    enum="BooleanUsage" expires_after="2023-11-30">
  <owner>katie@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    When Dictation was toggled on, records whether on-device speech recognition
    was used. If on-device recognition was not used, network speech was used.
  </summary>
</histogram>

<histogram name="Accessibility.CrosDictation.UsedPumpkin" enum="BooleanUsage"
    expires_after="2024-02-04">
  <owner>akihiroota@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Records whether Pumpkin was used to parse a command. If Pumpkin was not
    used, then regex parsing was used. This histogram is recorded each time
    Dictation parses a command.
  </summary>
</histogram>

<histogram name="Accessibility.CrosDockedMagnifier" enum="BooleanEnabled"
    expires_after="2024-02-04">
  <owner>dtseng@chromium.org</owner>
  <owner>katie@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether the Chrome OS Docked Magnifier feature is on (logged once 45 secs
    after startup).
  </summary>
</histogram>

<histogram name="Accessibility.CrosFocusHighlight" enum="BooleanEnabled"
    expires_after="2024-02-04">
  <owner>dtseng@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether the Chrome OS focus highlighting is on (logged once 45 secs after
    startup).
  </summary>
</histogram>

<histogram name="Accessibility.CrosHighContrast" enum="BooleanEnabled"
    expires_after="2024-02-04">
  <owner>dtseng@chromium.org</owner>
  <owner>kenjibaheux@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether the Chrome OS High Contrast mode feature is on (logged once 45 secs
    after startup).
  </summary>
</histogram>

<histogram name="Accessibility.CrosLargeCursor" enum="BooleanEnabled"
    expires_after="2024-02-04">
  <owner>dtseng@chromium.org</owner>
  <owner>kenjibaheux@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether the Chrome OS Large Cursor feature is on (logged once 45 secs after
    startup).
  </summary>
</histogram>

<histogram name="Accessibility.CrosLargeCursorSize" units="dip"
    expires_after="2023-11-30">
  <owner>sarakato@chromium.org</owner>
  <owner>dtseng@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Cursor size of the Chrome OS Large Cursor (logged once 45 secs after
    startup).
  </summary>
</histogram>

<histogram name="Accessibility.CrosScreenMagnifier" enum="BooleanEnabled"
    expires_after="2024-02-04">
  <owner>dtseng@chromium.org</owner>
  <owner>josiahk@google.com</owner>
  <owner>kenjibaheux@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether the Chrome OS Screen Magnifier feature is on (logged once 45 secs
    after startup).
  </summary>
</histogram>

<histogram name="Accessibility.CrosSelectToSpeak" enum="BooleanEnabled"
    expires_after="2024-02-04">
  <owner>dtseng@chromium.org</owner>
  <owner>katie@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether the Chrome OS select-to-speak is on (logged once 45 secs after
    startup).
  </summary>
</histogram>

<histogram name="Accessibility.CrosSelectToSpeak.BackgroundShading"
    enum="BooleanEnabled" expires_after="2024-03-24">
  <owner>katie@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether Select-to-Speak had background shading enabled when activated.
  </summary>
</histogram>

<histogram name="Accessibility.CrosSelectToSpeak.BubbleDismissMethod"
    enum="CrosSelectToSpeakActivationMethod" expires_after="2023-11-30">
  <owner>ajitnarayanan@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    When Select-to-speak is active, the user can dismiss the bubble menu in
    multiple ways: by clicking the cancel button on the Select-to-speak menu or
    using keyboard shortcuts. Track the methods here.
  </summary>
</histogram>

<histogram name="Accessibility.CrosSelectToSpeak.EnhancedNetworkVoices"
    enum="BooleanEnabled" expires_after="2024-02-04">
  <owner>ajitnarayanan@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether enhanced network TTS voices were enabled when Select-to-Speak was
    activated.
  </summary>
</histogram>

<histogram name="Accessibility.CrosSelectToSpeak.NavigationControls"
    enum="BooleanEnabled" expires_after="2024-02-04">
  <owner>ajitnarayanan@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether Select-to-Speak's navigation controls were on when activated.
  </summary>
</histogram>

<histogram name="Accessibility.CrosSelectToSpeak.OverrideSpeechRateMultiplier"
    enum="CrosSelectToSpeakOverrideSpeechRateMultiplier"
    expires_after="2023-11-30">
  <owner>ajitnarayanan@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    The multiplier with which the user overrode the speech rate setting in
    Select-to-Speak. By default, the global Text-to-Speech setting is used,
    which the user can temporarily override. The override multiplier is stored
    as a sparse histogram with values (100 * multiple). For example, a speech
    rate multiplier of 1.0 (default) will be seen as 100. Emitted once every
    time playback starts, including on resume after pause or change of
    selection.
  </summary>
</histogram>

<histogram name="Accessibility.CrosSelectToSpeak.ParagraphNavigationMethod"
    enum="CrosSelectToSpeakActivationMethod" expires_after="2023-11-30">
  <owner>ajitnarayanan@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    When Select-to-speak is active, the user can navigate between paragraphs in
    multiple ways: by clicking the navigation buttons on the Select-to-speak
    menu or using keyboard shortcuts. Track the methods here.
  </summary>
</histogram>

<histogram name="Accessibility.CrosSelectToSpeak.SentenceNavigationMethod"
    enum="CrosSelectToSpeakActivationMethod" expires_after="2023-11-30">
  <owner>ajitnarayanan@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    When Select-to-speak is active, the user can navigate between sentences in
    multiple ways: by clicking the navigation buttons on the Select-to-speak
    menu or using keyboard shortcuts. Track the methods here.
  </summary>
</histogram>

<histogram name="Accessibility.CrosSelectToSpeak.StartSpeechMethod"
    enum="CrosSelectToSpeakStartSpeechMethod" expires_after="2024-02-04">
  <owner>katie@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    A user may activate Select-to-Speak by holding down 'search' and clicking or
    dragging a region with the mouse, or by highlighting an area and using
    search + s to read just the highlighted area. Track the methods here.
  </summary>
</histogram>

<histogram name="Accessibility.CrosSelectToSpeak.StateChangeEvent"
    enum="CrosSelectToSpeakStateChangeEvent" expires_after="2024-02-04">
  <owner>katie@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    A user has tapped a button in the tray to change Select-to-Speak's state.
    The tap was interpreted by Select-to-Speak as a request to start selection,
    to cancel speech, or to cancel selection, depending on Select-to-Speak's
    internal state when the tap occured. This tracks when the button was tapped
    and the event that it generated.
  </summary>
</histogram>

<histogram name="Accessibility.CrosSelectToSpeak.TtsEngineUsed"
    enum="CrosSelectToSpeakTtsEngineUsed" expires_after="2024-02-04">
  <owner>ajitnarayanan@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Which TTS engine was used for making TTS requests from Select-to-speak. This
    is recorded every time a new speech request is made in Select-to-speak. Note
    that this is only recorded on the start of speech, so it is not recorded,
    for example, when the user resumes speech after pausing it.
  </summary>
</histogram>

<histogram
    name="Accessibility.CrosShelfNavigationButtonsInTabletModeChanged.OOBE"
    enum="BooleanEnabled" expires_after="2021-07-27">
  <owner>gzadina@google.com</owner>
  <owner>tbarzic@chromium.org</owner>
  <summary>
    The value for shelf navigation buttons setting set by the user during OOBE.
    The metric will be reported after the setting has been stable for 10
    seconds, or the OOBE screen in which the value can be set is closed (if the
    setting changes multiple times in quick succession, only the final value
    will be reported).
  </summary>
</histogram>

<histogram
    name="Accessibility.CrosShelfNavigationButtonsInTabletModeChanged.OsSettings"
    enum="BooleanEnabled" expires_after="2021-10-25">
  <owner>gzadina@google.com</owner>
  <owner>tbarzic@chromium.org</owner>
  <summary>
    The value for shelf navigation buttons setting set by the user in Chrome OS
    Settings page. The metric will be reported after the setting change has been
    stable for 10 seconds, or the settings window in which the value is set gets
    closed (if the setting changes multiple times in quick succession, only the
    final value will be reported).
  </summary>
</histogram>

<histogram name="Accessibility.CrosSpokenFeedback{AccessibilityEveryReport}"
    enum="BooleanEnabled" expires_after="2024-02-20">
  <owner>dtseng@chromium.org</owner>
  <owner>kenjibaheux@google.com</owner>
  <owner>aleventhal@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether the Chrome OS Spoken Feedback feature is on (logged once 45 secs
    after startup). Note: prefer Accessibility.CrosSpokenFeedback.EveryReport
    when querying for unique users, as it is logged more frequently.
    {AccessibilityEveryReport}
  </summary>
  <token key="AccessibilityEveryReport" variants="AccessibilityEveryReport">
    <variant name=""/>
  </token>
</histogram>

<histogram name="Accessibility.CrosStickyKeys" enum="BooleanEnabled"
    expires_after="2024-02-04">
  <owner>dtseng@chromium.org</owner>
  <owner>kenjibaheux@google.com</owner>
  <owner>tengs@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether the Chrome OS Sticky Keys feature is on (logged once 45 secs after
    startup).
  </summary>
</histogram>

<histogram name="Accessibility.CrosSwitchAccess" enum="BooleanEnabled"
    expires_after="2024-02-04">
  <owner>dtseng@chromium.org</owner>
  <owner>anastasi@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether the Chrome OS switch access is on (logged once 45 secs after
    startup).
  </summary>
</histogram>

<histogram name="Accessibility.CrosSwitchAccess.AutoScan" enum="BooleanEnabled"
    expires_after="2023-11-30">
  <owner>dtseng@chromium.org</owner>
  <owner>anastasi@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    The value of the Switch Access &quot;Auto Scan&quot; setting, logged
    immediately after toggling. This will show us how often users are turning
    the feature on, and how often they are turning it back off again.
  </summary>
</histogram>

<histogram name="Accessibility.CrosSwitchAccess.AutoScan.KeyboardSpeedMs"
    units="ms" expires_after="2023-11-30">
  <owner>dtseng@chromium.org</owner>
  <owner>anastasi@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Measures the user-set speed for scanning between keyboard keys in Switch
    Access, logged immediately after changing the setting. Values range from 1ms
    to 10000ms, in 100ms buckets.
  </summary>
</histogram>

<histogram name="Accessibility.CrosSwitchAccess.AutoScan.SpeedMs" units="ms"
    expires_after="2023-11-30">
  <owner>dtseng@chromium.org</owner>
  <owner>anastasi@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Measures the user-set speed for auto scanning between items in Switch
    Access, logged immediately after changing the setting. Values range from 1ms
    to 10000ms, in 100ms buckets.
  </summary>
</histogram>

<histogram name="Accessibility.CrosSwitchAccess.Error"
    enum="CrosSwitchAccessError" expires_after="2023-11-30">
  <owner>dtseng@chromium.org</owner>
  <owner>anastasi@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Switch Access error occurred. See CrosSwitchAccessError enum for error
    types.
  </summary>
</histogram>

<histogram name="Accessibility.CrosSwitchAccess.NextKeyCode" enum="KeyCode"
    expires_after="2023-11-30">
  <owner>dtseng@chromium.org</owner>
  <owner>anastasi@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Which key code user has assigned to the Next Action (e.g. 32 for the Space
    key)
  </summary>
</histogram>

<histogram name="Accessibility.CrosSwitchAccess.PreviousKeyCode" enum="KeyCode"
    expires_after="2023-11-30">
  <owner>dtseng@chromium.org</owner>
  <owner>anastasi@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Which key code user has assigned to the Previous Action (e.g. 32 for the
    Space key)
  </summary>
</histogram>

<histogram name="Accessibility.CrosSwitchAccess.SelectKeyCode" enum="KeyCode"
    expires_after="2023-11-30">
  <owner>dtseng@chromium.org</owner>
  <owner>anastasi@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Which key code user has assigned to the Select Action (e.g. 32 for the Space
    key)
  </summary>
</histogram>

<histogram name="Accessibility.CrosVirtualKeyboard" enum="BooleanEnabled"
    expires_after="2024-03-24">
  <owner>dtseng@chromium.org</owner>
  <owner>kenjibaheux@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether the Chrome OS Virtual Keyboard feature is on (logged once 45 secs
    after startup).
  </summary>
</histogram>

<histogram name="Accessibility.ExperimentalModeFlag.FormControls"
    enum="BooleanEnabled" expires_after="2024-02-04">
  <owner>aldietz@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Records whether the experimental form controls mode flag is set for the
    AXMode. Tracked when the experimental form controls mode flag is flipped to
    true. This flag is flipped automatically when software communicates with
    Chrome via accessibility APIs.

    As of M115, this flag should only be flipped on when the
    AccessibilityPerformanceFiltering feature is enabled.

    This is currently only used on Android OS.
  </summary>
</histogram>

<histogram name="Accessibility.FocusHighlight.ToggleEnabled"
    enum="BooleanEnabled" expires_after="never">
  <owner>aleventhal@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    The value of the &quot;show a quick focus highlight&quot; setting, logged
    immediately after toggling. This will show us how often users are turning
    the feature on, and how often they are turning it back off again.
  </summary>
</histogram>

<histogram name="Accessibility.ImageLabels" enum="BooleanEnabled"
    expires_after="2023-11-30">
  <obsolete>
    Logged on profile open, including for profiles that do not show web content.
    (For those profiles, this logged the value of disabled.) Replaced in M-107
    with Accessibility.ImageLabels2, which is similar but not logged for
    unnecessary profiles.
  </obsolete>
  <owner>katie@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether the Chrome accessibility image label setting is on. Logged once 45
    secs after profile open.
  </summary>
</histogram>

<histogram name="Accessibility.ImageLabels.Android" enum="BooleanEnabled"
    expires_after="2024-02-04">
  <owner>dtseng@chromium.org</owner>
  <owner>mschillaci@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether the Chrome accessibility image label setting is on for Android.
    Logged once 45 secs after profile open, which always happens when the
    browser starts.
  </summary>
</histogram>

<histogram name="Accessibility.ImageLabels.Android.DialogOption"
    enum="AccessibilityImageLabelModeAndroid" expires_after="2024-02-25">
  <owner>dtseng@chromium.org</owner>
  <owner>mschillaci@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    When a user opens the accessibility image label dialog on Android, records
    what option they select on user interaction.
  </summary>
</histogram>

<histogram name="Accessibility.ImageLabels.Android.OnlyOnWifi"
    enum="BooleanEnabled" expires_after="2024-02-04">
  <owner>dtseng@chromium.org</owner>
  <owner>mschillaci@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether the Chrome accessibility image label setting for Android is set to
    only be enabled on a Wi-Fi connection. Logged once 45 secs after profile
    open, which always happens when the browser starts.
  </summary>
</histogram>

<histogram name="Accessibility.ImageLabels.ModalDialogAccepted"
    enum="BooleanAccepted" expires_after="2024-02-04">
  <owner>katie@chromium.org</owner>
  <owner>dtseng@chromium.org</owner>
  <summary>
    Whether a user accepts or does not accept a modal dialog enabling the image
    labels option. If the user does not accept it this does not track whether
    they closed it with the negative button, the close button, or keyboard
    escape.
  </summary>
</histogram>

<histogram name="Accessibility.ImageLabels.PageLanguage" enum="LanguageName"
    expires_after="2024-02-04">
  <owner>katie@chromium.org</owner>
  <owner>dtseng@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    The language of a web page where image labels were requested, as detected by
    Chrome (not necessarily what language the page claims to be in).
  </summary>
</histogram>

<histogram name="Accessibility.ImageLabels.RequestLanguage" enum="LanguageName"
    expires_after="2024-02-04">
  <owner>katie@chromium.org</owner>
  <owner>dtseng@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    The language that was requested for image descriptions, based on the page
    language, the user's accept languages and top languages, and the server
    languages.
  </summary>
</histogram>

<histogram name="Accessibility.ImageLabels.{Result}By{Dimension}"
    units="pixels" expires_after="2024-02-20">
  <owner>dtseng@chromium.org</owner>
  <owner>mschillaci@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Counts the number of images that got a certain result from automatic image
    labeling (empty, error, or success), as a function of the function of one of
    the image's dimensions - either the min or the max dimension.
  </summary>
  <token key="Result">
    <variant name="Empty"/>
    <variant name="Error"/>
    <variant name="Success"/>
  </token>
  <token key="Dimension">
    <variant name="MaxDimension"/>
    <variant name="MinDimension"/>
  </token>
</histogram>

<histogram name="Accessibility.ImageLabels.{Result}By{Length}"
    units="characters" expires_after="2024-02-20">
  <owner>dtseng@chromium.org</owner>
  <owner>mschillaci@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Counts the number of images that got a certain result from automatic image
    labeling (empty, error, or success), as a function of the function of the
    length of the characters in the image's name - either the original name, or
    the name after removing stopwords.
  </summary>
  <token key="Result">
    <variant name="Empty"/>
    <variant name="Error"/>
    <variant name="Success"/>
  </token>
  <token key="Length">
    <variant name="NameLength"/>
    <variant name="NonStopNameLength"/>
  </token>
</histogram>

<histogram name="Accessibility.ImageLabels2" enum="BooleanEnabled"
    expires_after="2024-02-04">
  <owner>katie@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether the Chrome accessibility image label setting is on. Logged once 45
    secs after profile open. Only logged for regular profiles, Incognito
    profiles, and guest off-the-record profiles, as these are the only profiles
    that can display web content.
  </summary>
</histogram>

<histogram name="Accessibility.InactiveTime" units="ms"
    expires_after="2024-02-04">
  <owner>aleventhal@chromium.org</owner>
  <owner>abigailbklein@chromium.org</owner>
  <owner>janewman@microsoft.com</owner>
  <summary>
    The amount of time accessibility was enabled but not actively used. Reported
    when we switch states from inactive to active. This histogram will not be
    logged if the auto-disable accessibility feature is enabled.
  </summary>
</histogram>

<histogram name="Accessibility.iOS.NewLargerTextCategory" enum="BooleanHit"
    expires_after="2024-10-16">
  <owner>gambard@chromium.org</owner>
  <owner>rkgibson@google.com</owner>
  <summary>
    This metric is related to the Preferred Content Size chosen by the user. It
    is only recorded once per session. This is hit if the chosen category is not
    listed in the map defined in
    /ios/chrome/browser/shared/ui/util/dynamic_type_util.mm. In that case, we
    should update the code by adding an entry for the new category in that map.
    This is logged when the helper to returning the multiplier associated with
    the current preferred content size is called.
  </summary>
</histogram>

<histogram name="Accessibility.LanguageDetection.CountDetectionAttempted"
    units="count" expires_after="2023-11-30">
  <owner>chrishall@chromium.org</owner>
  <owner>dtseng@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    The number of nodes on this page for which language detection was attempted.
  </summary>
</histogram>

<histogram name="Accessibility.LanguageDetection.CountLabelled" units="count"
    expires_after="2023-11-30">
  <owner>chrishall@chromium.org</owner>
  <owner>dtseng@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    The number of nodes on this page for which a detected language was
    successfully assigned.
  </summary>
</histogram>

<histogram name="Accessibility.LanguageDetection.LangsPerPage" units="count"
    expires_after="2023-11-30">
  <owner>chrishall@chromium.org</owner>
  <owner>dtseng@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    The number of unique languages which were detected to be the most probable
    language for at least one node on the page, regardless of whether a detected
    language was assigned for that node.
  </summary>
</histogram>

<histogram name="Accessibility.LanguageDetection.PercentageLabelledWithTop"
    units="%" expires_after="2023-11-30">
  <owner>chrishall@chromium.org</owner>
  <owner>dtseng@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Of the nodes which had a detected language assigned, the percentage for
    which the assigned language was the language detected as having the highest
    probability.
  </summary>
</histogram>

<histogram name="Accessibility.LanguageDetection.PercentageLanguageDetected"
    units="%" expires_after="2024-02-04">
  <owner>chrishall@chromium.org</owner>
  <owner>dtseng@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Of the nodes for which language detection was attempted, the percentage for
    which a language was successfully assigned.
  </summary>
</histogram>

<histogram name="Accessibility.LanguageDetection.PercentageOverridden"
    units="%" expires_after="2023-11-30">
  <owner>chrishall@chromium.org</owner>
  <owner>dtseng@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Of the nodes for which a detected language was successfully assigned, the
    percentage where the assigned language differs from the author-provided
    language.
  </summary>
</histogram>

<histogram name="Accessibility.LiveCaption" enum="BooleanEnabled"
    expires_after="2023-11-30">
  <obsolete>
    Replaced in M-109 with the histogram Accessibility.LiveCaption2, which is
    similar but not logged for unnecessary profiles such as system profiles and
    unusual ChromeOS profiles (sign-in profile, etc.)
  </obsolete>
  <owner>katie@chromium.org</owner>
  <owner>abigailbklein@google.com</owner>
  <owner>evliu@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether the Live Caption feature is enabled. This is logged once when the
    Live Caption controller is initialized on platforms that support Live
    Caption.
  </summary>
</histogram>

<histogram name="Accessibility.LiveCaption.AudioPropertyChanged"
    enum="BooleanEnabled" expires_after="2023-11-30">
  <owner>katie@chromium.org</owner>
  <owner>abigailbklein@google.com</owner>
  <owner>evliu@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether the sample rate or channel count of a Live Caption audio stream
    changed midstream. This is logged once per audio stream on the destruction
    of the Cloud speech recognition client.
  </summary>
</histogram>

<histogram name="Accessibility.LiveCaption.CaptionBubbleError"
    enum="CaptionBubbleErrorType" expires_after="2024-02-04">
  <owner>abigailbklein@google.com</owner>
  <owner>evliu@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Records when the caption bubble displays an error. This is logged once each
    time the caption bubble model encounters an error.
  </summary>
</histogram>

<histogram name="Accessibility.LiveCaption.Duration.CaptionBubble{Visibility}2"
    units="ms" expires_after="2022-09-30">
  <obsolete>
    Deprecated as of 09/2022. Now using
    Accessibility.LiveCaption.Duration.CaptionBubble{Visibility}3 This metric
    measured the total speech recognition time not only for Live Caption but
    also for other applications that use SODA.
  </obsolete>
  <owner>abigailbklein@google.com</owner>
  <owner>evliu@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Measures how long SODA was running while the Live Caption UI was
    {Visibility}. Logged once on the destruction of the
    SpeechRecognitionRecognizerImpl.
  </summary>
  <token key="Visibility">
    <variant name="Hidden"
        summary="hidden. This might be because it was closed by user or
                 because there was an error passing transcriptions to the UI"/>
    <variant name="Visible" summary="visible and showing transcriptions"/>
  </token>
</histogram>

<histogram name="Accessibility.LiveCaption.Duration.CaptionBubble{Visibility}3"
    units="ms" expires_after="2024-02-20">
  <owner>abigailbklein@google.com</owner>
  <owner>evliu@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Measures how long SODA was running while the Live Caption UI was
    {Visibility}. Logged once on the destruction of the
    SpeechRecognitionRecognizerImpl.
  </summary>
  <token key="Visibility">
    <variant name="Hidden"
        summary="hidden. This might be because it was closed by user or
                 because there was an error passing transcriptions to the UI"/>
    <variant name="Visible" summary="visible and showing transcriptions"/>
  </token>
</histogram>

<histogram name="Accessibility.LiveCaption.EnableFrom{Entrypoint}"
    enum="BooleanEnabled" expires_after="2024-02-20">
  <owner>katie@chromium.org</owner>
  <owner>abigailbklein@google.com</owner>
  <owner>evliu@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Records when a user enables or disables the Live Caption feature from
    {Entrypoint}.
  </summary>
  <token key="Entrypoint">
    <variant name="GlobalMediaControls"
        summary="global media controls (Zenith)"/>
    <variant name="Settings" summary="chrome://settings"/>
  </token>
</histogram>

<histogram name="Accessibility.LiveCaption.ExpandBubble"
    enum="LiveCaptionExpandBubbleEvent" expires_after="2023-11-30">
  <owner>katie@chromium.org</owner>
  <owner>abigailbklein@google.com</owner>
  <owner>evliu@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Records when a user expands or collapses the Live Caption bubble.
  </summary>
</histogram>

<histogram name="Accessibility.LiveCaption.FeatureEnabled"
    enum="BooleanEnabled" expires_after="2023-11-30">
  <obsolete>
    Replaced in M-109 with the histogram
    Accessibility.LiveCaption.FeatureEnabled2, which is similar but not logged
    for unnecessary profiles such as system profiles and unusual ChromeOS
    profiles (sign-in profile, etc.)
  </obsolete>
  <owner>katie@chromium.org</owner>
  <owner>abigailbklein@google.com</owner>
  <owner>evliu@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether the Live Caption feature flag is enabled. This is logged once at the
    time of component registration.
  </summary>
</histogram>

<histogram name="Accessibility.LiveCaption.FeatureEnabled2"
    enum="BooleanEnabled" expires_after="2024-02-04">
  <owner>katie@chromium.org</owner>
  <owner>abigailbklein@google.com</owner>
  <owner>evliu@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether the Live Caption feature flag is enabled. This is logged once when
    the Live Caption controller is initialized.
  </summary>
</histogram>

<histogram name="Accessibility.LiveCaption.LiveCaptionPinBubbleEvent"
    enum="LiveCaptionPinBubbleEvent" expires_after="2023-11-30">
  <owner>abigailbklein@google.com</owner>
  <owner>evliu@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>Records when a user pins or unpins the Live Caption bubble.</summary>
</histogram>

<histogram name="Accessibility.LiveCaption.LoadSodaErrorCode"
    enum="WinGetLastError" expires_after="2024-02-04">
  <owner>abigailbklein@google.com</owner>
  <owner>evliu@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    The error code of a failed attempt to load the Speech On-Device API (SODA)
    binary. This is logged once for each media stream if the SODA binary failed
    to load on Windows.
  </summary>
</histogram>

<histogram name="Accessibility.LiveCaption.LoadSodaResult"
    enum="LoadSodaResult" expires_after="2024-02-04">
  <owner>abigailbklein@google.com</owner>
  <owner>evliu@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    The result of an attempt to load the Speech On-Device API (SODA) binary.
    This is logged once for each media stream when the SODA binary is loaded.
  </summary>
</histogram>

<histogram name="Accessibility.LiveCaption.MaskOffensiveWords" enum="Boolean"
    expires_after="2023-11-30">
  <owner>abigailbklein@google.com</owner>
  <owner>evliu@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Records when a user toggles the &quot;hide profanity&quot; option in
    settings.
  </summary>
</histogram>

<histogram name="Accessibility.LiveCaption.Session2"
    enum="LiveCaptionSessionEvent" expires_after="2024-02-04">
  <owner>katie@chromium.org</owner>
  <owner>abigailbklein@google.com</owner>
  <owner>evliu@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Logged when the Live Caption bubble appears and disappears. Stream start
    indicates when the bubble appears due to an audio session starting. Stream
    end indicates when the bubble disappears due to a tab change, a navigation,
    or the audio session ending and the bubble fading out due to inactivity.
    Close button clicked indicates when the bubble disappears due to a user
    clicking the close button on the caption bubble.
  </summary>
</histogram>

<histogram
    name="Accessibility.LiveCaption.SodaVerificationFailureMissingIndicatorFile"
    enum="Boolean" expires_after="2024-02-04">
  <owner>abigailbklein@google.com</owner>
  <owner>evliu@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether the verification of the Speech On-Device API (SODA) component failed
    due to a mismatch of the component architecture. Logged once during the
    verification step of the SODA component installation on Windows only.
  </summary>
</histogram>

<histogram name="Accessibility.LiveCaption.SpeechRecognitionServiceLanguage"
    enum="SodaLanguageCode" expires_after="2023-11-30">
  <owner>evliu@google.com</owner>
  <owner>chrome-media-ux@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    The language code used to initialize the speech recognition service. Logged
    once when getting the Speech On-Device API (SODA) config path to use with
    the speech recognition service.
  </summary>
</histogram>

<histogram
    name="Accessibility.LiveCaption.{SodaLanguageCode}.SessionContainsRecognizedSpeech"
    enum="BooleanEnabled" expires_after="2024-02-01">
  <owner>evliu@google.com</owner>
  <owner>chrome-media-ux@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether the speech recognition session contains any recognized speech. This
    is logged once per media stream upon the destruction of the
    SpeechRecognitionRecognizerImpl.
  </summary>
  <token key="SodaLanguageCode" variants="SodaLanguageCode"/>
</histogram>

<histogram name="Accessibility.LiveCaption2" enum="BooleanEnabled"
    expires_after="2024-02-04">
  <owner>katie@chromium.org</owner>
  <owner>abigailbklein@google.com</owner>
  <owner>evliu@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether the Live Caption feature is enabled. This is logged once when the
    Live Caption controller is initialized on platforms that support Live
    Caption.
  </summary>
</histogram>

<histogram name="Accessibility.LiveTranslate.CharactersTranslated"
    units="count" expires_after="2024-08-14">
  <owner>evliu@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Records the number of characters sent to the translate service. Records once
    per session upon the destruction of the LiveCaptionSpeechRecognitionHost.
  </summary>
</histogram>

<histogram name="Accessibility.LiveTranslate.EnableFrom{Entrypoint}"
    enum="BooleanEnabled" expires_after="2024-08-14">
  <owner>evliu@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Records when a user enables or disables the Live Translate feature from
    {Entrypoint}. Warning: this histogram was expired from 2024-06-13 to
    2024-08-15; data may be missing.
  </summary>
  <token key="Entrypoint">
    <variant name="GlobalMediaControls"
        summary="global media controls (Zenith)"/>
    <variant name="Settings" summary="chrome://settings"/>
  </token>
</histogram>

<histogram name="Accessibility.LiveTranslate.SourceLanguage"
    enum="LocaleCodeISO639" expires_after="2024-08-14">
  <owner>evliu@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Records the source language of a request to the Cloud Translate service.
    Recorded once per call to the Cloud Translate service.
  </summary>
</histogram>

<histogram name="Accessibility.LiveTranslate.TargetLanguage"
    enum="LocaleCodeISO639" expires_after="2024-08-14">
  <owner>evliu@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Records the target language of a request to the Cloud Translate service.
    Recorded once per call to the Cloud Translate service.
  </summary>
</histogram>

<histogram name="Accessibility.Mac.ScreenReader{AccessibilityEveryReport}"
    enum="BooleanEnabled" expires_after="never">
<!-- expires-never: usage drives a11y prioritization in browser and content. -->

  <owner>aleventhal@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Tracks whether a screen reader is enabled on Mac (e.g. VoiceOver). This is
    logged once, 45 seconds after startup. Note: prefer
    Accessibility.Mac.ScreenReader.EveryReport when querying for unique users,
    as it is logged more frequently. {AccessibilityEveryReport}
  </summary>
  <token key="AccessibilityEveryReport" variants="AccessibilityEveryReport">
    <variant name=""/>
  </token>
</histogram>

<histogram name="Accessibility.ManuallyEnabled" enum="BooleanEnabled"
    expires_after="2024-02-04">
  <owner>aleventhal@chromium.org</owner>
  <owner>kenjibaheux@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether Chrome has enabled accessibility support because the user passed the
    --force-renderer-accessibility flag on the command-line (logged once 45 secs
    after startup).
  </summary>
</histogram>

<histogram name="Accessibility.ModeFlag" enum="AccessibilityModeFlagEnum"
    expires_after="2024-02-04">
  <owner>aleventhal@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether individual accessibility mode flags are set. Tracked when each mode
    flag is flipped from false to true. These flags are flipped automatically
    when software communicates with Chrome via accessibility APIs. Flags can
    only be flipped off by advanced users or for debugging using
    chrome://accessibility/ - and that isn't tracked in this histogram.
  </summary>
</histogram>

<histogram name="Accessibility.OOBEStartupSoundDelay" units="ms"
    expires_after="never">
<!-- expires-never: Core metric for monitoring OOBE accessibility status. -->

  <owner>jessejames@chromium.org</owner>
  <owner>rsorokin@chromium.org</owner>
  <owner>alemate@chromium.org</owner>
  <owner>cros-oac@google.com</owner>
  <summary>
    Delay between login_prompt_visible and Chrome OS OOBE startup sound
    playback. Depends on sound subsystem initialization time.
  </summary>
</histogram>

<histogram name="Accessibility.PDF.HasAccessibleText" enum="BooleanExists"
    expires_after="2024-02-04">
  <owner>dtseng@chromium.org</owner>
  <owner>nektar@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    When a PDF is constructed for accessibility, true if any page of the PDF
    contains any accessible text derived from a text run. Note that a PDF
    containing a mix of images and text will record true even though the images
    may themselves contain inaccessible text.
  </summary>
</histogram>

<histogram name="Accessibility.PdfOcr.ActiveWhenInaccessiblePdfOpened"
    enum="BooleanExists" expires_after="2024-02-01">
  <owner>kyungjunlee@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    When an inaccessible PDF is loaded, true if the PDF OCR feature was turned
    on to extract text from images; false if the PDF OCR feature was turned off
    and the feature notification was added to a PDF accessibility tree.
  </summary>
</histogram>

<histogram name="Accessibility.PdfOcr.InaccessiblePdfPageCount" units="count"
    expires_after="2024-06-01">
  <owner>kyungjunlee@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Records the number of pages in an inaccessible PDF when a PDF accessibility
    tree gets created for the PDF.
  </summary>
</histogram>

<histogram name="Accessibility.PdfOcr.MostDetectedLanguageInOcrData"
    enum="LocaleCodeISO639" expires_after="2024-06-01">
  <owner>kyungjunlee@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Records the language that is detected most in each OCR data when a PDF
    accessibility tree receives the OCR data from the OCR model.
  </summary>
</histogram>

<histogram name="Accessibility.PdfOcr.PDFImages" enum="PdfOcrRequestStatus"
    expires_after="2024-06-01">
  <owner>kyungjunlee@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Tracks the status of PDF OCR request per PDF image. It checks whether a PDF
    OCR request is sent to the OCR model or performed by the OCR model.

    This metric helps to measure whether the OCR model manages to respond to all
    requests successfully or whether the user closes a PDF without waiting for
    OCR process to be done.
  </summary>
</histogram>

<histogram name="Accessibility.PdfOcr.UserAcceptLanguage"
    enum="LocaleCodeISO639" expires_after="2024-06-01">
  <owner>kyungjunlee@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Records user accept languages when PDF OCR first runs for the always mode
    after user login; or whenever the user uses the once mode to extract text
    from a PDF file.
  </summary>
</histogram>

<histogram name="Accessibility.PdfOcr.UserSelection" enum="PdfOcrUserSelection"
    expires_after="2024-02-01">
  <owner>kyungjunlee@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Tracks the PDF OCR menu item that the user selects to turn on or off the PDF
    OCR feature.
  </summary>
</histogram>

<histogram
    name="Accessibility.Performance.AXObjectCacheImpl.RedundantSerializations"
    units="count" expires_after="2024-02-11">
  <owner>aleventhal@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Tracks how many Blink accessibility nodes are being redundantly serialized
    whenever the renderer process sends a batch of AXTreeUpdates to the browser
    process.

    Logged every time the document layout is clean and we need update the the
    accessibility tree.
  </summary>
</histogram>

<histogram name="Accessibility.Performance.AXTree.Destroy" units="ms"
    expires_after="2024-02-11">
  <owner>agarwaltushar@google.com</owner>
  <owner>olivierli@chromium.org</owner>
  <summary>
    Tracks time spent in AXTree::Destroy.

    The primary use is to measure the impact of https://crrev.com/c/3937946,
    which updates AXTree to internally use a std::map instead of a
    base::flat_map. Please see the CL description for more context and a
    performance profile.
  </summary>
</histogram>

<histogram
    name="Accessibility.Performance.BrowserAccessibilityManager::OnAccessibilityEvents"
    units="ms" expires_after="2024-02-04">
  <owner>aleventhal@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Tracks time spent on the browser main thread handling accessibility events
    sent from the renderer process and processed by BrowserAccessibilityManager.

    Accessibility.Performance.HandleAXEvents can still often record values when
    processing is relatively cheap because we exit before handing off the nodes
    to BrowserAccessibilityManager for various reasons (e.g. BFCache). This
    histogram only measures events which are processed by
    BrowserAccessibilityManager and thus should have a better histogram to
    understand the cost of doing so, and be used to meaure optimizations.
  </summary>
</histogram>

<histogram name="Accessibility.Performance.HandleAXEvents" units="ms"
    expires_after="2024-02-04">
  <owner>aleventhal@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Tracks time spent on the browser main thread handling accessibility events
    sent from the renderer process. Logged each time the method is run without
    returning early.
  </summary>
</histogram>

<histogram name="Accessibility.Performance.ProcessDeferredAccessibilityEvents"
    units="ms" expires_after="2024-02-04">
  <owner>aleventhal@chromium.org</owner>
  <owner>janewman@microsoft.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Tracks time spent on the render process processing deferred accessibility
    events. Logged each time the method is run during the accessbility document
    lifecycle.
  </summary>
</histogram>

<histogram name="Accessibility.Performance.SendPendingAccessibilityEvents"
    units="ms" expires_after="2024-02-04">
  <owner>aleventhal@chromium.org</owner>
  <owner>janewman@microsoft.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Tracks time spent on the render process sending pending accessibility
    events. Logged each time the method is run without returning early.
  </summary>
</histogram>

<histogram name="Accessibility.Performance.Tree.Unserialize" units="ms"
    expires_after="2024-02-04">
  <owner>aleventhal@chromium.org</owner>
  <owner>janewman@microsoft.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Tracks time spent on the browser process unserializing accessibility
    updates. Logged each time the method is run without returning early.
  </summary>
</histogram>

<histogram name="Accessibility.Performance.WinAPIs.{API}" units="microseconds"
    expires_after="2024-02-20">
  <owner>aleventhal@chromium.org</owner>
  <owner>kschmi@microsoft.com</owner>
  <owner>janewman@microsoft.com</owner>
  <owner>dlibby@microsoft.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Tracks time taken to execute the public Windows API that {API}. This is
    recorded for all Windows users that call into our public APIs.

    Warning: This metric may include reports from clients with low-resolution
    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
    will cause this metric to have an abnormal distribution. When considering
    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
    solution.
  </summary>
  <token key="API">
    <variant name="UMA_API_ELEMENT_PROVIDER_FROM_POINT"
        summary="finds a node given a point."/>
    <variant name="UMA_API_GET_BOUNDINGRECTANGLE"
        summary="gets the bounding rectangle of a node."/>
    <variant name="UMA_API_GET_PATTERN_PROVIDER"
        summary="retrieves an object that provides support for the given
                 control pattern."/>
    <variant name="UMA_API_GET_PROPERTY_VALUE"
        summary="gets the value of the specified property."/>
    <variant name="UMA_API_NAVIGATE"
        summary="navigates by one node in the given direction."/>
    <variant name="UMA_API_TEXT_RANGEFROMPOINT"
        summary="gets the text range under the given point."/>
    <variant name="UMA_API_TEXTRANGE_COMPARE"
        summary="compares two text ranges"/>
    <variant name="UMA_API_TEXTRANGE_COMPAREENDPOINTS"
        summary="compares two endpoints"/>
    <variant name="UMA_API_TEXTRANGE_EXPANDTOENCLOSINGUNIT"
        summary="expands or contracts the text range to given unit."/>
    <variant name="UMA_API_TEXTRANGE_FINDATTRIBUTE"
        summary="searches for an attribute within text range."/>
    <variant name="UMA_API_TEXTRANGE_FINDTEXT"
        summary="searches for given text within the text range."/>
    <variant name="UMA_API_TEXTRANGE_GETATTRIBUTEVALUE"
        summary="gets the value of the given attribute."/>
    <variant name="UMA_API_TEXTRANGE_GETBOUNDINGRECTANGLES"
        summary="gets the bounding rectanges of a text range."/>
    <variant name="UMA_API_TEXTRANGE_GETCHILDREN"
        summary="gets all children within a text range."/>
    <variant name="UMA_API_TEXTRANGE_GETENCLOSINGELEMENT"
        summary="gets the element that encloses the text range."/>
    <variant name="UMA_API_TEXTRANGE_GETTEXT"
        summary="gets the text within a text range."/>
    <variant name="UMA_API_TEXTRANGE_MOVE"
        summary="moves the text range by the given amount."/>
    <variant name="UMA_API_TEXTRANGE_MOVEENDPOINTBYUNIT"
        summary="moves endpoint by the given unit."/>
    <variant name="UMA_API_TEXTRANGE_MOVEENPOINTBYRANGE"
        summary="moves endpoint by the given range."/>
  </token>
</histogram>

<histogram name="Accessibility.ReadAnything.Color" enum="ReadAnythingColor"
    expires_after="2024-02-04">
  <owner>abigailbklein@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Records the user-chosen color theme for the Read Anything panel.
  </summary>
</histogram>

<histogram name="Accessibility.ReadAnything.EmptyState"
    enum="ReadAnythingEmptyState" expires_after="2024-02-04">
  <owner>abigailbklein@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Records when the Read Anything panel displays the empty state and whether a
    user does a selection after it's shown.
  </summary>
</histogram>

<histogram name="Accessibility.ReadAnything.FontName"
    enum="ReadAnythingFontName" expires_after="2024-02-04">
  <owner>abigailbklein@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Records the user-chosen font name for the Read Anything panel.
  </summary>
</histogram>

<histogram name="Accessibility.ReadAnything.FontScale" units="em"
    expires_after="2024-02-04">
  <owner>abigailbklein@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Records the user-chosen font scale for the Read Anything panel.
  </summary>
</histogram>

<histogram name="Accessibility.ReadAnything.Language" enum="LocaleCodeISO639"
    expires_after="2024-02-04">
  <owner>abigailbklein@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Records the language of the web page shown in Read Anything after the
    corresponding AXTree is distilled.
  </summary>
</histogram>

<histogram name="Accessibility.ReadAnything.LetterSpacing"
    enum="ReadAnythingLetterSpacing" expires_after="2024-02-04">
  <owner>abigailbklein@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Records the user-chosen letter spacing for the Read Anything panel.
  </summary>
</histogram>

<histogram name="Accessibility.ReadAnything.LineSpacing"
    enum="ReadAnythingLineSpacing" expires_after="2024-02-04">
  <owner>abigailbklein@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Records the user-chosen line spacing for the Read Anything panel.
  </summary>
</histogram>

<histogram name="Accessibility.ReadAnything.MergedDistillationTime.{Result}"
    units="ms" expires_after="2024-02-20">
  <owner>abigailbklein@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Records the time taken to distill a web page using the merged algorithm that
    combines results from the rules based algorithm and the ML model. Refer to
    AXTreeDistiller::Distill for details.
  </summary>
  <token key="Result">
    <variant name="Failure" summary="has failed"/>
    <variant name="Success" summary="has succeeded"/>
  </token>
</histogram>

<histogram name="Accessibility.ReadAnything.RulesDistillationTime.{Result}"
    units="ms" expires_after="2024-02-20">
  <owner>abigailbklein@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Records the time taken to distill a web page using the rules based
    algorithm. Refer to AXTreeDistiller::DistillViaAlgorithm for details.
  </summary>
  <token key="Result">
    <variant name="Failure" summary="has failed"/>
    <variant name="Success" summary="has succeeded"/>
  </token>
</histogram>

<histogram name="Accessibility.ReadAnything.ScrollEvent"
    enum="ReadAnythingScrollEvent" expires_after="2024-02-04">
  <owner>abigailbklein@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>Records when a scroll happens.</summary>
</histogram>

<histogram name="Accessibility.ReadAnything.SettingsChange"
    enum="ReadAnythingSettingsChange" expires_after="2024-02-04">
  <owner>abigailbklein@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Records when the user changes a text style setting in the Read Anything
    panel.
  </summary>
</histogram>

<histogram name="Accessibility.Reliability.Tree.UnserializeError"
    enum="AccessibilityTreeUnserializeError" expires_after="2023-11-30">
  <owner>aleventhal@chromium.org</owner>
  <owner>janewman@microsoft.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Tracks the type of failure that occured when unserializing the accessibility
    tree. When an error in unserialization occurs, this is emitted and
    unserialization aborts. In the case of a tree with multiple issues, only the
    first error is recorded. Refer to AXTree::Unserialize for details.
  </summary>
</histogram>

<histogram name="Accessibility.ScreenAI.AnnotateScreenshotTime.{Result}"
    units="ms" expires_after="2023-11-30">
  <owner>kyungjunlee@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Records the time taken to get a screenshot for ScreenAI visual annotator for
    cases where the action {Result}. It's being emitted each time whenever it
    gets or fails to get a screenshot for ScreenAI visual annotator. Refer to
    AXScreenAIAnnotator::OnScreenshotReceived for details.
  </summary>
  <token key="Result">
    <variant name="Failure" summary="has failed"/>
    <variant name="Success" summary="has succeeded"/>
  </token>
</histogram>

<histogram name="Accessibility.ScreenAI.Component.InstallRetries" units="count"
    expires_after="2024-05-01">
  <owner>rhalavati@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Records the number of times that the component installation has failed as
    DLC service was busy and retried before successful install.
  </summary>
</histogram>

<histogram name="Accessibility.ScreenAI.Component.{Action}"
    enum="BooleanSuccess" expires_after="2024-05-01">
  <owner>rhalavati@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>Records success or failure of Screen AI component {Action}.</summary>
  <token key="Action">
    <variant name="Install" summary="install"/>
    <variant name="Uninstall" summary="uninstall"/>
  </token>
</histogram>

<histogram name="Accessibility.ScreenAI.LibraryLoadDetailedResultOnWindows"
    enum="WinGetLastError" expires_after="2024-02-04">
  <owner>rhalavati@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Records a Screen AI library load result on Windows. The result is recorded
    after initialization of Screen AI service and loading chrome_screen_ai.dll.
  </summary>
</histogram>

<histogram name="Accessibility.ScreenAI.LoadLibraryResult"
    enum="ScreenAILoadLibraryResult" expires_after="2023-11-30">
  <obsolete>
    Deprecated in May 2023 and replaced with several boolean histograms for
    different functionality initialization of the library. See
    Accessibility.ScreenAI.*.Initialized
  </obsolete>
  <owner>kyungjunlee@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Records whether it loads or fails to load necessary Screen AI libraries.
    It's being emitted when loading Screen AI libraries according to the
    configuration. Refer to ScreenAIService::LoadLibrary for details.
  </summary>
</histogram>

<histogram name="Accessibility.ScreenAI.OCR.ImageSize" units="count"
    expires_after="2023-11-30">
  <obsolete>
    Removed in July 2023 in favor of Accessibility.ScreenAI.OCR.ImageSize10M
    which has a higher max value.
  </obsolete>
  <owner>rhalavati@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Records the number of pixels in the passed image to OCR request.
  </summary>
</histogram>

<histogram name="Accessibility.ScreenAI.OCR.ImageSize10M" units="count"
    expires_after="2023-11-30">
  <owner>rhalavati@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Records the number of pixels in the passed image to OCR request.
  </summary>
</histogram>

<histogram name="Accessibility.ScreenAI.OCR.Time" units="ms"
    expires_after="2024-02-04">
  <owner>rhalavati@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>Records how long an OCR request in Screen AI service takes.</summary>
</histogram>

<histogram name="Accessibility.ScreenAI.Screen2xDistillationTime.{Result}"
    units="ms" expires_after="2024-02-20">
  <owner>abigailbklein@google.com</owner>
  <owner>rhalavati@google.com</owner>
  <owner>kyungjunlee@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Records the time taken to distill a web page for cases where the action
    {Result}. It's being emitted each time whenever it distills or fails to
    distill a page. for Screen2x. Refer to
    ScreenAIService::ExtractMainContentInternal for details.
  </summary>
  <token key="Result">
    <variant name="Failure" summary="has failed"/>
    <variant name="Success" summary="has succeeded"/>
  </token>
</histogram>

<histogram name="Accessibility.ScreenAI.VisualAnnotator.NodesCount"
    units="count" expires_after="2024-03-10">
  <owner>kyungjunlee@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Records the number of annotations produced by ScreenAI visual annotator.
    It's being emitted whenever getting annotations from ScreenAI visual
    annotator.
  </summary>
</histogram>

<histogram name="Accessibility.ScreenAI.{Step}.Initialized"
    enum="BooleanSuccess" expires_after="2024-05-01">
  <owner>rhalavati@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Records if initialization of {Step} in Screen AI service was successful or
    not.
  </summary>
  <token key="Step">
    <variant name="Library" summary="library general functionalities"/>
    <variant name="MainContentExtraction"
        summary="Main Content Extraction functionality"/>
    <variant name="OCR" summary="OCR functionality"/>
  </token>
</histogram>

<histogram name="Accessibility.VTTContainsStyleBlock" enum="BooleanEnabled"
    expires_after="2024-08-07">
  <owner>evliu@google.com</owner>
  <owner>chrome-media-ux@google.com</owner>
  <summary>
    Whether a VTT file contains an embedded style block. Recorded when a VTT
    file is parsed.
  </summary>
</histogram>

<histogram name="Accessibility.WebSpeech.Duration" units="ms"
    expires_after="2024-02-25">
  <owner>evliu@google.com</owner>
  <owner>chrome-media-ux@google.com</owner>
  <summary>
    Measures the duration of a call to the WebSpeech API. Recorded once per call
    to the Open Speech API that powers the WebSpeech API.
  </summary>
</histogram>

<histogram name="Accessibility.WinAPIs" enum="AccessibilityWinAPIEnum"
    expires_after="2024-02-04">
  <owner>aleventhal@chromium.org</owner>
  <owner>nektar@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>Tracks usage of all public Windows accessibility APIs.</summary>
</histogram>

<histogram name="Accessibility.WinAPIs.GetPropertyValue"
    enum="AccessibilityWinAPIGetPropertyValueEnum" expires_after="2023-11-30">
  <owner>aleventhal@chromium.org</owner>
  <owner>nektar@chromium.org</owner>
  <owner>dlibby@microsoft.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Tracks properties requested via UI Automation GetPropertyValue().
  </summary>
</histogram>

<histogram name="Accessibility.WinJAWS{AccessibilityEveryReport}"
    enum="BooleanEnabled" expires_after="never">
<!-- expires-never: usage drives a11y prioritization in browser and content. -->

  <owner>kenjibaheux@google.com</owner>
  <owner>aleventhal@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether the third-party JAWS screen reader is running (logged once 45 secs
    after startup). Note: prefer Accessibility.WinJAWS.EveryReport when querying
    for unique users, as it is logged more frequently.
    {AccessibilityEveryReport}
  </summary>
  <token key="AccessibilityEveryReport" variants="AccessibilityEveryReport">
    <variant name=""/>
  </token>
</histogram>

<histogram name="Accessibility.WinNVDA{AccessibilityEveryReport}"
    enum="BooleanEnabled" expires_after="never">
<!-- expires-never: usage drives a11y prioritization in browser and content. -->

  <owner>kenjibaheux@google.com</owner>
  <owner>aleventhal@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether the third-party NVDA screen reader is running (logged once 45 secs
    after startup). Note: prefer Accessibility.WinNVDA.EveryReport when querying
    for unique users, as it is logged more frequently.
    {AccessibilityEveryReport}
  </summary>
  <token key="AccessibilityEveryReport" variants="AccessibilityEveryReport">
    <variant name=""/>
  </token>
</histogram>

<histogram name="Accessibility.WinScreenReader2{AccessibilityEveryReport}"
    enum="BooleanEnabled" expires_after="never">
<!-- expires-never: usage drives a11y prioritization in browser and content. -->

  <owner>aleventhal@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether the accessibility mode flag shows that a screen reader is running
    (logged once 45 secs after startup). In this case, Chrome has detected
    accessibility calls that would normally only occur from a screen reader. See
    also the more specific metrics such as Accessibility.WinJAWS/WinNVDA. Note:
    prefer Accessibility.WinScreenReader2.EveryReport when querying for unique
    users, as it is logged more frequently. {AccessibilityEveryReport}
  </summary>
  <token key="AccessibilityEveryReport" variants="AccessibilityEveryReport">
    <variant name=""/>
  </token>
</histogram>

<histogram name="Accessibility.WinStickyKeys" enum="BooleanEnabled"
    expires_after="never">
<!-- expires-never: usage drives a11y prioritization in browser and content. -->

  <owner>kenjibaheux@google.com</owner>
  <owner>aleventhal@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether Windows system settings show that Sticky Keys are enabled.
  </summary>
</histogram>

<histogram name="Accessibility.WinSupernova{AccessibilityEveryReport}"
    enum="BooleanEnabled" expires_after="never">
<!-- expires-never: usage drives a11y prioritization in browser and content. -->

  <owner>kenjibaheux@google.com</owner>
  <owner>aleventhal@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether the third-party Supernova screen reader is running (logged once 45
    secs after startup). Note: prefer Accessibility.Supernova.EveryReport when
    querying for unique users, as it is logged more frequently.
    {AccessibilityEveryReport}
  </summary>
  <token key="AccessibilityEveryReport" variants="AccessibilityEveryReport">
    <variant name=""/>
  </token>
</histogram>

<histogram name="Accessibility.WinZoomText{AccessibilityEveryReport}"
    enum="BooleanEnabled" expires_after="never">
<!-- expires-never: usage drives a11y prioritization in browser and content. -->

  <owner>kenjibaheux@google.com</owner>
  <owner>aleventhal@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Whether the third-party ZoomText screen magnifier is running. Note: prefer
    Accessibility.WinZoomText.EveryReport when querying for unique users, as it
    is logged more frequently. {AccessibilityEveryReport}
  </summary>
  <token key="AccessibilityEveryReport" variants="AccessibilityEveryReport">
    <variant name=""/>
  </token>
</histogram>

<histogram name="DomDistiller.InfoBarUsage" enum="BooleanUsage"
    expires_after="2023-06-25">
  <obsolete>
    Deprecated in January 2023 as part of message post-launch cleanup since the
    messages system records dismissal reasons using
    Android.Messages.Dismissed.ReaderMode.
  </obsolete>
  <owner>mdjones@chromium.org</owner>
  <summary>
    &quot;Used&quot; is recorded when the user clicks the infobar to enter
    Reader Mode. &quot;Not Used&quot; is recorded when the user clicks the close
    button. If there's no user action, nothing is recorded.
  </summary>
</histogram>

<histogram name="DomDistiller.MessageDismissalCondition"
    enum="ReaderModeMessageDismissalCondition" expires_after="2023-09-10">
  <owner>twellington@chromium.org</owner>
  <owner>aishwaryarj@google.com</owner>
  <summary>
    Records whether the user accepted or ignored/dismissed the Reader Mode
    message prompt in conjunction with the Reader Mode accessibility setting.
    Recorded for Android only.
  </summary>
</histogram>

<histogram name="DomDistiller.PageHasDistilledData"
    enum="BooleanHasDistilledData" expires_after="M85">
  <owner>kuan@chromium.org</owner>
  <summary>Records whether a page has distilled data.</summary>
</histogram>

<histogram name="DomDistiller.ReaderMode.EntryPoint"
    enum="ReaderModeEntryPoint" expires_after="2023-11-30">
  <owner>katie@chromium.org</owner>
  <owner>gilmanmh@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>The method a user used to enter reader mode on an article.</summary>
</histogram>

<histogram name="DomDistiller.ReaderMode.ExitPoint" enum="ReaderModeEntryPoint"
    expires_after="2023-11-30">
  <owner>katie@chromium.org</owner>
  <owner>gilmanmh@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    The method a user used to exit reader mode and return to the original
    article.
  </summary>
</histogram>

<histogram name="DomDistiller.ReaderShownForPageLoad" enum="Boolean"
    expires_after="2024-03-10">
  <owner>mdjones@chromium.org</owner>
  <summary>
    Records if the panel became visible at any point after a page was navigated.
  </summary>
</histogram>

<histogram name="DomDistiller.Statistics.FirstPageWordCount" units="words"
    expires_after="M85">
  <owner>mdjones@chromium.org</owner>
  <summary>
    Records the number of words in a distilled page. This only records the first
    page of a multi-page article.
  </summary>
</histogram>

<histogram name="DomDistiller.Statistics.WordCount" units="words"
    expires_after="M85">
  <obsolete>
    Removed in April 2023.
  </obsolete>
  <owner>nyquist@chromium.org</owner>
  <summary>
    Records the number of words in a distilled page. For articles with multiple
    pages, each page is counted separately.
  </summary>
</histogram>

<histogram name="DomDistiller.Time.ActivelyViewingArticleBeforeDistilling"
    units="ms" expires_after="2021-08-19">
  <obsolete>
    Removed in M118.
  </obsolete>
  <owner>katie@chromium.org</owner>
  <owner>chrome-a11y-core@chromium.org</owner>
  <summary>
    Records the amount of active time a user spent on a distillable page before
    switching that page to Reader Mode. Active time is time that the article was
    visible, not total time the page was open: the timer is paused when the page
    is not visible. This is not recorded when the user opens a distillable page
    but does not switch to Reader Mode from that page (via the omnibox icon or
    menu option).
  </summary>
</histogram>

<histogram name="DomDistiller.Time.ArticleProcessing" units="ms"
    expires_after="M77">
  <obsolete>
    Removed in April 2023.
  </obsolete>
  <owner>yfriedman@chromium.org</owner>
  <summary>
    Time spent in DomDistiller's identification of text content.
  </summary>
</histogram>

<histogram name="DomDistiller.Time.DistillationTotal" units="ms"
    expires_after="M85">
  <obsolete>
    Removed in April 2023.
  </obsolete>
  <owner>yfriedman@chromium.org</owner>
  <summary>Complete time spent in DomDistiller's processing of a page.</summary>
</histogram>

<histogram name="DomDistiller.Time.DistillPage" units="ms" expires_after="M77">
  <obsolete>
    Removed in April 2023.
  </obsolete>
  <owner>wychen@chromium.org</owner>
  <summary>
    Time spent in DistillPageImpl(), mostly ExecuteJavaScript(), including
    compilation and execution.
  </summary>
</histogram>

<histogram name="DomDistiller.Time.DocumentConstruction" units="ms"
    expires_after="M77">
  <obsolete>
    Removed in April 2023.
  </obsolete>
  <owner>yfriedman@chromium.org</owner>
  <summary>
    Time spent in creating DomDistiller's internal representation of the HTML
    document.
  </summary>
</histogram>

<histogram name="DomDistiller.Time.Formatting" units="ms" expires_after="M77">
  <obsolete>
    Removed in April 2023.
  </obsolete>
  <owner>yfriedman@chromium.org</owner>
  <summary>
    Time spent in DomDistiller's final processing of article content/formatting.
  </summary>
</histogram>

<histogram name="DomDistiller.Time.MarkupParsing" units="ms"
    expires_after="M77">
  <obsolete>
    Removed in April 2023.
  </obsolete>
  <owner>yfriedman@chromium.org</owner>
  <summary>
    Time spent in DomDistiller's processing of article metadata.
  </summary>
</histogram>

<histogram name="DomDistiller.Time.ViewerLoading" units="ms"
    expires_after="M77">
  <owner>wychen@chromium.org</owner>
  <summary>
    Records the time from the Reader Mode panel opening to the viewer loaded.
  </summary>
</histogram>

<histogram name="DomDistiller.Time.ViewingReaderModePage" units="ms"
    expires_after="2024-03-17">
  <owner>mdjones@chromium.org</owner>
  <summary>
    Records the amount of time a user spent on a Reader Mode Page.
  </summary>
</histogram>

<histogram name="PumpkinInstaller.InstallationSuccess" enum="BooleanSuccess"
    expires_after="2023-11-30">
  <owner>akihiroota@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Pumpkin installation is triggered when one of the features using Pumpkin
    (currently the only feature using Pumpkin is Dictation) are enabled. This
    histogram is recorded once when Pumpkin installation finishes with either
    success or failure.
  </summary>
</histogram>

<histogram name="SodaInstaller.BinaryInstallationFailureTime" units="ms"
    expires_after="2024-05-01">
  <owner>abigailbklein@google.com</owner>
  <owner>evliu@google.com</owner>
  <owner>yilkal@chromium.org</owner>
  <summary>
    Soda Installation is triggered when one of the features using SODA (e.g.
    Live Caption, Projector, Offline Dictation) are enabled. Records the time
    taken to get to SODA binary installation error. This is recorded once when
    SODA installation attempt fails.
  </summary>
</histogram>

<histogram name="SodaInstaller.BinaryInstallationResult" enum="BooleanSuccess"
    expires_after="2024-05-01">
  <owner>abigailbklein@google.com</owner>
  <owner>evliu@google.com</owner>
  <owner>yilkal@chromium.org</owner>
  <summary>
    Soda Installation is triggered when one of the features using SODA (e.g.
    Live Caption, Projector, Offline Dictation) are enabled. Records whether
    SODA binary installation succeeded. This is recorded once when SODA
    installation attempt finishes with either success or failure.
  </summary>
</histogram>

<histogram name="SodaInstaller.BinaryInstallationSuccessTime" units="ms"
    expires_after="2024-05-01">
  <owner>abigailbklein@google.com</owner>
  <owner>evliu@google.com</owner>
  <owner>yilkal@chromium.org</owner>
  <summary>
    Soda Installation is triggered when one of the features using SODA (e.g.
    Live Caption, Projector, Offline Dictation) are enabled. Records the time
    taken to successfully install SODA binary. This is recorded once when SODA
    installation attempt succeedes.
  </summary>
</histogram>

<histogram
    name="SodaInstaller.Language.{SodaLanguageCode}.InstallationFailureTime"
    units="ms" expires_after="2024-05-01">
  <owner>abigailbklein@google.com</owner>
  <owner>evliu@google.com</owner>
  <owner>yilkal@chromium.org</owner>
  <summary>
    Soda Installation is triggered when one of the features using SODA (e.g.
    Live Caption, Projector, Offline Dictation) are enabled. Records the time
    taken to get to SODA language pack installation error. This is recorded once
    when SODA language pack installation attempt fails.
  </summary>
  <token key="SodaLanguageCode" variants="SodaLanguageCode"/>
</histogram>

<histogram name="SodaInstaller.Language.{SodaLanguageCode}.InstallationResult"
    enum="BooleanSuccess" expires_after="2024-05-01">
  <owner>abigailbklein@google.com</owner>
  <owner>evliu@google.com</owner>
  <owner>yilkal@chromium.org</owner>
  <summary>
    Soda Installation is triggered when one of the features using SODA (e.g.
    Live Caption, Projector, Offline Dictation) are enabled. Records whether
    SODA language pack installation succeeded or not. This is recorded once when
    SODA language pack installation attempt finishes with either success or
    failure.
  </summary>
  <token key="SodaLanguageCode" variants="SodaLanguageCode"/>
</histogram>

<histogram
    name="SodaInstaller.Language.{SodaLanguageCode}.InstallationSuccessTime"
    units="ms" expires_after="2024-05-01">
  <owner>abigailbklein@google.com</owner>
  <owner>evliu@google.com</owner>
  <owner>yilkal@chromium.org</owner>
  <summary>
    Soda Installation is triggered when one of the features using SODA (e.g.
    Live Caption, Projector, Offline Dictation) are enabled. Records the time
    taken to successfully install SODA language pack. This is recorded once when
    SODA language pack installation succeedes.
  </summary>
  <token key="SodaLanguageCode" variants="SodaLanguageCode"/>
</histogram>

<histogram name="TextToSpeech.Event" enum="TextToSpeechEvent"
    expires_after="2023-11-30">
  <owner>dtseng@chromium.org</owner>
  <owner>katie@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Events fired by the text-to-speech engine when speaking an utterance.
  </summary>
</histogram>

<histogram name="TextToSpeech.Settings.GetVoiceBytes"
    enum="TextToSpeechGetVoiceBytes" expires_after="2023-11-30">
  <owner>josiahk@chromium.org</owner>
  <owner>akihiroota@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    When the user requests a download of a text-to-speech voice, records the
    success/failure result, and service used to download it.
  </summary>
</histogram>

<histogram name="TextToSpeech.Utterance.FromExtensionAPI"
    enum="TextToSpeechFromExtensionAPI" expires_after="2023-11-30">
  <owner>dtseng@chromium.org</owner>
  <owner>katie@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Indicates if an utterance spoken via synthesized text-to-speech was
    triggered by the Chrome TTS extension API or the web speech API.
  </summary>
</histogram>

<histogram name="TextToSpeech.Utterance.HasVoiceName"
    enum="TextToSpeechHasVoiceName" expires_after="2023-11-30">
  <owner>katie@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    True if an utterance spoken via synthesized text-to-speech requested a
    specific voice by name.
  </summary>
</histogram>

<histogram name="TextToSpeech.Utterance.Native" enum="TextToSpeechNative"
    expires_after="2023-11-30">
  <owner>katie@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    True if an utterance is spoken with native speech provided by the operating
    system, otherwise it's spoken via a Chrome extension that implements
    text-to-speech support.
  </summary>
</histogram>

<histogram name="TextToSpeech.Utterance.Rate" units="count"
    expires_after="2023-11-30">
  <owner>dtseng@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    The rate of an utterance to be spoken via synthesized text-to-speech.
  </summary>
</histogram>

<histogram name="TextToSpeech.Utterance.Source" enum="TextToSpeechSource"
    expires_after="2023-11-30">
  <owner>joelriley@google.com</owner>
  <owner>katie@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    ChromeOS source that triggered text-to-speech utterance via extension API,
    from a few known accessibility clients (Select-to-speak, ChromeVox).
  </summary>
</histogram>

<histogram name="TextToSpeech.Utterance.TextLength" units="bytes"
    expires_after="2023-11-30">
  <owner>katie@chromium.org</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    The length of an utterance to be spoken via synthesized text-to-speech.
  </summary>
</histogram>

</histograms>

</histogram-configuration>
