<!--
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 Input histograms
along with a detailed description for each histogram.

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

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

<histogram-configuration>

<histograms>

<histogram name="Input.Blink.DispatchEvent.Type" enum="WebInputEventType"
    expires_after="2027-07-23">
  <owner>lizeb@chromium.org</owner>
  <owner>input-dev@chromium.org</owner>
  <summary>
    The type of input event being dispatched in WidgetInputHandlerManager.
    Subsampled at 10%.
  </summary>
</histogram>

<histogram name="Input.CommitContent.{Result}" enum="ImeCommitContentExtension"
    expires_after="2027-08-01">
  <owner>hdchuong@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Records the file extension format for {Result} IME commitContent
    (image/media insertion) attempts. Logged on Android when an IME commits rich
    media content via InputConnection#commitContent.
  </summary>
  <token key="Result">
    <variant name="Failure" summary="failed"/>
    <variant name="Success" summary="successful"/>
  </token>
</histogram>

<histogram name="Input.Digitizer.MaxTouchPoints.{PointerDigitizerType}"
    units="maximum allowed touch points" expires_after="2027-01-01">
  <owner>kouhei@chromium.org</owner>
  <owner>gastonr@microsoft.com</owner>
  <owner>gerchiko@microsoft.com</owner>
  <owner>input-dev@chromium.org</owner>
  <summary>
    Record the maximum number of active touch points allowed for each pointer
    digitizer found at startup or connected following startup, grouping results
    by {PointerDigitizerType}. Currently this metric is only available on
    Windows. This is logged once for every pointer digitizer discovered when
    initializing the singleton `TouchUiController` during startup, and once for
    each pointer digitizer that's connected afterwards in response to OS
    specific events.

    NOTE: this metric was expired from 2025-03-01 to 2025-11-24.
  </summary>
  <token key="PointerDigitizerType">
    <variant name="DirectPen" summary="pen digitizer integrated into display"/>
    <variant name="IndirectPen" summary="pen digitizer not display integrated"/>
    <variant name="Touch" summary="touch digitizer"/>
    <variant name="TouchPad" summary="touchpad digitizer"/>
    <variant name="Unknown" summary="unknown digitizer type"/>
  </token>
</histogram>

<histogram name="Input.Digitizer.MaxTouchPointsSupportedBySystemAtStartup"
    units="maximum supported contacts" expires_after="2027-01-01">
  <owner>kouhei@chromium.org</owner>
  <owner>gastonr@microsoft.com</owner>
  <owner>gerchiko@microsoft.com</owner>
  <owner>input-dev@chromium.org</owner>
  <summary>
    Record the maximum number of simultaneous contacts supported by the pointer
    digitizer that supports the most simultaneous contacts among all pointer
    digitizers available to the system at startup. e.g, If the system only has
    single-touch digitizers, the recorded value is 1. If the system has
    multi-touch digitizers, the recorded value is the maximum number of contacts
    supported by the multi-touch digitizer that supports the most contacts.
    Currently this metric is only available on Windows. This is logged only once
    per browser session, when initializing the singleton `TouchUiController` at
    startup.

    NOTE: this metric was expired from 2025-03-01 to 2025-11-24.
  </summary>
</histogram>

<histogram name="Input.Digitizer.{Interaction}" enum="PointerDigitizerType"
    expires_after="2027-01-01">
  <owner>kouhei@chromium.org</owner>
  <owner>gastonr@microsoft.com</owner>
  <owner>gerchiko@microsoft.com</owner>
  <owner>input-dev@chromium.org</owner>
  <summary>
    Record each pointer digitizer found at startup, and each pointer digitizer
    connected or disconnected following startup, grouping by {Interaction}.
    Currently this metric is only available on Windows.

    OnConnected: Logged once for each pointer digitizer that's been connected
    after initialization, in response to OS specific events.

    OnDisconnected: Logged once for each pointer digitizer that's been
    disconnected after initialization, in response to OS specific events.

    OnStartup : Logged only once per browser session for each pointer digitizer
    discovered when initializing the singleton `TouchUiController` at startup.

    NOTE: this metric was expired from 2025-03-01 to 2025-11-24.
  </summary>
  <token key="Interaction">
    <variant name="OnConnected" summary="connected following startup"/>
    <variant name="OnDisconnected" summary="disconnected following startup"/>
    <variant name="OnStartup" summary="connected at startup"/>
  </token>
</histogram>

<histogram name="Input.FirstGestureScrollUpdate.DeltaY" units="pixels"
    expires_after="2027-02-10">
  <owner>anandrv@google.com</owner>
  <owner>clank-performance-team@google.com</owner>
  <owner>input-dev@chromium.org</owner>
  <summary>
    Records the Y scroll delta of the first gesture scroll update event in a
    touch sequence. Subsampled to 1/100.
  </summary>
</histogram>

<histogram name="Input.PointerTypePrimary" enum="PrimaryPointerType"
    expires_after="2025-02-10">
  <owner>flackr@chromium.org</owner>
  <owner>input-dev@chromium.org</owner>
  <summary>
    Records the primary pointer type reported to the webpage. Recorded once per
    tab creation and again for each tab anytime preferences are changed. This is
    often used as the authoritative pointer type to style the page for.
  </summary>
</histogram>

<histogram name="Input.PointerTypesAll" enum="AllPointerTypes"
    expires_after="2025-02-10">
  <owner>flackr@chromium.org</owner>
  <owner>input-dev@chromium.org</owner>
  <summary>
    Records all available pointer types reported to the webpage. Recorded once
    per tab creation and again for each tab anytime preferences are changed.
    These can be observed by a webpage by using the any-pointer media query to
    style the page based on the expected input types.
  </summary>
</histogram>

<histogram name="Input.ToolType.Android" units="tool type"
    expires_after="2026-12-06">
  <owner>alexmitra@chromium.org</owner>
  <owner>flackr@chromium.org</owner>
  <owner>peconn@chromium.org</owner>
  <summary>
    Records tool type values which are sent to Chrome or WebView from Android
    when a touch event happens. This includes both valid and invalid tool types
    and can be used both to see which invalid tool types are being sent and the
    proportion of touch events that are sent with invalid tool types.
  </summary>
</histogram>

<histogram name="InputMethod.ActiveCount" units="units"
    expires_after="2025-01-05">
  <owner>shend@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The number of enabled input methods. Recorded when the user logs in to
    Chrome OS. The enabled input methods are selected by user in the language
    settings page on Chrome OS. NOTE: 'Active' in the metric name is a legacy
    misnomer; 'active' should refer to just the single current aka. activated
    input method that is one of the enabled input methods whose total count is
    being tracked by this metric.
  </summary>
</histogram>

<histogram name="InputMethod.Assistive.Autocorrect.Actions"
    enum="IMEAutocorrectActions" expires_after="2026-12-01">
  <owner>jopalmer@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The actions taken by assistive autocorrect, such as underlining a word.
    Recorded after an action is performed.
  </summary>
</histogram>

<histogram name="InputMethod.Assistive.Autocorrect.Actions.VK"
    enum="IMEAutocorrectActions" expires_after="2026-12-01">
  <owner>jopalmer@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Warning: this histogram was expired from 2022-12 to 2023-11; data may be
    missing. The actions taken by assistive autocorrect, such as underlining a
    word. Recorded after an action is performed when the Virtual Keyboard is
    visible.
  </summary>
</histogram>

<histogram name="InputMethod.Assistive.Autocorrect.Count"
    enum="IMETextInputClient" expires_after="2026-12-01">
  <owner>mehrab@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Tracks when assistive autocorrect is performed by a text input client.
    Recorded when autocorrect is triggered by users with the feature enabled
    using a text input client that's being tracked.
  </summary>
</histogram>

<histogram name="InputMethod.Assistive.Autocorrect.Delay" units="ms"
    expires_after="2026-12-01">
  <owner>jopalmer@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Tracks time between when autocorrect occurs and user clicks to undo the
    autocorrect.
  </summary>
</histogram>

<histogram name="InputMethod.Assistive.AutocorrectV2.Actions.PK"
    enum="IMEAutocorrectActions" expires_after="2026-12-01">
  <owner>mehrab@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The histogram records assistive autocorrect actions such as showing,
    reverting, rejecting and accepting an autocorrect suggestion. The actions
    are recorded after they are performed on Physical Keyboard inputs.
  </summary>
</histogram>

<histogram
    name="InputMethod.Assistive.AutocorrectV2.Actions.PK.EnabledByDefault"
    enum="IMEAutocorrectActions" expires_after="2026-12-01">
  <owner>zacpartridge@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The histogram records assistive autocorrect actions such as showing,
    reverting, rejecting and accepting an autocorrect suggestion. The actions
    are recorded after they are performed on Physical Keyboard inputs if
    autocorrect was enabled by default.
  </summary>
</histogram>

<histogram name="InputMethod.Assistive.AutocorrectV2.Actions.VK"
    enum="IMEAutocorrectActions" expires_after="2026-12-01">
  <owner>mehrab@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The histogram records assistive autocorrect actions such as showing,
    reverting, rejecting and accepting an autocorrect suggestion. The actions
    are recorded after they are performed on Virtual Keyboard inputs.
  </summary>
</histogram>

<histogram
    name="InputMethod.Assistive.AutocorrectV2.Distance.OriginalLengthVsLevenshteinDistance.{Keyboard}{Interaction}"
    units="Distance" expires_after="2026-12-01">
  <owner>zacpartridge@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    This records the length of the original word alligned with distance between
    the original and suggested new word in the form of a flattened 2d array. The
    two variables are stored as '(length-1)*MAX_LENGTH + (distance-1)'. The data
    is expected to be fairly sparse and it is guaranteed that all values will be
    in the range (0, 1000) (assuming MAX_LENGTH is not increased over 31). The
    metric is recorded once an autocorrect is accepted or rejected by user
    interactions.
  </summary>
  <token key="Keyboard">
    <variant name="Pk" summary="physical keyboard"/>
    <variant name="Vk" summary="virtual keyboard"/>
  </token>
  <token key="Interaction">
    <variant name="Accepted" summary="accepted"/>
    <variant name="Rejected" summary="rejected"/>
  </token>
</histogram>

<histogram
    name="InputMethod.Assistive.AutocorrectV2.Distance.SuggestedLength.{Keyboard}{Interaction}"
    units="chars" expires_after="2027-02-07">
  <owner>zacpartridge@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    This records the length of the word suggested by autocorrect. The metric is
    recorded once an autocorrect is accepted or rejected by user interactions.
  </summary>
  <token key="Keyboard">
    <variant name="Pk" summary="physical keyboard"/>
    <variant name="Vk" summary="virtual keyboard"/>
  </token>
  <token key="Interaction">
    <variant name="Accepted" summary="accepted"/>
    <variant name="Rejected" summary="rejected"/>
  </token>
</histogram>

<histogram name="InputMethod.Assistive.AutocorrectV2.Internal.PkState"
    enum="IMEAutocorrectInternalStates" expires_after="2026-12-01">
  <owner>mehrab@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The histogram records different internal states that autocorrect encounters
    while physical keyboard is used. These states include errors such as bad
    arguments, null input context, problems preventing from showing or hiding
    undo window. Also, events such as accepting suggestion, rejecting
    suggestion, showing/hiding/highlighting undo window, underlining suggestions
    and handling autocorrect suggestions, focusing on a text field, bluring a
    text field and having a suggestion in a text field. It recoreds the states
    everytime that HandleAutocorrect, OnBlur, OnFocus, and
    OnSurroundingTextChanged events are triggered while physical keyboard is
    visible.
  </summary>
</histogram>

<histogram
    name="InputMethod.Assistive.AutocorrectV2.Internal.PkState.EnabledByDefault"
    enum="IMEAutocorrectInternalStates" expires_after="2026-12-01">
  <owner>zacpartridge@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The histogram records different internal states that autocorrect encounters
    while physical keyboard is used. These states include errors such as bad
    arguments, null input context, problems preventing from showing or hiding
    undo window. Also, events such as accepting suggestion, rejecting
    suggestion, showing/hiding/highlighting undo window, underlining suggestions
    and handling autocorrect suggestions, focusing on a text field, bluring a
    text field and having a suggestion in a text field. It recoreds the states
    everytime that HandleAutocorrect, OnBlur, OnFocus, and
    OnSurroundingTextChanged events are triggered while physical keyboard is
    visible if autocorrect was enabled by default.
  </summary>
</histogram>

<histogram name="InputMethod.Assistive.AutocorrectV2.Internal.VkState"
    enum="IMEAutocorrectInternalStates" expires_after="2026-12-01">
  <owner>mehrab@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The histogram records different internal states that autocorrect encounters
    while virtual keyboard is used. These states include errors such as bad
    arguments, null input context, problems preventing from showing or hiding
    undo window. Also, events such as accepting suggestion, rejecting
    suggestion, showing/hiding/highlighting undo window, underlining suggestion
    and handling autocorrect suggestion, focusing on a text field, bluring a
    text field and having a suggestion in a text field. It records the states
    everytime that HandleAutocorrect, OnBlur, OnFocus, and
    OnSurroundingTextChanged events are called while virtual keyboard is
    visible.
  </summary>
</histogram>

<histogram name="InputMethod.Assistive.AutocorrectV2.Latency.Accept" units="ms"
    expires_after="2026-12-01">
  <owner>mehrab@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Tracks duration between providing an autocorrect suggestion to its
    acceptance. It is recorded every time that an autocorrect suggestion is
    implicitly accepted.
  </summary>
</histogram>

<histogram
    name="InputMethod.Assistive.AutocorrectV2.Latency.Accept.EnabledByDefault"
    units="ms" expires_after="2026-12-01">
  <owner>zacpartridge@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Tracks duration between providing an autocorrect suggestion to its
    acceptance. It is recorded every time that an autocorrect suggestion is
    implicitly accepted if autocorrect was enabled by default.
  </summary>
</histogram>

<histogram name="InputMethod.Assistive.AutocorrectV2.Latency.ExitField"
    units="ms" expires_after="2026-12-01">
  <owner>mehrab@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Tracks time between providing an autocorrect suggestion to exiting the text
    field. It is recorded every time that a user leaves a text field while
    having a pending autocorrect.
  </summary>
</histogram>

<histogram
    name="InputMethod.Assistive.AutocorrectV2.Latency.ExitField.EnabledByDefault"
    units="ms" expires_after="2026-12-01">
  <owner>zacpartridge@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Tracks time between providing an autocorrect suggestion to exiting the text
    field. It is recorded every time that a user leaves a text field while
    having a pending autocorrect if autocorrect was enabled by default.
  </summary>
</histogram>

<histogram name="InputMethod.Assistive.AutocorrectV2.Latency.PkPending"
    units="ms" expires_after="2026-12-01">
  <owner>mehrab@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Tracks duration of pending autocorrect suggestions for physical keyboard
    inputs. The duration is measured from the time of showing an autocorrect
    underline to the time of clearing it. It is recorded every time that an
    action such as reject, accept, exit field or an internal error resolves a
    pending autocorrect suggestion for physical keyboard inputs.
  </summary>
</histogram>

<histogram name="InputMethod.Assistive.AutocorrectV2.Latency.Reject" units="ms"
    expires_after="2026-12-01">
  <owner>mehrab@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Tracks time between providing an autocorrect suggestion to its implicit
    rejection or undone. It is recorded every time that an autocorrect
    suggestion is implicitly rejected or undone.
  </summary>
</histogram>

<histogram
    name="InputMethod.Assistive.AutocorrectV2.Latency.Reject.EnabledByDefault"
    units="ms" expires_after="2026-12-01">
  <owner>mehrab@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Tracks time between providing an autocorrect suggestion to its implicit
    rejection or undone. It is recorded every time that an autocorrect
    suggestion is implicitly rejected or undone if autocorrect was enabled by
    default.
  </summary>
</histogram>

<histogram name="InputMethod.Assistive.AutocorrectV2.Latency.VkPending"
    units="ms" expires_after="2026-12-01">
  <owner>mehrab@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Tracks duration of pending autocorrect suggestions for virtual keyboard
    inputs. The duration is measured from the time of showing an autocorrect
    underline to the time of clearing it. It is recorded every time that an
    action such as reject, accept, exit field or an internal error resolves a
    pending autocorrect suggestion for virtual keyboard inputs.
  </summary>
</histogram>

<histogram
    name="InputMethod.Assistive.AutocorrectV2.PkUserPreference.{Language}"
    enum="IMEAutocorrectPreference" expires_after="2026-12-01">
  <owner>mehrab@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    This histogram records the value of the user's physical keyboard autocorrect
    preference once when an input method is activated. The metric is broken down
    into two extra buckets, English and All languages. When a user has an
    english based input method enabled, the metric will be recorded twice, once
    for the English bucket and once for the All bucket. All other input methods
    will be recorded once in the All bucket.
  </summary>
  <token key="Language">
    <variant name="All" summary="All languages"/>
    <variant name="English" summary="English language only"/>
  </token>
</histogram>

<histogram name="InputMethod.Assistive.AutocorrectV2.Quality.PkAccepted"
    enum="IMEAutocorrectQualityBreakdown" expires_after="2026-12-01">
  <owner>mehrab@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The histogram records charactersitics of original text and suggested text
    for an accepted autocorrect suggestion on Virtual Keyboard. These
    measurements highlight the changes applied by autocorrect on the original
    text such as changing accent, lower casing, capitalizing or mutating
    characters. It records everytime that an autocorrect suggestion is accepted
    by user interactions.
  </summary>
</histogram>

<histogram
    name="InputMethod.Assistive.AutocorrectV2.Quality.PkAccepted.EnabledByDefault"
    enum="IMEAutocorrectQualityBreakdown" expires_after="2026-12-01">
  <owner>mehrab@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The histogram records charactersitics of original text and suggested text
    for an accepted autocorrect suggestion on Virtual Keyboard. These
    measurements highlight the changes applied by autocorrect on the original
    text such as changing accent, lower casing, capitalizing or mutating
    characters. It records everytime that an autocorrect suggestion is accepted
    by user interactions if autocorrect was enabled by default.
  </summary>
</histogram>

<histogram name="InputMethod.Assistive.AutocorrectV2.Quality.PkRejected"
    enum="IMEAutocorrectQualityBreakdown" expires_after="2026-12-01">
  <owner>mehrab@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The histogram records charactersitics of original text and suggested text
    for a rejected autocorrect suggestion on Virtual Keyboard. These
    measurements highlight the changes applied by autocorrect on the original
    text such as changing accent, lower casing, capitalizing or mutating
    characters. It records everytime that an autocorrect suggestion is rejected
    or undone by user interactions.
  </summary>
</histogram>

<histogram
    name="InputMethod.Assistive.AutocorrectV2.Quality.PkRejected.EnabledByDefault"
    enum="IMEAutocorrectQualityBreakdown" expires_after="2026-12-01">
  <owner>mehrab@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The histogram records charactersitics of original text and suggested text
    for a rejected autocorrect suggestion on Virtual Keyboard. These
    measurements highlight the changes applied by autocorrect on the original
    text such as changing accent, lower casing, capitalizing or mutating
    characters. It records everytime that an autocorrect suggestion is rejected
    or undone by user interactions if autocorrect was enabled by default.
  </summary>
</histogram>

<histogram name="InputMethod.Assistive.AutocorrectV2.Quality.VkAccepted"
    enum="IMEAutocorrectQualityBreakdown" expires_after="2026-12-01">
  <owner>mehrab@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The histogram records charactersitics of original text and suggested text
    for an accepted autocorrect suggestion on Virtual Keyboard. These
    measurements highlight the changes applied by autocorrect on the original
    text such as changing accent, lower casing, capitalizing or mutating
    characters. It records everytime that an autocorrect suggestion is accepted
    by user interactions.
  </summary>
</histogram>

<histogram name="InputMethod.Assistive.AutocorrectV2.Quality.VkRejected"
    enum="IMEAutocorrectQualityBreakdown" expires_after="2026-12-01">
  <owner>mehrab@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The histogram records charactersitics of original text and suggested text
    for a rejected autocorrect suggestion on Virtual Keyboard. These
    measurements highlight the changes applied by autocorrect on the original
    text such as changing accent, lower casing, capitalizing or mutating
    characters. It records everytime that an autocorrect suggestion is rejected
    or undone by user interactions.
  </summary>
</histogram>

<histogram name="InputMethod.Assistive.AutocorrectV2.Rejection.{Keyboard}"
    enum="IMEAutocorrectRejectionBreakdown" expires_after="2026-12-01">
  <owner>zacpartridge@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The histogram records the different interactions used to reject or revert an
    autocorrect suggestion. These interactions include selecting undo with or
    without the keyboard or deleting some or all of the word.
  </summary>
  <token key="Keyboard">
    <variant name="PK" summary="physical keyboard"/>
    <variant name="VK" summary="virtual keyboard"/>
  </token>
</histogram>

<histogram name="InputMethod.Assistive.AutocorrectV2.SuggestionProvider.Pk"
    enum="IMEAutocorrectSuggestionProvider" expires_after="2026-12-01">
  <owner>curtismcmullan@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    This metric is recorded whenever a user focuses on a new text input and the
    IME service is connected and ready to provide autocorrect suggestions. This
    is only recorded once per input focused.
  </summary>
</histogram>

<histogram
    name="InputMethod.Assistive.AutocorrectV2.UndoWindow.LearnMoreButtonShown"
    enum="Boolean" expires_after="2026-12-01">
  <owner>zacpartridge@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    This histogram is recorded when the learn more button is shown in a unique
    undo window. The button will only be shown on the first 10 undo windows for
    each user.
  </summary>
</histogram>

<histogram
    name="InputMethod.Assistive.AutocorrectV2.UserPrefChange.{Language}.{Type}"
    enum="IMEAutocorrectPrefStateTransition" expires_after="2026-12-01">
  <owner>curtismcmullan@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    This histogram is recorded whenever the user changes their preference for
    the autocorrect level enabled. Metrics are split between VK and PK, and
    English versus non English languages.
  </summary>
  <token key="Type">
    <variant name="PK" summary="Physical Keyboard"/>
    <variant name="VK" summary="Virtual Keyboard"/>
  </token>
  <token key="Language">
    <variant name="All" summary="All languages"/>
    <variant name="English" summary="English language only"/>
  </token>
</histogram>

<histogram name="InputMethod.Assistive.CandidateGenerationTime.MultiWord"
    units="ms" expires_after="2026-12-01">
  <owner>curtismcmullan@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Records the time taken to generate multi word suggestions candidates. The
    metric is recorded after a request for candidates has been resolved by the
    machine learning service.
  </summary>
</histogram>

<histogram name="InputMethod.Assistive.Coverage" enum="IMEAssistiveAction"
    expires_after="2026-12-01">
  <owner>jiwan@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The number of times each assistive action is triggered. Recorded when
    assistive actions are triggered.
  </summary>
</histogram>

<histogram name="InputMethod.Assistive.Disabled.MultiWord"
    enum="IMEAssistiveDisabledReason" expires_after="2026-12-01">
  <owner>curtismcmullan@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The reason for multi word suggestions not being shown to users. Recorded
    when the surrounding text could trigger multi word suggestions but the
    feature was disabled. Only the first applicable reason in
    IMEAssistiveDisabledReason enum is recorded per occurrence.
  </summary>
</histogram>

<histogram name="InputMethod.Assistive.Grammar.Actions"
    enum="IMEGrammarActions" expires_after="2026-12-01">
  <owner>jiwan@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The actions taken by on-device grammar checker, such as underlining a word.
    Recorded after a grammar checker action is performed.
  </summary>
</histogram>

<histogram name="InputMethod.Assistive.Grammar.Count" enum="IMETextInputClient"
    expires_after="2026-12-01">
  <owner>curtismcmullan@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Tracks when assistive grammar is performed by a text input client. Recorded
    when grammar is triggered by users with the feature enabled using a text
    input client that's being tracked.
  </summary>
</histogram>

<histogram name="InputMethod.Assistive.Match" enum="IMEAssistiveAction"
    expires_after="2026-12-01">
  <owner>jiwan@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The number of times each assistive action could be triggered according to
    the surrounding text. This includes cases in InputMethod.Assistive.Coverage,
    and also includes cases when the feature is turned off or there is
    insufficient data. Recorded when the surrounding text could trigger
    assistive actions.
  </summary>
</histogram>

<histogram name="InputMethod.Assistive.MultiWord.CandidatesGenerated"
    enum="IMEAssistiveMultiWordSuggestionType" expires_after="2026-12-01">
  <owner>curtismcmullan@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    This records when a candidate generation response is returned from the multi
    word suggestion engine and the response contains some candidates. This is
    recorded exactly once per response.
  </summary>
</histogram>

<histogram name="InputMethod.Assistive.MultiWord.EmptyCandidate"
    enum="IMEAssistiveMultiWordSuggestionType" expires_after="2026-12-01">
  <owner>curtismcmullan@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    This histogram records when an empty completion candidate is added to a
    suggestion generation request to the machine learning service. An empty
    completion candidate in this context means a candidate with an empty string.
    This is an invalid state and should never happen. The metric is recorded
    once per empty candidate found.
  </summary>
</histogram>

<histogram name="InputMethod.Assistive.MultiWord.ImplicitAcceptance"
    enum="IMEAssistiveMultiWordSuggestionType" expires_after="2026-12-01">
  <owner>curtismcmullan@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    This metric is recorded when a user implicitly accepts a multi word
    suggestion that is shown to them. Implicit acceptance here means the user
    has fully typed the suggestion shown to them, without explicitly accepting
    the suggestion through the ui shown.
  </summary>
</histogram>

<histogram name="InputMethod.Assistive.MultiWord.ImplicitRejection"
    enum="IMEAssistiveMultiWordSuggestionType" expires_after="2026-12-01">
  <owner>curtismcmullan@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    This metric is recorded when a user implicitly rejects a multi word
    suggestion that is shown to them. Implicit rejection here means the user has
    typed some text that does not match the suggestion shown to them.
  </summary>
</histogram>

<histogram name="InputMethod.Assistive.MultiWord.InputState"
    enum="IMEAssistiveTextInputState" expires_after="2026-12-01">
  <owner>curtismcmullan@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    This records the state of an assistive feature in relation to a particular
    input field. The feature could be enabled or disabled for a number of
    reasons and this metric captures that information. The metric is recorded
    once when a user focuses on a new input field.
  </summary>
</histogram>

<histogram name="InputMethod.Assistive.MultiWord.PrecedingTextLength"
    units="chars" expires_after="2026-12-01">
  <owner>curtismcmullan@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    This records the preceding text given in a request to generate candidates
    from the multi word suggestion engine. It is recorded exactly once per
    request.
  </summary>
</histogram>

<histogram name="InputMethod.Assistive.MultiWord.RequestCandidates"
    enum="IMEAssistiveMultiWordSuggestionType" expires_after="2026-12-01">
  <owner>curtismcmullan@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    This records when a request to generate suggestion candidates is made to the
    multi word suggestion engine. It records the type of suggestion requested.
    It is recorded exactly once per request.
  </summary>
</histogram>

<histogram name="InputMethod.Assistive.MultiWord.SuggestionLength"
    units="chars" expires_after="2026-12-01">
  <owner>curtismcmullan@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    This records the length of a multi word suggestion shown to a user in chars.
    The metric is recorded once when a suggestion visually appears in front of a
    user.
  </summary>
</histogram>

<histogram name="InputMethod.Assistive.MultiWord.SuggestionOpportunity"
    enum="IMEAssistiveMultiWordSuggestionType" expires_after="2026-12-01">
  <owner>curtismcmullan@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    This histogram records when the current text context could possibly show a
    suggestion. This does not necessarily mean a suggestion was shown, only that
    the current text context fulfills all constraints needed to trigger an
    attempt to generate and display suggestions. It is recorded exactly once per
    surrounding text update.
  </summary>
</histogram>

<histogram name="InputMethod.Assistive.MultiWord.SuggestionState.{Type}"
    enum="IMEAssistiveMultiWordSuggestionType" expires_after="2026-12-01">
  <owner>curtismcmullan@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    This histogram records when a new suggestion is found and the system
    attempts to reconcile it with the text found in the currently focused text
    input. The histogram records the state of the reconciliation process. This
    metric is recorded exactly once for every suggestion that goes through this
    process.
  </summary>
  <token key="Type">
    <variant name="Completion" summary="CompletionSuggestion"/>
    <variant name="Prediction" summary="PredictionSuggestion"/>
  </token>
</histogram>

<histogram name="InputMethod.Assistive.Success" enum="IMEAssistiveAction"
    expires_after="2026-12-01">
  <owner>jiwan@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The number of times each assistive action is accepted. Recorded when
    assistive actions are accepted by the users.
  </summary>
</histogram>

<histogram name="InputMethod.Assistive.TimeToAccept.MultiWord" units="ms"
    expires_after="2026-12-01">
  <owner>curtismcmullan@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The duration from when a multi word suggestion is shown to a user, to the
    time the user accepts that suggestion. The metric is recorded when the user
    accepts the suggestion.
  </summary>
</histogram>

<histogram name="InputMethod.Assistive.TimeToDismiss.MultiWord" units="ms"
    expires_after="2026-12-01">
  <owner>curtismcmullan@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The duration from when a multi word suggestion is shown to a user, to the
    time the user dimisses that suggestion. The metric is recorded when the user
    dismisses the suggestion.
  </summary>
</histogram>

<histogram name="InputMethod.Assistive.UserPref.MultiWord"
    enum="BooleanEnabled" expires_after="2026-12-01">
  <owner>curtismcmullan@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The user's preference for predictive writing suggestions. Recorded when the
    user is logged in and the AssistiveSuggester is initialised.
    &quot;Enabled&quot; is logged as the default value if the user didn't
    explicitly set it.
  </summary>
</histogram>

<histogram
    name="InputMethod.Assistive.UserPref.PhysicalKeyboardDiacriticsOnLongpress"
    enum="BooleanEnabled" expires_after="2026-12-01">
  <owner>jhtin@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The user's preference for diacritics. Recorded when the user is logged in
    and the AssistiveSuggester is initialised. &quot;Enabled&quot; is logged as
    the default value if the user didn't explicitly set it.
  </summary>
</histogram>

<histogram name="InputMethod.AutoCorrectLevel" enum="IMECorrectionLevel"
    expires_after="2025-01-05">
  <owner>shend@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>The auto-correction level for suggestion engine.</summary>
</histogram>

<histogram name="InputMethod.Category" enum="InputMethodCategory"
    expires_after="2025-01-05">
  <owner>shend@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The breakdown of input method usage by input method category. Recorded when
    the system changes the current input method.
  </summary>
</histogram>

<histogram name="InputMethod.CharactersPerSession{InputModality}"
    units="characters" expires_after="2026-12-01">
  <owner>curtismcmullan@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Number of characters entered in a single user session on ChromeOS. A user
    session consists of a user typing 10+ characters for 1+ seconds where there
    is no period of time where the user is inactive for more than 3 seconds for
    the input type. This gets recorded when we detect user input and it has been
    more than 3 seconds since the last input by the user and also when a change
    in the Engine or Text field selected is detected.
  </summary>
  <token key="InputModality">
    <variant name="" summary="aggregate"/>
    <variant name=".hwt" summary="handwriting"/>
    <variant name=".voice" summary="voice"/>
  </token>
</histogram>

<histogram name="InputMethod.Commit.Index{IMEMajorNames}" units="units"
    expires_after="2026-12-01">
  <owner>shend@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The suggestion index (1-based) of the suggestion list item which user
    chooses to commit. {IMEMajorNames}
  </summary>
  <token key="IMEMajorNames">
    <variant name=""/>
    <variant name=".FR" summary="The French keyboard input method"/>
    <variant name=".FR.AC0"
        summary="The French keyboard input method with auto-correct level 0"/>
    <variant name=".FR.AC1"
        summary="The French keyboard input method with auto-correct level 1"/>
    <variant name=".FR.AC2"
        summary="The French keyboard input method with auto-correct level 2"/>
    <variant name=".Pinyin" summary="The Chinse Pinyin input method"/>
    <variant name=".US" summary="The US keyboard input method"/>
    <variant name=".US.AC0"
        summary="The US keyboard input method with auto-correct level 0"/>
    <variant name=".US.AC1"
        summary="The US keyboard input method with auto-correct level 1"/>
    <variant name=".US.AC2"
        summary="The US keyboard input method with auto-correct level 2"/>
  </token>
</histogram>

<histogram name="InputMethod.Commit.Type2" enum="IMECommitType2"
    expires_after="2027-02-07">
  <owner>dvallet@chromium.org</owner>
  <owner>shuchen@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The suggestion accuracy type which the user chooses to commit.
  </summary>
</histogram>

<histogram name="InputMethod.CommitLength" units="characters"
    expires_after="2026-12-01">
  <owner>dvallet@chromium.org</owner>
  <owner>shuchen@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Warning: this histogram was expired from M95 to M121; data may be missing.
    The number of characters committed with composition text.
  </summary>
</histogram>

<histogram name="InputMethod.Handwriting.Actions" enum="ImeHandwritingActions"
    expires_after="2022-04-10">
  <owner>shend@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    [Longform VK Handwriting] Types of actions performed by the user during
    handwriting, recorded when the user performs a gesture action.
  </summary>
</histogram>

<histogram name="InputMethod.Handwriting.AlternateMultiToSingle" units="index"
    expires_after="2026-12-01">
  <owner>curtismcmullan@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    [Longform VK Handwriting] TWarning: this histogram was expired from 2022-03
    to 2023-11; data may be missing. The index of the selected suggestion from
    the handwriting alternative suggestion menu. This metric is recorded when
    the handwriting text highlighted is multiple words, and the selected
    suggestion is a single word.
  </summary>
</histogram>

<histogram name="InputMethod.Handwriting.AlternateSelected" units="index"
    expires_after="2026-12-01">
  <owner>curtismcmullan@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    [Longform VK Handwriting] Warning: this histogram was expired from 2022-03
    to 2023-11; data may be missing. The index of the selected suggestion from
    the handwriting alternative suggestion menu. The metric is recorded when the
    suggestion is selected.
  </summary>
</histogram>

<histogram name="InputMethod.Handwriting.AlternateSingleToMulti" units="index"
    expires_after="2026-12-01">
  <owner>curtismcmullan@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    [Longform VK Handwriting] Warning: this histogram was expired from 2022-03
    to 2023-11; data may be missing. The index of the selected suggestion from
    the handwriting alternative suggestion menu. This metric is recorded when
    the handwriting text highlighted is a single word, and the selected
    suggestion is mutliple words.
  </summary>
</histogram>

<histogram name="InputMethod.Handwriting.CharsEdited10s" units="chars"
    expires_after="2023-02-19">
  <owner>shend@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    [Longform VK Handwriting] Number of characters written in a 10 second
    interval, recorded every 10s while the handwriting keyboard is active.
  </summary>
</histogram>

<histogram name="InputMethod.Handwriting.CharsEdited5s" units="chars"
    expires_after="2023-02-19">
  <owner>shend@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    [Longform VK Handwriting] Number of characters written in a 5 second
    interval, recorded every 5s while the handwriting keyboard is active.
  </summary>
</histogram>

<histogram name="InputMethod.Handwriting.CharsEdited60s" units="chars"
    expires_after="2022-02-01">
  <owner>shend@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    [Longform VK Handwriting] Number of characters written in a 60 second
    interval, recorded every 60s while the handwriting keyboard is active.
  </summary>
</histogram>

<histogram name="InputMethod.Handwriting.LanguageModelLoadTime" units="ms"
    expires_after="2026-12-01">
  <owner>curtismcmullan@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    [Non-Longform VK Handwriting] The number of milliseconds taken to load the
    language model required for the handwriting input method. Recorded every
    time a new language model is loaded for the handwriting input method.
  </summary>
</histogram>

<histogram name="InputMethod.Handwriting.LanguagePackState"
    enum="LanguagePackState" expires_after="2027-02-07">
  <owner>curtismcmullan@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    [Non-Longform VK Handwriting] The state of the requested language pack on
    initialization of the required handwriting service connection. Recorded once
    whenever a new handwriting service connection is requested.
  </summary>
</histogram>

<histogram name="InputMethod.ID2" enum="InputMethodID2"
    expires_after="2027-02-07">
  <owner>tranbaoduy@chromium.org</owner>
  <owner>shuchen@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Breakdown of input method usage by input method IDs. Recorded for an input
    method ID when the system's 'active input method' is switched to the input
    method with that ID. Note: In this context, 'input method ID' refers to the
    'global' input method IDs, i.e. tuple of the extension ID the input method
    belongs to and the extension-local ID of the input method.
  </summary>
</histogram>

<histogram name="InputMethod.ImeMenu.EmojiHandwritingVoiceButton"
    enum="ImeMenuButtonType" expires_after="2026-12-01">
  <owner>dvallet@chromium.org</owner>
  <owner>azurewei@chromium.org</owner>
  <owner>shuchen@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Warning: this histogram was expired from 2022-05 to 2023-11; data may be
    missing. The number of times users click emoji, handwriting or voice button
    in opt-in IME menu.
  </summary>
</histogram>

<histogram name="InputMethod.ImeSwitch" enum="IMESwitchType"
    expires_after="2027-02-07">
  <owner>dvallet@chromium.org</owner>
  <owner>timloh@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>The trigger type of input method switches by user.</summary>
</histogram>

<histogram name="InputMethod.KeyEventLatency" units="ms"
    expires_after="2027-02-07">
  <owner>shend@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>Time taken by the engine to handle a key event.</summary>
</histogram>

<histogram name="InputMethod.Manta.Orca.CharactersInserted.{Mode}"
    units="characters" expires_after="2026-12-01">
  <owner>hdchuong@google.com</owner>
  <owner>zacpartridge@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Counts the number of characters inserted by the editor. This metric is
    recorded at the time an insertion is performed.
  </summary>
  <token key="Mode">
    <variant name="Elaborate"
        summary="The user initiated Copyeditor by trying to elaborate their
                 text"/>
    <variant name="Emojify"
        summary="The user initiated Copyeditor by trying to emojify their
                 text"/>
    <variant name="Formalize"
        summary="The user initiated Copyeditor by trying to formalize their
                 text"/>
    <variant name="FreeformRewrite"
        summary="The user initiated Copyeditor by trying to rewrite their
                 text with a freeform prompt"/>
    <variant name="Proofread"
        summary="The user initiated Copyeditor by trying to proofread their
                 text"/>
    <variant name="Rephrase"
        summary="The user initiated Copyeditor by trying to rephrase their
                 text"/>
    <variant name="Rewrite"
        summary="There is selected text and the user is rewriting it with the
                 editor"/>
    <variant name="Shorten"
        summary="The user initiated Copyeditor by trying to shorten their
                 text"/>
    <variant name="Unknown"
        summary="The user initiated Copyeditor with an unknown method
                 (potentially a new prompt)"/>
    <variant name="Unset" summary="The user hasn't yet chosen a tone"/>
    <variant name="Write" summary="The editor is in freeform write mode"/>
  </token>
</histogram>

<histogram name="InputMethod.Manta.Orca.CharactersSelectedForInsert.{Mode}"
    units="characters" expires_after="2026-12-01">
  <owner>hdchuong@google.com</owner>
  <owner>zacpartridge@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Counts the number of characters selected for insertion. This metric is
    recorded at the time an insertion is performed.
  </summary>
  <token key="Mode">
    <variant name="Elaborate"
        summary="The user initiated Copyeditor by trying to elaborate their
                 text"/>
    <variant name="Emojify"
        summary="The user initiated Copyeditor by trying to emojify their
                 text"/>
    <variant name="Formalize"
        summary="The user initiated Copyeditor by trying to formalize their
                 text"/>
    <variant name="FreeformRewrite"
        summary="The user initiated Copyeditor by trying to rewrite their
                 text with a freeform prompt"/>
    <variant name="Proofread"
        summary="The user initiated Copyeditor by trying to proofread their
                 text"/>
    <variant name="Rephrase"
        summary="The user initiated Copyeditor by trying to rephrase their
                 text"/>
    <variant name="Rewrite"
        summary="There is selected text and the user is rewriting it with the
                 editor"/>
    <variant name="Shorten"
        summary="The user initiated Copyeditor by trying to shorten their
                 text"/>
    <variant name="Unknown"
        summary="The user initiated Copyeditor with an unknown method
                 (potentially a new prompt)"/>
    <variant name="Unset" summary="The user hasn't yet chosen a tone"/>
    <variant name="Write" summary="The editor is in freeform write mode"/>
  </token>
</histogram>

<histogram name="InputMethod.Manta.Orca.FreeFormCharactersForInsert.{Mode}"
    units="characters" expires_after="2026-12-01">
  <owner>hdchuong@google.com</owner>
  <owner>zacpartridge@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Counts the number of characters in a freeform request (if any) for an
    insert. This metric is recorded at the time an insertion is performed.
  </summary>
  <token key="Mode">
    <variant name="Rewrite"
        summary="There is selected text and the user is rewriting it with the
                 editor"/>
    <variant name="Write" summary="The editor is in freeform write mode"/>
  </token>
</histogram>

<histogram name="InputMethod.Manta.Orca.IndexOfInsertedResponse.{Mode}"
    units="units" expires_after="2026-12-01">
  <owner>hdchuong@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Records the index of the response that is selected by the user to be
    inserted. This metric is recorded at the time an insertion is performed.
  </summary>
  <token key="Mode">
    <variant name="Elaborate"
        summary="The user initiated editor by trying to elaborate their text"/>
    <variant name="Emojify"
        summary="The user initiated editor by trying to emojify their text"/>
    <variant name="Formalize"
        summary="The user initiated editor by trying to formalize their text"/>
    <variant name="FreeformRewrite"
        summary="The user initiated editor by trying to rewrite their text
                 with a freeform prompt"/>
    <variant name="Proofread"
        summary="The user initiated editor by trying to proofread their text"/>
    <variant name="Rephrase"
        summary="The user initiated editor by trying to rephrase their text"/>
    <variant name="Rewrite"
        summary="There is selected text and the user is rewriting it with the
                 editor"/>
    <variant name="Shorten"
        summary="The user initiated editor by trying to shorten their text"/>
    <variant name="Unknown"
        summary="The user initiated editor with an unknown method
                 (potentially a new prompt)"/>
    <variant name="Unset" summary="The user hasn't yet chosen a tone"/>
    <variant name="Write" summary="The editor is in freeform write mode"/>
  </token>
</histogram>

<histogram name="InputMethod.Manta.Orca.LengthOfLongestResponse.{Mode}"
    units="characters" expires_after="2026-12-01">
  <owner>hdchuong@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Records the number of characters found in the longest response returned from
    the server. This metric is recorded at the time a response with multiple
    text suggestion candidates is received from the server.
  </summary>
  <token key="Mode">
    <variant name="Elaborate"
        summary="The user initiated Copyeditor by trying to elaborate their
                 text"/>
    <variant name="Emojify"
        summary="The user initiated Copyeditor by trying to emojify their
                 text"/>
    <variant name="Formalize"
        summary="The user initiated Copyeditor by trying to formalize their
                 text"/>
    <variant name="FreeformRewrite"
        summary="The user initiated Copyeditor by trying to rewrite their
                 text with a freeform prompt"/>
    <variant name="Proofread"
        summary="The user initiated Copyeditor by trying to proofread their
                 text"/>
    <variant name="Rephrase"
        summary="The user initiated Copyeditor by trying to rephrase their
                 text"/>
    <variant name="Rewrite"
        summary="There is selected text and the user is rewriting it with the
                 editor"/>
    <variant name="Shorten"
        summary="The user initiated Copyeditor by trying to shorten their
                 text"/>
    <variant name="Unknown"
        summary="The user initiated Copyeditor with an unknown method
                 (potentially a new prompt)"/>
    <variant name="Unset" summary="The user hasn't yet chosen a tone"/>
    <variant name="Write" summary="The editor is in freeform write mode"/>
  </token>
</histogram>

<histogram name="InputMethod.Manta.Orca.NumResponses.{Mode}" units="units"
    expires_after="2026-12-01">
  <owner>hdchuong@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Counts the number of responses for each request to the server. This metric
    is recorded at the time a response is received from the server.
  </summary>
  <token key="Mode">
    <variant name="Elaborate"
        summary="The user initiated Copyeditor by trying to elaborate their
                 text"/>
    <variant name="Emojify"
        summary="The user initiated Copyeditor by trying to emojify their
                 text"/>
    <variant name="Formalize"
        summary="The user initiated Copyeditor by trying to formalize their
                 text"/>
    <variant name="FreeformRewrite"
        summary="The user initiated Copyeditor by trying to rewrite their
                 text with a freeform prompt"/>
    <variant name="Proofread"
        summary="The user initiated Copyeditor by trying to proofread their
                 text"/>
    <variant name="Rephrase"
        summary="The user initiated Copyeditor by trying to rephrase their
                 text"/>
    <variant name="Rewrite"
        summary="There is selected text and the user is rewriting it with the
                 editor"/>
    <variant name="Shorten"
        summary="The user initiated Copyeditor by trying to shorten their
                 text"/>
    <variant name="Unknown"
        summary="The user initiated Copyeditor with an unknown method
                 (potentially a new prompt)"/>
    <variant name="Unset" summary="The user hasn't yet chosen a tone"/>
    <variant name="Write" summary="The editor is in freeform write mode"/>
  </token>
</histogram>

<histogram name="InputMethod.Manta.Orca.States.{Mode}" enum="IMEEditorStates"
    expires_after="2026-12-01">
  <owner>zacpartridge@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The histogram captures user interactions with the editor, focusing on key
    actions providing a high level funel of interaction. These actions include
    the initiation of a new request, content insertion, display of the native
    UI, dismissal of the editor, a refining request, errors from the backend,
    receiving a successful responses from the backend or a user toggling the
    thumbs up and down buttons.
  </summary>
  <token key="Mode">
    <variant name="Elaborate"
        summary="The user initiated Copyeditor by trying to elaborate their
                 text"/>
    <variant name="Emojify"
        summary="The user initiated Copyeditor by trying to emojify their
                 text"/>
    <variant name="Formalize"
        summary="The user initiated Copyeditor by trying to formalize their
                 text"/>
    <variant name="FreeformRewrite"
        summary="The user initiated Copyeditor by trying to rewrite their
                 text with a freeform prompt"/>
    <variant name="InvalidInput"
        summary="The user is triggering from an invalid input"/>
    <variant name="NotAllowed"
        summary="The user is not allowed to use the feature"/>
    <variant name="Proofread"
        summary="The user initiated Copyeditor by trying to proofread their
                 text"/>
    <variant name="Rephrase"
        summary="The user initiated Copyeditor by trying to rephrase their
                 text"/>
    <variant name="Rewrite"
        summary="There is selected text and the user is rewriting it with the
                 editor"/>
    <variant name="Shorten"
        summary="The user initiated Copyeditor by trying to shorten their
                 text"/>
    <variant name="Unknown"
        summary="The user initiated Copyeditor with an unknown method
                 (potentially a new prompt)"/>
    <variant name="Unset" summary="The user hasn't yet chosen a tone"/>
    <variant name="Write" summary="The editor is in freeform write mode"/>
  </token>
</histogram>

<histogram name="InputMethod.Manta.Orca.{Language}.CharactersInserted.{Mode}"
    units="characters" expires_after="2026-12-01">
  <owner>curtismcmullan@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    This metric is segmented by &quot;input language&quot;, where input language
    is derived heuristically from the active input method. The metric counts the
    number of characters inserted by the editor. This metric is recorded at the
    time an insertion is performed.
  </summary>
  <token key="Mode">
    <variant name="Rewrite"
        summary="There is selected text and the user is rewriting it with the
                 editor"/>
    <variant name="Write" summary="The editor is in freeform write mode"/>
  </token>
  <token key="Language">
    <variant name="English" summary="English input method is enabled"/>
    <variant name="French" summary="French input method is enabled"/>
    <variant name="German" summary="German input method is enabled"/>
    <variant name="Japanese" summary="Japanese input method is enabled"/>
    <variant name="Other" summary="Other input method is enabled"/>
  </token>
</histogram>

<histogram
    name="InputMethod.Manta.Orca.{Language}.CharactersSelectedForInsert.{Mode}"
    units="characters" expires_after="2026-12-01">
  <owner>curtismcmullan@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    This metric is segmented by &quot;input language&quot;, where input language
    is derived heuristically from the active input method. The metric counts the
    number of characters selected for insertion. This metric is recorded at the
    time an insertion is performed.
  </summary>
  <token key="Mode">
    <variant name="Rewrite"
        summary="There is selected text and the user is rewriting it with the
                 editor"/>
    <variant name="Write" summary="The editor is in freeform write mode"/>
  </token>
  <token key="Language">
    <variant name="English" summary="English input method is enabled"/>
    <variant name="French" summary="French input method is enabled"/>
    <variant name="German" summary="German input method is enabled"/>
    <variant name="Japanese" summary="Japanese input method is enabled"/>
    <variant name="Other" summary="Other input method is enabled"/>
  </token>
</histogram>

<histogram
    name="InputMethod.Manta.Orca.{Language}.LengthOfLongestResponse.{Mode}"
    units="characters" expires_after="2026-12-01">
  <owner>curtismcmullan@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    This metric is segmented by &quot;input language&quot;, where input language
    is derived heuristically from the active input method. The metric records
    the number of characters found in the longest response returned from the
    server. This metric is recorded at the time a response with multiple text
    suggestion candidates is received from the server.
  </summary>
  <token key="Mode">
    <variant name="Rewrite"
        summary="There is selected text and the user is rewriting it with the
                 editor"/>
    <variant name="Write" summary="The editor is in freeform write mode"/>
  </token>
  <token key="Language">
    <variant name="English" summary="English input method is enabled"/>
    <variant name="French" summary="French input method is enabled"/>
    <variant name="German" summary="German input method is enabled"/>
    <variant name="Japanese" summary="Japanese input method is enabled"/>
    <variant name="Other" summary="Other input method is enabled"/>
  </token>
</histogram>

<histogram name="InputMethod.Manta.Orca.{Language}.NumResponses.{Mode}"
    units="units" expires_after="2026-12-01">
  <owner>curtismcmullan@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    This metric is segmented by &quot;input language&quot;, where input language
    is derived heuristically from the active input method. The metric counts the
    number of responses for each request to the server. This metric is recorded
    at the time a response is received from the server.
  </summary>
  <token key="Mode">
    <variant name="Rewrite"
        summary="There is selected text and the user is rewriting it with the
                 editor"/>
    <variant name="Write" summary="The editor is in freeform write mode"/>
  </token>
  <token key="Language">
    <variant name="English" summary="English input method is enabled"/>
    <variant name="French" summary="French input method is enabled"/>
    <variant name="German" summary="German input method is enabled"/>
    <variant name="Japanese" summary="Japanese input method is enabled"/>
    <variant name="Other" summary="Other input method is enabled"/>
  </token>
</histogram>

<histogram name="InputMethod.Manta.Orca.{Language}.States.{Mode}"
    enum="IMEEditorStates" expires_after="2027-02-07">
  <owner>curtismcmullan@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The histogram captures user interactions with the editor segmented by
    &quot;input language&quot;. To complete this segmentation we rely on the
    currently enabled input method as a heuristic. These user interactions are
    focusing on key actions providing a high level funnel of interaction. These
    actions include the initiation of a new request, content insertion, display
    of the native UI, dismissal of the editor, a refining request, errors from
    the backend, receiving a successful responses from the backend or a user
    toggling the thumbs up and down buttons.
  </summary>
  <token key="Mode">
    <variant name="Rewrite"
        summary="There is selected text and the user is rewriting it with the
                 editor"/>
    <variant name="Write" summary="The editor is in freeform write mode"/>
  </token>
  <token key="Language">
    <variant name="Afrikaans" summary="Afrikaans input method is enabled"/>
    <variant name="Danish" summary="Danish input method is enabled"/>
    <variant name="Dutch" summary="Dutch input method is enabled"/>
    <variant name="English" summary="English input method is enabled"/>
    <variant name="Finnish" summary="Finnish input method is enabled"/>
    <variant name="French" summary="French input method is enabled"/>
    <variant name="German" summary="German input method is enabled"/>
    <variant name="Italian" summary="Italian input method is enabled"/>
    <variant name="Japanese" summary="Japanese input method is enabled"/>
    <variant name="Norwegian" summary="Norwegian input method is enabled"/>
    <variant name="Other" summary="Other input method is enabled"/>
    <variant name="Polish" summary="Polish input method is enabled"/>
    <variant name="Portugese" summary="Portugese input method is enabled"/>
    <variant name="Spanish" summary="Spanish input method is enabled"/>
    <variant name="Swedish" summary="Swedish input method is enabled"/>
  </token>
</histogram>

<histogram
    name="InputMethod.PhysicalKeyboard.Japanese.Settings.AutoSwitchToHalfwidth"
    enum="Boolean" expires_after="2026-12-01">
  <owner>jhtin@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Logs (On IME activation or settings changed) what the
    AutomaticallySwitchToHalfWidth setting is set to.
  </summary>
</histogram>

<histogram
    name="InputMethod.PhysicalKeyboard.Japanese.Settings.DisablePersonalizedSuggestions"
    enum="Boolean" expires_after="2026-12-01">
  <owner>jhtin@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Logs (On IME activation or settings changed) what the
    DisablePersonalizedSuggestions setting is set to.
  </summary>
</histogram>

<histogram name="InputMethod.PhysicalKeyboard.Japanese.Settings.InputMode"
    enum="JpSettingsInputMode" expires_after="2026-12-01">
  <owner>jhtin@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Logs (On IME activation or settings changed) what the InputMode setting is
    set to.
  </summary>
</histogram>

<histogram name="InputMethod.PhysicalKeyboard.Japanese.Settings.KeymapStyle"
    enum="JpSettingsKeymapStyle" expires_after="2026-12-01">
  <owner>jhtin@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Logs (On IME activation or settings changed) what the KeymapStyle setting is
    set to.
  </summary>
</histogram>

<histogram
    name="InputMethod.PhysicalKeyboard.Japanese.Settings.NumberOfSuggestions"
    units="suggestions" expires_after="2026-12-01">
  <owner>shend@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Warning: this histogram was expired from 2023-05 to 2024-09; data may be
    missing. Logs (On IME activation or settings changed) what the
    NumberOfSuggestions setting is set to.
  </summary>
</histogram>

<histogram
    name="InputMethod.PhysicalKeyboard.Japanese.Settings.PunctuationStyle"
    enum="JpSettingsPunctuationStyle" expires_after="2026-12-01">
  <owner>jhtin@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Logs (On IME activation or settings changed) what the PunctuationStyle
    setting is set to.
  </summary>
</histogram>

<histogram
    name="InputMethod.PhysicalKeyboard.Japanese.Settings.SelectionShortcut"
    enum="JpSettingsSelectionShortcut" expires_after="2026-12-01">
  <owner>jhtin@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Logs (On IME activation or settings changed) what the SelectionShortcut
    setting is set to.
  </summary>
</histogram>

<histogram
    name="InputMethod.PhysicalKeyboard.Japanese.Settings.ShiftKeyModeStyle"
    enum="JpSettingsShiftKeyModeStyle" expires_after="2026-12-01">
  <owner>jhtin@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Logs (On IME activation or settings changed) what the ShiftKeyModeStyle
    setting is set to.
  </summary>
</histogram>

<histogram
    name="InputMethod.PhysicalKeyboard.Japanese.Settings.SpaceInputStyle"
    enum="JpSettingsSpaceInputStyle" expires_after="2026-12-01">
  <owner>jhtin@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Logs (On IME activation or settings changed) what the SpaceInputStyle
    setting is set to.
  </summary>
</histogram>

<histogram name="InputMethod.PhysicalKeyboard.Japanese.Settings.SymbolStyle"
    enum="JpSettingsSymbolStyle" expires_after="2026-12-01">
  <owner>jhtin@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Logs (On IME activation or settings changed) what the SymbolStyle setting is
    set to.
  </summary>
</histogram>

<histogram
    name="InputMethod.PhysicalKeyboard.Japanese.Settings.UseInputHistory"
    enum="Boolean" expires_after="2026-12-01">
  <owner>jhtin@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Logs (On IME activation or settings changed) what the UseInputHistory
    setting is set to.
  </summary>
</histogram>

<histogram
    name="InputMethod.PhysicalKeyboard.Japanese.Settings.UseSystemDictionary"
    enum="Boolean" expires_after="2026-12-01">
  <owner>jhtin@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Logs (On IME activation or settings changed) what the UseSystemDictionary
    setting is set to.
  </summary>
</histogram>

<histogram name="InputMethod.PhysicalKeyboard.Japanese.StartupAction"
    enum="JapaneseStartupAction" expires_after="2026-12-01">
  <owner>jhtin@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Action performed on IME startup with respect to Japanese data. This will
    primarily be used to indicate if a user has migrated their data for JP SYS
    PK or not.
  </summary>
</histogram>

<histogram name="InputMethod.PhysicalKeyboard.KeyboardShortcut"
    enum="PhysicalKeyboardShortcut" expires_after="2027-02-07">
  <owner>wbjacksonjr@chromium.org</owner>
  <owner>embedded-experience@google.com</owner>
  <summary>
    Keyboard shortcut performed by user on physical IME. This signal should only
    be sent on key down.
  </summary>
</histogram>

<histogram name="InputMethod.PhysicalKeyboard.Korean.Action"
    enum="KoreanAction" expires_after="2026-12-01">
  <owner>shend@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Action performed on the Korean IME. Recorded whenever one of the actions is
    performed.
  </summary>
</histogram>

<histogram name="InputMethod.PhysicalKeyboard.Korean.MultipleSyllables"
    enum="Boolean" expires_after="2023-08-08">
  <owner>shend@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Whether multiple syllables is enabled by the Korean IME. Recorded when the
    user focuses on a new input field.
  </summary>
</histogram>

<histogram name="InputMethod.PhysicalKeyboard.LongpressDiacritics.AcceptedChar"
    enum="IMEPKLongpressDiacriticUnicodeCharacterCode"
    expires_after="2026-12-01">
  <owner>jhtin@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The unicode character code for the diacritic and character variant accepted
    by a user using longpress diacritics on physical keyboard.
  </summary>
</histogram>

<histogram name="InputMethod.PhysicalKeyboard.LongpressDiacritics.Action"
    enum="IMEPKLongpressDiacriticAction" expires_after="2026-12-01">
  <owner>jhtin@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Action related to the longpress diacritics window on physical keyboard.
    These actions are recorded in LongpressDiacriticsSuggester functions:
    SHOW_WINDOW in TrySuggestOnLongpress, ACCEPT in AcceptSuggestion, and
    DISMISS in DismissSuggestion.
  </summary>
</histogram>

<histogram name="InputMethod.PhysicalKeyboard.VietnameseTelex.FlexibleTyping"
    enum="Boolean" expires_after="2026-12-01">
  <owner>jhtin@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Whether flexible typing is enabled by the Vietnamese Telex IME. Recorded on
    IME activation (settings change or changing IME).
  </summary>
</histogram>

<histogram name="InputMethod.PhysicalKeyboard.VietnameseTelex.ModernToneMark"
    enum="Boolean" expires_after="2026-12-01">
  <owner>jhtin@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Whether modern tone mark is enabled by the Vietnamese Telex IME. Recorded on
    IME activation (settings change or changing IME).
  </summary>
</histogram>

<histogram name="InputMethod.PhysicalKeyboard.VietnameseTelex.ShowUnderline"
    enum="Boolean" expires_after="2026-12-01">
  <owner>jhtin@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Whether show underline setting is enabled by the Vietnamese Telex IME.
    Recorded on IME activation (settings change or changing IME).
  </summary>
</histogram>

<histogram name="InputMethod.PhysicalKeyboard.VietnameseTelex.UODoubleHorn"
    enum="Boolean" expires_after="2026-12-01">
  <owner>jhtin@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Whether UO double horn shortcut is enabled by the Vietnamese Telex IME.
    Recorded on IME activation (settings change or changing IME).
  </summary>
</histogram>

<histogram name="InputMethod.PhysicalKeyboard.VietnameseTelex.WForUHorn"
    enum="Boolean" expires_after="2026-12-01">
  <owner>jhtin@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Whether W for U Horn shortcut is enabled by the Vietnamese Telex IME.
    Recorded on IME activation (settings change or changing IME).
  </summary>
</histogram>

<histogram name="InputMethod.PhysicalKeyboard.VietnameseVNI.FlexibleTyping"
    enum="Boolean" expires_after="2026-12-01">
  <owner>jhtin@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Whether flexible typing is enabled by the Vietnamese VNI IME. Recorded on
    IME activation (settings change or changing IME).
  </summary>
</histogram>

<histogram name="InputMethod.PhysicalKeyboard.VietnameseVNI.ModernToneMark"
    enum="Boolean" expires_after="2026-12-01">
  <owner>jhtin@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Whether modern tone mark is enabled by the Vietnamese VNI IME. Recorded on
    IME activation (settings change or changing IME).
  </summary>
</histogram>

<histogram name="InputMethod.PhysicalKeyboard.VietnameseVNI.ShowUnderline"
    enum="Boolean" expires_after="2026-12-01">
  <owner>jhtin@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Whether show underline setting is enabled by the Vietnamese VNI IME.
    Recorded on IME activation (settings change or changing IME).
  </summary>
</histogram>

<histogram name="InputMethod.PhysicalKeyboard.VietnameseVNI.UODoubleHorn"
    enum="Boolean" expires_after="2026-12-01">
  <owner>jhtin@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Whether UO double horn shortcut is enabled by the Vietnamese VNI IME.
    Recorded on IME activation (settings change or changing IME).
  </summary>
</histogram>

<histogram name="InputMethod.PkCommit.Type" enum="IMECommitType2"
    expires_after="2026-12-01">
  <owner>dvallet@chromium.org</owner>
  <owner>shuchen@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Warning: this histogram was expired from 2023-05 to 2023-11; data may be
    missing. The suggestion accuracy type which the user chooses to commit for
    physical keyboard autocorrect.
  </summary>
</histogram>

<histogram name="InputMethod.SessionDuration" units="ms"
    expires_after="2025-09-14">
  <owner>shend@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The average length of user sessions on ChromeOS. This can be combined with
    characters per session to determine characters per minute. A user session
    consists of a user typing 10+ characters for 1+ seconds where there is no
    period of time where the user is inactive for more than 3 seconds. This gets
    recorded when we detect user input and it has been more than 3 seconds since
    the last input by the user and also when a change in the Engine or Text
    field selected is detected.
  </summary>
</histogram>

<histogram name="InputMethod.StylusHandwriting.Gesture"
    enum="StylusHandwritingGesture" expires_after="2027-07-29">
  <owner>peconn@chromium.org</owner>
  <owner>embedded-experience@google.com</owner>
  <summary>
    Recorded when a user on Android is interacting with a text field using a
    stylus device and the IME recognises that interaction as a gesture (such as
    selecting or deleting text).
  </summary>
</histogram>

<histogram name="InputMethod.StylusHandwriting.GestureResult"
    enum="StylusHandwritingGestureResult" expires_after="2027-07-29">
  <owner>alexmitra@chromium.org</owner>
  <owner>embedded-experience@google.com</owner>
  <summary>
    Records the result of a gesture which is sent back to Android.
  </summary>
</histogram>

<histogram name="InputMethod.StylusHandwriting.GestureTime2" units="ms"
    expires_after="2027-07-29">
  <owner>alexmitra@chromium.org</owner>
  <owner>embedded-experience@google.com</owner>
  <summary>
    The time taken to process and complete a gesture. More specifically, the
    time between being sent a gesture from Android and getting the gesture
    result from Blink. This is recorded once per gesture.
  </summary>
</histogram>

<histogram name="InputMethod.StylusHandwriting.Triggered"
    enum="StylusHandwritingApi" expires_after="2027-07-29">
  <owner>peconn@chromium.org</owner>
  <owner>embedded-experience@google.com</owner>
  <summary>
    When an Android user is interacting with a text field using a stylus and
    there is an available API on the device, we trigger stylus handwriting. This
    histogram records which API is available (plain Android or DirectWriting)
    and when it is triggered.
  </summary>
</histogram>

<histogram name="InputMethod.SystemEmojiPicker.Delay" units="ms"
    expires_after="2026-12-01">
  <owner>jopalmer@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Warning: this histogram was expired from 2023-09 to 2023-11; data may be
    missing. Time between when emoji picker shown and when the emoji is inserted
  </summary>
</histogram>

<histogram name="InputMethod.SystemEmojiPicker.InsertionLatency" units="ms"
    expires_after="2026-12-01">
  <owner>greywang@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Time between when emoji is clicked and when the emoji is successfully
    inserted (fallback coping to clipboard does not count here). The metric is
    recorded every time when emoji / image insertion is successfully finished in
    System Emoji Picker.
  </summary>
</histogram>

<histogram name="InputMethod.SystemEmojiPicker.LoadTime" units="ms"
    expires_after="2027-01-31">
  <owner>jopalmer@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Time between when emoji picker is opened and when UI is completely loaded.
    Used to monitor performance of emoji picker. Recorded once the ChromeOS
    emoji picker finishes loading.
  </summary>
</histogram>

<histogram name="InputMethod.SystemEmojiPicker.SearchLength" units="characters"
    expires_after="2026-12-01">
  <owner>jopalmer@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Warning: this histogram was expired from 2023-02 to 2023-11; data may be
    missing. Length of search string in emoji picker when emoji was inserted.
  </summary>
</histogram>

<histogram name="InputMethod.SystemEmojiPicker.TriggerType"
    enum="VirtualKeyboardEmojiTriggerType" expires_after="2026-12-01">
  <owner>jopalmer@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>How emojis were inserted.</summary>
</histogram>

<histogram name="InputMethod.TouchSelection.DragType"
    enum="TouchSelectionDragType" expires_after="2027-02-07">
  <owner>michellegc@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Type of dragging gesture used to adjust the selection or cursor position on
    ChromeOS. Recorded at the end of the drag.
  </summary>
</histogram>

<histogram name="InputMethod.TouchSelection.MenuAction"
    enum="TouchSelectionMenuAction" expires_after="2026-12-01">
  <owner>michellegc@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Action requested by a ChromeOS user from the touch selection menu. Recorded
    when the menu button is pressed.
  </summary>
</histogram>

<histogram name="InputMethod.VirtualKeyboard.BackspaceCount" units="units"
    expires_after="2026-12-01">
  <owner>shend@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The number of times the backspace key was pressed on the virtual keyboard,
    while the virtual keyboard was alive. Recorded when the virtual keyboard is
    closed.
  </summary>
</histogram>

<histogram name="InputMethod.VirtualKeyboard.CharactersCommitted" units="units"
    expires_after="2026-12-01">
  <owner>shend@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The total number of characters committed. Recorded when the virtual keyboard
    is closed.
  </summary>
</histogram>

<histogram
    name="InputMethod.VirtualKeyboard.CharactersPerMinute{InputModality}"
    units="charactersPerMinute" expires_after="2026-12-01">
  <owner>curtismcmullan@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Typing speed in each user session on ChromeOS when using the virtual
    keyboard. A user session consists of a user typing 10+ characters for 1+
    seconds where there is no period of time where the user is inactive for more
    than 3 seconds. This gets recorded when we detect user input and it has been
    more than 3 seconds since the last input by the user and also when a change
    in the Engine or Text field selected is detected.
  </summary>
  <token key="InputModality">
    <variant name="" summary="aggregate"/>
    <variant name=".hwt" summary="handwriting"/>
    <variant name=".voice" summary="voice"/>
  </token>
</histogram>

<histogram
    name="InputMethod.VirtualKeyboard.CharactersPerSession{InputModality}"
    units="characters" expires_after="2026-12-01">
  <owner>curtismcmullan@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Number of characters entered in a single user session on ChromeOS when using
    the virtual keyboard. A user session consists of a user typing 10+
    characters for 1+ seconds where there is no period of time where the user is
    inactive for more than 3 seconds. This gets recorded when we detect user
    input and it has been more than 3 seconds since the last input by the user
    and also when a change in the Engine or Text field selected is detected.
  </summary>
  <token key="InputModality">
    <variant name="" summary="aggregate"/>
    <variant name=".hwt" summary="handwriting"/>
    <variant name=".voice" summary="voice"/>
  </token>
</histogram>

<histogram name="InputMethod.VirtualKeyboard.ContainerBehavior"
    enum="VirtualKeyboardContainerType" expires_after="2026-12-01">
  <owner>shend@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Chrome OS histogram that counts the number of times each virtual keyboard
    display mode is used. Recorded when the virtual keyboard is opened or a user
    changes the keyboard mode from UI in the virtual keyboard.
  </summary>
</histogram>

<histogram name="InputMethod.VirtualKeyboard.Duration" units="seconds"
    expires_after="2022-10-01">
  <owner>shend@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>How long the virtual keyboard was visible.</summary>
</histogram>

<histogram name="InputMethod.VirtualKeyboard.Emoji.Delay" units="ms"
    expires_after="M110">
  <owner>jopalmer@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Time between when emoji shown in VK and when the emoji is inserted.
  </summary>
</histogram>

<histogram name="InputMethod.VirtualKeyboard.Emoji.TriggerType"
    enum="VirtualKeyboardEmojiTriggerType" expires_after="2026-12-01">
  <owner>shend@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>How emojis were inserted.</summary>
</histogram>

<histogram name="InputMethod.VirtualKeyboard.ErrorType"
    enum="VirtualKeyboardErrorTypeHashes" expires_after="2022-02-01">
  <owner>shend@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>Errors from the virtual keyboard extension</summary>
</histogram>

<histogram name="InputMethod.VirtualKeyboard.FocusedByStylus" enum="Boolean"
    expires_after="M100">
  <owner>shend@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Whether an input field was focused by a stylus or not. Recorded when an
    input field is focused.
  </summary>
</histogram>

<histogram
    name="InputMethod.VirtualKeyboard.Handwriting.DWServiceCallbackFailed"
    enum="Boolean" expires_after="2026-11-21">
  <owner>alexmitra@chromium.org</owner>
  <owner>peconn@chromium.org</owner>
  <summary>
    Logs true if an unsuccessful attempt was made to instantiate the
    DirectWritingServiceCallback. Logs false when DirectWriting is successfully
    enabled in Chrome. This is to gauge how often crbug.com/1375266 is being
    encountered.
  </summary>
</histogram>

<histogram
    name="InputMethod.VirtualKeyboard.Handwriting.KeyboardContainerOnCommit"
    enum="VirtualKeyboardContainerType" expires_after="2026-12-01">
  <owner>curtismcmullan@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    [Longform VK Handwriting] Warning: this histogram was expired from 2021-12
    to 2023-11; data may be missing. What type of container was the virtual
    keyboard in when text was committed from the handwriting input method.
  </summary>
</histogram>

<histogram name="InputMethod.VirtualKeyboard.Handwriting.KeyboardWidthOnCommit"
    units="px" expires_after="2026-12-01">
  <owner>curtismcmullan@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    [Longform VK Handwriting] Warning: this histogram was expired from 2021-12
    to 2023-11; data may be missing. How wide was the keyboard container when
    text was committed from the handwriting input method.
  </summary>
</histogram>

<histogram name="InputMethod.VirtualKeyboard.InitLatency.KeyboardShownLongTail"
    units="ms" expires_after="2027-01-31">
  <owner>jopalmer@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Time to show the on-screen keyboard in milliseconds. Similar to
    InputMethod.VirtualKeyboard.KeyboardShown but with a larger maximum to
    capture more of the distribution.
  </summary>
</histogram>

<histogram name="InputMethod.VirtualKeyboard.InitLatency{IMEVKLatency}"
    units="ms" expires_after="2027-01-31">
  <owner>shend@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The on-screen keyboard initialization latency in milliseconds.
    {IMEVKLatency}. Warning: this histogram was expired from M95 to 2024-02;
    data may be missing.
  </summary>
  <token key="IMEVKLatency">
    <variant name=""/>
    <variant name=".BackgroundSettingsFetched"
        summary="Latency for settings fetched from background"/>
    <variant name=".HtmlLoaded" summary="Latency for the page is loaded"/>
    <variant name=".KeyboardCreated"
        summary="Latency for the keyboard is created"/>
    <variant name=".KeyboardShown" summary="Latency for keyboard is shown"/>
    <variant name=".KeysetLoaded"
        summary="Latency for keyset config is loaded"/>
    <variant name=".LayoutLoaded"
        summary="Latency for layout definition is loaded"/>
  </token>
</histogram>

<histogram name="InputMethod.VirtualKeyboard.Layout" enum="IMEVKLayout"
    expires_after="2026-12-01">
  <owner>shend@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The layout of the on-screen keyboard. Logged when the specific layout is
    shown.
  </summary>
</histogram>

<histogram name="InputMethod.VirtualKeyboard.Multipaste.Actions"
    enum="IMEMultipasteAction" expires_after="2022-04-03">
  <owner>jiwan@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The user actions taken in multipaste virtual keyboard, such as pasting a
    clipboard item. Recorded after a user action is performed in multipaste
    virtual keyboard.
  </summary>
</histogram>

<histogram name="InputMethod.VirtualKeyboard.Paprika.Actions"
    enum="IMEPaprikaActions" expires_after="M110">
  <owner>jopalmer@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Type of action performed by the user in Paprika. Recorded when the action is
    performed. Only for Chrome OS
  </summary>
</histogram>

<histogram name="InputMethod.VirtualKeyboard.Paprika.StartedWritingAfterEdu"
    enum="Boolean" expires_after="M105">
  <owner>jopalmer@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Did the user start handwriting in Paprika after dismissing the Edu dialog?
    Recorded when Paprika is closed.
  </summary>
</histogram>

<histogram name="InputMethod.VirtualKeyboard.PreferredLayoutForStylus"
    enum="IMEVKLayout" expires_after="2021-12-12">
  <owner>shend@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The layout of the virtual keyboard that is shown when the user focuses on an
    input field with a stylus. Recorded when the layout is shown after a focus.
  </summary>
</histogram>

<histogram name="InputMethod.VirtualKeyboard.ResizableWindowInitWidth"
    units="px" expires_after="2022-02-01">
  <owner>curtismcmullan@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The width of the virtual keyboard window, in pixels, when the floating
    keyboard is initialized. This is recorded only once on startup, when the
    virtual keyboard is initialized in floating mode.
  </summary>
</histogram>

<histogram name="InputMethod.VirtualKeyboard.ResizableWindowWidth" units="px"
    expires_after="2027-02-07">
  <owner>curtismcmullan@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Warning: this histogram was expired from 2021-09 to 2023-11; data may be
    missing. The width of the virtual keyboard window, in pixels, after a user
    has completed resizing the virtual keyboard. This is recorded when the user
    lifts their finger at the end of a drag that initiates a resize.
  </summary>
</histogram>

<histogram name="InputMethod.VirtualKeyboard.SessionDuration" units="ms"
    expires_after="2026-12-01">
  <owner>shend@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The average length of user sessions on ChromeOS when using the virtual
    keyboard. This can be combined with characters per session to determine NSM.
    A user session consists of a user typing 10+ characters for 1+ seconds where
    there is no period of time where the user is inactive for more than 3
    seconds. This gets recorded when we detect user input and it has been more
    than 3 seconds since the last input by the user and also when a change in
    the Engine or Text field selected is detected.
  </summary>
</histogram>

<histogram name="InputMethod.VirtualKeyboard.SwitchMode" enum="IMEVKMode"
    expires_after="2026-12-01">
  <owner>shend@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Warning: this histogram was expired from 2023-08 to 2023-11; data may be
    missing. The count of user actions to switch keyboard mode (floating,
    docked). Recorded when the user clicks in the docked/floating keyboard menu
    option.
  </summary>
</histogram>

<histogram name="Stylus.Handwriting.RequestHandwritingForPointer"
    enum="Hresult" expires_after="2026-09-06">
  <owner>flackr@chromium.org</owner>
  <owner>johna@microsoft.com</owner>
  <owner>gerchiko@microsoft.com</owner>
  <summary>
    Records the HRESULT returned by RequestHandwritingForPointer. This is only
    applicable to users on Windows.
  </summary>
</histogram>

<histogram name="Stylus.Handwriting.TSFFocus" enum="Boolean"
    expires_after="2026-09-06">
  <owner>flackr@chromium.org</owner>
  <owner>johna@microsoft.com</owner>
  <owner>gerchiko@microsoft.com</owner>
  <summary>
    Records whether the TSF focus was successfully set. This is only applicable
    to users on Windows.
  </summary>
</histogram>

<histogram name="TextInputClient.CharacterIndex.TimedOut" enum="Boolean"
    expires_after="2027-01-03">
  <owner>joenotcharles@google.com</owner>
  <owner>input-dev@chromium.org</owner>
  <summary>
    Recorded per call from a browser process thread to query
    GetCharacterIndexAtPoint on a renderer process. If True the call timed out
    before receiving a response.

    Only recorded on macOS.
  </summary>
</histogram>

<histogram name="TextInputClient.CharacterIndex2" units="ms"
    expires_after="2027-01-03">
  <owner>joenotcharles@google.com</owner>
  <owner>input-dev@chromium.org</owner>
  <summary>
    Recorded per call from a browser process thread to query
    GetCharacterIndexAtPoint on a renderer process, with the duration of the
    query. The call is effectively synchronous, blocking all other tasks from
    running on the browser thread for that duration. The duration is tracked
    with LiveTicks so doesn't include time when the system is suspended.

    Only recorded on macOS.
  </summary>
</histogram>

<histogram name="TextInputClient.FirstRect.TimedOut" enum="Boolean"
    expires_after="2026-12-27">
  <owner>joenotcharles@google.com</owner>
  <owner>input-dev@chromium.org</owner>
  <summary>
    Recorded per call from a browser process thread to query
    GetFirstRectForRange on a renderer process. If True the call timed out
    before receiving a response.

    Only recorded on macOS.
  </summary>
</histogram>

<histogram name="TextInputClient.FirstRect2" units="ms"
    expires_after="2026-12-27">
  <owner>joenotcharles@google.com</owner>
  <owner>input-dev@chromium.org</owner>
  <summary>
    Recorded per call from a browser process thread to query
    GetFirstRectForRange on a renderer process, with the duration of the query.
    The call is effectively synchronous, blocking all other tasks from running
    on the browser thread for that duration. The duration is tracked with
    LiveTicks so doesn't include time when the system is suspended.

    Only recorded on macOS.
  </summary>
</histogram>

<histogram name="TextInputClient.GetCachedFirstRectResult"
    enum="GetCachedFirstRectResult" expires_after="2026-12-20">
  <owner>joenotcharles@google.com</owner>
  <owner>input-dev@chromium.org</owner>
  <summary>
    Records the result of attempting to retrieve the first rect for a character
    range from the cache on Mac. This is logged every time
    RenderWidgetHostViewMac::GetCachedFirstRectForCharacterRange is called.

    Only recorded on macOS.
  </summary>
</histogram>

<histogram name="TextInputClient.LockWait2" units="ms"
    expires_after="2026-12-27">
  <owner>joenotcharles@google.com</owner>
  <owner>input-dev@chromium.org</owner>
  <summary>
    Time took to acquire TextInputClient mutex lock on the browser process
    thread, recorded per attempt. The histogram is useful to understand how much
    of the TextInputClient.FirstRect2 and TextInputClient.CharacterIndex2
    latency are due to acquring browser-side lock. For parity with those
    histograms, the duration is tracked with LiveTicks so doesn't include time
    when the system is suspended.

    Only recorded on macOS.
  </summary>
</histogram>

<histogram name="Touch.DevicePosture.{Instance}" enum="PostureMode"
    expires_after="2027-06-20">
  <owner>robliao@chromium.org</owner>
  <owner>wangsongjin@microsoft.com</owner>
  <owner>gerchiko@microsoft.com</owner>
  <owner>input-dev@chromium.org</owner>
  <summary>
    Records the device posture mode (tablet or desktop) usage patterns across
    different device. This metric is only logged once per browser session when
    initializing the singleton `TouchUiController` at startup. This metric is
    only available on Windows. The metric is not logged on devices that have
    explicitly disabled convertibility.

    Startup: Records the device posture mode detected at browser startup.

    Switch: Records the device posture mode is switched to another.
  </summary>
  <token key="Instance">
    <variant name="Startup"/>
    <variant name="Switch"/>
  </token>
</histogram>

<histogram name="Untrusted.InputMethod.PhysicalKeyboard.VietnameseActions"
    enum="VietnameseActions" expires_after="2025-01-05">
  <owner>jhtin@chromium.org</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Actions used by the Vietnamese engine to compose text. Since this is logged
    from a sandboxed service so it has to be in the untrusted namespace.
  </summary>
</histogram>

<!--
These viewport metrics are in input/ since they're related to pinch-zoom, which
is owned by the Blink input team.
-->

<histogram name="Viewport.MetaTagType" enum="MetaTagTypeEnum"
    expires_after="2025-03-23">
  <owner>bokan@chromium.org</owner>
  <owner>input-dev@chromium.org</owner>
  <summary>
    The viewport meta tag type seen on each page load. Only recorded on Android.
    Recorded when the page finishes loading.
  </summary>
</histogram>

</histograms>

</histogram-configuration>
