<!--
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 IOS 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="MXVersion">
  <variant name=""
      summary="The default MXPayload, only recorded when the app version
               number matches."/>
  <variant name="IncludingMismatch."
      summary="The processed MXPayload may not match the current app's
               version. This is very common on app updates, which would
               otherwise lead to losing multiple days of MetricKit reports.
               Instead, record them here."/>
</variants>

<histogram name="IOS.Allocator.ShimInstalled" enum="Boolean"
    expires_after="2023-08-08">
  <owner>rohitrao@chromium.org</owner>
  <owner>justincohen@chromium.org</owner>
  <summary>
    Whether or not the allocator shim was installed successfully. False
    indicates an unexpected error at the OS level which merits investigation.
  </summary>
</histogram>

<histogram name="IOS.Annotations.Percentage" units="%"
    expires_after="2023-07-04">
  <owner>djean@google.com</owner>
  <owner>bling-team@chromium.org</owner>
  <summary>
    The percentage of annotations the are decorated against the number of
    annotations found.
  </summary>
</histogram>

<histogram name="IOS.AppLauncher.AppURLHasChromeLaunchScheme" enum="Boolean"
    expires_after="2023-07-04">
  <owner>ajuma@chromium.org</owner>
  <owner>bling-fundamentals@google.com</owner>
  <summary>
    This histogram counts the frequency of app launch attempts where the target
    app is Chrome itself. This logged once per app launch attempt.
  </summary>
</histogram>

<histogram name="IOS.AppStoreRating.UserIsEligible" enum="Boolean"
    expires_after="2023-11-01">
  <owner>hiramahmood@google.com</owner>
  <owner>bling-get-set-up@google.com</owner>
  <summary>
    Logged once per app foreground. Logs whether the user has met the trigger
    requirements for the App Store Rating promo.
  </summary>
</histogram>

<histogram name="IOS.BackgroundTimeBeforeColdStart" units="minutes"
    expires_after="2024-04-06">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    This event is recorded on every cold start app open. The value represents
    how long the app was away from the foreground.
  </summary>
</histogram>

<histogram name="IOS.BackgroundTimeBeforeWarmStart" units="minutes"
    expires_after="2024-04-06">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    This event is recorded on every warm start app open. The value represents
    how long the app was away from the foreground.
  </summary>
</histogram>

<histogram name="IOS.BringAndroidTabs.ActionOnPrompt"
    enum="IOSBringAndroidTabsPromptActionType" expires_after="2024-02-28">
  <owner>hiramahmood@google.com</owner>
  <owner>ginnyhuang@chromium.org</owner>
  <owner>bling-get-set-up@google.com</owner>
  <summary>
    The action taken by the user after the Bring Android Tabs prompt is
    presented.
  </summary>
</histogram>

<histogram name="IOS.BringAndroidTabs.ActionOnTabsList"
    enum="IOSBringAndroidTabsTabsListActionType" expires_after="2024-02-28">
  <owner>hiramahmood@google.com</owner>
  <owner>ginnyhuang@chromium.org</owner>
  <owner>bling-get-set-up@google.com</owner>
  <summary>
    The action taken by the user in response to the Bring Android Tabs Tab List
    .
  </summary>
</histogram>

<histogram name="IOS.BringAndroidTabs.DeselectedTabCount" units="count"
    expires_after="2024-02-28">
  <owner>hiramahmood@google.com</owner>
  <owner>ginnyhuang@chromium.org</owner>
  <owner>bling-get-set-up@google.com</owner>
  <summary>
    The number of tabs deselected from the Tab List View of the Bring Android
    Tabs prompt. Recorded after the Tab List View is dismissed.
  </summary>
</histogram>

<histogram name="IOS.BringAndroidTabs.PromptTabsStatus"
    enum="IOSPromptAndroidTabsStatus" expires_after="2024-02-28">
  <owner>hiramahmood@google.com</owner>
  <owner>ginnyhuang@chromium.org</owner>
  <owner>bling-get-set-up@google.com</owner>
  <summary>
    The result of prompting the set of tabs for an Android switcher. Recorded
    after the set of tabs are prompted.
  </summary>
</histogram>

<histogram name="IOS.BringAndroidTabs.TabCount" units="count"
    expires_after="2024-02-28">
  <owner>hiramahmood@google.com</owner>
  <owner>ginnyhuang@chromium.org</owner>
  <owner>bling-get-set-up@google.com</owner>
  <summary>
    The number of tabs imported from Android for Android Switchers. Recorded
    when the Bring Android Tabs prompt is displayed.
  </summary>
</histogram>

<histogram name="IOS.CaptivePortal.SecureConnectionFailed"
    enum="CaptivePortalStatus" expires_after="2023-10-16">
  <owner>ajuma@chromium.org</owner>
  <owner>michaeldo@chromium.org</owner>
  <summary>
    The result of a captive portal check triggered by a failed secure
    connection. Logged once per failed secure connection.
  </summary>
</histogram>

<histogram name="IOS.ColdStartBackgroundTime" units="msec"
    expires_after="2023-04-27">
  <obsolete>
    This metric is obsolete as of M105, because the max bucket did reach the
    desired hour-level granularity. IOS.BackgroundTimeBeforeColdStart is the new
    metric.
  </obsolete>
  <owner>thegreenfrog@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    This event is recorded on every cold start app open. The value represents
    how long the app was away from the foreground.
  </summary>
</histogram>

<histogram name="IOS.CommittedNavigationHasContext" enum="Boolean"
    expires_after="2023-09-24">
  <owner>ajuma@chromium.org</owner>
  <owner>gambard@chromium.org</owner>
  <summary>
    When a navigation is committed, it should have a non-null NavigationContext.
    This histogram counts the frequency of this invariant holding at the time
    when a new navigation is committed. It is used to verify the effectiveness
    of code fixes because this issue is not currently reproducible in testing
    (http://crbug.com/864769). True means a non-null NavigationContext is
    present.
  </summary>
</histogram>

<histogram name="IOS.CommittedURLMatchesCurrentItem" enum="Boolean"
    expires_after="2023-09-24">
  <owner>ajuma@chromium.org</owner>
  <owner>gambard@chromium.org</owner>
  <summary>
    When a navigation is committed, the web view URL is expected to match that
    of the current back-forward item. WKWebView seems to break this assumption
    at times. This histogram counts the frequency of this invariant violation at
    the time when a new navigation is committed. True means the URL matches the
    current back-forward item.
  </summary>
</histogram>

<histogram name="IOS.ContentExtension.DisplayCount" units="count"
    expires_after="2023-09-24">
  <owner>olivierrobin@chromium.org</owner>
  <owner>rkgibson@chromium.org</owner>
  <summary>
    The number of times the Content Extension was displayed since last Chrome
    foregrounding. Reported when Chrome is put in foregrounded. Note: events
    where the count is zero were removed in M91.
  </summary>
</histogram>

<histogram name="IOS.ContentExtension.Index" units="index"
    expires_after="2023-10-04">
  <owner>olivierrobin@chromium.org</owner>
  <owner>rkgibson@chromium.org</owner>
  <summary>
    The index of the URL selected by the user in the Content Extension.
  </summary>
</histogram>

<histogram name="IOS.ContentRuleListProviderUpdateSuccess"
    enum="BooleanSuccess" expires_after="2020-12-31">
  <owner>rkgibson@google.com</owner>
  <owner>gambard@chromium.org</owner>
  <summary>
    When the content rule list provider updates its lists, this can succeed or
    fail. Failure occurs when the rule lists are updated again before the first
    update finishes.
  </summary>
</histogram>

<histogram name="IOS.CredentialExtension.ConsentVerifiedCount" units="count"
    expires_after="2023-08-13">
  <owner>ginnyhuang@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    This histogram reflects the frequency of users enrolling in password
    auto-fill for Chrome, by counting the number of times the Consent View of
    the Credentials Provider shows up on the screen.
  </summary>
</histogram>

<histogram name="IOS.CredentialExtension.CopyPasswordCount" units="count"
    expires_after="2023-10-08">
  <owner>rkgibson@chromium.org</owner>
  <owner>djean@chromium.org</owner>
  <summary>
    The number of times the Credential Extension user copied a Password since
    last Chrome foregrounding. Reported when Chrome is put in foreground. Note:
    events where the count is zero were removed in M91.
  </summary>
</histogram>

<histogram name="IOS.CredentialExtension.CopyURLCount" units="count"
    expires_after="2023-06-11">
  <owner>rkgibson@chromium.org</owner>
  <owner>djean@chromium.org</owner>
  <summary>
    The number of times the Credential Extension user copied a URL since last
    Chrome foregrounding. Reported when Chrome is put in foreground. Note:
    events where the count is zero were removed in M91.
  </summary>
</histogram>

<histogram name="IOS.CredentialExtension.CopyUsernameCount" units="count"
    expires_after="2023-06-11">
  <owner>rkgibson@chromium.org</owner>
  <owner>djean@chromium.org</owner>
  <summary>
    The number of times the Credential Extension user copied a Username since
    last Chrome foregrounding. Reported when Chrome is put in foreground. Note:
    events where the count is zero were removed in M91.
  </summary>
</histogram>

<histogram name="IOS.CredentialExtension.DisplayCount" units="count"
    expires_after="2023-10-15">
  <owner>rkgibson@chromium.org</owner>
  <owner>djean@chromium.org</owner>
  <summary>
    The number of times the Credential Extension was displayed since last Chrome
    foregrounding. Reported when Chrome is put in foreground. Note: events where
    the count is zero were removed in M91.
  </summary>
</histogram>

<histogram name="IOS.CredentialExtension.FetchPasswordFailure" units="count"
    expires_after="2023-06-11">
  <owner>rkgibson@chromium.org</owner>
  <owner>djean@chromium.org</owner>
  <summary>
    The number of times the Credential Extension password util failed to look up
    for a password since last Chrome foregrounding. Reported when Chrome is put
    in foreground. Note: events where the count is zero were removed in M91.
  </summary>
</histogram>

<histogram name="IOS.CredentialExtension.FetchPasswordNilArgument"
    units="count" expires_after="2023-06-11">
  <owner>rkgibson@chromium.org</owner>
  <owner>djean@chromium.org</owner>
  <summary>
    The number of times the Credential Extension pasword util was queried with a
    nil argument since last Chrome foregrounding. Reported when Chrome is put in
    foreground. Note: events where the count is zero were removed in M91.
  </summary>
</histogram>

<histogram name="IOS.CredentialExtension.IsEnabled.Startup" enum="Boolean"
    expires_after="2023-09-03">
  <owner>veronguyen@google.com</owner>
  <owner>tmartino@chromium.org</owner>
  <summary>
    Logged once per app launch. Logs on startup whether the user had enabled the
    credential provider in their iOS settings.
  </summary>
</histogram>

<histogram name="IOS.CredentialExtension.KeychainSavePasswordFailureCount"
    units="count" expires_after="2023-06-11">
  <owner>rkgibson@chromium.org</owner>
  <owner>rkgibson@google.com</owner>
  <summary>
    The number of times the Credential Extension failed to save a
    newly-generated password into the system Keychain since last Chrome
    foregrounding. Reported when Chrome is put in foreground.
  </summary>
</histogram>

<histogram name="IOS.CredentialExtension.NewCredentialUsername"
    enum="IOSCredentialProviderNewCredentialUsername"
    expires_after="2023-06-11">
  <owner>rkgibson@chromium.org</owner>
  <owner>rkgibson@google.com</owner>
  <summary>
    Recorded when a new credential is created via the Credential Provider
    extension and tracks the username state of the new credential. Reported when
    Chrome is put in the foreground.
  </summary>
</histogram>

<histogram name="IOS.CredentialExtension.PasswordCreated"
    enum="IOSCredentialProviderPasswordCreated" expires_after="2023-06-11">
  <owner>rkgibson@chromium.org</owner>
  <owner>rkgibson@google.com</owner>
  <summary>
    Recorded when a new password is created via the Credential Provider
    extension. Reported when Chrome is put in the foreground.
  </summary>
</histogram>

<histogram name="IOS.CredentialExtension.PasswordUseCount" units="count"
    expires_after="2023-10-15">
  <owner>rkgibson@chromium.org</owner>
  <owner>djean@chromium.org</owner>
  <summary>
    The number of times the Credential Extension user selected for a Password
    since last Chrome foregrounding. Reported when Chrome is put in foreground.
    Note: events where the count is zero were removed in M91.
  </summary>
</histogram>

<histogram name="IOS.CredentialExtension.QuickPasswordUseCount" units="count"
    expires_after="2023-10-15">
  <owner>rkgibson@chromium.org</owner>
  <owner>djean@chromium.org</owner>
  <summary>
    The number of times the Credential Extension selected a Password without
    user intervention since last Chrome foregrounding. Reported when Chrome is
    put in foreground. Note: events where the count is zero were removed in M91.
  </summary>
</histogram>

<histogram name="IOS.CredentialExtension.ReauthCount" units="count"
    expires_after="2023-06-11">
  <owner>rkgibson@chromium.org</owner>
  <owner>djean@chromium.org</owner>
  <summary>
    The number of times the Credential Extension needed user reauthentication
    since last Chrome foregrounding. Reported when Chrome is put in foreground.
    Note: events where the count is zero were removed in M91.
  </summary>
</histogram>

<histogram name="IOS.CredentialExtension.SaveCredentialFailureCount"
    units="count" expires_after="2023-06-11">
  <owner>rkgibson@chromium.org</owner>
  <owner>rkgibson@google.com</owner>
  <summary>
    The number of times the Credential Extension failed to save a
    newly-generated credential to disk since last Chrome foregrounding. Reported
    when Chrome is put in foreground.
  </summary>
</histogram>

<histogram name="IOS.CredentialExtension.SearchCount" units="count"
    expires_after="2023-10-15">
  <owner>rkgibson@chromium.org</owner>
  <owner>djean@chromium.org</owner>
  <summary>
    The number of times the Credential Extension user searched for a Password
    since last Chrome foregrounding. Reported when Chrome is put in foreground.
    Note: events where the count is zero were removed in M91.
  </summary>
</histogram>

<histogram
    name="IOS.CredentialExtension.Service.Error.ReplaceCredentialIdentitiesWithIdentities"
    enum="iOSCredentialIdentityStoreErrorForReporting"
    expires_after="2023-09-24">
  <owner>rkgibson@chromium.org</owner>
  <owner>djean@chromium.org</owner>
  <summary>
    Recorded when a request to replace identities in ASCredentialIdentityStore
    fails.
  </summary>
</histogram>

<histogram name="IOS.CredentialExtension.ShowPasswordCount" units="count"
    expires_after="2023-06-11">
  <owner>rkgibson@chromium.org</owner>
  <owner>djean@chromium.org</owner>
  <summary>
    The number of times the Credential Extension user unobfuscated a Password
    since last Chrome foregrounding. Reported when Chrome is put in foreground.
    Note: events where the count is zero were removed in M91.
  </summary>
</histogram>

<histogram name="IOS.CredentialExtension.StatusDidChangeTo.Startup"
    enum="Boolean" expires_after="2023-09-17">
  <owner>veronguyen@google.com</owner>
  <owner>tmartino@chromium.org</owner>
  <summary>
    Logged once per app launch if the status did changed. Logs the new status
    value (enabled/disabled) of the credential provider in the user's iOS
    settings on startup.
  </summary>
</histogram>

<histogram name="IOS.CredentialProviderExtension.Promo.Impression{IsReminder}"
    enum="IOSCredentialProviderPromoSource" expires_after="2023-09-01">
  <owner>huitingyu@google.com</owner>
  <owner>hiramahmood@google.com</owner>
  <summary>
    The impression count for the credential provider extention promo
    corresponding to a source of the promo.
  </summary>
  <token key="IsReminder">
    <variant name="" summary="default impression of promo"/>
    <variant name=".IsReminder"
        summary="impression of promo shown as reminder"/>
  </token>
</histogram>

<histogram
    name="IOS.CredentialProviderExtension.Promo.{PromoSource}{IsReminder}"
    enum="IOSCredentialProviderPromoAction" expires_after="2023-09-01">
  <owner>huitingyu@google.com</owner>
  <owner>hiramahmood@google.com</owner>
  <summary>
    The action taken in the credential provider extention promo displayed for
    the user event {PromoSource}. If the promo is as a reminder, the histogram
    name is suffixed with &quot;IsReminder&quot;.
  </summary>
  <token key="PromoSource">
    <variant name="OnPasswordCopied" summary="the user copies the password"/>
    <variant name="OnPasswordSaved" summary="the user saves the password"/>
    <variant name="OnSetUpList" summary="the user selects the SetUpList item"/>
    <variant name="OnSuccessfulLoginWithAutofilledPassword"
        summary="the user logs in with autofilled password"/>
  </token>
  <token key="IsReminder">
    <variant name="" summary="default impression of promo"/>
    <variant name=".IsReminder"
        summary="impression of promo shown as reminder"/>
  </token>
</histogram>

<histogram name="IOS.CRWWKNavigationStatesRemoveOldPending" enum="Boolean"
    expires_after="2023-09-17">
  <owner>justincohen@chromium.org</owner>
  <owner>gambard@chromium.org</owner>
  <summary>
    Workaround for a WKWebView bug where WKNavigations can leak, leaving a
    permanent pending URL, thus breaking the omnibox. While it is possible for
    navigations to finish out-of-order, it's an edge case that should be handled
    gracefully, as last committed will appear in the omnibox instead of the
    pending URL. This metric records whether there are old navigations to clean
    up each time a navigation finishes. See crbug.com/1010765 for details.
  </summary>
</histogram>

<histogram name="IOS.DefaultBrowserFullscreenPromo"
    enum="IOSDefaultBrowserFullscreenPromoAction" expires_after="2023-12-01">
  <owner>sebsg@chromium.org</owner>
  <owner>bling-get-set-up@google.com</owner>
  <summary>
    The action taken by the user in response to the default browser promo.
  </summary>
</histogram>

<histogram name="IOS.DefaultBrowserFullscreenPromoRemindMe"
    enum="IOSDefaultBrowserFullscreenPromoAction" expires_after="2023-12-01">
  <owner>sebsg@chromium.org</owner>
  <owner>bling-get-set-up@google.com</owner>
  <summary>
    The action taken by the user in response to the default browser promo with
    the Remind Me Later button.
  </summary>
</histogram>

<histogram name="IOS.DefaultBrowserFullscreenPromoRemindMeSecondPromo"
    enum="IOSDefaultBrowserFullscreenPromoAction" expires_after="2023-12-01">
  <owner>sebsg@chromium.org</owner>
  <owner>bling-get-set-up@google.com</owner>
  <summary>
    The action taken by the user in response to the second default browser promo
    after tapping on the Remind Me Later button.
  </summary>
</histogram>

<histogram name="IOS.DefaultBrowserFullscreenTailoredPromoAllTabs"
    enum="IOSDefaultBrowserFullscreenPromoAction" expires_after="2023-12-01">
  <owner>sebsg@chromium.org</owner>
  <owner>bling-get-set-up@google.com</owner>
  <summary>
    The action taken by the user in response to the &quot;All tabs&quot; default
    browser tailored promo.
  </summary>
</histogram>

<histogram name="IOS.DefaultBrowserFullscreenTailoredPromoMadeForIOS"
    enum="IOSDefaultBrowserFullscreenPromoAction" expires_after="2023-12-01">
  <owner>sebsg@chromium.org</owner>
  <owner>bling-get-set-up@google.com</owner>
  <summary>
    The action taken by the user in response to the &quot;Made for iOS&quot;
    default browser tailored promo.
  </summary>
</histogram>

<histogram name="IOS.DefaultBrowserFullscreenTailoredPromoStaySafe"
    enum="IOSDefaultBrowserFullscreenPromoAction" expires_after="2023-12-01">
  <owner>sebsg@chromium.org</owner>
  <owner>bling-get-set-up@google.com</owner>
  <summary>
    The action taken by the user in response to the &quot;Stay Safe&quot;
    default browser tailored promo.
  </summary>
</histogram>

<histogram name="IOS.DefaultBrowserPromo.NonModal.OnScreenTime" units="ms"
    expires_after="2023-12-01">
  <owner>sebsg@chromium.org</owner>
  <owner>bling-get-set-up@google.com</owner>
  <summary>
    Logs the time on screen for an impression of a non modal promo. iOS only.
  </summary>
</histogram>

<histogram name="IOS.DefaultBrowserPromo.NonModal.{Impression}"
    enum="IOSDefaultBrowserPromoNonModalAction" expires_after="2023-12-01">
  <owner>sebsg@chromium.org</owner>
  <owner>bling-get-set-up@google.com</owner>
  <summary>
    Logged when an action happens on the {Impression} impression of a non modal
    promo. Records the action of the promo. iOS only.
  </summary>
  <token key="Impression">
    <variant name="FirstImpression" summary="first"/>
    <variant name="SecondImpression" summary="second"/>
  </token>
</histogram>

<histogram name="IOS.DefaultBrowserPromo.NonModal.{PromoType}"
    enum="IOSDefaultBrowserPromoNonModalAction" expires_after="2023-12-01">
  <owner>sebsg@chromium.org</owner>
  <owner>bling-get-set-up@google.com</owner>
  <summary>
    Logged when an action happens on a non modal promo triggered by {PromoType}.
    Records the action of the promo. iOS only.
  </summary>
  <token key="PromoType">
    <variant name="GrowthKit" summary="GrowthKit opening Chrome"/>
    <variant name="Share" summary="sharing a website"/>
    <variant name="VisitPastedLink" summary="visiting a pasted link"/>
  </token>
</histogram>

<histogram name="IOS.DefaultBrowserPromo.TailoredFullscreen.{Action}"
    enum="IOSDefaultBrowserTailoredPromoType" expires_after="2023-12-01">
  <owner>sebsg@chromium.org</owner>
  <owner>bling-get-set-up@google.com</owner>
  <summary>
    Logged when the {Action} action happens in a tailored default browser promo.
    Records the type of promo.
  </summary>
  <token key="Action">
    <variant name="Accepted"/>
    <variant name="Appear"/>
    <variant name="Dismiss"/>
  </token>
</histogram>

<histogram name="IOS.DistantTab.TimeSinceLastUse" units="ms"
    expires_after="2023-11-01">
  <owner>ewannpv@chromium.org</owner>
  <owner>gambard@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    The delay in milliseconds between the Tab is opened from this device and the
    last time the same Tab was modified on the other device. The 'last modified'
    time is not updated when the Tab is opened from this device.
  </summary>
</histogram>

<histogram name="IOS.EditMenu.DismissedMenuOnPage" enum="IOSEditMenuPage"
    expires_after="2024-03-21">
  <owner>olivierrobin@chromium.org</owner>
  <owner>djean@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>Page on which the iOS web edit menu is dismissed.</summary>
</histogram>

<histogram name="IOS.EditMenu.Error" enum="IOSEditMenuError"
    expires_after="2024-03-21">
  <owner>olivierrobin@chromium.org</owner>
  <owner>djean@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>Report errors when reporting metrics for web edit menu.</summary>
</histogram>

<histogram name="IOS.EditMenu.SelectedAction" enum="IOSEditMenuActions"
    expires_after="2024-03-21">
  <owner>olivierrobin@chromium.org</owner>
  <owner>djean@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    The action that was triggered by the user on the iOS web edit menu.
  </summary>
</histogram>

<histogram name="IOS.EditMenu.SelectedActionOnPage" enum="IOSEditMenuPage"
    expires_after="2024-03-21">
  <owner>olivierrobin@chromium.org</owner>
  <owner>djean@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>Page on which an iOS web edit menu action is triggered.</summary>
</histogram>

<histogram name="IOS.EditMenu.UpdatingSelectionOnPage" enum="IOSEditMenuPage"
    expires_after="2024-03-21">
  <owner>olivierrobin@chromium.org</owner>
  <owner>djean@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Page on which the iOS web edit menu is dismissed by updating the selection.
  </summary>
</histogram>

<histogram name="IOS.EnterTabSwitcherSnapshotResult"
    enum="EnterTabSwitcherSnapshotResult" expires_after="2021-08-01">
  <owner>edchin@chromium.org</owner>
  <owner>justincohen@chromium.org</owner>
  <summary>
    Tracks the result of snapshotting when the user enters the tab switcher.
    Recorded whenever the user enters the tab switcher.
  </summary>
</histogram>

<histogram name="IOS.ExperienceKitCalendar.Present"
    enum="ExperienceKitCalendarTypes" expires_after="2023-09-03">
  <owner>djean@chromium.org</owner>
  <owner>erahmaoui@google.com</owner>
  <summary>
    The type of calendar chosen by the user on the ExperienceKit context menu.
  </summary>
</histogram>

<histogram name="IOS.ExperienceKitCalendar.Success"
    enum="ExperienceKitCalendarTypes" expires_after="2023-06-01">
  <owner>djean@chromium.org</owner>
  <owner>erahmaoui@google.com</owner>
  <summary>
    The type of calendar the event was created in using the ExperienceKit
    context menu.
  </summary>
</histogram>

<histogram name="IOS.ExperienceKitCalendar.TextClassifierModelAvailable"
    enum="BooleanAvailable" expires_after="2023-10-08">
  <owner>rajendrant@chromium.org</owner>
  <owner>sophiechang@chromium.org</owner>
  <summary>
    True if TextClassifier TFLite model was available for entity detection for
    ExperienceKit Calendar interaction when requested, such as on explicit user
    text selection.
  </summary>
</histogram>

<histogram name="IOS.FinishedNavigationHasContext" enum="Boolean"
    expires_after="2024-05-01">
  <owner>gambard@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    When a navigation is finished, it should have a non-null NavigationContext.
    This histogram counts the frequency of this invariant holding at the time
    when a new navigation is finished. It is used to verify the effectiveness of
    code fixes because this issue is not currently reproducible in testing
    (http://crbug.com/864769). True means a non-null NavigationContext is
    present.
  </summary>
</histogram>

<histogram name="IOS.FinishedNavigationHasItem" enum="Boolean"
    expires_after="2024-05-01">
  <owner>gambard@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    When a navigation is finished, it should have a non-null NavigationItem.
    This histogram counts the frequency of this invariant holding at the time
    when a new navigation is finished. It is used to verify the effectiveness of
    code fixes because this issue is not currently reproducible in testing
    (http://crbug.com/864769). True means a non-null NavigationItem is present.
  </summary>
</histogram>

<histogram name="IOS.FinishedURLMatchesCurrentItem" enum="Boolean"
    expires_after="2023-07-16">
  <owner>ajuma@chromium.org</owner>
  <owner>gambard@chromium.org</owner>
  <summary>
    When a navigation is finished, the web view URL is expected to match that of
    the current back-forward item. WKWebView seems to break this assumption at
    times. This histogram counts the frequency of this invariant violation at
    the time when a new navigation is finished. True means the URL matches the
    current back-forward item.
  </summary>
</histogram>

<histogram name="IOS.FontProvider.ProductSansRegular.LoadSuccess"
    enum="Boolean" expires_after="2023-09-23">
  <owner>eic@google.com</owner>
  <owner>tmartino@chromium.org</owner>
  <summary>
    Records whether the ProductSans-Regular was successfully loaded in the Font
    Provider Api.
  </summary>
</histogram>

<histogram name="IOS.FormInputAccessory.ExecuteFormAssistActionException"
    enum="FormInputAccessoryAction" expires_after="2022-12-11">
  <owner>rohitrao@chromium.org</owner>
  <owner>djean@chromium.org</owner>
  <summary>
    Reports exceptions when trying to send a form input accessory action to the
    virtual keyboard.
  </summary>
</histogram>

<histogram name="IOS.Frame.FirstContentfulPaint.MainFrame" units="ms"
    expires_after="2023-09-17">
  <owner>danieltwhite@chromium.org</owner>
  <owner>ajuma@chromium.org</owner>
  <summary>
    Many features include JavaScript injected logic that run in the WebKit
    renderer process. One Web Vitals metric that evaluates user experience is
    First Contentful Paint. First Contentful Paint is defined as the amount of
    time it takes for a page to render a non-trivial element. This histogram
    captures the First Contentful Paint time for every main frame. This
    histogram's understanding of First Contentful Paint differs from the
    traditional understanding because it does not aggregate and compare the
    First Contentful Page times across the frames on a page.
  </summary>
</histogram>

<histogram name="IOS.Frame.FirstContentfulPaint.SubFrame" units="ms"
    expires_after="2023-09-17">
  <owner>danieltwhite@chromium.org</owner>
  <owner>ajuma@chromium.org</owner>
  <summary>
    Many features include JavaScript injected logic that run in the WebKit
    renderer process. One Web Vitals metric that evaluates user experience is
    First Contentful Paint. First Contentful Paint is defined as the amount of
    time it takes for a page to render a non-trivial element. This histogram
    captures the First Contentful Paint time for user's subframes. Due to
    WebKit's implementation of First Contentful Paint, this histogram only
    captures a subframe's First Contentful Paint if it is same-origin relative
    to the main frame. This histogram's understanding of First Contentful Paint
    differs from the traditional understanding because it does not aggregate and
    compare the First Contentful Page times across the frames on a page.
  </summary>
</histogram>

<histogram name="IOS.Frame.FirstInputDelay.MainFrame" units="ms"
    expires_after="2023-03-06">
  <obsolete>
    Replaced by IOS.Frame.FirstInputDelay.MainFrame2 due to rebucketing.
  </obsolete>
  <owner>danieltwhite@chromium.org</owner>
  <owner>ajuma@chromium.org</owner>
  <summary>
    Many features include JavaScript injected logic that run in the WebKit
    renderer process. One Web Vitals metric that evaluates user experience is
    First Input Delay. First Input Delay is defined as the amount of time
    between the a user's first interaction with the page and the page receiving
    the input event for this interaction. This histogram captures the First
    Input Delay time for every main frame. This histogram's understanding of
    First Input Delay differs from the traditional understanding because it does
    not aggregate and compare the First Input Delay times across the frames on a
    page.
  </summary>
</histogram>

<histogram
    name="IOS.Frame.FirstInputDelay.MainFrame.AfterBackForwardCacheRestore"
    units="ms" expires_after="2023-03-06">
  <obsolete>
    Replaced by
    IOS.Frame.FirstInputDelay.MainFrame.AfterBackForwardCacheRestore2 due to
    rebucketing.
  </obsolete>
  <owner>danieltwhite@chromium.org</owner>
  <owner>ajuma@chromium.org</owner>
  <summary>
    Many features include JavaScript injected logic that run in the WebKit
    renderer process. One Web Vitals metric that evaluates user experience is
    First Input Delay. First Input Delay is defined as the amount of time
    between the a user's first interaction with the page and the page receiving
    the input event for this interaction. This histogram captures the First
    Input Delay time for user's main frame that is loaded from the Back/Forward
    cache. This histogram's understanding of First Contentful Paint differs from
    the traditional understanding because it does not aggregate and compare the
    First Input Delay times across the frames on a page.
  </summary>
</histogram>

<histogram
    name="IOS.Frame.FirstInputDelay.MainFrame.AfterBackForwardCacheRestore2"
    units="ms" expires_after="2024-02-27">
  <owner>danieltwhite@chromium.org</owner>
  <owner>ajuma@chromium.org</owner>
  <summary>
    Many features include JavaScript injected logic that run in the WebKit
    renderer process. One Web Vitals metric that evaluates user experience is
    First Input Delay. First Input Delay is defined as the amount of time
    between the a user's first interaction with the page and the page receiving
    the input event for this interaction. This histogram captures the First
    Input Delay time for user's main frame that is loaded from the Back/Forward
    cache. This histogram's understanding of First Contentful Paint differs from
    the traditional understanding because it does not aggregate and compare the
    First Input Delay times across the frames on a page.
  </summary>
</histogram>

<histogram name="IOS.Frame.FirstInputDelay.MainFrame2" units="ms"
    expires_after="2024-02-27">
  <owner>danieltwhite@chromium.org</owner>
  <owner>ajuma@chromium.org</owner>
  <summary>
    Many features include JavaScript injected logic that run in the WebKit
    renderer process. One Web Vitals metric that evaluates user experience is
    First Input Delay. First Input Delay is defined as the amount of time
    between the a user's first interaction with the page and the page receiving
    the input event for this interaction. This histogram captures the First
    Input Delay time for every main frame. This histogram's understanding of
    First Input Delay differs from the traditional understanding because it does
    not aggregate and compare the First Input Delay times across the frames on a
    page.
  </summary>
</histogram>

<histogram name="IOS.Frame.FirstInputDelay.SubFrame" units="ms"
    expires_after="2023-03-06">
  <obsolete>
    Replaced by IOS.Frame.FirstInputDelay.SubFrame2 due to rebucketing.
  </obsolete>
  <owner>danieltwhite@chromium.org</owner>
  <owner>ajuma@chromium.org</owner>
  <summary>
    Many features include JavaScript injected logic that run in the WebKit
    renderer process. One Web Vitals metric that evaluates user experience is
    First Input Delay. First Input Delay is defined as the amount of time
    between the a user's first interaction with the page and the page receiving
    the input event for this interaction. This histogram captures the First
    Input Delay time for user's subframes. This histogram's understanding of
    First Contentful Paint differs from the traditional understanding because it
    does not aggregate and compare the First Input Delay times across the frames
    on a page.
  </summary>
</histogram>

<histogram
    name="IOS.Frame.FirstInputDelay.SubFrame.AfterBackForwardCacheRestore"
    units="ms" expires_after="2023-03-06">
  <obsolete>
    Replaced by IOS.Frame.FirstInputDelay.SubFrame.AfterBackForwardCacheRestore2
    due to rebucketing.
  </obsolete>
  <owner>danieltwhite@chromium.org</owner>
  <owner>ajuma@chromium.org</owner>
  <summary>
    Many features include JavaScript injected logic that run in the WebKit
    renderer process. One Web Vitals metric that evaluates user experience is
    First Input Delay. First Input Delay is defined as the amount of time
    between the a user's first interaction with the page and the page receiving
    the input event for this interaction. This histogram captures the First
    Input Delay time for user's subframes that is loaded from the Back/Forward
    cache. This histogram's understanding of First Contentful Paint differs from
    the traditional understanding because it does not aggregate and compare the
    First Input Delay times across the frames on a page.
  </summary>
</histogram>

<histogram
    name="IOS.Frame.FirstInputDelay.SubFrame.AfterBackForwardCacheRestore2"
    units="ms" expires_after="2024-02-27">
  <owner>danieltwhite@chromium.org</owner>
  <owner>ajuma@chromium.org</owner>
  <summary>
    Many features include JavaScript injected logic that run in the WebKit
    renderer process. One Web Vitals metric that evaluates user experience is
    First Input Delay. First Input Delay is defined as the amount of time
    between the a user's first interaction with the page and the page receiving
    the input event for this interaction. This histogram captures the First
    Input Delay time for user's subframes that is loaded from the Back/Forward
    cache. This histogram's understanding of First Contentful Paint differs from
    the traditional understanding because it does not aggregate and compare the
    First Input Delay times across the frames on a page.
  </summary>
</histogram>

<histogram name="IOS.Frame.FirstInputDelay.SubFrame2" units="ms"
    expires_after="2024-02-27">
  <owner>danieltwhite@chromium.org</owner>
  <owner>ajuma@chromium.org</owner>
  <summary>
    Many features include JavaScript injected logic that run in the WebKit
    renderer process. One Web Vitals metric that evaluates user experience is
    First Input Delay. First Input Delay is defined as the amount of time
    between the a user's first interaction with the page and the page receiving
    the input event for this interaction. This histogram captures the First
    Input Delay time for user's subframes. This histogram's understanding of
    First Contentful Paint differs from the traditional understanding because it
    does not aggregate and compare the First Input Delay times across the frames
    on a page.
  </summary>
</histogram>

<histogram name="IOS.Fullscreen.State" enum="CrFullscreenState"
    expires_after="2023-09-24">
  <owner>joemerramos@chromium.org</owner>
  <owner>ajuma@chromium.org</owner>
  <summary>
    Logs when a user triggers a fullscreen state change for Chrome on iOS. The
    enumeration indicates the fullscreen state. This is for the web-exposed
    Fullscreen API not the fullscreen that happens when users scroll down and
    hides the toolbar.
  </summary>
</histogram>

<histogram name="IOS.Handoff.Origin" enum="IOSHandoffOrigin"
    expires_after="M77">
  <owner>erikchen@chromium.org</owner>
  <summary>
    This event is recorded each time a Handoff is received by Chrome on iOS. The
    enumeration indicates the source of the Handoff.
  </summary>
</histogram>

<histogram name="IOS.Home.ActionOnNTP" enum="IOSHomeActionType"
    expires_after="2023-10-08">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    This histogram is logged whenever a Home action is taken on the NTP.
  </summary>
</histogram>

<histogram name="IOS.Home.ActionOnStartSurface" enum="IOSHomeActionType"
    expires_after="2023-10-08">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    This histogram is logged whenever a Home action is taken on the Start
    surface.
  </summary>
</histogram>

<histogram name="IOS.InactiveTabs.Settings.Threshold"
    enum="InactiveTabsThresholdSettingType" expires_after="2023-10-19">
  <owner>alionadangla@chromium.org</owner>
  <owner>lpromero@chromium.org</owner>
  <summary>Logs the chosen inactive tab threshold at startup.</summary>
</histogram>

<histogram name="IOS.Incognito.BiometricAuthEnabled" enum="Boolean"
    expires_after="never">
<!-- expires-never: guiding metric (internal: go/chrome-browser-guiding-metrics) -->

  <owner>andrewkamau@google.com</owner>
  <owner>arabm@google.com</owner>
  <summary>
    Logged once per app launch. Logs whether the biometric incognito
    authentication setting is enabled. This metric is designed to measure % of
    users who have the setting enabled by using &quot;group by users&quot; in
    UMA.
  </summary>
</histogram>

<histogram name="IOS.Incognito.BiometricReauthAttemptSuccessful" enum="Boolean"
    expires_after="never">
<!-- expires-never: guiding metric (internal: go/chrome-browser-guiding-metrics) -->

  <owner>andrewkamau@google.com</owner>
  <owner>arabm@google.com</owner>
  <summary>
    Logged when the user attempt to reauthenticate to display the incognito
    tabs. This metric is designed to measure the success of the reauth.
  </summary>
</histogram>

<histogram name="IOS.Incognito.TimeSpent" units="ms" expires_after="2023-10-16">
  <owner>olivierrobin@chromium.org</owner>
  <owner>qpubert@google.com</owner>
  <summary>
    The time incognito profile is displayed to the user. Incognito sessions
    during less than 10 seconds are not reported. Incognito session paused for
    less than 10 seconds is resumed. (Incorrectly reported between M92 and
    M107).
  </summary>
</histogram>

<histogram name="IOS.IncognitoInterstitial"
    enum="IncognitoInterstitialActionType" expires_after="2023-10-17">
  <owner>qpubert@google.com</owner>
  <owner>djean@chromium.org</owner>
  <summary>
    Logged when the Incognito Interstitial is dismissed, with a value which
    depends on what user action led to the dismissal. Before M113, the Cancel
    bucket contains all times the Incognito interstitial was dismissed without
    opening the URL. Starting M113, it only contains times the user triggered
    the Cancel button, and new &quot;Learn more about Incognito&quot; and
    &quot;Dismissed by external event&quot; buckets are added.
  </summary>
</histogram>

<histogram name="IOS.IncognitoInterstitial.Settings"
    enum="IncognitoInterstitialSettingsActionType" expires_after="2023-10-17">
  <owner>qpubert@google.com</owner>
  <owner>djean@chromium.org</owner>
  <summary>
    Logged when the &quot;Ask to Open Links from Other Apps in Incognito&quot;
    setting is enabled or disabled by the user.
  </summary>
</histogram>

<histogram name="IOS.IPH.DefaultSite.Presented" enum="BooleanHit"
    expires_after="2023-02-28">
  <obsolete>
    This metric is obsolete as of M112, it is now recorded in
    InProductHelp.ShouldTriggerHelpUI.IPH_DefaultSiteView.
  </obsolete>
  <owner>gambard@chromium.org</owner>
  <owner>lpromero@chromium.org</owner>
  <summary>
    Recorded when the InProductHelp about the DefaultSite is presented to the
    user. Can be used as a base number to evaluate the impact of IPH.
  </summary>
</histogram>

<histogram name="IOS.IsDefaultBrowser" enum="Boolean" expires_after="never">
<!-- expires-never: used internally for filtering -->

  <owner>thegreenfrog@chromium.org</owner>
  <owner>rohitrao@chromium.org</owner>
  <owner>chrome-metrics-team@google.com</owner>
  <summary>
    Prefer to use IOS.IsDefaultBrowser21 as this metric is based in a 7 days
    look back window, which appears to be too small. As of iOS14, users will be
    able to set a default browser other than Safari. When Chrome is the default
    browser, it will receive all URL opens, which is likely to change certain
    stability metrics. Thus, it will be good to filter those metrics by default
    browser status. This metrics records whether the user was deemed to have set
    Chrome as the device's default browser. This metric will be logged once per
    metrics log upload. As long as a link is opened in Chrome in the last 7
    days, the user will be considered a default user.
  </summary>
</histogram>

<histogram name="IOS.IsDefaultBrowser21" enum="Boolean" expires_after="never">
<!-- expires-never: used internally for filtering -->

  <owner>rohitrao@chromium.org</owner>
  <owner>chrome-metrics-team@google.com</owner>
  <summary>
    As of iOS14, users will be able to set a default browser other than Safari.
    When Chrome is the default browser, it will receive all URL opens, which is
    likely to change certain stability metrics. Thus, it will be good to filter
    those metrics by default browser status. This metrics records whether the
    user was deemed to have set Chrome as the device's default browser. This
    metric will be logged once per metrics log upload. As long as link is opened
    in Chrome in the last 21 days, the user will be considered a default user.
  </summary>
</histogram>

<histogram name="IOS.IsEligibleDefaultBrowserPromoUser" enum="BooleanEligible"
    expires_after="2023-02-26">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>rohitrao@chromium.org</owner>
  <summary>
    This metric reports whether the user was deemed eligible to be shown default
    browser fullscreen promos. Eligibility currently includes signed-in users,
    external intent app opens, clipboard copies, and GrowthKit opens. This
    metric will be logged once per metrics log upload.
  </summary>
</histogram>

<histogram name="IOS.JavascriptContentBlockFailure"
    enum="IOSJavascriptContentBlockType" expires_after="2020-12-31">
  <owner>rkgibson@google.com</owner>
  <owner>gambard@chromium.org</owner>
  <summary>
    IOS Content Blocking uses special injected Javascript to block access to
    things like cookies and local storage. Future changes to iOS/WebKit could
    cause these blocks to break. This logs that occurrence.
  </summary>
</histogram>

<histogram name="IOS.LinkToText.ShouldOfferResult"
    enum="LinkToTextShouldOfferResult" expires_after="2023-09-03">
  <owner>tmartino@chromium.org</owner>
  <owner>seblalancette@chromium.org</owner>
  <summary>
    The result of conditional disable/enable checking for the Link to Text
    feature, including granular failure reasons when the feature is not offered.
  </summary>
</histogram>

<histogram name="IOS.MainFrameNavigationIsInLockdownMode" enum="Boolean"
    expires_after="2023-11-23">
  <owner>ajuma@chromium.org</owner>
  <owner>bling-fundamentals@google.com</owner>
  <summary>
    Records whether Lockdown Mode is enabled for a main-frame navigation action.
    This is recorded once for every allowed main-frame navigation action.
  </summary>
</histogram>

<histogram name="IOS.MainThreadFreezeDetection.HangWithCleanExit"
    enum="Boolean" expires_after="2023-09-12">
  <owner>justincohen@chromium.org</owner>
  <owner>olivierrobin@chromium.org</owner>
  <summary>
    Recorded when the MainThreadFreezeDetector initializes. If a hang was
    detected on a previous run, it's expected the app will be killed and not
    exit cleanly. Set to `true` if the app exited cleanly and a hang was
    detected, indicating no watchdog kill and an error in freeze detection.
  </summary>
</histogram>

<histogram name="IOS.MainThreadFreezeDetection.NotRunningAfterReport"
    enum="IOSMainThreadFreezeDetectionNotRunningAfterReportBlock"
    expires_after="2023-09-12">
  <owner>justincohen@chromium.org</owner>
  <owner>olivierrobin@chromium.org</owner>
  <summary>
    Recorded when the main thread recovers immediately after a freeze report was
    generated.
  </summary>
</histogram>

<histogram name="IOS.MainThreadFreezeDetection.RecordGenerationTime" units="ms"
    expires_after="2023-09-12">
  <owner>justincohen@chromium.org</owner>
  <owner>olivierrobin@chromium.org</owner>
  <summary>
    The time taken to record a freeze report. Logged immediately after
    generating a hang report.
  </summary>
</histogram>

<histogram name="IOS.MainThreadFreezeDetection.RecoveredAfter" units="ms"
    expires_after="2023-09-12">
  <owner>justincohen@chromium.org</owner>
  <owner>olivierrobin@chromium.org</owner>
  <summary>
    The time during which main thread was not responding. 0 if application was
    killed before recovering. Logged after an action posted on the main thread
    is not executed immediately. The histogram is sent when the task is finally
    executed or on next application startup.
  </summary>
</histogram>

<histogram name="IOS.MetricKit.{MXVersion}ApplicationHangTime" units="ms"
    expires_after="never">
<!-- expires-never: guiding metric (internal: go/chrome-browser-guiding-metrics) -->

  <owner>justincohen@chromium.org</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>chrome-analysis-team@google.com</owner>
  <summary>
    The durations of time in which the app is too busy to handle user input
    responsively. This covers all forms of user input, including all touch
    screen input (scrolls, pinches, and taps) and input from any connected input
    device such as a keyboard. Logged when a MXMetricPayload is received (one
    per day). Each sample corresponds to one hang that happens when the app is
    in the foreground and doesn't respond quickly enough to user input. The
    minimum observed hang time is 250ms (but this value may change in future
    device/OS version). This metric can be normalized by comparing the total
    number of hangs or the total time spent hung against the number of clients
    emitting to IOS.MetricKit.ForegroundTimePerDay (hangs per users) or against
    the total time reported by IOS.MetricKit.ForegroundTimePerDay (fraction of
    foreground time spent in hangs). ApplicationHangTime and
    ForegroundTimePerDay have the same restrictions about when they're emitted
    (opted-in to share diagnostic data with Apple and also opted-in to UMA).
    Further, as hangs can only happen during foreground use,
    ForegroundTimePerDay makes a good comparison point. Only hangs in the
    browser process are reported.

    Recorded only if user opted in for sharing diagnostic data on iOS device.
    Note: The date the data is reported is later than the day it account for.

    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>
  <token key="MXVersion" variants="MXVersion"/>
</histogram>

<histogram name="IOS.MetricKit.{MXVersion}ApplicationResumeTime" units="ms"
    expires_after="2023-09-19">
  <owner>justincohen@chromium.org</owner>
  <owner>olivierrobin@chromium.org</owner>
  <summary>
    The amount of time taken to resume the app from the background (not
    aggregated). Logged when a MXMetricPayload is received (one per day).

    Recorded only if user opted in for sharing diagnostic data on iOS device.
    Note: The date the data is reported is later than the day it account for.
  </summary>
  <token key="MXVersion" variants="MXVersion"/>
</histogram>

<histogram name="IOS.MetricKit.{MXVersion}AverageSuspendedMemory" units="MB"
    expires_after="2023-09-19">
  <owner>justincohen@chromium.org</owner>
  <owner>olivierrobin@chromium.org</owner>
  <summary>
    The average amount of memory in use by the app when it's suspended. Averaged
    on a 24 hours period. Logged when a MXMetricPayload is received (one per
    day).

    Recorded only if user opted in for sharing diagnostic data on iOS device.
    Note: The date the data is reported is later than the day it account for.
  </summary>
  <token key="MXVersion" variants="MXVersion"/>
</histogram>

<histogram name="IOS.MetricKit.{MXVersion}BackgroundExitData"
    enum="MetricKitExitData" expires_after="never">
<!-- expires-never: guiding metric (internal: go/chrome-browser-guiding-metrics) -->

  <owner>justincohen@chromium.org</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>chrome-analysis-team@google.com</owner>
  <summary>
    The reason for the application termination in background. Recorded when a
    MXMetricPayload is received from the OS (at most once per day) at
    unspecified time. Records cumulative data collected and agregated since the
    previous recording. All buckets from MetricKitExitData are available on iOS
    14 and higher (unless MetricKitExitData bucket comments specify otherwise).

    Note that crashes while in the background are not considered crashes /
    unclean shutdowns in UMA stability metrics. This is because the
    &quot;CleanExitBeacon&quot; is set when Chrome is put in the background.

    Recorded only if user opted in for sharing diagnostic data on iOS device.
    Note: The date the data is reported is later than the day it account for.

    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>
  <token key="MXVersion" variants="MXVersion"/>
</histogram>

<histogram name="IOS.MetricKit.{MXVersion}BackgroundTimePerDay" units="ms"
    expires_after="2023-05-14">
  <owner>justincohen@chromium.org</owner>
  <owner>olivierrobin@chromium.org</owner>
  <summary>
    The total time the app is in the background. Logged when a MXMetricPayload
    is received (one per day). This correspond as Chrome running but not having
    active scene (i.e. the application just has been backgrounded or is doing
    background activity like background music or picture in picture).

    Recorded only if user opted in for sharing diagnostic data on iOS device.
    Note: The date the data is reported is later than the day it account for.
  </summary>
  <token key="MXVersion" variants="MXVersion"/>
</histogram>

<histogram name="IOS.MetricKit.{MXVersion}ExtendedLaunch" units="ms"
    expires_after="2023-09-19">
  <owner>ajuma@chromium.org</owner>
  <owner>justincohen@chromium.org</owner>
  <summary>
    The amount of time taken to launch the app until the app UI is ready to
    receive input. This measures startup until the same point as
    Startup.ColdStartFromProcessCreationTimeV2 but is computed by iOS in a way
    that accounts for app pre-warming. The exact adjustments made to account for
    pre-warming are not documented by Apple. Logged when a MXMetricPayload is
    received (one per day).

    This is only recorded on iOS 16+, and recorded only if user opted in for
    sharing diagnostic data on iOS device.

    Note: The date the data is reported is later than the day it accounts for.
  </summary>
  <token key="MXVersion" variants="MXVersion"/>
</histogram>

<histogram name="IOS.MetricKit.{MXVersion}ForegroundExitData"
    enum="MetricKitExitData" expires_after="never">
<!-- expires-never: guiding metric (internal: go/chrome-browser-guiding-metrics) -->

  <owner>justincohen@chromium.org</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>chrome-analysis-team@google.com</owner>
  <summary>
    The reason for the application termination in foreground. Recorded when a
    MXMetricPayload is received from the OS (at most once per day) at
    unspecified time. Records cumulative data collected and agregated since the
    previous recording. All buckets from MetricKitExitData are available on iOS
    14 and higher (unless MetricKitExitData bucket comments specify otherwise).
    All buckets except &quot;App exited normally&quot; are likely user-visible
    terminations (this is a guess rather that verified fact).

    Application is in foreground is at least one scene is active in foreground.
    Picture in picture and background music playing are not considered as
    foreground.

    Recorded only if user opted in for sharing diagnostic data on iOS device.
    Note: The date the data is reported is later than the day it account for.

    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>
  <token key="MXVersion" variants="MXVersion"/>
</histogram>

<histogram name="IOS.MetricKit.{MXVersion}ForegroundTimePerDay" units="s"
    expires_after="2023-05-14">
  <owner>justincohen@chromium.org</owner>
  <owner>olivierrobin@chromium.org</owner>
  <summary>
    The total time the app is in the foreground, aggregated over all foreground
    interactions since the last time this metric was reported. This is at most a
    24 hour period. Logged when a MXMetricPayload is received (one per day).

    Application is in foreground is at least one scene is active in foreground.
    Picture in picture and background music playing are not considered as
    foreground

    Recorded only if user opted in for sharing diagnostic data on iOS device.
    Note: The date the data is reported is later than the day it account for.
  </summary>
  <token key="MXVersion" variants="MXVersion"/>
</histogram>

<histogram name="IOS.MetricKit.{MXVersion}OptimizedTimeToFirstDraw" units="ms"
    expires_after="2023-09-19">
  <owner>ajuma@chromium.org</owner>
  <owner>justincohen@chromium.org</owner>
  <summary>
    The amount of time taken to launch the app in cases where the launch is
    pre-warmed. This is identical to IOS.MetricKit.{MXVersion}TimeToFirstDraw
    except that TimeToFirstDraw considers all launches while this metric only
    considers pre-warmed launches. Logged when a MXMetricPayload is received
    (one per day).

    This is only recorded on iOS 16+, and recorded only if user opted in for
    sharing diagnostic data on iOS device.

    Note: The date the data is reported is later than the day it accounts for.
  </summary>
  <token key="MXVersion" variants="MXVersion"/>
</histogram>

<histogram name="IOS.MetricKit.{MXVersion}PeakMemoryUsage" units="MB"
    expires_after="2023-09-19">
  <owner>justincohen@chromium.org</owner>
  <owner>olivierrobin@chromium.org</owner>
  <summary>
    The largest amount of memory used by the app since the last time this metric
    was reported. This is at most a 24 hour period. Logged when a
    MXMetricPayload is received (one per day).

    Because this implemented by Apple, we do not know how peak memory usage is
    identified (by polling?). We also do not know if this covers background
    usage. We also do not know if the period only includes background usage
    whether this is going to be reported.

    Recorded only if user opted in for sharing diagnostic data on iOS device.
    Note: The date the data is reported is later than the day it account for.
  </summary>
  <token key="MXVersion" variants="MXVersion"/>
</histogram>

<histogram name="IOS.MetricKit.{MXVersion}TimeToFirstDraw" units="ms"
    expires_after="2023-09-19">
  <owner>justincohen@chromium.org</owner>
  <owner>olivierrobin@chromium.org</owner>
  <summary>
    The amount of time taken to launch the app. Logged when a MXMetricPayload is
    received (one per day).

    Recorded only if user opted in for sharing diagnostic data on iOS device.
    Note: The date the data is reported is later than the day it account for.
  </summary>
  <token key="MXVersion" variants="MXVersion"/>
</histogram>

<histogram name="IOS.MultiWindow.Configuration"
    enum="IOSMultiWindowConfiguration" expires_after="2022-12-11">
  <owner>marq@chromium.org</owner>
  <owner>djean@chromium.org</owner>
  <summary>MultiWindow configuration sampled once per minute.</summary>
</histogram>

<histogram name="IOS.MultiWindow.OpenInNewWindow" enum="WindowActivityOrigin"
    expires_after="2022-06-26">
  <owner>marq@chromium.org</owner>
  <owner>djean@chromium.org</owner>
  <summary>
    The source of &quot;Open in new Window&quot; user requests. Recorded when a
    newly created window is added to a session.
  </summary>
</histogram>

<histogram name="IOS.NavigationStateNotFinishedInLoadCancelled" enum="Boolean"
    expires_after="2023-09-24">
  <owner>ajuma@chromium.org</owner>
  <owner>michaeldo@chromium.org</owner>
  <summary>
    The method -[CRWWKNavigationHandler loadCancelled] updates the navigation
    state to finished if it is any other state. Additionally, if
    `beingDestroyed` is false, the webstate's loading state is set to false.
    There is a long standing TODO in this method with the comment: &quot;Check
    if this function should be removed.&quot; This metric is logged when the
    logic in this method is triggered. The results will be reviewed to see if
    this logic is still ever called or if it can now be removed.
  </summary>
</histogram>

<histogram name="IOS.NSString.stringByReplacingCharactersInRange.NilArgument"
    enum="Boolean" expires_after="2022-12-11">
  <owner>rohitrao@chromium.org</owner>
  <owner>djean@chromium.org</owner>
  <summary>
    NSString API: stringByReplacingCharactersInRange:withString: was invoked
    with a nil argument.
  </summary>
</histogram>

<histogram name="IOS.NTP.ExcessRemovedTabCount" units="count"
    expires_after="2022-09-03">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>The number of excess NTP tabs that are removed.</summary>
</histogram>

<histogram name="IOS.NTP.Impression" enum="IOSNTPImpressionType"
    expires_after="2023-09-03">
  <owner>gambard@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    The type of NTP impressions on iOS, split by the feed visibility. Logged
    each time an NTP is made visible.
  </summary>
</histogram>

<histogram name="IOS.NTP.OverscrollAction" enum="IOSNTPOverscrollAction"
    expires_after="2023-09-03">
  <owner>guiperez@google.com</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    The type of overscroll action that occurs on the NTP. This is recorded each
    time a user overscrolls on the NTP.
  </summary>
</histogram>

<histogram name="IOS.Omnibox.SearchSuggestionNumberOfLines" units="count"
    expires_after="2023-09-27">
  <owner>christianxu@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>Histogram of the number of lines of search suggestions.</summary>
</histogram>

<histogram name="IOS.Omnibox.SuggestionsListScrolled.{PageClass}"
    enum="Boolean" expires_after="2024-01-31">
  <owner>christianxu@chromium.org</owner>
  <owner>stkhapugin@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    For every interaction with the Omnibox, this metric records whether the user
    scrolled the omnibox while exploring suggestions on {PageClass}.

    This is recorded once per Omnibox interaction, regardless of whether the
    User chooses to navigate somewhere or abandons the interaction.
  </summary>
  <token key="PageClass">
    <variant name="NTP" summary="the New Tab Page"/>
    <variant name="Other" summary="a website"/>
    <variant name="SRP" summary="the Search Results Page"/>
  </token>
</histogram>

<histogram name="IOS.OpenIn.DownloadResult" enum="IOSOpenInDownloadResult"
    expires_after="2023-09-17">
  <owner>ewannpv@chromium.org</owner>
  <owner>mrefaat@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    The result of the download operation done when the user taps &quot;open
    in&quot; button to open a file by a different application.
  </summary>
</histogram>

<histogram name="IOS.OpenIn.MimeType" enum="IOSOpenInMimeType"
    expires_after="2023-09-17">
  <owner>ewannpv@chromium.org</owner>
  <owner>gambard@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    The MIME type of the previwed file when the &quot;Open In&quot; toolbar is
    presented.
  </summary>
</histogram>

<histogram name="IOS.OverflowMenu.ActionType" enum="IOSOverflowMenuActionType"
    expires_after="2023-10-08">
  <owner>rkgibson@google.com</owner>
  <owner>bling-team@google.com</owner>
  <summary>The type of action the user took in the overflow/tools menu</summary>
</histogram>

<histogram name="IOS.OverflowMenu.TimeOpen" units="ms"
    expires_after="2023-10-08">
  <owner>rkgibson@google.com</owner>
  <owner>bling-team@google.com</owner>
  <summary>The amount of time the overflow/tools menu is open.</summary>
</histogram>

<histogram name="IOS.PageLoad.DefaultModeMobile" enum="Boolean"
    expires_after="2023-09-03">
  <owner>gambard@chromium.org</owner>
  <owner>ajuma@chromium.org</owner>
  <summary>
    Tracks the default mode used by the webview when a page is loaded. True when
    the default mode is Mobile (vs Default).
  </summary>
</histogram>

<histogram name="IOS.PageLoadCount.Counts"
    enum="IOSPageLoadCountNavigationType" expires_after="2023-10-15">
  <owner>gambard@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>The number of navigation started events by navigation type.</summary>
</histogram>

<histogram name="IOS.PageLoadCount.LoadingStarted" units="units"
    expires_after="2023-06-30">
  <owner>gambard@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    The &quot;true&quot; value of this boolean histogram counts the number of
    page loading started events. The &quot;false&quot; value will never be seen.
  </summary>
</histogram>

<histogram name="IOS.PageLoadedSnapshotResult" enum="PageLoadedSnapshotResult"
    expires_after="2021-08-01">
  <owner>edchin@chromium.org</owner>
  <owner>justincohen@chromium.org</owner>
  <summary>
    Tracks the result of snapshotting when the page has been loaded.
  </summary>
</histogram>

<histogram name="IOS.PageLoadTiming.OmnibarToPageLoaded" units="ms"
    expires_after="2023-09-22">
  <owner>ajuma@chromium.org</owner>
  <owner>gambard@chromium.org</owner>
  <summary>
    Measures the time from the end of user input in the omnibox to when the page
    is fully loaded. Only measures page loads initiated by user typing a URL or
    selecting a suggested entry from the URL bar.
  </summary>
</histogram>

<histogram name="IOS.PartialTranslate.Outcome" enum="PartialTranslateOutcome"
    expires_after="2024-02-23">
  <owner>olivierrobin@chromium.org</owner>
  <owner>djean@chromium.org</owner>
  <summary>The outcome of the partial translate feature.</summary>
</histogram>

<histogram name="IOS.PartialTranslate.SelectionLength" units="characters"
    expires_after="2024-02-23">
  <owner>olivierrobin@chromium.org</owner>
  <owner>djean@chromium.org</owner>
  <summary>The length of the selection received from javascript.</summary>
</histogram>

<histogram name="IOS.PasswordManager.Favicons.Count" units="count"
    expires_after="2023-09-03">
  <owner>veronguyen@google.com</owner>
  <owner>tmartino@chromium.org</owner>
  <summary>
    The number of favicons loaded (image, not monogram string) in the Password
    Manager recorded when the view will disappear.
  </summary>
</histogram>

<histogram name="IOS.PasswordManager.Favicons.Percentage" units="%"
    expires_after="2023-07-01">
  <owner>veronguyen@google.com</owner>
  <owner>tmartino@chromium.org</owner>
  <summary>
    The percentage of passwords that have a favicon that is an image in the
    Password Manager recorded when the view will disappear.
  </summary>
</histogram>

<histogram name="IOS.PasswordManager.PasswordsWithFavicons.Count" units="count"
    expires_after="2023-09-03">
  <owner>veronguyen@google.com</owner>
  <owner>tmartino@chromium.org</owner>
  <summary>
    The number of passwords with a favicon loaded in the Password Manager
    recorded when the view will disappear.
  </summary>
</histogram>

<histogram name="IOS.PasswordsInOtherApps.AutoFillStatusChange"
    enum="PasswordAutoFillEnrollmentStatus" expires_after="2023-09-01">
  <owner>ginnyhuang@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Logs when a user's password auto fill status has changed. Value indicates
    user's current enrollment status of password auto fill from Chrome, after
    the change.
  </summary>
</histogram>

<histogram name="IOS.PasswordsInOtherApps.Dismiss"
    enum="PasswordAutoFillEnrollmentStatus" expires_after="2023-09-01">
  <owner>ginnyhuang@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Logs when a user dismisses Passwords in Other Apps promo. Value indicates
    user's enrollment status of password autofill from Chrome.
  </summary>
</histogram>

<histogram name="IOS.PasswordsInOtherApps.GoToIOSSetting"
    enum="PasswordAutoFillEnrollmentStatus" expires_after="2023-04-23">
  <owner>ginnyhuang@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Logs when a user opens iOS Password Settings by tapping the button/link in
    Passwords in Other Apps promo. Value indicates user's enrollment status of
    password autofill from Chrome.
  </summary>
</histogram>

<histogram name="IOS.PasswordsInOtherApps.Open"
    enum="PasswordAutoFillEnrollmentStatus" expires_after="2023-09-24">
  <owner>ginnyhuang@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Logs when a user opens Passwords in Other Apps promo from Chrome settings.
    Value indicates user's enrollment status of password autofill from Chrome.
  </summary>
</histogram>

<histogram name="IOS.Permission.Modal.Events" enum="IOSPermissionEvent"
    expires_after="2024-01-10">
  <owner>ewannpv@chromium.org</owner>
  <owner>gambard@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Logs media permission events when the user changes the state of a permission
    (e.g. the microphone permission) from the infobar modal.
  </summary>
</histogram>

<histogram name="IOS.Permission.PageInfo.Events" enum="IOSPermissionEvent"
    expires_after="2024-01-10">
  <owner>ewannpv@chromium.org</owner>
  <owner>gambard@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Logs media permission events when the user changes the state of a permission
    (e.g. the microphone permission) from the page info.
  </summary>
</histogram>

<histogram name="IOS.Permission.Requests" enum="IOSPermissionRequest"
    expires_after="2024-01-24">
  <owner>ewannpv@chromium.org</owner>
  <owner>gambard@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Logs media permission requests from websites. (e.g. the microphone
    permission is asked from a website).
  </summary>
</histogram>

<histogram name="IOS.PostRestoreSignin.Choice"
    enum="IOSPostRestoreSigninChoice" expires_after="2023-06-15">
  <owner>scottyoder@google.com</owner>
  <owner>bling-get-set-up@google.com</owner>
  <summary>
    Logs a user's choice when presented with the Post Restore Signin Promo.'
  </summary>
</histogram>

<histogram name="IOS.PostRestoreSignin.Displayed" enum="Boolean"
    expires_after="2023-06-15">
  <owner>scottyoder@google.com</owner>
  <owner>bling-get-set-up@google.com</owner>
  <summary>
    Indicates whether the Post Restore Signin Promo was displayed.
  </summary>
</histogram>

<histogram name="IOS.Process.ActivePrewarm" enum="Boolean"
    expires_after="2023-09-03">
  <owner>justincohen@google.com</owner>
  <owner>olivierrobin@google.com</owner>
  <summary>
    Whether or not the process was started with ActivePrewarm, an Apple
    triggered launch of a nonrunning application processes to reduce the amount
    of time the user waits before the app is usable. A significant change in
    this metric may indicate a change from Apple outside Chromium's control, or
    that Chromium has a reduced 'Duet' score in the system, which merits
    investigation. See the UIKit documentation &quot;Prepare Your App for
    Prewarming&quot; for more details.
  </summary>
</histogram>

<histogram name="IOS.PromosManager.Promo" enum="IOSPromosManagerPromo"
    expires_after="2024-02-28">
  <owner>bwwilliams@google.com</owner>
  <owner>rkgibson@google.com</owner>
  <owner>huitingyu@google.com</owner>
  <summary>
    Logs which promo is displayed when the Promos Manager decides to display a
    promo.
  </summary>
</histogram>

<histogram name="IOS.PromosManager.Promo.DisplayFailure"
    enum="IOSPromosManagerPromo" expires_after="2024-02-28">
  <owner>bwwilliams@google.com</owner>
  <owner>rkgibson@google.com</owner>
  <owner>huitingyu@google.com</owner>
  <summary>
    Logs which promo failed to display. This happens when a promo is requested
    for display, but isn't properly registered. This seldom happens in practice,
    but may happen during manual testing by disabling a promo right before the
    Promos Manager attempts to display it.
  </summary>
</histogram>

<histogram name="IOS.PromosManager.Promo.ForcedDisplayFailure"
    enum="IOSPromosManagerPromo" expires_after="2024-02-28">
  <owner>bwwilliams@google.com</owner>
  <owner>rkgibson@google.com</owner>
  <owner>huitingyu@google.com</owner>
  <summary>
    Logs which forced promo failed to display. This happens when a promo is
    forced for display (via Experimental Settings toggle,) but isn't properly
    registered (via chrome://flags). This seldom happens in practice, but may
    happen during manual testing.
  </summary>
</histogram>

<histogram name="IOS.PromosManager.Promo.ImpressionLimitEvaluation"
    enum="IOSPromosManagerPromoImpressionLimitEvaluationType"
    expires_after="2024-02-28">
  <owner>bwwilliams@google.com</owner>
  <owner>rkgibson@google.com</owner>
  <owner>huitingyu@google.com</owner>
  <summary>
    Promo impression limit evaluations made by the Promos Manager. This
    histograms logs the Promos Manager's assessment of each promos impression
    limits when presented with the opportunity to display a given promo.
  </summary>
</histogram>

<histogram name="IOS.PromosManager.Promo.Type" enum="IOSPromosManagerPromoType"
    expires_after="2024-02-28">
  <owner>bwwilliams@google.com</owner>
  <owner>rkgibson@google.com</owner>
  <owner>huitingyu@google.com</owner>
  <summary>
    Logs which type of promo is displayed when the Promos Manager decides to
    display a promo.
  </summary>
</histogram>

<histogram name="IOS.PushNotification.APNSDeviceRegistration"
    enum="BooleanSuccess" expires_after="2023-07-01">
  <owner>ajuma@google.com</owner>
  <owner>danieltwhite@google.com</owner>
  <summary>
    Logs whether the user's device was or was not able to successfully register
    with APNS and retrieve an APNS device token. An APNS device token is needed
    to successfully register the user's device with Chime. This histogram is
    logged during application startup and each time the user signs into an
    account.
  </summary>
</histogram>

<histogram name="IOS.PushNotification.ChimeDeviceRegistration"
    enum="BooleanSuccess" expires_after="2023-07-01">
  <owner>ajuma@google.com</owner>
  <owner>danieltwhite@google.com</owner>
  <summary>
    Logs whether the user's device was or was not able to successfully register
    with Chime. The device is registered with Chime on the application's
    start-up if the difference between the previous time the device was
    registered with Chime and the current application start-up is greater than
    the predefined time interval threshold (currently set at one day).
  </summary>
</histogram>

<histogram name="IOS.PushNotification.ChimePreferenceRegistration"
    enum="BooleanSuccess" expires_after="2024-04-21">
  <owner>ajuma@google.com</owner>
  <owner>danieltwhite@google.com</owner>
  <summary>
    Logs whether the user's push notification permissions for each push
    notification enable feature in Chrome were successfully applied to the Chime
    server during the device registration process.
  </summary>
</histogram>

<histogram name="IOS.PushNotification.EnabledPermisisons"
    enum="PushNotificationPermissionPromptStatus" expires_after="2023-12-12">
  <owner>ajuma@google.com</owner>
  <owner>danieltwhite@google.com</owner>
  <summary>
    Logs whether the user decided to allow/disallow push notification
    permissions for the current device or an error occured. This is logged each
    time the user responds to a push notification permission prompt.
  </summary>
</histogram>

<histogram name="IOS.PushNotification.IncomingNotificationProcessingTime"
    units="ms" expires_after="2023-07-01">
  <owner>ajuma@google.com</owner>
  <owner>danieltwhite@google.com</owner>
  <summary>
    Logs the amount of time it takes for Chrome to process an incoming
    notification. iOS allows applications to process notifications and fetch any
    additional data needed for up to 30 seconds. iOS tracks the amount of power
    Chrome uses, the time it takes for it to finish processing the incoming
    notification, and data costs for background downloads. According to the
    documentation, if iOS determines that Chrome uses significant amounts of
    power when processing remote notifications, iOS may not always wake up
    Chrome early to process future notifications. Thus, this histogram uses
    processing time as a proxy for iOS' three parameters.
  </summary>
</histogram>

<histogram name="IOS.ReadingList.ImageTooLargeFailure" units="KB"
    expires_after="2023-08-05">
  <owner>olivierrobin@chromium.org</owner>
  <owner>justincohen@chromium.org</owner>
  <summary>
    Distillation of the page failed because an image was too big (&gt;1MB).
    Recorded on distillation attempt.
  </summary>
</histogram>

<histogram name="IOS.ReadingList.PageTooLargeFailure" units="KB"
    expires_after="2023-06-07">
  <owner>olivierrobin@chromium.org</owner>
  <owner>justincohen@chromium.org</owner>
  <summary>
    Distillation of the page failed because the page was too big (&gt;10MB).
    Recorded on distillation attempt.
  </summary>
</histogram>

<histogram name="IOS.Reauth.Password.Autofill" enum="ReauthenticationEvent"
    expires_after="2022-05-01">
  <owner>sarraf@google.com</owner>
  <owner>djean@chromium.org</owner>
  <summary>
    Tracks the results and attempts of reauthentication when using password
    Autofill suggestions.
  </summary>
</histogram>

<histogram name="IOS.Reauth.Password.ManualFallback"
    enum="ReauthenticationEvent" expires_after="2022-07-03">
  <owner>sarraf@google.com</owner>
  <owner>djean@chromium.org</owner>
  <summary>
    Tracks the results and attempts of reauthentication when using a password in
    Manual Fallback.
  </summary>
</histogram>

<histogram name="IOS.ReconcileEULAPref" enum="Boolean"
    expires_after="2024-04-24">
  <owner>olivierrobin@google.com</owner>
  <owner>rohitrao@google.com</owner>
  <summary>
    Track the reconciliation of EULA pref and First run sentinel. Reported once
    on startup when it is detected that EULA pref is not set but First run
    sentinel is set. There is no base event (false) as this should be an
    exceptional case and should tend to 0 occurence.
  </summary>
</histogram>

<histogram name="IOS.RestoreNavigationItemCount" units="rank"
    expires_after="2023-09-12">
  <owner>gambard@chromium.org</owner>
  <owner>justincohen@chromium.org</owner>
  <summary>
    [iOS] The number of items Navigation Manager was requested to restore. 100
    is logged when the number of navigation items is greater than 100. This is
    just a requested count and actual number of restored items can be smaller.
    Restoration is triggered in the following cases (the list is not
    exhaustive): app cold start, remote tab was open, cookie were cleared,
    recently closed tab was restored.
  </summary>
</histogram>

<histogram name="IOS.RestoreNavigationTime" units="ms"
    expires_after="2023-09-12">
  <owner>gambard@chromium.org</owner>
  <owner>justincohen@chromium.org</owner>
  <summary>
    [iOS] Time spent on restoring committed Navigation Manager's items. Recorded
    once per restoration, as a cumulative time across all items. Restoration is
    triggered in the following cases (the list is not exhaustive): app cold
    start, remote tab was open, cookies were cleared, recently closed tab was
    restored. This metric will be used for monitoring session restoration
    performance which relies on system's WKWebView.
  </summary>
</histogram>

<histogram name="IOS.SadTab.FileIsPDF" enum="Boolean"
    expires_after="2024-03-20">
  <owner>ajuma@chromium.org</owner>
  <owner>gambard@chromium.org</owner>
  <summary>
    This histgram counts the frequency of sad tabs that occur while loading a
    PDF file. This is logged once per sad tab shown.
  </summary>
</histogram>

<histogram name="IOS.SadTab.URLIsChromeExternalFile" enum="Boolean"
    expires_after="2024-03-20">
  <owner>ajuma@chromium.org</owner>
  <owner>gambard@chromium.org</owner>
  <summary>
    This histgram counts the frequency of sad tabs that occur while loading a
    chrome://external-file URL. This is logged once per sad tab shown.
  </summary>
</histogram>

<histogram name="IOS.SafeBrowsing.RedirectedRequestResponseHostsMatch"
    enum="BooleanMatched" expires_after="2023-07-16">
  <owner>ajuma@chromium.org</owner>
  <owner>gambard@chromium.org</owner>
  <summary>
    The URL in a navigation request should have the same host as the URL in the
    corresponding response, but this sometimes doesn't hold after a server
    redirect because of a WKWebView bug. This histogram counts the frequency of
    this invariant violation, and is logged each time that a main-frame
    navigation response is received after a server redirect. True means that the
    request and response URLs have the same host.
  </summary>
</histogram>

<histogram name="IOS.SandboxMetrics.AvailableCapacity" units="MB"
    expires_after="2023-10-01">
  <owner>michaeldo@chromium.org</owner>
  <owner>rohitrao@chromium.org</owner>
  <summary>
    The total amount of available storage capacity on the device. Logged once
    per application cold launch, on startup.
  </summary>
</histogram>

<histogram name="IOS.SandboxMetrics.AvailableCapacityPercentage" units="%"
    expires_after="2023-10-01">
  <owner>michaeldo@chromium.org</owner>
  <owner>rohitrao@chromium.org</owner>
  <summary>
    The percentage of the device storage which is available. Logged once per
    application cold launch, on startup.
  </summary>
</histogram>

<histogram name="IOS.SandboxMetrics.CapacityForImportantUsage" units="MB"
    expires_after="2023-10-01">
  <owner>michaeldo@chromium.org</owner>
  <owner>rohitrao@chromium.org</owner>
  <summary>
    The amount of device storage which is available for important storage.
    Logged once per application cold launch, on startup.
  </summary>
</histogram>

<histogram name="IOS.SandboxMetrics.CapacityForImportantUsagePercentage"
    units="%" expires_after="2023-10-01">
  <owner>michaeldo@chromium.org</owner>
  <owner>rohitrao@chromium.org</owner>
  <summary>
    The percentage of the device storage which is available for important
    storage. Logged once per application cold launch, on startup.
  </summary>
</histogram>

<histogram name="IOS.SandboxMetrics.CapacityForOpportunisticUsage" units="MB"
    expires_after="2023-10-01">
  <owner>michaeldo@chromium.org</owner>
  <owner>rohitrao@chromium.org</owner>
  <summary>
    The amount of device storage which is available for opportunistic storage.
    Logged once per application cold launch, on startup.
  </summary>
</histogram>

<histogram name="IOS.SandboxMetrics.CapacityForOpportunisticUsagePercentage"
    units="%" expires_after="2023-10-01">
  <owner>michaeldo@chromium.org</owner>
  <owner>rohitrao@chromium.org</owner>
  <summary>
    The percentage of the device storage which is available for opportunistic
    storage. Logged once per application cold launch, on startup.
  </summary>
</histogram>

<histogram name="IOS.SandboxMetrics.DocumentsSize2" units="MB"
    expires_after="2023-10-01">
  <owner>michaeldo@chromium.org</owner>
  <owner>rohitrao@chromium.org</owner>
  <summary>
    The total amount of storage used by the application Documents directory.
    Chrome uses this directory to store files downloaded by the user. Logged at
    application startup, maximum once every 2 weeks, if the
    `kLogApplicationStorageSizeMetrics` flag is enabled.
  </summary>
</histogram>

<histogram name="IOS.SandboxMetrics.LibrarySize" units="MB"
    expires_after="2023-10-01">
  <owner>michaeldo@chromium.org</owner>
  <owner>rohitrao@chromium.org</owner>
  <summary>
    The total amount of storage used by the application Library directory.
    Chrome uses this directory to store application data and caches. Logged at
    application startup, maximum once every 2 weeks, if the
    `kLogApplicationStorageSizeMetrics` flag is enabled.
  </summary>
</histogram>

<histogram name="IOS.SandboxMetrics.OptimizationGuideModelDownloadedItems"
    units="items" expires_after="2023-10-01">
  <owner>michaeldo@chromium.org</owner>
  <owner>rohitrao@chromium.org</owner>
  <summary>
    The number of download directories used by the optimization guide model
    downloads. Logged at application startup, maximum once every 2 weeks, if the
    `kLogApplicationStorageSizeMetrics` flag is enabled.
  </summary>
</histogram>

<histogram name="IOS.SandboxMetrics.OptimizationGuideModelDownloadsSize"
    units="KB" expires_after="2023-10-01">
  <owner>michaeldo@chromium.org</owner>
  <owner>rohitrao@chromium.org</owner>
  <summary>
    The total amount of storage used by the optimization guide model downloads.
    Logged at application startup, maximum once every 2 weeks, if the
    `kLogApplicationStorageSizeMetrics` flag is enabled.
  </summary>
</histogram>

<histogram name="IOS.SandboxMetrics.TotalCapacity" enum="IOSStorageCapacity"
    expires_after="2023-10-01">
  <owner>michaeldo@chromium.org</owner>
  <owner>rohitrao@chromium.org</owner>
  <summary>
    The total amount of storage capacity on the device. Logged once per
    application cold launch, on startup.
  </summary>
</histogram>

<histogram name="IOS.SearchExtension.Action" enum="IOSSearchExtensionAction"
    expires_after="2023-09-24">
  <owner>olivierrobin@chromium.org</owner>
  <owner>rkgibson@chromium.org</owner>
  <summary>The action selected by the user in the Search Extension.</summary>
</histogram>

<histogram name="IOS.SearchExtension.DisplayCount" units="count"
    expires_after="2023-09-24">
  <owner>olivierrobin@chromium.org</owner>
  <owner>rkgibson@chromium.org</owner>
  <summary>
    The number of times the Search Extension was displayed since last Chrome
    foregrounding. Reported when Chrome is put in foreground. Note: events where
    the count is zero were removed in M91.
  </summary>
</histogram>

<histogram name="IOS.SearchWith.Trigger" enum="IOSSearchWithContext"
    expires_after="2024-04-21">
  <owner>olivierrobin@chromium.org</owner>
  <owner>djean@chromium.org</owner>
  <summary>The context in which Search With has been triggered.</summary>
</histogram>

<histogram name="IOS.SessionMigration" enum="IOSSessionMigration"
    expires_after="2021-12-11">
  <owner>mrefaat@chromium.org</owner>
  <owner>sdefresne@chromium.org</owner>
  <summary>
    Record whether the session (list of tabs, and their snapshots) was migrated
    from one place to another. This migration can happen when the user update
    Chrome, their device version of iOS or when they restore a backup. The event
    is recorded for all Browser creation, so most of the event should be
    &quot;No Migration&quot;.
  </summary>
</histogram>

<histogram name="IOS.ShareExtension.ReceivedEntriesCount" units="files"
    expires_after="2023-10-04">
  <owner>olivierrobin@chromium.org</owner>
  <owner>rkgibson@chromium.org</owner>
  <summary>
    The number of items received simultaneously in Chrome from the IOS share
    extension.
  </summary>
</histogram>

<histogram name="IOS.ShareExtension.ReceivedEntry"
    enum="IOSShareExtensionReceivedEntryType" expires_after="2023-10-04">
  <owner>olivierrobin@chromium.org</owner>
  <owner>rkgibson@chromium.org</owner>
  <summary>Type of the item received from the iOS share extension.</summary>
</histogram>

<histogram name="IOS.ShareExtension.ReceivedEntryDelay" units="ms"
    expires_after="2023-10-04">
  <owner>olivierrobin@chromium.org</owner>
  <owner>rkgibson@chromium.org</owner>
  <summary>
    The delay in milliseconds between the item creation in the extension and its
    processing in Chrome.
  </summary>
</histogram>

<histogram name="IOS.ShareExtension.Source"
    enum="IOSShareExtensionReceivedEntrySource" expires_after="2023-10-04">
  <owner>olivierrobin@chromium.org</owner>
  <owner>rkgibson@chromium.org</owner>
  <summary>
    The source application that sent the external command to Chrome.
  </summary>
</histogram>

<histogram name="IOS.SiriShortcuts.Count" units="shortcuts"
    expires_after="2023-06-25">
  <owner>gujen@google.com</owner>
  <owner>ios-google-eng-ios@google.com</owner>
  <summary>
    Counts the number of Chrome Siri Shortcuts that the user has created in the
    Siri Shortcuts app. This is recorded once during startup. The histogram caps
    at 20 shortcuts, which is an arbitrary but reasonable limit. Note that
    shortcuts that have multiple actions are not counted if at least one action
    isn't a Chrome-provided one. For example, a shortcut that opens URLs in
    Chrome and then opens URLs in another app won't be counted. As such, this
    metric undercounts the true number of Chrome shortcuts. This is a
    restriction of the native Shortcuts API. This histogram is actively being
    monitored by the iOS at Google team.
  </summary>
</histogram>

<histogram name="IOS.Snapshots.CacheSize" units="KB" expires_after="2023-11-14">
  <owner>ajuma@chromium.org</owner>
  <owner>edchin@chromium.org</owner>
  <summary>
    The overall size of snapshots cache. Recorded when new snapshot is cached.
  </summary>
</histogram>

<histogram name="IOS.Snapshots.ImageSize" units="KB" expires_after="2023-07-03">
  <owner>ajuma@chromium.org</owner>
  <owner>edchin@chromium.org</owner>
  <summary>
    The size of a single snapshot image. Recorded when new snapshot is taken and
    RecordSnapshotSize flag is enabled.
  </summary>
</histogram>

<histogram name="IOS.Snapshots.PDFSize" units="KB" expires_after="2023-11-10">
  <owner>ajuma@chromium.org</owner>
  <owner>edchin@chromium.org</owner>
  <summary>
    The size of a single snapshot PDF. Recorded when new snapshot is taken and
    RecordSnapshotSize flag is enabled.
  </summary>
</histogram>

<histogram name="IOS.Spotlight.Action" enum="IOSSpotlightAction"
    expires_after="2023-08-05">
  <owner>olivierrobin@chromium.org</owner>
  <owner>rohitrao@chromium.org</owner>
  <summary>The Spotlight Action pressed by the user.</summary>
</histogram>

<histogram name="IOS.Spotlight.Availability" enum="IOSSpotlightAvailability"
    expires_after="2023-10-08">
  <owner>rohitrao@chromium.org</owner>
  <owner>olivierrobin@chromium.org</owner>
  <summary>
    Tracks the availability of the Spotlight indexation on the device. It is
    logged once at each cold start. Note: Spotlight may be available on the
    device but disabled by the user.
  </summary>
</histogram>

<histogram name="IOS.Spotlight.BookmarksIndexingDuration" units="ms"
    expires_after="2023-08-05">
  <owner>olivierrobin@chromium.org</owner>
  <owner>rohitrao@chromium.org</owner>
  <summary>Time spent in Spotlight initial indexation of bookmarks.</summary>
</histogram>

<histogram name="IOS.Spotlight.BookmarksInitialIndexSize" units="units"
    expires_after="2023-08-05">
  <owner>olivierrobin@chromium.org</owner>
  <owner>rohitrao@chromium.org</owner>
  <summary>Number of bookmarks indexed during initial indexation.</summary>
</histogram>

<histogram name="IOS.Spotlight.Origin" enum="IOSSpotlightOrigin"
    expires_after="2023-10-08">
  <owner>olivierrobin@chromium.org</owner>
  <owner>rohitrao@chromium.org</owner>
  <summary>
    This event is recorded each time a Chrome Spotlight entry is selected by the
    user. The enumeration indicates the nature of the Spotlight entry.
  </summary>
</histogram>

<histogram name="IOS.StoreKit.ITunesURLsHandlingResult"
    enum="IOSITunesURLsStoreKitHandlingResult" expires_after="2021-06-23">
  <owner>mrefaat@chromium.org</owner>
  <owner>rohitrao@chromium.org</owner>
  <summary>
    The result of StoreKit handling for a specific iTunes URL. Not Handled will
    be logged when the LinksHandler didn't handle a specific URL on purpose (not
    supported), and Failure will be logged when a URL that should have been
    handled wasn't handled.
  </summary>
</histogram>

<histogram name="IOS.TabGrid.CloseTabs" units="Tabs" expires_after="2023-11-01">
  <owner>ewannpv@chromium.org</owner>
  <owner>gambard@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    The number of Tab Grid items closed with a bulk or a 'Close All' operation.
    A Tab can be recoreded twice if it is restored and closed again.
  </summary>
</histogram>

<histogram name="IOS.TabGrid.Selection.AddToBookmarks" units="Tabs"
    expires_after="2023-11-01">
  <owner>mrefaat@chromium.org</owner>
  <owner>michaeldo@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    The number of Tab Grid items bookmarked with a single add to bookmarks
    operation from the tab grid selection mode.
  </summary>
</histogram>

<histogram name="IOS.TabGrid.Selection.AddToReadingList" units="Tabs"
    expires_after="2023-11-01">
  <owner>mrefaat@chromium.org</owner>
  <owner>michaeldo@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    The number of Tab Grid items added to reading list with a single add to
    reading list operation from the tab grid selection mode.
  </summary>
</histogram>

<histogram name="IOS.TabGrid.Selection.CloseTabs" units="Tabs"
    expires_after="2023-11-01">
  <owner>mrefaat@chromium.org</owner>
  <owner>michaeldo@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    The number of Tab Grid items closed with a single Close Tab(s) operation
    from the tab grid selection mode.
  </summary>
</histogram>

<histogram name="IOS.TabGrid.Selection.ShareTabs" units="Tabs"
    expires_after="2023-11-01">
  <owner>mrefaat@chromium.org</owner>
  <owner>michaeldo@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    The number of Tab Grid items shared with a single share operation from the
    tab grid selection mode.
  </summary>
</histogram>

<histogram name="IOS.TabGrid.TabSelected.TimeSinceLastActivation" units="ms"
    expires_after="2023-08-31">
  <owner>gambard@chromium.org</owner>
  <owner>lpromero@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Recorded when a tab is selected from the TabGrid. Time spent since the last
    time this tab was made active.
  </summary>
</histogram>

<histogram name="IOS.TabStrip.DragInteraction" enum="Boolean"
    expires_after="2024-02-08">
  <owner>ewannpv@chromium.org</owner>
  <owner>gambard@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Tracks whether the user moved a tabStrip tab to a new index. Recorded when
    the user stops the drag interaction.
  </summary>
</histogram>

<histogram name="IOS.TabStrip.TapInteraction" enum="Boolean"
    expires_after="2024-02-08">
  <owner>ewannpv@chromium.org</owner>
  <owner>gambard@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Tracks whether the user tapped on a tabStrip tab that is not the active one.
    Recorded when the tabStrip tab is tapped.
  </summary>
</histogram>

<histogram name="IOS.TabSwitcher.DragDropTabs"
    enum="IOSTabSwitcherDragDropTabs" expires_after="2023-11-16">
  <owner>ewannpv@chromium.org</owner>
  <owner>gambard@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Records tab drag and drop interactions on the tab switcher. An interaction
    is recorded twice (one drag and one drop).
  </summary>
</histogram>

<histogram name="IOS.TabSwitcher.DragOrigin" enum="IOSTabSwitcherDragOrigin"
    expires_after="2024-01-22">
  <owner>ewannpv@chromium.org</owner>
  <owner>pakzhygitov@google.com</owner>
  <owner>bling-team@google.com</owner>
  <summary>Records the origin of dropped items in the tab switcher.</summary>
</histogram>

<histogram name="IOS.TabSwitcher.Idle.IncognitoTabGridPage" enum="Boolean"
    expires_after="2024-02-08">
  <owner>ewannpv@chromium.org</owner>
  <owner>gambard@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Tracks whether the user closed the incognito tab grid page without doing any
    meaningful action. Meaningful actions are creating, moving, deleting or
    switching tab. Recorded when the user closed the incognito tab grid page.
  </summary>
</histogram>

<histogram name="IOS.TabSwitcher.Idle.RecentTabs" enum="Boolean"
    expires_after="2024-02-08">
  <owner>ewannpv@chromium.org</owner>
  <owner>gambard@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Tracks whether the user closed the recent tabs page without doing any
    meaningful action. Meaningful action is opening a tab. Recorded when the
    user closed the recent tabs page or switched to a tab grid page.
  </summary>
</histogram>

<histogram name="IOS.TabSwitcher.Idle.RegularTabGridPage" enum="Boolean"
    expires_after="2024-02-08">
  <owner>ewannpv@chromium.org</owner>
  <owner>gambard@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Tracks whether the user closed the regular tab grid page without doing any
    meaningful action. Meaningful actions are creating, moving, deleting or
    switching tab. Recorded when the user closed the regular tab grid page.
  </summary>
</histogram>

<histogram name="IOS.TabSwitcher.PageChangeInteraction"
    enum="IOSTabSwitcherPageChangeInteraction" expires_after="2023-09-24">
  <owner>marq@chromium.org</owner>
  <owner>ewannpv@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    The UI interaction by which the user changed the visible page in the tab
    switcher. Note that drag interactions can be recorded multiple time for a
    single drag.
  </summary>
</histogram>

<histogram name="IOS.TabSwitcher.PinnedTabs.DragDropTabs"
    enum="IOSTabSwitcherDragDropTabs" expires_after="2023-11-16">
  <owner>ewannpv@chromium.org</owner>
  <owner>pakzhygitov@google.com</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Records tab drag and drop interactions in the pinned tab view. An
    interaction is recorded twice (one drag and one drop).
  </summary>
</histogram>

<histogram name="IOS.TabSwitcher.PinnedTabs.DragOrigin"
    enum="IOSTabSwitcherDragOrigin" expires_after="2024-01-22">
  <owner>ewannpv@chromium.org</owner>
  <owner>pakzhygitov@google.com</owner>
  <owner>bling-team@google.com</owner>
  <summary>Records the origin of dropped items in the pinned tab view.</summary>
</histogram>

<histogram name="IOS.TabSwitcher.TimeSpent" units="ms"
    expires_after="2023-05-14">
  <owner>mrefaat@chromium.org</owner>
  <owner>marq@chromium.org</owner>
  <summary>
    The time the Tab switcher is displayed to the user. This histogram will
    always be recorded once the user exit the tab switcher.
  </summary>
</histogram>

<histogram name="IOS.TabSwitcher.TimeSpentOpeningExistingTab" units="ms"
    expires_after="2024-05-14">
  <owner>alionadangla@chromium.org</owner>
  <owner>lpromero@chromium.org</owner>
  <owner>chromeleon@google.com</owner>
  <summary>
    The time it takes for a user to open an existing tab. If the user opens a
    new tab or closes the tab switcher, this is not recorded.
  </summary>
</histogram>

<histogram name="IOS.TabSwitcher.TimeSpentScrolling" units="ms"
    expires_after="2024-05-14">
  <owner>lpromero@chromium.org</owner>
  <owner>alionadangla@chromium.org</owner>
  <owner>chromeleon@google.com</owner>
  <summary>
    The time spent while the tab grid is scrolled by the user. This includes the
    deceleration time.
  </summary>
</histogram>

<histogram name="IOS.TextSelection.EntityDetection.DetectedEntityType"
    enum="TextSelectionDetectedEntityType" expires_after="2023-10-08">
  <owner>rajendrant@chromium.org</owner>
  <owner>sophiechang@chromium.org</owner>
  <summary>
    The entity type detected by running entity detection on user-selected text.
    This histogram is recorded every time entity detection is attempted on text
    that the user explicit selects, such as when displaying context menu actions
    on a long press.
  </summary>
</histogram>

<histogram
    name="IOS.TextSelection.EntityDetection.FullPageTFLiteModelEvaluationDuration"
    units="ms" expires_after="2023-03-19">
  <owner>rajendrant@chromium.org</owner>
  <owner>sophiechang@chromium.org</owner>
  <summary>
    Records the time taken for the TFLite text classifier model to extract
    entities given a full web page text (up to 64k characters).
  </summary>
</histogram>

<histogram
    name="IOS.TextSelection.EntityDetection.TFLiteModelEvaluationDuration"
    units="ms" expires_after="2023-10-08">
  <owner>rajendrant@chromium.org</owner>
  <owner>sophiechang@chromium.org</owner>
  <summary>
    Records the time taken for the TFLite text classifier model to extract
    entities given a text string. This metric does not record the duration for
    NSDataDetector entity extraction when the TFLite model is unavailable.
  </summary>
</histogram>

<histogram name="IOS.Thumbstrip.CancelBy" enum="ThumbstripOpenByIOS"
    expires_after="2023-05-14">
  <owner>djean@chromium.org</owner>
  <owner>rkgibson@chromium.org</owner>
  <summary>
    [iOS] Reports how a thumbstrip opening was cancelled. It uses the same enum
    as IOS.Thumbstrip.OpenBy.
  </summary>
</histogram>

<histogram name="IOS.Thumbstrip.CloseBy" enum="ThumbstripCloseByIOS"
    expires_after="2023-05-14">
  <owner>djean@chromium.org</owner>
  <owner>rkgibson@chromium.org</owner>
  <summary>[iOS] Reports how the thumbstrip was closed.</summary>
</histogram>

<histogram name="IOS.Thumbstrip.OpenBy" enum="ThumbstripOpenByIOS"
    expires_after="2023-05-14">
  <owner>djean@chromium.org</owner>
  <owner>rkgibson@chromium.org</owner>
  <summary>[iOS] Reports how the thumbstrip was opened.</summary>
</histogram>

<histogram name="IOS.Translate.PageLoad.LanguageDetectionComparison"
    enum="LanguageDetectionComparison" expires_after="2023-03-24">
  <owner>olivierrobin@chromium.org</owner>
  <owner>mcrouse@chromium.org</owner>
  <summary>
    When both CLD3 and TFLite language detection method are run, compare their
    results.
  </summary>
</histogram>

<histogram name="IOS.Translate.PageLoad.LanguageDetectionMethod"
    enum="LanguageDetectionMethod" expires_after="2023-03-24">
  <owner>olivierrobin@chromium.org</owner>
  <owner>sophiechang@chromium.org</owner>
  <summary>
    The method used to detect language in the web page during the
    CLD3-&gt;TFlite transition.
  </summary>
</histogram>

<histogram name="IOS.TrendingQueries" enum="TrendingQueryIndex"
    expires_after="2023-07-24">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Logs a user tapping on a trending query and the index position of that query
    in the module.
  </summary>
</histogram>

<histogram name="IOS.Variations.CreateTrials.SeedExpiry"
    enum="VariationsSeedExpiry" expires_after="2023-08-11">
  <owner>ginnyhuang@chromium.org</owner>
  <owner>bling-get-set-up@google.com</owner>
  <summary>
    Records the state of the variations seed stored from a previous launch of
    Chrome iOS, e.g. not expired. Recorded after the seed is loaded and before
    trials are created from the seed. Note that seeds for which this metric is
    recorded may not be applied, e.g. when the seed has expired.
  </summary>
</histogram>

<histogram name="IOS.Variations.FirstRun.SeedFetchResult"
    enum="VariationsSeedFetchResult" expires_after="2023-08-09">
  <owner>ginnyhuang@chromium.org</owner>
  <owner>bling-get-set-up@google.com</owner>
  <summary>
    The result of attempting to fetch an initial variations seed during iOS
    Chrome first run. Records both the HTTP code and various error values in one
    enumeration.
  </summary>
</histogram>

<histogram name="IOS.Variations.FirstRun.SeedFetchTime" units="ms"
    expires_after="2023-09-17">
  <owner>ginnyhuang@chromium.org</owner>
  <owner>bling-get-set-up@google.com</owner>
  <summary>
    The latency of fetching an initial variations seed during iOS Chrome first
    run. Only considers cases where an HTTP 200 result was received.
  </summary>
</histogram>

<histogram name="IOS.WarmStartBackgroundTime" units="msec"
    expires_after="2023-04-27">
  <obsolete>
    This metric is obsolete as of M105, because the max bucket did reach the
    desired hour-level granularity. IOS.BackgroundTimeBeforeWarmStart is the new
    metric.
  </obsolete>
  <owner>thegreenfrog@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    This event is recorded on every warm start app open. The value represents
    how long the app was away from the foreground.
  </summary>
</histogram>

<histogram name="IOS.Web.URLDidChangeToEmptyURL" enum="BooleanHit"
    expires_after="2023-09-03">
  <owner>gambard@chromium.org</owner>
  <owner>justincohen@chromium.org</owner>
  <summary>
    A boolean that is used to indicate that the URL property of the WKWebView
    has changed to a nil or empty URL. Recorded on the KVO of the URL of the
    WKWebView.
  </summary>
</histogram>

<histogram name="IOS.WhatsNew.TableViewDidScroll" enum="Boolean"
    expires_after="2023-09-24">
  <owner>cheickcisse@google.com</owner>
  <owner>sebsg@google.com</owner>
  <summary>
    Whether or not the table view of the What's New feature was scrolled.
  </summary>
</histogram>

<histogram name="IOS.WhatsNew.TimeSpent" units="ms" expires_after="2023-09-24">
  <owner>cheickcisse@google.com</owner>
  <owner>sebsg@google.com</owner>
  <summary>Logs the time a user spent on What's New.</summary>
</histogram>

<histogram name="IOS.WidgetKit.Action" enum="IOSWidgetKitAction"
    expires_after="2024-01-30">
  <owner>rkgibson@google.com</owner>
  <owner>muradyan@google.com</owner>
  <summary>
    Measures UI interactions in WidgetKit extension. Recorded after a user taps
    in a widget and Chrome is opened.
  </summary>
</histogram>

<histogram name="IOS.WidgetKit.{Status}" enum="IOSWidgetKitExtensionKind"
    expires_after="2024-01-30">
  <owner>rkgibson@google.com</owner>
  <owner>muradyan@chromium.org</owner>
  <summary>
    Indicates the {Status} of an iOS 14 widget. Logged when the app goes to
    foreground. &quot;Current&quot; widgets are logged everytime widgets are
    detected, &quot;Install&quot; and &quot;Uninstall&quot; are logged only when
    changes are detected. It is important to consider the bias created towards
    users that foreground the app more often when doing analysis. This can be
    accounted by filtering per unique users when looking at the metric.
  </summary>
  <token key="Status">
    <variant name="Current" summary="presence"/>
    <variant name="Install" summary="installation"/>
    <variant name="Uninstall" summary="removal"/>
  </token>
</histogram>

<histogram name="IOS.WindowIDInjection.ElapsedTime" units="ms"
    expires_after="2023-02-26">
  <obsolete>
    Removed in M111 because windowId injection was removed.
  </obsolete>
  <owner>michaeldo@chromium.org</owner>
  <owner>rohitrao@chromium.org</owner>
  <summary>
    Measures the time taken for windowID injection to complete. Logged once per
    pageload.
  </summary>
</histogram>

<histogram name="IOS.WKWebViewFinishBeforeCommit" enum="Boolean"
    expires_after="M77">
  <owner>gambard@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    WKWebView should notify navigation commit before navigation finish, but
    exceptions have been observed. This histogram counts the frequency of this
    invariant violation at the time when a new navigation is finished. True
    means navigation finish callback happened before navigation commit.
  </summary>
</histogram>

<histogram name="ManualFallback.PresentedOptions.AllPasswords"
    units="Credentials" expires_after="2023-09-24">
  <owner>tmartino@chromium.org</owner>
  <owner>djean@chromium.org</owner>
  <summary>
    [iOS Only] Tracks the number of credentials presented to the user in the
    &quot;Use other password...&quot; view in Manual Fallback. This is logged
    everytime the user opens this view.
  </summary>
</histogram>

<histogram name="ManualFallback.PresentedOptions.CreditCards" units="Cards"
    expires_after="2023-09-24">
  <owner>tmartino@chromium.org</owner>
  <owner>djean@chromium.org</owner>
  <summary>
    [iOS Only] Tracks the number of cards presented to the user in Manual
    Fallback. This is logged everytime the user opens this view.
  </summary>
</histogram>

<histogram name="ManualFallback.PresentedOptions.Passwords" units="Credentials"
    expires_after="2023-09-24">
  <owner>tmartino@chromium.org</owner>
  <owner>djean@chromium.org</owner>
  <summary>
    [iOS Only] Tracks the number of credentials presented to the user in the
    Passwords Manual Fallback view. This is logged everytime the user opens this
    view.
  </summary>
</histogram>

<histogram name="ManualFallback.PresentedOptions.Profiles" units="Profiles"
    expires_after="2023-10-15">
  <owner>tmartino@chromium.org</owner>
  <owner>djean@chromium.org</owner>
  <summary>
    [iOS Only] Tracks the number of profiles presented to the user in Manual
    Fallback. This is logged everytime the user opens this view.
  </summary>
</histogram>

<histogram name="ManualFallback.VisibleSuggestions.OpenCreditCards"
    units="Suggestions" expires_after="2023-09-24">
  <owner>tmartino@chromium.org</owner>
  <owner>djean@chromium.org</owner>
  <summary>
    [iOS Only] Tracks the number of autofill suggestions present when the user
    taps on the credit card button in manual fallback.
  </summary>
</histogram>

<histogram name="ManualFallback.VisibleSuggestions.OpenPasswords"
    units="Suggestions" expires_after="2023-09-24">
  <owner>tmartino@chromium.org</owner>
  <owner>djean@chromium.org</owner>
  <summary>
    [iOS Only] Tracks the number of password suggestions present when the user
    taps on the password button in manual fallback.
  </summary>
</histogram>

<histogram name="ManualFallback.VisibleSuggestions.OpenProfiles"
    units="Suggestions" expires_after="2023-05-01">
  <owner>tmartino@chromium.org</owner>
  <owner>djean@chromium.org</owner>
  <summary>
    [iOS Only] Tracks the number of autofill suggestions present when the user
    taps on the profiles (address) button in manual fallback.
  </summary>
</histogram>

<histogram name="UserInterfaceStyle.CurrentlyUsed" enum="IOSUserInterfaceStyle"
    expires_after="2021-12-11">
  <owner>rkgibson@google.com</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    [iOS Only] Used on iOS 13+ to report the usage of Light and Dark mode. This
    is logged at startup and on each user interface style change. Can be caused
    by the system automatic switch or by the user manually changing the style.
  </summary>
</histogram>

</histograms>

</histogram-configuration>
