<!--
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 Mobile 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="MobileFreInflationSpeedComparison">
  <variant name=".FasterThanInflation"
      summary="This histogram reports just those timings that were faster
               than inflation."/>
  <variant name=".SlowerThanInflation"
      summary="This histogram reports just those timings that were slower
               than inflation."/>
</variants>

<variants name="MobileInfobarType">
  <variant name="InfobarTypeAutofillAddressProfile"
      summary="Recorded for Autofill Address Infobar."/>
  <variant name="InfobarTypeConfirm" summary="Recorded for Confirm Messages."/>
  <variant name="InfobarTypePasswordSave"
      summary="Recorded for Save Password Infobar."/>
  <variant name="InfobarTypePasswordUpdate"
      summary="Recorded for Update Password Messages."/>
  <variant name="InfobarTypePermissions"
      summary="Recorded for PermissionsInfobar."/>
  <variant name="InfobarTypeSaveCard"
      summary="Recorded for Save Card Infobar."/>
  <variant name="InfobarTypeSyncError"
      summary="Recorded for Sync Error Infobar."/>
  <variant name="InfobarTypeTabPickup"
      summary="Recorded for TabPickup Infobar."/>
  <variant name="InfobarTypeTailoredSecurityService"
      summary="Recorded for Tailored Security Service Infobar."/>
  <variant name="InfobarTypeTranslate"
      summary="Recorded for Translate Infobar."/>
</variants>

<histogram name="Mobile.AppMenu.TimeToTakeAction.Abandoned" units="ms"
    expires_after="2023-05-07">
  <owner>gangwu@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    The time it takes for the user to abandon the app menu after it's shown by
    pressing back or touching outside the menu. This is only logged if the menu
    is abandoned. See Mobile.AppMenu.TimeToTakeAction.SelectedItem for the cases
    where it is closed as a result of user interaction with the menu. Android
    only.
  </summary>
</histogram>

<histogram name="Mobile.AppMenu.TimeToTakeAction.SelectedItem" units="ms"
    expires_after="2023-11-12">
  <owner>gangwu@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    The time it takes for the user to select an item. This is only logged if the
    menu is closed as a result of the user clicking a menu item. See
    Mobile.AppMenu.TimeToTakeAction.Abandoned for the cases where it is
    abandoned by the user. Android only.
  </summary>
</histogram>

<histogram name="Mobile.CanonicalURLResult" enum="CanonicalURLResult"
    expires_after="2023-12-24">
  <owner>pkl@chromium.org</owner>
  <owner>sebsg@chromium.org</owner>
  <owner>tedchoc@chromium.org</owner>
  <summary>
    The result of the operation to retrieve the page's canonical URL.
  </summary>
</histogram>

<histogram name="Mobile.ContextMenu.CopyImage" enum="ContextMenuIOSCopyImage"
    expires_after="2024-03-10">
  <owner>djean@chromium.org</owner>
  <owner>gambard@chromium.org</owner>
  <summary>
    Logged when &quot;copy image&quot; from context menu is invoked. Log the
    events happening during the copying image procedure.
  </summary>
</histogram>

<histogram name="Mobile.ContextMenu.EntryPoints" enum="IOSMenuScenario"
    expires_after="2024-02-11">
  <owner>gambard@chromium.org</owner>
  <owner>bling-team@chromium.org</owner>
  <summary>
    Tracks which context menu was shown. To drill down into a specific context
    menu's usage, take a look at its actions' histogram (the format for actions
    histograms is Mobile.ContextMenu.*.Actions). Currently only on iOS.
  </summary>
</histogram>

<histogram name="Mobile.ContextMenu.GetImageDataByJsResult"
    enum="ContextMenuIOSGetImageDataByJsResult" expires_after="2024-02-11">
  <owner>djean@chromium.org</owner>
  <owner>gambard@chromium.org</owner>
  <summary>
    Result of getting image data by JavaScript for CopyImage, SaveImage and
    SearchByImage from iOS context menu. Recorded when the JavaScript returns,
    or fails for timeout.
  </summary>
</histogram>

<histogram name="Mobile.ContextMenu.LensSupportStatus"
    enum="IOSLensSupportStatus" expires_after="2024-07-17">
  <owner>hujasonx@google.com</owner>
  <owner>lens-in-bling-team@google.com</owner>
  <summary>
    Whether or not Lens is supported, and if not, the reason why. Recorded only
    if the feature is enabled when the long-press context menu is shown for an
    image.
  </summary>
</histogram>

<histogram name="Mobile.ContextMenu.LensWebImageProcessTime" units="ms"
    expires_after="2024-01-28">
  <owner>hujasonx@google.com</owner>
  <owner>lens-in-bling-team@google.com</owner>
  <summary>
    Logs the time it takes to process an image before sending it to Lens.
    Recorded when Lens is used from any entry point.
  </summary>
</histogram>

<histogram name="Mobile.ContextMenu.LensWebUploadStatus"
    enum="IOSLensWebUploadStatus" expires_after="2023-06-23">
  <owner>hujasonx@google.com</owner>
  <owner>lens-in-bling-team@google.com</owner>
  <summary>
    The status of the upload of image data to Lens. Recorded only when the Lens
    feature is triggered via the context menu entry from an image long-press.
  </summary>
</histogram>

<histogram name="Mobile.ContextMenu.LensWebUploadTime" units="ms"
    expires_after="2023-06-28">
  <owner>hujasonx@google.com</owner>
  <owner>lens-in-bling-team@google.com</owner>
  <summary>
    Logs the time it takes to upload image data to the Lens Web servers.
    Recorded only when the Lens feature is triggered via the context menu entry
    from an image long-press.
  </summary>
</histogram>

<histogram name="Mobile.ContextMenu.{EntryPoint}.Actions" enum="IOSMenuAction"
    expires_after="2024-04-01">
  <owner>gambard@chromium.org</owner>
  <owner>bling-team@chromium.org</owner>
  <summary>
    Tracks which action was selected in the context menu shown for a
    {EntryPoint}. To view how often this context menu was shown, take a look at
    this other histogram: Mobile.ContextMenu.EntryPoints. Currently only on iOS.
  </summary>
  <token key="EntryPoint">
    <variant name="BookmarkEntry" summary="Bookmark entry"/>
    <variant name="BookmarkFolder" summary="Bookmark folder"/>
    <variant name="HistoryEntry" summary="History entry"/>
    <variant name="InactiveTabsEntry" summary="Inactive Tabs entry"/>
    <variant name="MostVisitedEntry" summary="Most Visited entry"/>
    <variant name="OmniboxMostVisitedEntry"
        summary="Omnibox Most Visited entry"/>
    <variant name="PinnedTabsEntry" summary="Pinned Tabs entry"/>
    <variant name="ReadingListEntry" summary="Reading List entry"/>
    <variant name="RecentTabsEntry" summary="Recent Tabs entry"/>
    <variant name="RecentTabsHeader" summary="Recent Tabs header/device"/>
    <variant name="TabGrid" summary="Tab Grid Entry"/>
    <variant name="TabGridAddTo" summary="Tab Grid Add To"/>
    <variant name="TabGridEdit" summary="Tab Grid Edit"/>
    <variant name="TabGridSearchResult" summary="Tab Grid Search Result"/>
    <variant name="TabStrip" summary="Tab Strip tab"/>
    <variant name="Toolbar" summary="Menu from a toolbar button"/>
    <variant name="WebImage" summary="Image on a Web page"/>
    <variant name="WebImageLink" summary="Image-Link on a Web page"/>
    <variant name="WebLink" summary="Link on a Web page"/>
  </token>
</histogram>

<histogram base="true" name="Mobile.DefaultBrowser.BrowserCount" units="units"
    expires_after="never">
<!-- Name completed by histogram_suffixes name="Mobile.DefaultBrowser.Type" -->

<!-- expires-never: Used to keep track of Android browser ecosystem. -->

  <owner>dtrainor@chromium.org</owner>
  <owner>nyquist@chromium.org</owner>
  <summary>
    Android: The number of browsers installed on the device. Logged when a new
    session is started.
  </summary>
</histogram>

<histogram name="Mobile.DefaultBrowser.State" enum="MobileDefaultBrowserState"
    expires_after="never">
<!-- expires-never: Used to keep track of Android browser ecosystem. -->

  <owner>dtrainor@chromium.org</owner>
  <owner>nyquist@chromium.org</owner>
  <summary>
    Android: Whether or not the device has a default browser and whether or not
    it is a system installed browser. Logged when a new session is started.
  </summary>
</histogram>

<histogram base="true" name="Mobile.DefaultBrowser.SystemBrowserCount"
    units="units" expires_after="never">
<!-- Name completed by histogram_suffixes
    name="Mobile.DefaultBrowser.SystemDefaultBrowser.Type" -->

<!-- expires-never: Used to keep track of Android browser ecosystem. -->

  <owner>dtrainor@chromium.org</owner>
  <owner>nyquist@chromium.org</owner>
  <summary>
    Android: The number of system installed browsers. Logged when a new session
    is started.
  </summary>
</histogram>

<histogram name="Mobile.Keyboard.LensSupportStatus" enum="IOSLensSupportStatus"
    expires_after="2024-07-17">
  <owner>hujasonx@google.com</owner>
  <owner>lens-in-bling-team@google.com</owner>
  <summary>
    Whether or not Lens is supported in the Omnibox keyboard accessory view
    (shown above the number keys upon focusing the omnibox for edit), and if
    not, the reason why. Recorded each time the Omnibox keyboard is opened.
  </summary>
</histogram>

<histogram name="Mobile.Messages.Badge.Tapped.{MobileInfobarType}"
    enum="MobileMessagesBadgeState" expires_after="2024-06-24">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Records the state of a badge when it was tapped. {MobileInfobarType}
  </summary>
  <token key="MobileInfobarType" variants="MobileInfobarType"/>
</histogram>

<histogram name="Mobile.Messages.Banner.Dismiss.{MobileInfobarType}"
    enum="MobileMessagesBannerDismissType" expires_after="2024-06-24">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Records the reason why an infobar banner was dismissed. {MobileInfobarType}
  </summary>
  <token key="MobileInfobarType" variants="MobileInfobarType"/>
</histogram>

<histogram name="Mobile.Messages.Banner.Event.{MobileInfobarType}"
    enum="MobileMessagesBannerEvent" expires_after="2024-06-30">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>Records infobar banner events. {MobileInfobarType}</summary>
  <token key="MobileInfobarType" variants="MobileInfobarType"/>
</histogram>

<histogram name="Mobile.Messages.Banner.OnScreenTime" units="ms"
    expires_after="2024-02-26">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Records the time an Infobar (Messages) Banner is visible on screen. Used to
    know how long it takes a user to act on the banner before it gets
    auto-dismissed.
  </summary>
</histogram>

<histogram name="Mobile.Messages.ConcurrentPresented" units="infobars"
    expires_after="2022-07-20">
  <owner>sczs@chromium.org</owner>
  <owner>thegreenfrog@chromium.org</owner>
  <summary>
    Tracks the number of multiple Infobars being presented at the same time.
    This will be recorded everytime an Infobar is presented.
  </summary>
</histogram>

<histogram base="true" name="Mobile.Messages.Confirm.Accept.Time" units="ms"
    expires_after="2024-04-06">
<!-- Name completed by histogram_suffixes name="Mobile.Messages.Confirm.Type" -->

  <owner>sczs@chromium.org</owner>
  <owner>thegreenfrog@chromium.org</owner>
  <summary>
    Records the time between the Infobar Delegate is created, and the user
    accepts a Confirm Infobar action.
  </summary>
</histogram>

<histogram base="true" name="Mobile.Messages.Confirm.Event"
    enum="MobileMessagesConfirmInfobarEvents" expires_after="2024-06-16">
<!-- Name completed by histogram_suffixes name="Mobile.Messages.Confirm.Type" -->

  <owner>thegreenfrog@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Records the events related to Confirm Infobars (e.g. Presented, Accepted,
    Dismissed,etc.)
  </summary>
</histogram>

<histogram name="Mobile.Messages.Modal.Event.{MobileInfobarType}"
    enum="MobileMessagesModalEvent" expires_after="2024-06-24">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>Records generic infobar modal events. {MobileInfobarType}</summary>
  <token key="MobileInfobarType" variants="MobileInfobarType"/>
</histogram>

<histogram base="true" name="Mobile.Messages.OverflowRow.Tapped"
    enum="MobileMessagesInfobarType" expires_after="2024-06-20">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>Records a tap on an Infobar overflow menu row.</summary>
</histogram>

<histogram base="true" name="Mobile.Messages.Passwords.Modal.Dismiss"
    enum="MobileMessagesPasswordsModalDismiss" expires_after="2024-06-16">
<!-- Name completed by histogram_suffixes name="Mobile.Messages.Password.Type" -->

  <owner>thegreenfrog@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>Records the reason why a Password Modal was dismissed.</summary>
</histogram>

<histogram base="true" name="Mobile.Messages.Passwords.Modal.Event"
    enum="MobileMessagesPasswordsModalEvent" expires_after="2024-01-28">
<!-- Name completed by histogram_suffixes name="Mobile.Messages.Password.Type" -->

  <owner>sczs@chromium.org</owner>
  <owner>thegreenfrog@chromium.org</owner>
  <summary>Records Password specific Infobar Modal events.</summary>
</histogram>

<histogram base="true" name="Mobile.Messages.Passwords.Modal.Present"
    enum="MobileMessagesPasswordsModalPresent" expires_after="2024-06-20">
<!-- Name completed by histogram_suffixes name="Mobile.Messages.Password.Type" -->

  <owner>sczs@chromium.org</owner>
  <owner>thegreenfrog@chromium.org</owner>
  <summary>Records the context when a Password Modal was presented.</summary>
</histogram>

<histogram name="Mobile.Messages.Save.Card.Modal.Event"
    enum="MobileMessagesSaveCardModalEvent" expires_after="2023-10-16">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>Records Save Card specific Infobar Modal events.</summary>
</histogram>

<histogram name="Mobile.Messages.Translate.Banner.Event"
    enum="MobileMessagesTranslateBannerEvent" expires_after="2024-06-20">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Records the context when an iOS user taps on a Translate Banner Action
    Button.
  </summary>
</histogram>

<histogram name="Mobile.Messages.Translate.Modal.Event"
    enum="MobileMessagesTranslateModalEvent" expires_after="2024-01-28">
  <owner>sczs@chromium.org</owner>
  <owner>thegreenfrog@chromium.org</owner>
  <summary>
    Records when an iOS user initiates an Translate specific Infobar Modal
    event.
  </summary>
</histogram>

<histogram name="Mobile.Messages.Translate.Modal.Present"
    enum="MobileMessagesTranslateModalPresent" expires_after="2024-06-20">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Records the context when an iOS user initiates a Translate Modal
    presentation.
  </summary>
</histogram>

<histogram name="Mobile.NewTabPage.LensSupportStatus"
    enum="IOSLensSupportStatus" expires_after="2024-07-17">
  <owner>hujasonx@google.com</owner>
  <owner>lens-in-bling-team@google.com</owner>
  <summary>
    Whether or not Lens is supported in the new tab page, and if not, the reason
    why. Recorded when a new tab is created. Subsequent navigations to an
    existing new tab page will not log the event.
  </summary>
</histogram>

<histogram name="Mobile.PlusButton.LensSupportStatus"
    enum="IOSLensSupportStatus" expires_after="2024-07-17">
  <owner>hujasonx@google.com</owner>
  <owner>lens-in-bling-team@google.com</owner>
  <summary>
    Whether or not Lens is supported in the new tab opener &quot;plus&quot;
    button long press menu, and if not, the reason why. Recorded when the user
    long presses the new tab opener &quot;plus&quot; button.
  </summary>
</histogram>

<histogram name="Mobile.RecentTabsManager.TotalTabsFromOtherDevicesOpenAll"
    units="count" expires_after="2024-09-19">
  <owner>sczs@chromium.org</owner>
  <owner>edchin@chromium.org</owner>
  <summary>
    Records the total number of tabs opened when Open all was selected from
    other devices in Recent Tabs, iOS only. Warning: this histogram expired
    between 2023-04-19 and M119.
  </summary>
</histogram>

<histogram name="Mobile.Share.EntryPoints" enum="IOSActivityScenario"
    expires_after="2024-03-17">
  <owner>dimich@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <owner>chrome-with-friends-robots@google.com</owner>
  <improvement direction="HIGHER_IS_BETTER"/>
  <summary>
    Tracks which sharing entry point was triggered. To view the outcome of these
    sharing scenarios, take a look at their actions' histogram (the format is
    Mobile.Share.*.Actions). Currently only on iOS.
  </summary>
</histogram>

<histogram name="Mobile.Share.{EntryPoint}.Actions" enum="IOSShareAction"
    expires_after="2024-07-07">
  <owner>dimich@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <owner>chrome-with-friends-robots@google.com</owner>
  <summary>
    Tracks the sharing actions executed when the sharing scenario was initiated
    for a {EntryPoint}. To view how often this sharing scenario was triggered,
    take a look at: Mobile.Share.EntryPoints. Currently only on iOS. Expired
    between 2023-05-06 and 2023-07-07.
  </summary>
  <token key="EntryPoint">
    <variant name="BookmarkEntry" summary="Bookmark entry"/>
    <variant name="HistoryEntry" summary="History entry"/>
    <variant name="MostVisitedEntry" summary="Most Visited entry"/>
    <variant name="OmniboxMostVisitedEntry"
        summary="Omnibox Most Visited entry"/>
    <variant name="QRCodeImage" summary="QR code image"/>
    <variant name="ReadingListEntry" summary="Reading List entry"/>
    <variant name="RecentTabsEntry" summary="Recent Tabs entry"/>
    <variant name="ShareChrome" summary="link to Chrome in the app store"/>
    <variant name="SharedHighlight" summary="highlighted fragment"/>
    <variant name="TabGridItem" summary="tab grid item"/>
    <variant name="TabGridSelectionMode" summary="tab grid selection mode"/>
    <variant name="TabShareButton" summary="current tab"/>
  </token>
</histogram>

<histogram name="Mobile.Spotlight.LensSupportStatus"
    enum="IOSLensSupportStatus" expires_after="2024-07-17">
  <owner>hujasonx@google.com</owner>
  <owner>lens-in-bling-team@google.com</owner>
  <summary>
    Whether or not Lens is supported in iOS spotlight search, and if not, the
    reason why. Recorded once when the spotlight actions are populated, which
    happens after app startup.
  </summary>
</histogram>

<histogram name="Mobile.SystemNotification.Action.Click"
    enum="SystemNotificationActionType" expires_after="never">
<!-- expires-never: Core Android notification metrics. Used by multiple teams. -->

  <owner>dtrainor@chromium.org</owner>
  <summary>
    Records which Android notifications users interact with. Recorded when an
    user taps the button in a notification, for any Chrome-generated
    notification on Android that includes a button tap-target.
  </summary>
</histogram>

<histogram name="Mobile.SystemNotification.Action.Click.Age" units="minutes"
    expires_after="never">
<!-- Name completed by histogram_suffixes
       name="SystemNotificationAgeType" -->

<!-- expires-never: Core Android notification metrics. Used by multiple teams. -->

  <owner>dtrainor@chromium.org</owner>
  <summary>
    Records the duration in minutes from the time when the system notification
    is shown to the time that the user clicked on an action button on the
    Android notification.
  </summary>
</histogram>

<histogram name="Mobile.SystemNotification.Blocked"
    enum="SystemNotificationType" expires_after="never">
<!-- expires-never: Core Android notification metrics. Used by multiple teams. -->

  <owner>dtrainor@chromium.org</owner>
  <summary>
    Android: Represents the number of system notifications that were blocked and
    could not be shown by type.
  </summary>
</histogram>

<histogram name="Mobile.SystemNotification.BlockedAfterShown"
    enum="SystemNotificationType" expires_after="never">
<!-- expires-never: Core Android notification metrics. Used by multiple teams. -->

  <owner>dtrainor@chromium.org</owner>
  <summary>
    Android: Represents the type of notification that was last shown before the
    user disabled notification permissions on Chrome. This is only logged the
    first time we attempt to show a notification and fail.
  </summary>
</histogram>

<histogram name="Mobile.SystemNotification.ChannelBlocked"
    enum="SystemNotificationType" expires_after="never">
<!-- expires-never: Core Android notification metrics. Used by multiple teams. -->

  <owner>peter@chromium.org</owner>
  <summary>
    Android: Represents the number of system notifications by type that we
    attempted to show but were blocked, due to their notification channel being
    blocked. Only applies to devices on Android O and above.
  </summary>
</histogram>

<histogram name="Mobile.SystemNotification.Content.Click"
    enum="SystemNotificationType" expires_after="never">
<!-- expires-never: part of top-line metric (internal: go/chrome-browser-nsm) -->

  <owner>dtrainor@chromium.org</owner>
  <owner>chrome-analysis-team@google.com</owner>
  <summary>
    Records the type of notification when the user clicks the body of Android
    notification. This does not include clicks on notification action buttons.

    This histogram is of special interest to the chrome-analysis-team@. Do not
    change its semantics or retire it without talking to them first.
  </summary>
</histogram>

<histogram name="Mobile.SystemNotification.Content.Click.Age" units="minutes"
    expires_after="never">
<!-- Name completed by histogram_suffixes
       name="SystemNotificationAgeType" -->

<!-- expires-never: Core Android notification metrics. Used by multiple teams. -->

  <owner>dtrainor@chromium.org</owner>
  <summary>
    Records the duration in minutes from the time when the system notification
    is shown to the time that the user clicked the notification on Android.
  </summary>
</histogram>

<histogram name="Mobile.SystemNotification.Dismiss"
    enum="SystemNotificationType" expires_after="never">
<!-- expires-never: Core Android notification metrics. Used by multiple teams. -->

  <owner>dtrainor@chromium.org</owner>
  <summary>
    Records the type of notification when the user dismisses the Android
    notification.
  </summary>
</histogram>

<histogram name="Mobile.SystemNotification.Dismiss.Age" units="minutes"
    expires_after="never">
<!-- Name completed by histogram_suffixes
       name="SystemNotificationAgeType" -->

<!-- expires-never: Core Android notification metrics. Used by multiple teams. -->

  <owner>dtrainor@chromium.org</owner>
  <summary>
    Records the duration in minutes from the time when the system notification
    is shown to the time that the user dismissed the notification on Android.
  </summary>
</histogram>

<histogram name="Mobile.SystemNotification.Permission.Change"
    enum="BooleanEnabled" expires_after="2024-03-03">
  <owner>salg@google.com</owner>
  <owner>shaktisahu@chromium.org</owner>
  <summary>
    Records the notification permission state every time Android notifies Chrome
    of a change, this includes when granting access via the OS prompt and
    granting/blocking access via the OS settings.
  </summary>
</histogram>

<histogram name="Mobile.SystemNotification.Permission.OSPromptResult"
    enum="BooleanEnabled" expires_after="2024-03-03">
  <owner>salg@google.com</owner>
  <owner>shaktisahu@chromium.org</owner>
  <summary>
    Records the action taken by the user after being shown the OS prompt to
    grant notification permissions. Only recorded on Android T+.
  </summary>
</histogram>

<histogram name="Mobile.SystemNotification.Permission.RationaleResult"
    enum="NotificationRationaleResult" expires_after="2024-03-03">
  <owner>salg@google.com</owner>
  <owner>shaktisahu@chromium.org</owner>
  <summary>
    Records the action taken by the user after being shown the notification
    rationale prompt. Only recorded on Android T+.
  </summary>
</histogram>

<histogram name="Mobile.SystemNotification.Permission.StartupRequestCount"
    units="attempts" expires_after="2024-03-03">
  <owner>salg@google.com</owner>
  <owner>shaktisahu@chromium.org</owner>
  <summary>
    Records how many times we've shown the user any notification permission UI
    (either rationale and/or OS prompt) on startup. Recorded every time we are
    about to show any UI. Only recorded on Android T+.
  </summary>
</histogram>

<histogram name="Mobile.SystemNotification.Permission.StartupState"
    enum="NotificationPermissionState" expires_after="2023-12-31">
  <owner>salg@google.com</owner>
  <owner>shaktisahu@chromium.org</owner>
  <summary>
    Records the current state of the notification permission and if disabled the
    reason. Recorded on startup before any permission prompts are shown. Only
    recorded on Android T+.
  </summary>
</histogram>

<histogram name="Mobile.SystemNotification.Shown" enum="SystemNotificationType"
    expires_after="never">
<!-- expires-never: Core Android notification metrics. Used by multiple teams. -->

  <owner>dtrainor@chromium.org</owner>
  <summary>
    Android: Represents the number of system notifications that will be
    successfully shown to the user by type.
  </summary>
</histogram>

<histogram name="Mobile.Translate.Unused.Count" units="units"
    expires_after="2023-07-31">
  <owner>sczs@chromium.org</owner>
  <owner>thegreenfrog@chromium.org</owner>
  <summary>
    Records a histogram for an infobar (both legacy and Messages) that the user
    did not interact with throughout its lifetime.
  </summary>
</histogram>

<histogram name="MobileDownload.DownloadLaterPromptStatus"
    enum="DownloadLaterPromptStatus" expires_after="2023-02-06">
  <owner>shaktisahu@chromium.org</owner>
  <owner>clank-downloads@google.com</owner>
  <summary>
    Android: Records whether download later dialog will be shown to the user.
    Recorded when the download later preference is initialized in native.
  </summary>
</histogram>

<histogram name="MobileDownload.DownloadPromptStatus"
    enum="DownloadPromptStatus" expires_after="2023-02-16">
  <owner>qinmin@chromium.org</owner>
  <owner>clank-downloads@google.com</owner>
  <summary>
    Android: Records whether download dialog will be shown to the user. Recorded
    when the download preference is initialized in native.
  </summary>
</histogram>

<histogram name="MobileDownload.Location.Dialog.DirectoryType"
    enum="DownloadLocationDirectoryType" expires_after="2022-02-16">
  <owner>qinmin@chromium.org</owner>
  <owner>clank-downloads@google.com</owner>
  <summary>
    Records the directory type when the user selects the download directory
    through download location dialog. May be recorded even when the user didn't
    download anything.
  </summary>
</histogram>

<histogram name="MobileDownload.Location.Dialog.Result"
    enum="DownloadLocationDialogResult" expires_after="2022-02-16">
  <owner>qinmin@chromium.org</owner>
  <owner>clank-downloads@google.com</owner>
  <summary>
    Records whether the user accepted or dismissed the dialog to select a
    download location.
  </summary>
</histogram>

<histogram name="MobileDownload.Location.Dialog.Suggestion.Events"
    enum="DownloadLocationSuggestionEvent" expires_after="2023-02-16">
  <owner>qinmin@chromium.org</owner>
  <owner>clank-downloads@google.com</owner>
  <summary>Records the download location suggestion event.</summary>
</histogram>

<histogram name="MobileDownload.Location.Dialog.SuggestionSelected"
    enum="BooleanSelected" expires_after="2023-02-16">
  <owner>qinmin@chromium.org</owner>
  <owner>clank-downloads@google.com</owner>
  <summary>Records the download location suggestion choice.</summary>
</histogram>

<histogram name="MobileDownload.Location.Dialog.Type"
    enum="DownloadLocationDialogType" expires_after="2023-02-16">
  <owner>qinmin@chromium.org</owner>
  <owner>clank-downloads@google.com</owner>
  <summary>
    Records the download location dialog type when the dialog is shown to the
    user.
  </summary>
</histogram>

<histogram name="MobileDownload.Location.DirectoryType"
    enum="DownloadLocationDirectoryType" expires_after="2023-02-16">
  <owner>dtrainor@chromium.org</owner>
  <owner>qinmin@chromium.org</owner>
  <summary>
    Records the directory type shown when a user opens download location dialog
    or download location setting. This is recorded when the directory provider
    generates a list of available directories.
  </summary>
</histogram>

<histogram name="MobileDownload.Location.Download.DirectoryType"
    enum="DownloadLocationDirectoryType" expires_after="2023-02-16">
  <owner>qinmin@chromium.org</owner>
  <owner>clank-downloads@google.com</owner>
  <summary>Records the directory type when download is completed.</summary>
</histogram>

<histogram name="MobileDownload.Location.Setting.DirectoryType"
    enum="DownloadLocationDirectoryType" expires_after="2023-02-16">
  <owner>qinmin@chromium.org</owner>
  <owner>clank-downloads@google.com</owner>
  <summary>
    Records the directory type when the user selects the download directory
    through download preference. May be recorded even when the user didn't
    download anything.
  </summary>
</histogram>

<histogram name="MobileDownload.StoragePermission"
    enum="MobileDownloadStoragePermission" expires_after="M82">
  <owner>qinmin@chromium.org</owner>
  <summary>
    Android: Records various counts when requesting the storage permission.
  </summary>
</histogram>

<histogram
    name="MobileFre.CctTos.EnterprisePolicyCheckSpeed2{MobileFreInflationSpeedComparison}"
    units="ms" expires_after="2022-05-01">
  <owner>skym@chromium.org</owner>
  <owner>wenyufu@chromium.org</owner>
  <summary>
    Android: Records the time it takes from ToS fragment attached to the
    activity to the enterprise policy check completing. This check is often
    skipped when its result becomes irrelevant.
    {MobileFreInflationSpeedComparison}
  </summary>
  <token key="MobileFreInflationSpeedComparison"
      variants="MobileFreInflationSpeedComparison"/>
</histogram>

<histogram
    name="MobileFre.CctTos.IsDeviceOwnedCheckSpeed2{MobileFreInflationSpeedComparison}"
    units="ms" expires_after="2022-05-01">
  <owner>skym@chromium.org</owner>
  <owner>wenyufu@chromium.org</owner>
  <summary>
    Android: Records the time it takes from ToS fragment attached to the
    activity to the device ownership check completing.
    {MobileFreInflationSpeedComparison}
  </summary>
  <token key="MobileFreInflationSpeedComparison"
      variants="MobileFreInflationSpeedComparison"/>
</histogram>

<histogram name="MobileFre.CctTos.LoadingDuration" units="ms"
    expires_after="2022-05-01">
  <owner>skym@chromium.org</owner>
  <owner>wenyufu@chromium.org</owner>
  <summary>
    Android: Records how long it takes to load the enterprise CCT/ToS fragment.
  </summary>
</histogram>

<histogram name="MobileFre.ChildAccountStatusDuration" units="ms"
    expires_after="2023-11-12">
  <owner>skym@chromium.org</owner>
  <owner>wenyufu@chromium.org</owner>
  <summary>
    Android: The amount of time spent fetching child account status during the
    FRE. Not applicable for light weight FRE.
  </summary>
</histogram>

<histogram base="true" name="MobileFre.FragmentInflationSpeed" units="ms"
    expires_after="2023-06-04">
  <owner>skym@chromium.org</owner>
  <owner>wenyufu@chromium.org</owner>
  <summary>
    Android: Enterprise FRE cannot fully show the first page until the
    appRestrictions call returns. This suffixed histogram measures when fragment
    inflation was slower or faster than the appRestrictions call, and wether the
    UI had to wait. Note this is recorded for all clients, not just enterprise.
    Not applicable for light weight FRE.
  </summary>
</histogram>

<histogram name="MobileFre.FromLaunch.{Target}" units="ms"
    expires_after="2024-08-21">
  <owner>skym@chromium.org</owner>
  <owner>wenyufu@chromium.org</owner>
  <summary>
    The amount of time between when the FRE intent was initially constructed and
    when {Target}. Not emitted for the light-weight FRE. Android chrome only.
  </summary>
  <token key="Target">
    <variant name="ActivityInflated"
        summary="the activity is ready to be drawn, although likely empty"/>
    <variant name="ChildStatusAvailable"
        summary="the child account status is loaded"/>
    <variant name="FirstFragmentInflatedV2"
        summary="the first fragment is ready to be drawn, the first
                 meaningful paint. Version V2 fixed an issue that previous
                 data was not recording the time duration from FRE launched"/>
    <variant name="FreCompleted" summary="the entire FRE is completed"/>
    <variant name="NativeAndPoliciesLoaded"
        summary="the native code and policies are loaded.">
      <obsolete>
        Removed in 2022/05. Replaced by NativePolicyAndChildStatusLoaded.
      </obsolete>
    </variant>
    <variant name="NativeInitialized" summary="the native code is initialized"/>
    <variant name="NativePolicyAndChildStatusLoaded"
        summary="the native code, policies and child account status are
                 loaded"/>
    <variant name="PoliciesLoaded" summary="policies are loaded"/>
    <variant name="TosAccepted" summary="the ToS is accepted"/>
    <variant name="TriggerLayoutInflation"
        summary="layout inflation is triggered"/>
  </token>
</histogram>

<histogram name="MobileFre.NativeInitialized" units="ms"
    expires_after="2024-03-17">
  <owner>skym@chromium.org</owner>
  <owner>wenyufu@chromium.org</owner>
  <summary>
    Android: The amount of time spent between FRE started and native
    initialization. Recorded when native is fully initialized.
  </summary>
</histogram>

<histogram name="MobileFre.Progress" enum="MobileFreProgress"
    expires_after="2024-02-04">
  <owner>bsazonov@chromium.org</owner>
  <owner>msarda@chromium.org</owner>
  <owner>droger@chromium.org</owner>
  <owner>gogerald@chromium.org</owner>
  <owner>chrome-signin-team@google.com</owner>
  <summary>
    Android: Records which states of the &quot;first run experience&quot; have
    been reached. Each bucket represents a state and recorded everytime the
    state changed. Pages can be double counted if the user goes backwards in the
    flow.
  </summary>
</histogram>

<histogram name="MobileFre.SignInChoice" enum="MobileFreSignInChoice"
    expires_after="M82">
  <owner>aruslan@chromium.org</owner>
  <summary>
    Android: How the user left the sign-in part of the &quot;first run
    experience&quot; activity (M-38+).
  </summary>
</histogram>

<histogram name="MobileFre.SlowestLoadPoint" enum="LoadPoint"
    expires_after="2023-11-01">
  <owner>triploblastic@chromium.org</owner>
  <owner>chrome-signin-team@google.org</owner>
  <summary>
    Slowest loading point among native, policy and child account status in the
    signin mobile FRE. Not emitted for the light-weight FRE. Android chrome
    only.
  </summary>
</histogram>

<histogram name="MobileFre.TosFragment.SpinnerVisibleDuration" units="ms"
    expires_after="2022-02-06">
  <owner>skym@chromium.org</owner>
  <owner>wenyufu@chromium.org</owner>
  <summary>
    Android: The amount of time that the small spinner, which become visible
    after the ToS is accepted, is showing on screen.
  </summary>
</histogram>

<histogram name="MobileFullscreenVideo.DurationAfterPotraitRotation" units="ms"
    expires_after="M85">
  <owner>qinmin@chromium.org</owner>
  <summary>
    Android: Records the duration that a fullscreen video is played after device
    rotates from portrait to landscape mode for the first time, and before it
    exits fullscreen. If there is no device rotation or if the video starts with
    landscape mode, it is not recorded. If there are mutiple rotations between
    portrait and landscape mode, only one record is emitted and it is equal to
    the time period from the first rotation to the moment when the video exits
    fullscreen.
  </summary>
</histogram>

<histogram name="MobileFullscreenVideo.LandscapeDuration" units="ms"
    expires_after="M85">
  <owner>qinmin@chromium.org</owner>
  <summary>
    Android: Records the duration that a fullscreen video is played in landscape
    mode. If a video starts playing in landscape mode, and then it is switched
    back and forth between landscape and portrait mode, only the time period
    before the first switch is accounted. If a video starts playing in portrait
    mode, it is not recorded.
  </summary>
</histogram>

<histogram name="MobileFullscreenVideo.LandscapeRotation" enum="BooleanEnabled"
    expires_after="M85">
  <owner>qinmin@chromium.org</owner>
  <summary>
    Android: Records whether a fullscreen video is switched from landscape to
    portrait mode at any point during playback.
  </summary>
</histogram>

<histogram name="MobileFullscreenVideo.OrientationPortrait"
    enum="BooleanEnabled" expires_after="M85">
  <owner>qinmin@chromium.org</owner>
  <summary>
    Android: Records the device orientation when a video enters fullscreen. The
    value is true if device orientation is portrait, or false otherwise. The
    video doesn't necessarily needs to be in a playing state.
  </summary>
</histogram>

<histogram name="MobileFullscreenVideo.PortraitDuration" units="ms"
    expires_after="M85">
  <owner>qinmin@chromium.org</owner>
  <summary>
    Android: Records the duration that a fullscreen video is played in portrait
    mode. If a video starts playing in portrait mode, and then it is switched
    back and forth between landscape and portrait mode, only the time period
    before the first switch is accounted. If a video starts playing in landscape
    mode, it is not recorded.
  </summary>
</histogram>

<histogram name="MobileFullscreenVideo.PortraitRotation" enum="BooleanEnabled"
    expires_after="M85">
  <owner>qinmin@chromium.org</owner>
  <summary>
    Android: Records whether a fullscreen video is switched from portrait to
    landscape mode at any point during playback.
  </summary>
</histogram>

<histogram name="MobileFullscreenVideo.VideoPortrait" enum="BooleanEnabled"
    expires_after="M85">
  <owner>qinmin@chromium.org</owner>
  <summary>
    Android: Records whether a video has a larger height than width when it
    enters the fullscreen mode.
  </summary>
</histogram>

<histogram name="MobileIntent.PageLoadDueToExternalApp" enum="ClientAppId"
    expires_after="never">
<!-- expires-never: Navigation (external-apps) heartbeat metric for Android. -->

  <owner>tedchoc@chromium.org</owner>
  <summary>
    Android: Count of page loads started by intents from external apps. In M87
    the reporting of this histogram was updated to exclude intents sent from
    Chrome itself.
  </summary>
</histogram>

<histogram name="MobileOmnibox.LongPressPasteAge" units="ms"
    expires_after="2021-04-18">
  <owner>gangwu@chromium.org</owner>
  <owner>jdonnelly@chromium.org</owner>
  <summary>
    Recorded when user long presses and pastes clipboard content into omnibox.
    The value indicates the estimated age of the clipboard.

    Intended to be compared to Omnibox.ClipboardSuggestionShownAge.
  </summary>
</histogram>

<histogram name="MobileOmnibox.PopupOpenDuration" units="ms"
    expires_after="2022-02-02">
  <owner>stkhapugin@chromium.org</owner>
  <owner>mpearson@chromium.org</owner>
  <owner>jdonnelly@chromium.org</owner>
  <summary>
    Recorded when the omnibox popup is closed. Indicates the duration it was
    open.
  </summary>
</histogram>

<histogram name="MobileOmnibox.PressedClipboardSuggestionAge" units="ms"
    expires_after="2024-02-25">
  <owner>jdonnelly@chromium.org</owner>
  <owner>mpearson@chromium.org</owner>
  <summary>
    When a user presses an omnibox suggestion based on the content of the
    clipboard, this histograms records how long ago Chrome detected a change in
    the clipboard.

    Intended to be compared to Omnibox.ClipboardSuggestionShownAge.

    If Chrome never detected a change to the clipboard, no clipboard suggestion
    is shown, meaning this histogram will never be emitted to.
  </summary>
</histogram>

<histogram name="MobileSignInPromo.BookmarkManager.ImpressionsTilDismiss"
    units="impressions" expires_after="2024-04-01">
  <owner>jlebel@chromium.org</owner>
  <owner>chrome-signin-team@google.com</owner>
  <summary>
    Counts how many times the signin promo is implicitly dismissed (by closing
    the bookmark manager) per impression.
  </summary>
</histogram>

<histogram name="MobileSignInPromo.BookmarkManager.ImpressionsTilSigninButtons"
    units="impressions" expires_after="2024-04-01">
  <owner>jlebel@chromium.org</owner>
  <owner>chrome-signin-team@google.com</owner>
  <summary>
    Counts how many times one of the &quot;sign in&quot; buttons (any of the
    signed-out &quot;Sign in to Chrome&quot; button, the &quot;Continue as
    |name|&quot; button, or the &quot;Not |email|?&quot; button) is clicked per
    impression.
  </summary>
</histogram>

<histogram name="MobileSignInPromo.BookmarkManager.ImpressionsTilXButton"
    units="impressions" expires_after="2024-04-01">
  <owner>jlebel@chromium.org</owner>
  <owner>chrome-signin-team@google.com</owner>
  <summary>
    Counts how many times the explicit &quot;X&quot;-to-close button is clicked
    per impression.
  </summary>
</histogram>

<histogram name="MobileSignInPromo.NTPContentSuggestions.ImpressionsTilXButton"
    units="impressions" expires_after="2022-05-10">
  <obsolete>
    Removed in 2022/05. Replaced with Signin.SyncPromo.Dismissed.Count.Ntp.
  </obsolete>
  <owner>bsazonov@chromium.org</owner>
  <owner>chrome-signin-team@google.com</owner>
  <summary>
    Counts how many times the explicit &quot;X&quot;-to-close button is clicked
    per impression. Recorded when the signin promo is dismissed using the
    &quot;X&quot;.
  </summary>
</histogram>

<histogram name="MobileSignInPromo.NTPFeedTop.ImpressionsTilDismiss"
    units="impressions" expires_after="2024-03-10">
  <owner>mrefaat@chromium.org</owner>
  <owner>jlebel@chromium.org</owner>
  <owner>chrome-signin-team@google.com</owner>
  <summary>
    Counts how many times the signin promo is implicitly dismissed (by leaving
    the NTP) per impression of the NTP feed top section sign in promo.
  </summary>
</histogram>

<histogram name="MobileSignInPromo.NTPFeedTop.ImpressionsTilSigninButtons"
    units="impressions" expires_after="2023-06-01">
  <owner>mrefaat@chromium.org</owner>
  <owner>jlebel@chromium.org</owner>
  <owner>chrome-signin-team@google.com</owner>
  <summary>
    Counts how many times one of the &quot;sign in&quot; buttons (any of the
    signed-out &quot;Sign in to Chrome&quot; button, the &quot;Continue as
    |name|&quot; button, or the &quot;Not |email|?&quot; button) is clicked per
    impression of the NTP feed top section sign in promo.
  </summary>
</histogram>

<histogram name="MobileSignInPromo.NTPFeedTop.ImpressionsTilXButton"
    units="impressions" expires_after="2024-01-28">
  <owner>mrefaat@chromium.org</owner>
  <owner>jlebel@chromium.org</owner>
  <owner>chrome-signin-team@google.com</owner>
  <summary>
    Counts how many times the explicit &quot;X&quot;-to-close button is clicked
    per impression of the NTP feed top section sign in promo.
  </summary>
</histogram>

<histogram name="MobileSignInPromo.ReadingList.ImpressionsTilDismiss"
    units="impressions" expires_after="2024-04-01">
  <owner>myuu@google.com</owner>
  <owner>chrome-signin-team@google.com</owner>
  <summary>
    Counts how many times the signin promo is implicitly dismissed (by closing
    the reading list) per impression. Recorded when the sign-in promo is removed
    from the reading list view without being used. If the promo is removed by
    user authentication (eg. sign-in from another view), the histogram is not
    recorded.
  </summary>
</histogram>

<histogram name="MobileSignInPromo.ReadingList.ImpressionsTilSigninButtons"
    units="impressions" expires_after="2024-04-01">
  <owner>myuu@google.com</owner>
  <owner>chrome-signin-team@google.com</owner>
  <summary>
    Counts how many times one of the &quot;sign in&quot; buttons (any of the
    signed-out &quot;Sign in to Chrome&quot; button, the &quot;Continue as
    |name|&quot; button, or the &quot;Not |email|?&quot; button) is clicked per
    impression in the reading list. Recorded when one of those buttons from the
    reading list sign-in promo is clicked.
  </summary>
</histogram>

<histogram name="MobileSignInPromo.ReadingList.ImpressionsTilXButton"
    units="impressions" expires_after="2024-04-01">
  <owner>myuu@google.com</owner>
  <owner>chrome-signin-team@google.com</owner>
  <summary>
    Counts how many times the explicit &quot;X&quot;-to-close button is clicked
    per impression in the reading list. Recorded when the &quot;X&quot;-to-close
    button from the reading list sign-in promo is clicked.
  </summary>
</histogram>

<histogram name="MobileStartup.DailyLaunchCount" units="units"
    expires_after="2024-03-17">
  <owner>tedchoc@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Android only.

    The number of times the tabbed mode of Chrome is launched within a given 24
    hour window. Recall that custom tabs is not considered tabbed mode. A
    &quot;launch&quot; here is defined as anytime the tabbed mode is made
    visible (foregrounded), but all Chrome activities must be completely hidden
    before we'll count an additional launch. It includes all kinds of intents,
    such as MAIN and VIEW. By ensuring all Chrome activities are hidden, we
    avoid overcounting by going to Settings and returning to Chrome.

    This launch definition includes some items one might not expect: (i) click a
    link in Chrome that opens in another app, then click back. (ii) have Chrome
    in the foreground, then the screen times out (goes blank) or engages the
    lock screen, then wake up/unlock the device. (iii) switch to
    &quot;Recents&quot;, then re-select Chrome. In all these cases, Chrome has
    gone to the background so returning to it counts as another launch.

    The value reported reflects activity over a 24-hour window in the past,
    possibly the distant past. Reporting is controlled by storing an initial
    launch timestamp and counting all &quot;launches&quot; as a count until a
    new launch happens after the 24hr window has elapsed (at this point, a new
    24hr window is started). The count is reported at the start of the next 24hr
    window, so this is a retroactive count. For example, if a user uses Chrome
    in one day two months ago, then doesn't use Chrome at all, then when Chrome
    launches today it'll report the value during that 24-hour window.
  </summary>
</histogram>

<histogram name="MobileStartup.IntentToCreationTime" units="ms"
    expires_after="2024-02-11">
  <owner>tedchoc@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <owner>yfriedman@chromium.org</owner>
  <summary>
    Android: The time it takes from creating an intent for ChromeActivity to
    activity creation. This includes activity creation time spent in the
    framework.
  </summary>
</histogram>

<histogram name="MobileStartup.LaunchCause" enum="LaunchCause"
    expires_after="2024-03-17">
  <owner>mthiesse@chromium.org</owner>
  <owner>tedchoc@chromium.org</owner>
  <owner>yfriedman@chromium.org</owner>
  <summary>
    Records what caused Chrome to be launched.

    Recorded for all types of ChromeActivity, in all cases where Chrome becomes
    visible to the user, or intentionally transitions between Chrome Activities.
  </summary>
</histogram>

<histogram base="true" name="MobileStartup.ToolbarInflationTime" units="ms"
    expires_after="2023-12-28">
  <owner>pasko@chromium.org</owner>
  <summary>
    Android: The time spent performing toolbar layout inflation.
  </summary>
</histogram>

</histograms>

</histogram-configuration>
