<!--
Copyright 2020 The Chromium Authors. All rights reserved.
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 Assistant histograms
along with a detailed description for each histogram.

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

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

<histogram-configuration>

<histograms>

<variants name="QuickAnswersClickResultType">
  <variant name=".Definition" summary="Definition result type"/>
  <variant name=".NoResult" summary="Result is not available"/>
  <variant name=".Translation" summary="Translation result type"/>
  <variant name=".UnitConversion" summary="UnitConversion result type"/>
</variants>

<variants name="QuickAnswersConsentInteractionType">
  <variant name=".Accept" summary="Clicks on the accept button"/>
  <variant name=".Dismiss" summary="Dismisses the consent"/>
  <variant name=".ManageSettings"
      summary="Clicks on the 'manage settings' button"/>
</variants>

<variants name="QuickAnswersV2ConsentResultType">
  <variant name=".Allow" summary="Clicks on the allow button"/>
  <variant name=".Dismiss" summary="Dismisses or ignores the consent"/>
  <variant name=".NoThanks" summary="Clicks on the no thanks button"/>
</variants>

<variants name="UserEligibilityTiming">
<!--
    Before M90, the base ("") variant was reported multiple times per search
    and at other random points in time.

    From M90 onwards, this is reported to exactly once per mic click.
  -->

  <variant name="" summary="when the mic button is pressed"/>
  <variant name=".Startup" summary="on browser startup"/>
</variants>

<histogram name="Assistant.BetterOnboarding.Click"
    enum="AssistantBetterOnboardingType" expires_after="2022-05-01">
  <owner>xiaohuic@chromium.org</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>
    The number of times Assistant better onboarding buttons are clicked.
  </summary>
</histogram>

<histogram name="Assistant.BetterOnboarding.Shown"
    enum="AssistantBetterOnboardingMode" expires_after="2021-12-19">
  <owner>xiaohuic@chromium.org</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>
    The number of times Assistant better onboarding UI is shown. The UI has a
    few different modes recorded in the enum.
  </summary>
</histogram>

<histogram name="Assistant.ButtonClickCount" enum="AssistantButtonId"
    expires_after="2022-04-11">
  <owner>xiaohuic@chromium.org</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>
    The number of times buttons on Assistant UI (e.g., minimize) are clicked.
  </summary>
</histogram>

<histogram name="Assistant.ContextEnabledUserCount" enum="BooleanEnabled"
    expires_after="2022-04-24">
  <owner>updowndota@chromium.org</owner>
  <owner>xiaohuic@chromium.org</owner>
  <summary>
    Among eligible users, whether the user has the Assistant context (related
    info) enabled. Recorded once for every UMA upload. The set of eligible users
    includes all users with profiles that can allow Assistant service to be
    enabled (AssistantAllowedState is limited by locale, policy, etc).
  </summary>
</histogram>

<histogram name="Assistant.DspHotwordDetection"
    enum="DspHotwordDetectionStatus" expires_after="2022-06-12">
  <owner>xiaohuic@chromium.org</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>
    Counts the number of times Dsp hotword gets detected in each status, to help
    capture the hotword false acceptance rate.
  </summary>
</histogram>

<histogram name="Assistant.EntryPoint" enum="AssistantEntryPoint"
    expires_after="2022-08-09">
  <owner>xiaohuic@chromium.org</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>
    Record the Assistant entry point where Assistant UI becomes visible.
    ChromeOS only.
  </summary>
</histogram>

<histogram name="Assistant.ExitPoint" enum="AssistantExitPoint"
    expires_after="2022-08-09">
  <owner>xiaohuic@chromium.org</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>
    Record the Assistant exit point where Assistant UI becomes invisible.
    ChromeOS only.
  </summary>
</histogram>

<histogram name="Assistant.HotwordEnableNotification" enum="BooleanHit"
    expires_after="2022-12-31">
  <owner>updowndota@chromium.org</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>
    Counts the number of times user click the hotword enable notification to
    open Assistant settings.
  </summary>
</histogram>

<histogram name="Assistant.Interaction.Resolution"
    enum="AssistantInteractionResolution" expires_after="2021-07-22">
  <owner>xiaohuic@chromium.org</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>
    Record the Assistant interaction resolution code. It indicates how the
    Assistant server interpreted a particular query and decision on the state,
    e.g. if the conversation is normal or timed out or ended with other errors.
  </summary>
</histogram>

<histogram name="Assistant.OptInFlow.GetSettingsRequestTime" units="ms"
    expires_after="2022-09-01">
  <owner>updowndota@chromium.org</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>
    Amount of time between get settings request and response. The request will
    be sent for each time the Assistant OptIn Flow is triggered to get string
    texts from the server.
  </summary>
</histogram>

<histogram name="Assistant.OptInFlow.LoadingTimeoutCount" units="timeouts"
    expires_after="2022-09-01">
  <owner>updowndota@chromium.org</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>
    Number of times that the loading timeout triggers. The loading timeout is
    set by the Assistant OptIn Flow loading screen, which shows up during the
    server string texts and webviews are pending.
  </summary>
</histogram>

<histogram name="Assistant.OptInFlowStatus" enum="AssistantOptInFlowStatus"
    expires_after="2022-04-10">
  <owner>updowndota@chromium.org</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>Record the status of the Assistant opt-in flow.</summary>
</histogram>

<histogram name="Assistant.QueryCountPerEntryPoint" enum="AssistantEntryPoint"
    expires_after="2022-12-26">
  <owner>xiaohuic@chromium.org</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>Number of queries fired for each entry point.</summary>
</histogram>

<histogram name="Assistant.QueryResponseType" enum="AssistantQueryResponseType"
    expires_after="2022-07-01">
  <owner>xiaohuic@chromium.org</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>The Assistant query response type.</summary>
</histogram>

<histogram name="Assistant.QuerySource" enum="AssistantQuerySource"
    expires_after="2022-05-01">
  <owner>xiaohuic@chromium.org</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>
    The source of Assistant query (e.g. dialog plate text field, voice input).
    Recorded when the query is committed.
  </summary>
</histogram>

<histogram name="Assistant.ServiceEnabledUserCount" enum="BooleanEnabled"
    expires_after="2022-04-24">
  <owner>xiaohuic@chromium.org</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>
    Among eligible users, whether the user has the Assistant service enabled.
    Recorded once for every UMA upload. The set of eligible users includes all
    users with profiles that can allow Assistant service to be enabled
    (AssistantAllowedState is limited by locale, policy, etc).
  </summary>
</histogram>

<histogram name="Assistant.ServiceReadyTime" units="ms"
    expires_after="2022-08-29">
  <owner>xiaohuic@chromium.org</owner>
  <summary>
    Amount of time between when the Assistant service is launched, and when the
    Assistant back-end signals it is ready to process queries.
  </summary>
</histogram>

<histogram name="Assistant.ServiceStartTime" units="ms"
    expires_after="2022-08-29">
  <owner>updowndota@chromium.org</owner>
  <summary>Amount of time spent in starting Assistant service.</summary>
</histogram>

<histogram name="Assistant.SetDspHotwordLocale" enum="BooleanSuccess"
    expires_after="2022-05-01">
  <owner>xiaohuic@chromium.org</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>
    For each attempt to set the hotword locale for a DSP device, counts whether
    the attempt succeeded.
  </summary>
</histogram>

<histogram name="Assistant.VoiceSearch.AgsaVersion{Timing}" units="Version"
    expires_after="2022-08-22">
  <owner>wylieb@chromium.org</owner>
  <owner>fgorski@chromium.org</owner>
  <owner>jds@google.com</owner>
  <summary>
    (Android only) Reports the current Agsa version on the device. The version
    is reported as described in GSAState#parseAgsaMajorMinorVersionAsInteger.

    This is reported {Timing}.
  </summary>
  <token key="Timing" variants="UserEligibilityTiming"/>
</histogram>

<histogram name="Assistant.VoiceSearch.ConsentOutcome"
    enum="AssistantConsentOutcome" expires_after="2022-08-22">
  <owner>wylieb@chromium.org</owner>
  <owner>fgorski@chromium.org</owner>
  <owner>jds@google.com</owner>
  <summary>
    (Android only) Reports the outcome of the consent dialog shown for the
    assistant.
  </summary>
</histogram>

<histogram name="Assistant.VoiceSearch.UserEligibility.FailureReason{Timing}"
    enum="EligibilityFailureReason" expires_after="2022-08-22">
  <owner>wylieb@chromium.org</owner>
  <owner>fgorski@chromium.org</owner>
  <owner>jds@google.com</owner>
  <summary>
    (Android only) Reports why users failed the eligibility check for the
    feature.

    Before M90, this histogram only reported the FailureReason which failed the
    eligibility check. If a client failed for multiple reasons, some would be
    ignored.

    From M90 onwards, this will report all FailureReasons that effect
    eligibility.

    This is reported {Timing}.
  </summary>
  <token key="Timing" variants="UserEligibilityTiming"/>
</histogram>

<histogram name="Assistant.VoiceSearch.UserEligibility{Timing}"
    enum="BooleanEligible" expires_after="2022-08-22">
  <owner>wylieb@chromium.org</owner>
  <owner>fgorski@chromium.org</owner>
  <owner>jds@google.com</owner>
  <summary>
    (Android only) Reports user eligibility for Assistant voice search. This is
    reported even when the feature is disabled.

    This is reported {Timing}.
  </summary>
  <token key="Timing" variants="UserEligibilityTiming"/>
</histogram>

<histogram name="QuickAnswers.ActiveImpression" enum="QuickAnswersResultType"
    expires_after="2022-05-01">
  <owner>updowndota@chromium.org</owner>
  <owner>llin@google.com</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>
    For quick answer impression that fulfills a user's intent, records the
    result type. ChromeOS only.
  </summary>
</histogram>

<histogram
    name="QuickAnswers.ActiveImpression.Duration{QuickAnswersClickResultType}"
    units="ms" expires_after="2022-01-16">
  <owner>updowndota@chromium.org</owner>
  <owner>llin@google.com</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>
    For quick answer impression that fulfills a user's intent, records the
    impression duration. ChromeOS only. {QuickAnswersClickResultType}
  </summary>
  <token key="QuickAnswersClickResultType"
      variants="QuickAnswersClickResultType">
    <variant name=""/>
  </token>
</histogram>

<histogram name="QuickAnswers.Click" enum="QuickAnswersResultType"
    expires_after="2022-04-24">
  <owner>updowndota@chromium.org</owner>
  <owner>llin@google.com</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>
    For every quick answer click event, records the result type. ChromeOS only.
  </summary>
</histogram>

<histogram name="QuickAnswers.Click.Duration{QuickAnswersClickResultType}"
    units="ms" expires_after="2022-11-21">
  <owner>updowndota@chromium.org</owner>
  <owner>llin@google.com</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>
    For every quick answer click event, records the duration between fetch
    finish and user clicks. ChromeOS only. {QuickAnswersClickResultType}
  </summary>
  <token key="QuickAnswersClickResultType"
      variants="QuickAnswersClickResultType">
    <variant name=""/>
  </token>
</histogram>

<histogram name="QuickAnswers.Consent" units="impressions" expires_after="M98">
  <obsolete>
    Removed 10-2021
  </obsolete>
  <owner>updowndota@chromium.org</owner>
  <owner>llin@google.com</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>
    For every quick answers consent impression, records how many times the user
    has seen the consent. ChromeOS only.
  </summary>
</histogram>

<histogram
    name="QuickAnswers.Consent.Duration{QuickAnswersConsentInteractionType}"
    units="ms" expires_after="M98">
  <obsolete>
    Removed 10-2021
  </obsolete>
  <owner>updowndota@chromium.org</owner>
  <owner>llin@google.com</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>
    For every quick answers consent interaction event, records how long the user
    has seen the consent before. ChromeOS only.
    {QuickAnswersConsentInteractionType}
  </summary>
  <token key="QuickAnswersConsentInteractionType"
      variants="QuickAnswersConsentInteractionType">
    <variant name="">
      <obsolete>
        Base histogram. Use suffixes of this histogram instead.
      </obsolete>
    </variant>
  </token>
</histogram>

<histogram
    name="QuickAnswers.Consent.Impression{QuickAnswersConsentInteractionType}"
    units="impressions" expires_after="M98">
  <obsolete>
    Removed 10-2021
  </obsolete>
  <owner>updowndota@chromium.org</owner>
  <owner>llin@google.com</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>
    For every quick answers consent interaction event, records how many times
    the user has seen the consent before. ChromeOS only.
    {QuickAnswersConsentInteractionType}
  </summary>
  <token key="QuickAnswersConsentInteractionType"
      variants="QuickAnswersConsentInteractionType">
    <variant name="">
      <obsolete>
        Base histogram. Use suffixes of this histogram instead.
      </obsolete>
    </variant>
  </token>
</histogram>

<histogram name="QuickAnswers.ContextMenu.Close" enum="BooleanClicked"
    expires_after="2022-04-10">
  <owner>updowndota@chromium.org</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>
    Records whether or not the user interacted (via clicking) with a context
    menu, whether or not that menu included any Quick Answers. Recorded when the
    menu is closed. This metric can be used as a baseline for Quick Answers
    engagement metrics, which record whether users click on context menus that
    *do* include a Quick Answers card. Recorded on ChromeOS only.
  </summary>
</histogram>

<histogram name="QuickAnswers.ContextMenu.Close.Duration{InteractionType}"
    units="ms" expires_after="2022-12-31">
  <owner>updowndota@chromium.org</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>
    Records the amount of time the context menu was shown before close if the
    user {InteractionType} (via clicking) with the context menu. Recorded on
    ChromeOS only.
  </summary>
  <token key="InteractionType">
    <variant name="WithClick" summary="has interacted"/>
    <variant name="WithoutClick" summary="has not interacted"/>
  </token>
</histogram>

<histogram name="QuickAnswers.ExitPoint" enum="QuickAnswersExitPoint"
    expires_after="2022-09-01">
  <owner>updowndota@chromium.org</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>
    Record the Quick Answers exit point point when the Quick Answers UI is
    dismissed. ChromeOS only.
  </summary>
</histogram>

<histogram name="QuickAnswers.Intent" enum="QuickAnswersIntentType"
    expires_after="2022-04-10">
  <owner>updowndota@chromium.org</owner>
  <owner>llin@google.com</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>
    For quick answer fetch, records the intent generated on-device. ChromeOS
    only.
  </summary>
</histogram>

<histogram name="QuickAnswers.Loading.Duration" units="ms"
    expires_after="2022-01-23">
  <owner>updowndota@chromium.org</owner>
  <owner>llin@google.com</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>
    For every quick answers fetch, records the duration between fetch start and
    fetch finish. ChromeOS only.
  </summary>
</histogram>

<histogram name="QuickAnswers.Loading.Status" enum="QuickAnswersLoadStatus"
    expires_after="2022-12-31">
  <owner>updowndota@chromium.org</owner>
  <owner>llin@google.com</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>
    For every quick answers fetch, records the result status. ChromeOS only.
  </summary>
</histogram>

<histogram name="QuickAnswers.NetworkError.IntentType"
    enum="QuickAnswersIntentType" expires_after="2022-05-01">
  <owner>updowndota@chromium.org</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>
    Records the intent type when network error occurs during the quick answers
    fetch. ChromeOS only.
  </summary>
</histogram>

<histogram name="QuickAnswers.RequestTextLength.{IntentType}"
    units="characters" expires_after="2022-09-01">
  <owner>updowndota@chromium.org</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>
    For every quick answer request, records the length of the selected text that
    is being used for fetching {IntentType} results. ChromeOS only.
  </summary>
  <token key="IntentType">
    <variant name="Definition" summary="definition"/>
    <variant name="Translation" summary="translation"/>
    <variant name="UnitConversion" summary="unit conversion"/>
  </token>
</histogram>

<histogram name="QuickAnswers.Result" enum="QuickAnswersResultType"
    expires_after="2022-04-03">
  <owner>updowndota@chromium.org</owner>
  <owner>llin@google.com</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>
    For every quick answer result received event, records the result type.
    ChromeOS only.
  </summary>
</histogram>

<histogram name="QuickAnswers.Result.Duration{QuickAnswersClickResultType}"
    units="ms" expires_after="2022-12-31">
  <owner>updowndota@chromium.org</owner>
  <owner>llin@google.com</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>
    For every quick answer result received event, records the duration between
    fetch start and fetch finish. ChromeOS only. {QuickAnswersClickResultType}
  </summary>
  <token key="QuickAnswersClickResultType"
      variants="QuickAnswersClickResultType">
    <variant name=""/>
  </token>
</histogram>

<histogram name="QuickAnswers.SelectedContent.Length" units="characters"
    expires_after="2022-04-10">
  <owner>updowndota@chromium.org</owner>
  <owner>llin@google.com</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>
    For every quick answer request, records the length of the selected text that
    is being considered for fetching quick answers. ChromeOS only.
  </summary>
</histogram>

<histogram name="QuickAnswers.V2.Consent" units="impressions"
    expires_after="2022-09-01">
  <owner>updowndota@chromium.org</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>
    For every quick answers consent impression, records how many times the user
    has seen the consent. ChromeOS only.
  </summary>
</histogram>

<histogram
    name="QuickAnswers.V2.Consent.Duration{QuickAnswersV2ConsentResultType}"
    units="ms" expires_after="2022-09-01">
  <owner>updowndota@chromium.org</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>
    For every quick answers consent result event, records how long the user has
    seen the consent before. ChromeOS only. {QuickAnswersV2ConsentResultType}
  </summary>
  <token key="QuickAnswersV2ConsentResultType"
      variants="QuickAnswersV2ConsentResultType"/>
</histogram>

<histogram
    name="QuickAnswers.V2.Consent.Impression{QuickAnswersV2ConsentResultType}"
    units="impressions" expires_after="2022-09-01">
  <owner>updowndota@chromium.org</owner>
  <owner>croissant-eng@chromium.org</owner>
  <summary>
    For every quick answers consent result event, records how many times the
    user has seen the consent before. ChromeOS only.
    {QuickAnswersV2ConsentResultType}
  </summary>
  <token key="QuickAnswersV2ConsentResultType"
      variants="QuickAnswersV2ConsentResultType"/>
</histogram>

</histograms>

</histogram-configuration>
