<!--
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 PhoneHub 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 send CLs to chromium-metrics-reviews@google.com rather than to specific
individuals. These CLs will be automatically reassigned to a reviewer within
about 5 minutes. This approach helps the metrics team to load-balance incoming
reviews. Googlers can read more about this at go/gwsq-gerrit.
-->

<histogram-configuration>

<histograms>

<histogram name="PhoneHub.Adoption.FeatureStatusChangesSinceLogin"
    enum="PhoneHubFeatureStatus" expires_after="M98">
  <owner>khorimoto@chromium.org</owner>
  <owner>better-together-dev@google.com</owner>
  <summary>
    The feature status changes to PhoneHub after login. Note that this does not
    include the steady state feature status on user login or the status changes
    to the feature status prior to that.
  </summary>
</histogram>

<histogram name="PhoneHub.Adoption.LoginFeatureStatus"
    enum="PhoneHubFeatureStatus" expires_after="M98">
  <owner>khorimoto@chromium.org</owner>
  <owner>better-together-dev@google.com</owner>
  <summary>The steady state feature status of PhoneHub on user login.</summary>
</histogram>

<histogram name="PhoneHub.CompletedUserAction" enum="PhoneHubUserAction"
    expires_after="2021-12-01">
  <owner>khorimoto@chromium.org</owner>
  <owner>better-together-dev@google.com</owner>
  <summary>
    Measures actions taken by the user as part of the Phone Hub feature; emitted
    when the user attempts the actions described in the PhoneHubUserAction enum.

    Used to measure engagement and track 28DA user counts.
  </summary>
</histogram>

<histogram name="PhoneHub.Connection.Duration" units="ms" expires_after="M99">
  <owner>khorimoto@chromium.org</owner>
  <owner>better-together-dev@google.com</owner>
  <summary>
    The duration of time the phone is in the connected state, and becomes
    disconnected.
  </summary>
</histogram>

<histogram name="PhoneHub.Connection.Result" enum="BooleanSuccess"
    expires_after="2021-11-30">
  <owner>khorimoto@chromium.org</owner>
  <owner>better-together-dev@google.com</owner>
  <summary>
    Measures PhoneHub connection success rate, considering attempts where the
    phone is not nearby as failures.
  </summary>
</histogram>

<histogram name="PhoneHub.Connectivity.Duration" units="ms" expires_after="M98">
  <obsolete>
    Renamed to PhoneHub.Connection.Duration on 1/2021 in M89.
  </obsolete>
  <owner>khorimoto@chromium.org</owner>
  <owner>better-together-dev@google.com</owner>
  <summary>
    The duration of time the phone is in the connected state, and becomes
    disconnected.
  </summary>
</histogram>

<histogram name="PhoneHub.Connectivity.Latency" units="ms" expires_after="M98">
  <owner>khorimoto@chromium.org</owner>
  <owner>better-together-dev@google.com</owner>
  <summary>
    The duration of time the phone is in the connecting state, and becomes
    connected.
  </summary>
</histogram>

<histogram name="PhoneHub.Connectivity.Success" enum="BooleanSuccess"
    expires_after="M98">
  <obsolete>
    Renamed to PhoneHub.Connection.Result on 11/2020 in M89.
  </obsolete>
  <owner>khorimoto@chromium.org</owner>
  <owner>better-together-dev@google.com</owner>
  <summary>The success rate of connecting to the Phone.</summary>
</histogram>

<histogram name="PhoneHub.InterstitialScreenEvent.{Screen}"
    enum="PhoneHubInterstitialScreenEvent" expires_after="2021-10-31">
  <owner>tengs@chromium.org</owner>
  <owner>khorimoto@chromium.org</owner>
  <summary>Events for the given PhoneHub interstitial screen. {Screen}</summary>
<!-- The entries below should be a subset of the PhoneHubScreen enum -->

  <token key="Screen">
    <variant name="BluetoothOrWifiDisabled" summary=""/>
    <variant name="InitialConnecting" summary="">
      <obsolete>
        Combined into PhoneConnecting on Nov 2020.
      </obsolete>
    </variant>
    <variant name="Onboarding.ExistingMultideviceUser"
        summary="NOTE(https://crbug.com/1187255): This metric is actually
                 logging new multi-device users. For continuity, we continue
                 to log this metric in reverse. See ExistingMultideviceUser2
                 for the correct logging."/>
    <variant name="Onboarding.ExistingMultideviceUser2" summary=""/>
    <variant name="Onboarding.NewMultideviceUser"
        summary="NOTE(https://crbug.com/1187255): This metric is actually
                 logging existing multi-device users. For continuity, we
                 continue to log this metric in reverse. See
                 NewMultideviceUser2 for the correct logging."/>
    <variant name="Onboarding.NewMultideviceUser2" summary=""/>
    <variant name="OnboardingDismissPrompt" summary=""/>
    <variant name="PhoneConnecting" summary=""/>
    <variant name="PhoneDisconnected" summary=""/>
  </token>
</histogram>

<histogram name="PhoneHub.NotificationAccessSetup.SuccessfulSetupDuration"
    units="ms" expires_after="M98">
  <owner>nohle@chromium.org</owner>
  <owner>better-together-dev@google.com</owner>
  <summary>
    Records the time it takes for the user to successfully go through the
    Chromebook UI that guides them through granting Phone Hub notifications
    access on their phone. Emitted once at the end of a successful setup flow.
    The user should only need to go through the flow once successfully for each
    phone they pair to.
  </summary>
</histogram>

<histogram name="PhoneHub.NotificationAccessSetup.{AllStatusesOrLastStatus}"
    enum="PhoneHubNotificationAccessSetupStatus" expires_after="M98">
  <owner>nohle@chromium.org</owner>
  <owner>better-together-dev@google.com</owner>
  <summary>
    Records {AllStatusesOrLastStatus} the Chromebook UI that guides them through
    granting Phone Hub notifications access on their phone. Emitted each time
    the user goes through the notification access setup flow. The user should
    only need to go through the flow once successfully for each phone they pair
    to.
  </summary>
  <token key="AllStatusesOrLastStatus">
    <variant name="AllStatuses" summary="each step the user sees in"/>
    <variant name="LastStatus"
        summary="the last state the user experiences in"/>
  </token>
</histogram>

<histogram name="PhoneHub.NotificationCount" units="notifications"
    expires_after="2021-10-31">
  <owner>tengs@chromium.org</owner>
  <owner>khorimoto@chromium.org</owner>
  <summary>
    The number of PhoneHub notifications, logged each time a notification is
    added or removed.
  </summary>
</histogram>

<histogram name="PhoneHub.NotificationInteraction"
    enum="PhoneHubNotificationInteraction" expires_after="2021-11-20">
  <owner>meilinw@chromium.org</owner>
  <owner>khorimoto@chromium.org</owner>
  <summary>
    Events logged after the user interacts with a PhoneHub notification by
    sending an inline reply or dismissing it.
  </summary>
</histogram>

<histogram name="PhoneHub.NotificationOptIn"
    enum="PhoneHubInterstitialScreenEvent" expires_after="2021-10-31">
  <obsolete>
    Renamed to PhoneHub.NotificationOptInEvents on 1/2021 in M89.
  </obsolete>
  <owner>tengs@chromium.org</owner>
  <owner>khorimoto@chromium.org</owner>
  <summary>Events for the given notification opt-in prompt.</summary>
</histogram>

<histogram name="PhoneHub.NotificationOptInEvents"
    enum="PhoneHubInterstitialScreenEvent" expires_after="2021-10-31">
  <owner>tengs@chromium.org</owner>
  <owner>khorimoto@chromium.org</owner>
  <summary>Events for the given notification opt-in prompt.</summary>
</histogram>

<histogram name="PhoneHub.OptInEntryPoint" enum="PhoneHubOptInEntryPoint"
    expires_after="2021-11-25">
  <owner>meilinw@chromium.org</owner>
  <owner>khorimoto@chromium.org</owner>
  <summary>Tracks the UI surface with which users enable Phone Hub.</summary>
</histogram>

<histogram name="PhoneHub.QuickActionClicked" enum="PhoneHubQuickAction"
    expires_after="2021-10-31">
  <owner>tengs@chromium.org</owner>
  <owner>khorimoto@chromium.org</owner>
  <summary>Event logged after the user clicks on a quick action.</summary>
</histogram>

<histogram name="PhoneHub.Screen.OnSettingsButtonClicked" enum="PhoneHubScreen"
    expires_after="2021-10-31">
  <obsolete>
    Renamed to PhoneHub.ScreenOnSettingsButtonClicked on 1/2021 in M89.
  </obsolete>
  <owner>tengs@chromium.org</owner>
  <owner>khorimoto@chromium.org</owner>
  <summary>
    Logs the current screen when the settings button is clicked in the tray
    bubble.
  </summary>
</histogram>

<histogram name="PhoneHub.ScreenOnSettingsButtonClicked" enum="PhoneHubScreen"
    expires_after="2021-10-31">
  <owner>tengs@chromium.org</owner>
  <owner>khorimoto@chromium.org</owner>
  <summary>
    Logs the current screen when the settings button is clicked in the tray
    bubble.
  </summary>
</histogram>

<histogram name="PhoneHub.ScreenOn{BubbleEvent}" enum="PhoneHubScreen"
    expires_after="2021-10-31">
  <owner>tengs@chromium.org</owner>
  <owner>khorimoto@chromium.org</owner>
  <summary>
    Logs the current screen for the PhoneHub tray given bubble event (i.e. on
    bubble open or close).
  </summary>
  <token key="BubbleEvent">
    <variant name="BubbleClose"/>
    <variant name="BubbleOpen"/>
  </token>
</histogram>

<histogram name="PhoneHub.TabContinuationChipClicked" units="tab index"
    expires_after="2021-10-31">
  <owner>tengs@chromium.org</owner>
  <owner>khorimoto@chromium.org</owner>
  <summary>
    After a tab continuation chip is clicked, the index of the tab is logged.
    Tab indices are ordered left-to-right, top-to-bottom in a standard LTR
    locale.
  </summary>
</histogram>

<histogram name="PhoneHub.TaskCompletion.TetherConnection.Result"
    enum="PhoneHubTetherConnectionResult" expires_after="2021-12-01">
  <owner>khorimoto@chromium.org</owner>
  <owner>phonehub-dev@google.com</owner>
  <summary>
    Logs the result of attempting a tether connection to measure the connection
    success rate.
  </summary>
</histogram>

<histogram name="PhoneHub.TaskCompletion.{MessageType}.Result"
    enum="PhoneHubMessageResult" expires_after="2021-12-03">
  <owner>khorimoto@chromium.org</owner>
  <owner>phonehub-dev@google.com</owner>
  <summary>
    Tracks the result of each type of message request. Logged each time a
    request message was sent and a response was received.
  </summary>
  <token key="MessageType">
    <variant name="LocatePhone"/>
    <variant name="NotificationDismissal"/>
    <variant name="NotificationInlineReply"/>
    <variant name="ShowNotificationAccessSetup"/>
    <variant name="SilencePhone"/>
    <variant name="UpdateBatteryMode"/>
  </token>
</histogram>

<histogram name="PhoneHub.Usage.SentMessageTypeCount"
    enum="PhoneHubMessageType" expires_after="M98">
  <owner>khorimoto@chromium.org</owner>
  <owner>better-together-dev@google.com</owner>
  <summary>
    Counts for each command sent. Note that PhoneHubMessageType also includes
    message types that are recieved by CrOS. Those will always have a zero value
    in this histogram.
  </summary>
</histogram>

</histograms>

</histogram-configuration>
