<!--
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="ActivityReportDomain">
  <variant name="" summary="Recorded across all app states."/>
  <variant name=".Assistant"
      summary="Recorded while the Assistant UI is active. This histogram only
               receives data from users on iOS 27 and later."/>
  <variant name=".NTP"
      summary="Recorded while the New Tab Page is active. This histogram only
               receives data from users on iOS 27 and later."/>
  <variant name=".Settings"
      summary="Recorded while Settings UI is active. This histogram only
               receives data from users on iOS 27 and later."/>
  <variant name=".Signin"
      summary="Recorded while the sign-in screen is active. This histogram
               only receives data from users on iOS 27 and later."/>
  <variant name=".Tab"
      summary="Recorded while a browser tab is active. This histogram only
               receives data from users on iOS 27 and later."/>
  <variant name=".TabGrid"
      summary="Recorded while the tab grid UI is active. This histogram only
               receives data from users on iOS 27 and later."/>
</variants>

<variants name="AppVersion">
  <variant name=""
      summary="Recorded when the current app version number matches the last
               run version number."/>
  <variant name="IncludingMismatch."
      summary="The last session app version does not match the current app's
               version. This is very common on app updates, which would
               otherwise lead to losing multiple days of data. Instead,
               record them here."/>
</variants>

<!-- LINT.IfChange(ContextualPanelItemType) -->

<variants name="ContextualPanelItemType">
  <variant name="PriceInsightsItem" summary="Price insights item"/>
  <variant name="ReaderModeItem" summary="Reader mode item"/>
  <variant name="SamplePanelItem" summary="Sample panel item"/>
</variants>

<!-- LINT.ThenChange(//ios/chrome/browser/contextual_panel/model/contextual_panel_item_type.h:ContextualPanelItemType) -->

<variants name="IOSFrameType">
  <variant name="MainFrame" summary="Main frame of the webpage"/>
  <variant name="SubFrame" summary="Subframes (iframes) of the webpage"/>
</variants>

<variants name="IOSSaveToDriveQueryTypeVariant">
  <variant name="CreateFolder"
      summary="Recorded once when a query to create a Drive folder returns a
               result."/>
  <variant name="FetchClientFolder"
      summary="Recorded once when a query to fetch a Drive client folder
               returns a result."/>
  <variant name="FetchStorageQuota"
      summary="Recorded once when a query to fetch a user's Drive storage
               quota returns a result."/>
  <variant name="SearchFolder"
      summary="Recorded once when a query to search a Drive folder returns a
               result."/>
  <variant name="UploadFile"
      summary="Recorded once when a query to upload a file to Drive returns a
               result."/>
</variants>

<variants name="IOSSaveToDriveUIOutcomeVariant">
  <variant name="FailureCanceledDrive"
      summary="Recorded once when the user tapped 'Cancel' in the Save to
               Drive UI, while 'Drive' is selected as destination, either by
               default or manually."/>
  <variant name="FailureCanceledFiles"
      summary="Recorded once when the user tapped 'Cancel' in the Save to
               Drive UI, while 'Files' is selected as destination, either by
               default or manually."/>
  <variant name="SuccessSelectedDrive"
      summary="Recorded once when the Save to Drive UI exits successfully
               after the user tapped 'Save', after having selected 'Drive' as
               destination for their download."/>
  <variant name="SuccessSelectedDriveManageStorage"
      summary="Recorded once when the Save to Drive UI exits successfully
               after the user tapped 'Manage Storage' in the Manage Storage
               alert, after having selected 'Drive' as destination for their
               download."/>
  <variant name="SuccessSelectedFiles"
      summary="Recorded once when the Save to Drive UI exits successfully
               after the user tapped 'Save', after having selected 'Files' as
               destination for their download."/>
</variants>

<variants name="IOSSaveToDriveUploadTaskFinalStateVariant">
  <variant name="Cancelled"
      summary="Recorded once when a Drive upload task is destroyed, if the
               final state of the task is 'Cancelled'."/>
  <variant name="Complete"
      summary="Recorded once when a Drive upload task is destroyed, if the
               final state of the task is 'Complete'."/>
  <variant name="Failed"
      summary="Recorded once when a Drive upload task is destroyed, if the
               final state of the task is 'Failed'."/>
  <variant name="InProgress"
      summary="Recorded once when a Drive upload task is destroyed, if the
               final state of the task is 'In Progress'."/>
  <variant name="NotStarted"
      summary="Recorded once when a Drive upload task is destroyed, if the
               final state of the task is 'Not Started'."/>
</variants>

<!-- LINT.IfChange(IOSTurnOnCredentialProviderExtensionPromptSource) -->

<variants name="IOSTurnOnCredentialProviderExtensionPromptSource">
  <variant name="CredentialImport"
      summary="The prompt was presented after a successful credential import."/>
  <variant name="PasswordSettings"
      summary="The prompt was presented from Password Settings."/>
  <variant name="Promo"
      summary="The prompt was presented from the Credential Provider
               Extension promo."/>
</variants>

<!-- LINT.ThenChange(/ios/chrome/browser/shared/coordinator/utils/credential_provider_settings_utils.mm:TurnOnCredentialProviderExtensionPromptSourceToString) -->

<variants name="MXVersion">
  <variant name=""
      summary="Warning: This is only recorded when the current app version
               number matches the version number for all the data received in
               a MetricKit payload. Since MetricKit payloads are received
               once every 24 hours, this means that payloads received within
               24 hours of updating the app will get dropped. As a result,
               there will be a substantial decrease in histogram volume when
               a new app version is released, biasing the collected data
               towards users who are slow to update, and possibly creating
               spurious regressions or progressions. This histogram will have
               misleading trends around release dates. The version of this
               metric prefixed by IOS.MetricKit.IncludingMismatch does not
               drop data this way, so will not have these spurious changes."/>
  <variant name="IncludingMismatch."
      summary="Warning: This is recorded even when the current app version
               number doesn't match the version number for some or all of the
               data received in a MetricKit payload. This means that data
               reported for a particular Chrome version may actually be
               coming from an earlier version that the user was running
               within the previous 24 hours. Splitting this histogram by
               version number will yield misleading results, as some data
               attributed to be from a particular version will have been
               actually recorded for a different version number. The version
               of this metric that does not contain IncludingMismatch in its
               name drops data from older versions, so is safe to split by
               version number."/>
</variants>

<variants name="PageContextConfigVariants">
  <variant name="InnerTextOnly" summary="innerText extraction"/>
  <variant name="Rich" summary="Rich sparse DOM extraction"/>
  <variant name="RichAndActionable"
      summary="Rich sparse DOM extraction including actionable elements"/>
</variants>

<!-- LINT.IfChange(PageContextStatusVariants) -->

<variants name="PageContextStatusVariants">
  <variant name="Failure"/>
  <variant name="NotExtractable"/>
  <variant name="PageProtected"/>
  <variant name="PageUnsafe"/>
  <variant name="Success"/>
  <variant name="Timeout"/>
</variants>

<!-- LINT.ThenChange(/ios/chrome/browser/intelligence/proto_wrappers/page_context_wrapper_metrics.h:PageContextStatusVariants) -->

<!-- LINT.IfChange(PageContextTaskVariants) -->

<variants name="PageContextTaskVariants">
  <variant name="AnnotatedPageContent"
      summary="Deprecated as of M148. Moved to
               IOS.PageContext.AnnotatedPageContent.{Status}.{Config}.Latency."/>
  <variant name="InnerText"/>
  <variant name="Overall"/>
  <variant name="PDF"/>
  <variant name="Screenshot"/>
</variants>

<!-- LINT.ThenChange(/ios/chrome/browser/intelligence/proto_wrappers/page_context_wrapper_metrics.h:PageContextTaskVariants) -->

<!-- LINT.IfChange(PictureInPictureFeature) -->

<variants name="PictureInPictureFeature">
  <variant name="DefaultBrowser" summary="Default Browser Instructions"/>
</variants>

<!-- LINT.ThenChange(/ios/chrome/browser/picture_in_picture/public/picture_in_picture_constants.h:PictureInPictureFeature) -->

<!-- LINT.IfChange(PromosManagerPromo) -->

<variants name="PromosManagerPromo">
  <variant name="AllTabsDefaultBrowser"
      summary="&quot;All Tabs&quot; default browser promo."/>
  <variant name="AppStoreRating" summary="App Store Rating Prompt"/>
  <variant name="BWGPromo" summary="BWG promo."/>
  <variant name="CredentialProviderExtension"
      summary="Credential Provider Extension"/>
  <variant name="DefaultBrowser" summary="Fullscreen Default Browser Promo"/>
  <variant name="DefaultBrowserOffCycle"
      summary="Off-cycle fullscreen default browser promo."/>
  <variant name="DefaultBrowserRemindMeLater"
      summary="Remind me later for default browser."/>
  <variant name="DockingPromo" summary="Docking Promo."/>
  <variant name="FullscreenSignin" summary="Fullscreen sign-in promo."/>
  <variant name="MadeForIOSDefaultBrowser"
      summary="&quot;Made For iOS&quot; default browser promo."/>
  <variant name="PostDefaultAbandonment"
      summary="Post-default browser abandonment alert."/>
  <variant name="PostRestoreDefaultBrowserAlert"
      summary="Post Restore Default Browser (native iOS alert)"/>
  <variant name="PostRestoreSignInAlert"
      summary="Post Restore Sign-In (native iOS alert)"/>
  <variant name="PostRestoreSignInFullscreen"
      summary="Post Restore Sign-In (fullscreen, FRE-like promo)"/>
  <variant name="SafariImportRemindMeLater"
      summary="Reminder for the Safari import entry point."/>
  <variant name="StaySafeDefaultBrowser"
      summary="&quot;Stay Safe&quot; default browser promo."/>
  <variant name="Test"
      summary="Test promo used for testing purposes (e.g. unit tests)"/>
  <variant name="WelcomeBack" summary="Welcome Back promo."/>
  <variant name="WhatsNew" summary="What's New Promo"/>
</variants>

<!-- LINT.ThenChange(/ios/chrome/browser/promos_manager/model/constants.h:Promo) -->

<histogram name="IOS.Actor.PageStability.Outcome"
    enum="IOSPageStabilityOutcome" expires_after="2027-02-25">
  <owner>kaklilu@google.com</owner>
  <owner>bling-ai-foundations@google.com</owner>
  <summary>
    Records the final outcome of an iOS page stability monitoring check.

    Page stability indicates that the web page is 'stable' (i.e. DOM mutations
    have ceased or settled within configured thresholds) so that the Actor can
    safely interact with, or extract content from, the page without race
    conditions or layout shifts.

    This metric is recorded once per page stability check when monitoring
    terminates.
  </summary>
</histogram>

<histogram name="IOS.Actor.PageStability.TimeFromMonitoringToStable" units="ms"
    expires_after="2027-02-25">
  <owner>kaklilu@google.com</owner>
  <owner>bling-ai-foundations@google.com</owner>
  <summary>
    The duration from when active page stability monitoring starts until page
    stability is reached. Excludes any initial observation delay. This metric is
    not recorded if monitoring times out or aborts (e.g., due to frame
    destruction).
  </summary>
</histogram>

<histogram name="IOS.Actor.PageStability.TotalTimeTo{Outcome}" units="ms"
    expires_after="2027-02-25">
  <owner>kaklilu@google.com</owner>
  <owner>bling-ai-foundations@google.com</owner>
  <summary>
    The duration from when stability monitoring is requested until {Outcome}.
  </summary>
  <token key="Outcome">
    <variant name="Stable"
        summary="page stability is reached. Not recorded for timeouts or
                 aborted checks"/>
    <variant name="WebFrameGoingAway"
        summary="the check is aborted because the monitored web frame was
                 destroyed"/>
  </token>
</histogram>

<histogram name="IOS.AIHub.Action" enum="IOSAIHubAction"
    expires_after="2027-02-07">
  <owner>sebsg@chromium.org</owner>
  <owner>bling-alchemy@google.com</owner>
  <summary>
    Records the user's selection of an item in the AI Hub. Recorded each time an
    item is selected.
  </summary>
</histogram>

<histogram name="IOS.Allocator.ShimInstalled" enum="Boolean"
    expires_after="2027-02-10">
  <owner>justincohen@chromium.org</owner>
  <owner>bling-fundamentals@google.com</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="2025-11-16">
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    The percentage of annotations the are decorated against the number of
    annotations found.
  </summary>
</histogram>

<histogram name="IOS.Annotations.UserTap.Cancelled" enum="Boolean"
    expires_after="2026-01-01">
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-squid-squad@chromium.org</owner>
  <summary>
    Whether or not a user tap on an annotation got cancelled because some other
    script in the web page triggered some mutations on the same tap. Warning:
    Data gap between 2024-08 - 2025-02.
  </summary>
</histogram>

<histogram name="IOS.Annotations.{Action}.Type" enum="IOSAnnotationType"
    expires_after="2027-01-31">
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>The type of an annotation that is {Action}.</summary>
  <token key="Action">
    <variant name="Detected" summary="detected"/>
    <variant name="LongPress" summary="long pressed"/>
    <variant name="OneTapped" summary="tapped"/>
  </token>
</histogram>

<histogram name="IOS.AppBar.AssistantButtonStateOnLoad"
    enum="IOSAppBarAssistantButtonState" expires_after="2026-12-31">
  <owner>gambard@chromium.org</owner>
  <owner>bling-meridian@google.com</owner>
  <summary>
    The settled state of the assistant button in the App Bar after startup
    checks have completed. Recorded once per App Bar initialization.
  </summary>
</histogram>

<histogram name="IOS.AppBar.AssistantButtonTapped"
    enum="IOSAppBarAssistantButtonState" expires_after="2026-12-31">
  <owner>gambard@chromium.org</owner>
  <owner>bling-meridian@google.com</owner>
  <summary>
    The state of the assistant button in the App Bar when the user taps it.
    Recorded when the user taps the assistant button.
  </summary>
</histogram>

<histogram name="IOS.AppLauncher.AppURLHasChromeLaunchScheme" enum="Boolean"
    expires_after="2026-12-08">
  <owner>michaeldo@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.AppModeFetching.Duration" units="ms"
    expires_after="2026-10-25">
  <owner>erahmaoui@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <summary>
    The time it takes to fetch an application mode. The largest value should be
    500ms, as anything more than that is considered as a fetching timeout.
  </summary>
</histogram>

<histogram name="IOS.AppModeFetching.Outcome"
    enum="IOSAppModeFetchingOutcomeType" expires_after="2026-12-27">
  <owner>erahmaoui@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <summary>
    This event is recorded each time an application mode fetching is completed.
    The enumeration indicates the nature of the application mode fetching
    outcome.
  </summary>
</histogram>

<histogram name="IOS.AppPreviewAttributionPlacementID.LongAttributionWindow"
    units="Placement ID" expires_after="2026-10-22">
  <owner>olivierrobin@google.com</owner>
  <owner>erahmaoui@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    The placement ID associated with a App preview-attributed install. This is
    recorded on the first launch of the calendar month following the install, at
    startup, if the install happened within the long attribution window (15
    days) of the promo acceptance time.
  </summary>
</histogram>

<histogram name="IOS.AppPreviewAttributionPlacementID.ShortAttributionWindow"
    units="Placement ID" expires_after="2026-10-22">
  <owner>olivierrobin@google.com</owner>
  <owner>erahmaoui@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    The placement ID associated with a App preview-attributed install. This is
    recorded on the first launch of the calendar month following the install, at
    startup, if the install happened within the short attribution window (24
    hours) of the promo acceptance time.
  </summary>
</histogram>

<histogram name="IOS.AppPreviewInstallAttribution"
    enum="IOSInstallAttributionType" expires_after="2026-10-22">
  <owner>olivierrobin@google.com</owner>
  <owner>erahmaoui@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    For installs that can be attributed to the acceptance of a recent external
    promo in App Preview, records whether the acceptance was within the lat 24
    hours or the last 15 days. Recorded once at app startup, once per promo
    acceptance.
  </summary>
</histogram>

<histogram name="IOS.AppStoreRating.UserIsEligible" enum="Boolean"
    expires_after="2024-07-14">
  <owner>hiramahmood@google.com</owner>
  <owner>bling-pandamonium@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.AppSwitcher.FetchDuration" units="ms"
    expires_after="2027-04-01">
  <owner>joemerramos@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    The latency of the App Switcher provider API fetch request, from initiation
    to callback execution. Recorded when receiving the intent for allowed source
    apps.
  </summary>
</histogram>

<histogram name="IOS.AppSwitcher.FetchOutcome" enum="BooleanSuccess"
    expires_after="2027-04-01">
  <owner>joemerramos@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    The success or failure outcome of fetching parameters from the App Switcher
    provider API. Recorded when receiving the intent for allowed source apps.
    True represents a successful parameters fetch (no error), while False
    represents a failed or timed out fetch request.
  </summary>
</histogram>

<histogram name="IOS.AutoDeletion.ServiceActions"
    enum="AutoDeletionServiceActionsType" expires_after="2027-02-14">
  <owner>danieltwhite@google.com</owner>
  <owner>bling-fundamentals@google.com</owner>
  <summary>
    This event is recorded each time the AutoDeletionService successfully
    completes an action. The enumeration indicates which action was successfully
    completed.
  </summary>
</histogram>

<histogram name="IOS.AutoDeletion.ServiceFileRemovalFailure"
    enum="AutoDeletionServiceFileRemovalFailureType" expires_after="2026-11-15">
  <owner>danieltwhite@google.com</owner>
  <owner>bling-fundamentals@google.com</owner>
  <summary>
    This event is recorded each time the AutoDeletionService fails to remove a
    file from the device. The enumeration indicates which reason was the cause
    of the removal failure.
  </summary>
</histogram>

<histogram name="IOS.BackgroundRefresh.BGTaskSchedulerError"
    enum="BGTaskSchedulerErrorType" expires_after="2026-12-20">
  <owner>fedegermi@google.com</owner>
  <owner>marq@chromium.org</owner>
  <summary>
    Logged when a background refresh is triggered. Logs BGTaskScheduler type of
    error or success if the task request was successful.
  </summary>
</histogram>

<histogram name="IOS.BackgroundRefresh.ExecutionDuration" units="ms"
    expires_after="2027-01-03">
  <owner>fedegermi@google.com</owner>
  <owner>marq@chromium.org</owner>
  <summary>
    Logged when a background refresh task completes successfully and at least
    one refresh provider was executed. Logs the duration of the execution,
    starting when Chrome starts executing refresh providers.
  </summary>
</histogram>

<histogram name="IOS.BackgroundRefresh.ExecutionDuration.NoOp" units="ms"
    expires_after="2027-01-03">
  <owner>fedegermi@google.com</owner>
  <owner>marq@chromium.org</owner>
  <summary>
    Logged when a background refresh task completes successfully but no task
    execution occurred because no refresh providers were due. Logs the duration
    of the execution, starting when Chrome starts executing refresh providers
    (which is expected to be very small).
  </summary>
</histogram>

<histogram name="IOS.BackgroundRefresh.ExecutionDuration.Timeout" units="ms"
    expires_after="2026-12-20">
  <owner>fedegermi@google.com</owner>
  <owner>marq@chromium.org</owner>
  <summary>
    Logged when a background refresh task expires (times out). Logs the duration
    of the execution, starting when Chrome starts executing refresh providers,
    up to the timeout.
  </summary>
</histogram>

<histogram name="IOS.BackgroundRefresh.InitStage"
    enum="InitStageDuringBackgroundRefreshType" expires_after="2026-12-20">
  <owner>fedegermi@google.com</owner>
  <owner>marq@chromium.org</owner>
  <summary>
    Logged when a background refresh is triggered. Logs the initState of the
    AppState during background refresh.
  </summary>
</histogram>

<histogram name="IOS.BackgroundRefresh.LaunchType"
    enum="LaunchTypeForBackgroundRefreshType" expires_after="2027-01-03">
  <owner>fedegermi@google.com</owner>
  <owner>marq@chromium.org</owner>
  <summary>
    Logged when a background refresh is triggered. Logs the launch type (warm
    start, cold start) or if the browser objects were not ready.
  </summary>
</histogram>

<histogram name="IOS.BackgroundRefresh.Provider.Duration.{ProviderID}"
    units="ms" expires_after="2027-02-07">
  <owner>fedegermi@google.com</owner>
  <owner>marq@chromium.org</owner>
  <summary>
    Logged when a background refresh provider task completes. Logs the duration
    of the provider's execution.
  </summary>
  <token key="ProviderID">
    <variant name="Discover"/>
    <variant name="TestRefresher"/>
  </token>
</histogram>

<histogram name="IOS.BackgroundRefresh.StartupWait.Completed" units="ms"
    expires_after="2026-12-20">
  <owner>fedegermi@google.com</owner>
  <owner>marq@chromium.org</owner>
  <summary>
    Logged when a background refresh task completes successfully (either after
    running providers or as a no-op). Logs the duration that the task waited for
    the app to reach the required init stage, if any.
  </summary>
</histogram>

<histogram name="IOS.BackgroundRefresh.StartupWait.NeverExecuted" units="ms"
    expires_after="2027-02-04">
  <owner>fedegermi@google.com</owner>
  <owner>marq@chromium.org</owner>
  <summary>
    Logged when a background refresh task expires (times out) without being able
    to start any refresh providers. Logs the duration that the task waited for
    the app to reach the required init stage, if any.
  </summary>
</histogram>

<histogram name="IOS.BackgroundRefresh.StartupWait.Timeout" units="ms"
    expires_after="2027-02-04">
  <owner>fedegermi@google.com</owner>
  <owner>marq@chromium.org</owner>
  <summary>
    Logged when a background refresh task expires (times out). Logs the duration
    that the task waited for the app to reach the required init stage, if any.
  </summary>
</histogram>

<histogram name="IOS.BackgroundRefresh.TaskDuration" units="ms"
    expires_after="2027-01-03">
  <owner>fedegermi@google.com</owner>
  <owner>marq@chromium.org</owner>
  <summary>
    Logged when a background refresh task completes successfully. Logs the
    overall duration of the task, from when the OS executed the callback to when
    the task completed.
  </summary>
</histogram>

<histogram name="IOS.BackgroundRefresh.TaskDuration.Timeout" units="ms"
    expires_after="2027-01-03">
  <owner>fedegermi@google.com</owner>
  <owner>marq@chromium.org</owner>
  <summary>
    Logged when the background refresh task expires (times out). Logs the
    overall duration of the task, from when the OS executed the callback up to
    the timeout.
  </summary>
</histogram>

<histogram name="IOS.BackgroundRefresh.Timeout.ActiveProviderCount"
    units="count" expires_after="2027-01-24">
  <owner>fedegermi@google.com</owner>
  <owner>marq@chromium.org</owner>
  <summary>
    Logged when a background refresh task expires (times out). Logs the number
    of active providers at the time of timeout.
  </summary>
</histogram>

<histogram name="IOS.BackgroundRefresh.Timeout.TotalProviderCount"
    units="count" expires_after="2027-02-04">
  <owner>fedegermi@google.com</owner>
  <owner>marq@chromium.org</owner>
  <summary>
    Logged when a background refresh task expires (times out). Logs the total
    number of providers scheduled to run in the task that timed out.
  </summary>
</histogram>

<histogram name="IOS.BackgroundTimeBeforeColdStart" units="minutes"
    expires_after="2027-01-03">
  <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="2027-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.Bookmarks.BulkAddURLsCount" units="count"
    expires_after="2027-03-30">
  <owner>nicolasmacbeth@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    The number of URLs a user has successfully added to Chrome via bulk adding
    (Siri shortcut). This count is taken after checking for possible duplicates.
  </summary>
</histogram>

<histogram name="IOS.Bookmarks.BulkSaveBookmarksInAccountCount"
    units="bookmarks" expires_after="2027-09-22">
  <owner>ankushkush@google.com</owner>
  <owner>src/components/sync/OWNERS</owner>
  <summary>
    The number of local bookmarks the user has moved to their account using the
    batch upload dialog in the bookmarks manager. This is logged when the user
    chooses to batch upload their bookmarks to their account.
  </summary>
</histogram>

<histogram name="IOS.Bookmarks.BulkSaveBookmarksInAccountViewRecreated"
    enum="BooleanHit" expires_after="2027-09-22">
  <owner>ankushkush@google.com</owner>
  <owner>src/components/sync/OWNERS</owner>
  <summary>
    Recorded whenever the batch upload flow/dialog is shown to the user in the
    bookmarks manager.

    Note that this metric can be logged multiple times in one flow, whenever the
    views are recreated.
  </summary>
</histogram>

<histogram name="IOS.BringAndroidTabs.ActionOnPrompt"
    enum="IOSBringAndroidTabsPromptActionType" expires_after="2026-08-20">
  <owner>hiramahmood@google.com</owner>
  <owner>ginnyhuang@chromium.org</owner>
  <owner>bling-pandamonium@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-08-25">
  <owner>hiramahmood@google.com</owner>
  <owner>ginnyhuang@chromium.org</owner>
  <owner>bling-pandamonium@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-08-25">
  <owner>hiramahmood@google.com</owner>
  <owner>ginnyhuang@chromium.org</owner>
  <owner>bling-pandamonium@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="2025-01-05">
  <owner>hiramahmood@google.com</owner>
  <owner>ginnyhuang@chromium.org</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    The result of prompting the set of tabs for an Android switcher. Recorded
    after the set of tabs are prompted. Starting M116, this metric would be
    logged for Android switchers only.
  </summary>
</histogram>

<histogram name="IOS.BringAndroidTabs.TabCount" units="count"
    expires_after="2025-04-20">
  <owner>hiramahmood@google.com</owner>
  <owner>ginnyhuang@chromium.org</owner>
  <owner>bling-pandamonium@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-09-07">
  <owner>michaeldo@chromium.org</owner>
  <owner>bling-fundamentals@google.com</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.CertificateVerification.TrustEvaluationMatch"
    enum="Boolean" expires_after="2027-03-09">
  <owner>fedegermi@google.com</owner>
  <owner>bling-fundamentals@google.com</owner>
  <summary>
    Recorded each time we verify results from SecTrustEvaluateWithError and
    SecTrustGetTrustResult. True indicates a match between the two results,
    which should theoretically be consistent. This tracks a known iOS 26.4
    issue.
  </summary>
</histogram>

<histogram name="IOS.CommittedNavigationHasContext" enum="Boolean"
    expires_after="2026-09-07">
  <owner>gambard@chromium.org</owner>
  <owner>bling-fundamentals@google.com</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="2026-09-07">
  <owner>gambard@chromium.org</owner>
  <owner>bling-fundamentals@google.com</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.ConfirmationAlertSheet.Outcome"
    enum="ConfirmationAlertSheetAction" expires_after="2026-12-01">
  <owner>pabouchard@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the outcome of user interactions with the confirmation alert sheet.
    This includes clicks on the primary, secondary, or tertiary action buttons,
    as well as dismissing the alert.
  </summary>
</histogram>

<histogram name="IOS.ContextMenu.ImagePreviewDisplayed" enum="BooleanSuccess"
    expires_after="2027-01-24">
  <owner>olivierrobin@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>Whether the loading of the image preview succeeded.</summary>
</histogram>

<histogram name="IOS.ContextMenu.PreviewImageMemoryFootprint" units="KB"
    expires_after="2027-01-24">
  <owner>olivierrobin@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Records the memory footprint of ContextMenu’s preview image (in KB) after
    any image optimizations (like downsampling) have been applied.
  </summary>
</histogram>

<histogram name="IOS.ContextMenu.UpdateConfigurationResult" enum="Boolean"
    expires_after="2027-02-08">
  <owner>justincohen@google.com</owner>
  <owner>bling-fundamentals@google.com</owner>
  <summary>
    Records the outcome of a context menu update triggered by a long-press
    gesture. Reported after the DOM element at the gesture point is retrieved.
  </summary>
</histogram>

<histogram name="IOS.ContextualPanel.DismissedReason"
    enum="IOSContextualPanelDismissedReason" expires_after="2027-01-31">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    The reason the Contextual Panel was dismissed. Fired every time the panel
    closes.
  </summary>
</histogram>

<histogram name="IOS.ContextualPanel.Entrypoint.{EntrypointType}"
    enum="IOSContextualPanelEntrypointInteractionType"
    expires_after="2027-01-31">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    The result of displaying a Contextual Panel entrypoint with the given type
    of entrypoint. Fired the first time the corresponding action was taken for a
    page load. Note that this means it could be fired multiple times with
    different actions on the same page. Also, the Regular variants are always
    fired as all entrypoints start out as Regular. Then either Large or IPH will
    be fired if the entrypoint was Large or showed an IPH.
  </summary>
  <token key="EntrypointType">
    <variant name="IPH" summary="IPH entrypoint type"/>
    <variant name="Large" summary="Large entrypoint type"/>
    <variant name="Regular" summary="Regular entrypoint type"/>
  </token>
</histogram>

<histogram
    name="IOS.ContextualPanel.Entrypoint.{EntrypointType}.UptimeBeforeTap"
    units="ms" expires_after="2027-01-31">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    The time a Contextual Panel entrypoint for the given entrypoint type was
    displayed before it was first tapped. Fired the first time a given page's
    entrypoint was tapped. The Regular variants are always fired as all
    entrypoints start out as Regular. Then either Large or IPH will be fired if
    the entrypoint was Large or showed an IPH.
  </summary>
  <token key="EntrypointType">
    <variant name="IPH" summary="IPH entrypoint type"/>
    <variant name="Large" summary="Large entrypoint type"/>
    <variant name="Regular" summary="Regular entrypoint type"/>
  </token>
</histogram>

<histogram
    name="IOS.ContextualPanel.Entrypoint.{EntrypointType}.{ContextualPanelItemType}"
    enum="IOSContextualPanelEntrypointInteractionType"
    expires_after="2027-01-31">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    The result of displaying a Contextual Panel entrypoint for the given
    infoblock type and entrypoint type. Fired the first time the corresponding
    action was taken for a page load. Note that this means it could be fired
    multiple times with different actions on the same page. Also, the Regular
    variants are always fired as all entrypoints start out as Regular. Then
    either Large or IPH will be fired if the entrypoint becomes Large or shows
    an IPH.
  </summary>
  <token key="EntrypointType">
    <variant name="IPH" summary="IPH entrypoint type"/>
    <variant name="Large" summary="Large entrypoint type"/>
    <variant name="Regular" summary="Regular entrypoint type"/>
  </token>
  <token key="ContextualPanelItemType" variants="ContextualPanelItemType"/>
</histogram>

<histogram
    name="IOS.ContextualPanel.Entrypoint.{EntrypointType}.{ContextualPanelItemType}.UptimeBeforeTap"
    units="ms" expires_after="2027-01-31">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    The time a Contextual Panel entrypoint for the given infoblock type and
    entrypoint type was displayed before it was first tapped. Fired the first
    time a given page's entrypoint was tapped. The Regular variants are always
    fired as all entrypoints start out as Regular. Then either Large or IPH will
    be fired if the entrypoint becomes Large or shows an IPH.
  </summary>
  <token key="EntrypointType">
    <variant name="IPH" summary="IPH entrypoint type"/>
    <variant name="Large" summary="Large entrypoint type"/>
    <variant name="Regular" summary="Regular entrypoint type"/>
  </token>
  <token key="ContextualPanelItemType" variants="ContextualPanelItemType"/>
</histogram>

<histogram name="IOS.ContextualPanel.EntrypointDisplayed"
    enum="IOSContextualPanelItemType" expires_after="2027-01-31">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the info block type the first time entrypoint is displayed for each
    navigation.
  </summary>
</histogram>

<histogram name="IOS.ContextualPanel.EntrypointTapped"
    enum="IOSContextualPanelItemType" expires_after="2027-01-31">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the info block type the first time entrypoint is opened via tap for
    each navigation.
  </summary>
</histogram>

<histogram
    name="IOS.ContextualPanel.InfoBlockImpression.{ContextualPanelItemType}"
    enum="IOSContextualPanelInfoBlockImpression" expires_after="2027-01-31">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the type of impression for the given infoblock. This includes when
    the panel UI closes due to tab switching, even if the panel will re-open
    when returning to that tab. Fired every time the panel closes for each block
    in that panel.
  </summary>
  <token key="ContextualPanelItemType" variants="ContextualPanelItemType"/>
</histogram>

<histogram name="IOS.ContextualPanel.InfoBlockUptime.{ContextualPanelItemType}"
    units="ms" expires_after="2027-01-31">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    How long each individual info block was visible for. when returning to that
    tab. Fired every time the panel closes for each block in that panel.
  </summary>
  <token key="ContextualPanelItemType" variants="ContextualPanelItemType"/>
</histogram>

<histogram name="IOS.ContextualPanel.IPH.DismissedReason"
    enum="IOSContextualPanelIPHDismissedReason" expires_after="2027-01-31">
  <owner>nicolasmacbeth@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    The reason the Contextual Panel's entrypoint in-product help (IPH) was
    dismissed.
  </summary>
</histogram>

<histogram name="IOS.ContextualPanel.Model.InfoBlocksWithContentCount"
    units="count" expires_after="2027-01-31">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    The number of Contextual Panel models with content for each navigation.
  </summary>
</histogram>

<histogram name="IOS.ContextualPanel.Model.Relevance.{ContextualPanelItemType}"
    enum="IOSContextualPanelModelRelevance" expires_after="2027-01-31">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    The relevance level for the Contextual Panel data for the given model. Fired
    every navigation.
  </summary>
  <token key="ContextualPanelItemType" variants="ContextualPanelItemType"/>
</histogram>

<histogram name="IOS.ContextualPanel.VisibleTime" units="ms"
    expires_after="2027-01-31">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    How long the Contextual Panel was visible for. Fired each time the panel UI
    closes. This includes when the panel UI closes due to tab switching, even if
    the panel will re-open when returning to that tab.
  </summary>
</histogram>

<histogram
    name="IOS.ContextualPanel.{ContextualPanelItemType}.ModelResponseTime"
    units="ms" expires_after="2027-01-31">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    The response time for the given Info Block's model request. Fired every time
    the request completes (with or without data). If the Contextual Panel
    cancels the request, no metric is fired.
  </summary>
  <token key="ContextualPanelItemType" variants="ContextualPanelItemType"/>
</histogram>

<histogram name="IOS.CookieCopyWorkaroundMissingCookies" units="count"
    expires_after="2026-07-01">
  <owner>justincohen@chromium.org</owner>
  <owner>bling-fundamentals@google.com</owner>
  <summary>
    Used by the SkipCookieCaching experiment in the enabled-with-copy-workaround
    mode. Records the count of cookies that failed a round-trip conversion from
    NSHTTPCookie to net::CanonicalCookie and back again.
  </summary>
</histogram>

<histogram name="IOS.CookieCopyWorkaroundTime" units="ms"
    expires_after="2026-07-01">
  <owner>justincohen@chromium.org</owner>
  <owner>bling-fundamentals@google.com</owner>
  <summary>
    Used by the SkipCookieCaching experiment in the enabled-with-copy-workaround
    mode. Records the performance overhead of the copy operation.
  </summary>
</histogram>

<histogram name="IOS.CredentialExchange.CredentialExportScreenAction"
    enum="CredentialExportScreenAction" expires_after="2027-02-01">
  <owner>rgod@google.com</owner>
  <owner>sinhasourav@google.com</owner>
  <owner>bling-transactions@google.com</owner>
  <summary>
    This histogram is logged when the user performs a respective action in the
    credential selection screen of the credential exchange export flow.
  </summary>
</histogram>

<histogram name="IOS.CredentialExchange.CredentialsReceivedCount.{Type}"
    units="count" expires_after="2027-02-01">
  <owner>rgod@google.com</owner>
  <owner>sinhasourav@google.com</owner>
  <owner>bling-transactions@google.com</owner>
  <summary>
    Counts the occurrences of {Type} credential on the credential list received
    from an exporting password manager app.
  </summary>
  <token key="Type">
    <variant name="Address"/>
    <variant name="APIKey"/>
    <variant name="BasicAuthentication"/>
    <variant name="CreditCard"/>
    <variant name="CustomFields"/>
    <variant name="DriversLicense"/>
    <variant name="GeneratedPassword"/>
    <variant name="IdentityDocument"/>
    <variant name="ItemReference"/>
    <variant name="Note"/>
    <variant name="NoteForPassword"/>
    <variant name="Passkey"/>
    <variant name="Passport"/>
    <variant name="PersonName"/>
    <variant name="SSHKey"/>
    <variant name="TOTP"/>
    <variant name="WiFi"/>
  </token>
</histogram>

<histogram name="IOS.CredentialExtension.FetchPasswordFailure" units="count"
    expires_after="2027-03-01">
  <owner>rgod@google.com</owner>
  <owner>tmartino@chromium.org</owner>
  <owner>bling-transactions-eng@google.com</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.

    Note: this was expired from 2023-06 to 2023-12 and from 2024-12 to 2026-03.
    Data may be missing.
  </summary>
</histogram>

<histogram name="IOS.CredentialExtension.FetchPasswordNilArgument"
    units="count" expires_after="2027-03-01">
  <owner>rgod@google.com</owner>
  <owner>tmartino@chromium.org</owner>
  <owner>bling-transactions-eng@google.com</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.

    Note: this was expired from 2023-06 to 2023-12 and from 2024-12 to 2026-03.
    Data may be missing.
  </summary>
</histogram>

<histogram name="IOS.CredentialExtension.IsEnabled.Startup" enum="Boolean"
    expires_after="2027-01-03">
  <owner>rgod@google.com</owner>
  <owner>tmartino@chromium.org</owner>
  <owner>bling-transactions-eng@google.com</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="2027-03-01">
  <owner>rgod@google.com</owner>
  <owner>tmartino@chromium.org</owner>
  <owner>bling-transactions-eng@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.

    Note: this was expired from 2023-06 to 2023-12 and from 2024-12 to 2026-03.
    Data may be missing.
  </summary>
</histogram>

<histogram name="IOS.CredentialExtension.NewCredentialUsername"
    enum="IOSCredentialProviderNewCredentialUsername"
    expires_after="2027-03-01">
  <owner>rgod@google.com</owner>
  <owner>tmartino@chromium.org</owner>
  <owner>bling-transactions-eng@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.

    Note: this was expired from 2023-06 to 2023-12 and from 2024-12 to 2026-03.
    Data may be missing.
  </summary>
</histogram>

<histogram name="IOS.CredentialExtension.NumberFaviconsFetched" units="count"
    expires_after="2025-11-02">
  <owner>sebsg@chromium.org</owner>
  <owner>bling-transactions-eng@google.com</owner>
  <summary>
    Recorded when credentials are saved in the CredentialExtension database.
    Records the number of favicons that have been fetched.
  </summary>
</histogram>

<histogram name="IOS.CredentialExtension.PasskeyUseCount" units="count"
    expires_after="2027-02-14">
  <owner>tmartino@chromium.org</owner>
  <owner>bling-transactions-eng@google.com</owner>
  <summary>
    The number of times the Credential Extension user selected a passkey since
    last Chrome foregrounding. Reported when Chrome is put in foreground.
  </summary>
</histogram>

<histogram name="IOS.CredentialExtension.PasswordCreated"
    enum="IOSCredentialProviderPasswordCreated" expires_after="2027-03-01">
  <owner>rgod@google.com</owner>
  <owner>tmartino@chromium.org</owner>
  <owner>bling-transactions-eng@google.com</owner>
  <summary>
    Recorded when a new password is created via the Credential Provider
    extension. Reported when Chrome is put in the foreground.

    Note: this was expired from 2023-06 to 2023-12 and from 2024-12 to 2026-03.
    Data may be missing.
  </summary>
</histogram>

<histogram name="IOS.CredentialExtension.PasswordUseCount" units="count"
    expires_after="2027-03-01">
  <owner>rgod@google.com</owner>
  <owner>tmartino@chromium.org</owner>
  <owner>bling-transactions-eng@google.com</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.

    Note: this was expired from 2025-12 to 2026-03. Data may be missing.
  </summary>
</histogram>

<histogram name="IOS.CredentialExtension.QuickPasskeyUseCount" units="count"
    expires_after="2027-01-03">
  <owner>rgod@google.com</owner>
  <owner>tmartino@chromium.org</owner>
  <owner>bling-transactions-eng@google.com</owner>
  <summary>
    The number of times the Credential Extension authenticated with a passkey,
    without user intervention (except OS-provided UI) since last Chrome
    foregrounding. Reported when Chrome is put in foreground.

    Note: this was briefly expired in 2026-03. Data may be missing.
  </summary>
</histogram>

<histogram name="IOS.CredentialExtension.QuickPasswordUseCount" units="count"
    expires_after="2027-03-01">
  <owner>rgod@google.com</owner>
  <owner>tmartino@chromium.org</owner>
  <owner>bling-transactions-eng@google.com</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.

    Note: this was expired from 2025-12 to 2026-03. Data may be missing.
  </summary>
</histogram>

<histogram name="IOS.CredentialExtension.SaveCredentialFailureCount"
    units="count" expires_after="2027-03-01">
  <owner>rgod@google.com</owner>
  <owner>tmartino@chromium.org</owner>
  <owner>bling-transactions-eng@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.

    Note: this was expired from 2023-06 to 2023-12 and from 2024-12 to 2026-03.
    Data may be missing.
  </summary>
</histogram>

<histogram
    name="IOS.CredentialExtension.Service.Error.ReplaceCredentialIdentitiesWithIdentities"
    enum="iOSCredentialIdentityStoreErrorForReporting"
    expires_after="2027-03-01">
  <owner>rgod@google.com</owner>
  <owner>tmartino@chromium.org</owner>
  <owner>bling-transactions-eng@google.com</owner>
  <summary>
    Recorded when a request to replace identities in ASCredentialIdentityStore
    fails.

    Note: this was expired from 2024-12 to 2026-03. Data may be missing.
  </summary>
</histogram>

<histogram name="IOS.CredentialExtension.StatusDidChangeTo.Startup"
    enum="Boolean" expires_after="2027-03-01">
  <owner>rgod@google.com</owner>
  <owner>tmartino@chromium.org</owner>
  <owner>bling-transactions-eng@google.com</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.

    Note: this was expired from 2025-08 to 2026-03. Data may be missing.
  </summary>
</histogram>

<histogram name="IOS.CredentialExtension.SyncedStore" enum="Boolean"
    expires_after="2027-01-24">
  <owner>rgod@google.com</owner>
  <owner>sebsg@chromium.org</owner>
  <owner>bling-transactions-eng@google.com</owner>
  <summary>
    Recorded when the CPE syncs its file storage: removing it and re-writing it.
  </summary>
</histogram>

<histogram name="IOS.CredentialProviderExtension.Promo.Impression{IsReminder}"
    enum="IOSCredentialProviderPromoSource" expires_after="2026-11-29">
  <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.

    Note: this was expired from 2023-09 to 2023-12. Data may be missing.
  </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="2027-02-07">
  <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;.

    Note: this was expired from 2023-09 to 2023-12. Data may be missing.
  </summary>
  <token key="PromoSource">
    <variant name="OnPasskeyCreated"
        summary="the user completes the modal passkey creation flow in Chrome"/>
    <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.CredentialProviderExtension.TurnOnPromptOutcome.{PromptSource}"
    enum="Boolean" expires_after="2027-02-07">
  <owner>noemies@google.com</owner>
  <owner>tmartino@google.com</owner>
  <owner>bling-transactions@google.com</owner>
  <summary>
    Logs whether or not the user has decided to turn on the app as a credential
    provider when shown the iOS &quot;Turn on AutoFill&quot; prompt.
    {PromptSource} indicates where the prompt was presented from.

    Note: This prompt is only available on iOS 18+.
  </summary>
  <token key="PromptSource"
      variants="IOSTurnOnCredentialProviderExtensionPromptSource"/>
</histogram>

<histogram name="IOS.CrossPlatformPromos.Promo.Shown.{Source}"
    enum="IOSCrossPlatformPromoType" expires_after="2027-01-24">
  <owner>hiramahmood@google.com</owner>
  <owner>scottyoder@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    The promo type of the Cross Platform Promo shown to the user when {Source}.
  </summary>
  <token key="Source">
    <variant name="FromAppForeground" summary="the app enters the foreground"/>
    <variant name="FromPush" summary="they interact with a push notification"/>
  </token>
</histogram>

<histogram name="IOS.CrossPlatformPromos.PushNotification.Interaction"
    enum="IOSCrossPlatformPromoType" expires_after="2026-11-19">
  <owner>hiramahmood@google.com</owner>
  <owner>scottyoder@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    The promo type of the Cross Platform Promo push notification that the user
    interacted with.
  </summary>
</histogram>

<histogram name="IOS.DarkModeDetection.SupportsDarkMode"
    enum="IOSDarkModeDetectionCrossedState" expires_after="2027-05-01">
  <owner>qpubert@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Tracks whether the loaded webpage natively supports dark mode via any of the
    native indicators (meta tag, CSS color-scheme, or prefers-color-scheme media
    queries). Logged on page load.
  </summary>
</histogram>

<histogram name="IOS.DarkModeDetection.SupportsVia{SupportType}"
    enum="IOSDarkModeDetectionCrossedState" expires_after="2027-05-01">
  <owner>qpubert@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Tracks whether the loaded webpage natively supports dark mode via
    {SupportType}. Logged on page load.
  </summary>
  <token key="SupportType">
    <variant name="Css" summary="the CSS color-scheme root property"/>
    <variant name="MediaQuery"
        summary="CSS prefers-color-scheme media queries"/>
    <variant name="Meta" summary="the HTML color-scheme meta tag"/>
  </token>
</histogram>

<histogram name="IOS.DefaultBrowser.Conversion{NumberOfDays}" enum="Boolean"
    expires_after="2027-07-16">
  <owner>gujen@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records true the first time Chrome becomes the default browser after not
    being the default browser for at least {NumberOfDays}, according to the
    default browser heuristic. Records false if Chrome was likely the default
    browser within the last {NumberOfDays} days. Recorded when a default link is
    opened.
  </summary>
  <token key="NumberOfDays">
    <variant name="7"/>
    <variant name="14"/>
    <variant name="28"/>
    <variant name="90"/>
    <variant name="180"/>
  </token>
</histogram>

<histogram name="IOS.DefaultBrowserAbandonment{PeriodConsidered}"
    enum="Boolean" expires_after="2027-02-07">
  <owner>gujen@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records true if Chrome was likely the default browser in the last
    {PeriodConsidered}, indicating that Chrome may have recently stopped being
    the default browser. Records false in all other scenarios. Recorded once per
    metrics log upload.
  </summary>
  <token key="PeriodConsidered">
    <variant name="21To7" summary="21 days but not in the last 7 days"/>
    <variant name="28To14" summary="28 days but not in the last 14 days"/>
    <variant name="35To14" summary="35 days but not in the last 14 days"/>
    <variant name="42To21" summary="42 days but not in the last 21 days"/>
  </token>
</histogram>

<histogram name="IOS.DefaultBrowserBannerPromo.ManuallyDismissed" units="count"
    expires_after="2026-10-11">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the default browser banner promo being manually dismissed by the
    user. The value is how many times the promo has been shown before in this
    promo session (e.g. the user dismissed the promo after seeing it on 2
    pages).
  </summary>
</histogram>

<histogram name="IOS.DefaultBrowserBannerPromo.PromoSessionEnded"
    enum="IOSDefaultBrowserBannerPromoPromoSessionEndedReason"
    expires_after="2026-10-11">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records when a default browser banner promo session ends and what the cause
    was.
  </summary>
</histogram>

<histogram name="IOS.DefaultBrowserBannerPromo.Shown" units="count"
    expires_after="2027-02-14">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the default browser banner promo being shown on one webpage. The
    value is how many times the promo has been shown before in this promo
    session (e.g. the user loaded 2 pages with the promo already, so this is the
    3rd).
  </summary>
</histogram>

<histogram name="IOS.DefaultBrowserBannerPromo.Tapped" units="count"
    expires_after="2027-02-14">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the default browser banner promo being tapped. The value is how many
    times the promo has been shown before in this promo session (e.g. the user
    tapped the promo after seeing it on 2 pages).
  </summary>
</histogram>

<histogram name="IOS.DefaultBrowserFullscreenTailoredPromoAllTabs"
    enum="IOSDefaultBrowserFullscreenPromoAction" expires_after="2027-02-07">
  <owner>sebsg@chromium.org</owner>
  <owner>bling-mony-pod@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="2026-12-27">
  <owner>sebsg@chromium.org</owner>
  <owner>bling-mony-pod@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="2026-12-27">
  <owner>sebsg@chromium.org</owner>
  <owner>bling-mony-pod@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="2027-02-14">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@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="2027-02-14">
  <owner>pabouchard@google.com</owner>
  <owner>bling-mony-pod@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="EighthImpression" summary="eighth"/>
    <variant name="FifthImpression" summary="fifth"/>
    <variant name="FirstImpression" summary="first"/>
    <variant name="FourthImpression" summary="fourth"/>
    <variant name="NinthImpression" summary="ninth"/>
    <variant name="SecondImpression" summary="second"/>
    <variant name="SeventhImpression" summary="seventh"/>
    <variant name="SixthImpression" summary="sixth"/>
    <variant name="TenthImpression" summary="tenth"/>
    <variant name="ThirdImpression" summary="third"/>
  </token>
</histogram>

<histogram name="IOS.DefaultBrowserPromo.NonModal.{PromoType}"
    enum="IOSDefaultBrowserPromoNonModalAction" expires_after="2027-02-14">
  <owner>sebsg@chromium.org</owner>
  <owner>bling-mony-pod@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.OverflowMenu"
    enum="IOSDefaultBrowserPromoOverflowMenuAction" expires_after="2027-02-14">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the action taken by the user on the Default Browser Overflow Menu
    Promo (No Action, Hidden, or Tapped).
  </summary>
</histogram>

<histogram name="IOS.DefaultBrowserPromo.SetUpList.Action"
    enum="IOSDefaultBrowserFullscreenPromoAction" expires_after="2026-12-16">
  <owner>pabouchard@google.com</owner>
  <owner>scottyoder@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    The action taken by the user in response to the Set Up List default browser
    promo.
  </summary>
</histogram>

<histogram name="IOS.DefaultBrowserPromo.Shown"
    enum="IOSDefaultBrowserPromoType" expires_after="2027-02-14">
  <owner>gujen@google.com</owner>
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>The default browser promo type shown to the user.</summary>
</histogram>

<histogram name="IOS.DefaultBrowserSettingsPageUsage{Source}"
    enum="IOSDefaultBrowserSettingsPageUsage" expires_after="2027-01-03">
  <owner>gayane@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the action taken by the user on Default Browser Settings page that
    was displayed from one of the possible {Source}. Each action can be recorded
    only once per settings page display. This is true even for the iOS settings
    opening action which users can do multiple times during the same settings
    page display.
  </summary>
  <token key="Source">
    <variant name="" summary="Opened from any source"/>
    <variant name=".BannerPromo" summary="Opened from banner promo"/>
    <variant name=".ExternalAction"
        summary="Opened from external action (URL passed to Chrome with
                 &quot;ChromeExternalAction&quot; as host)"/>
    <variant name=".ExternalIntent" summary="Opened from external intent"/>
    <variant name=".MagicStackCard"
        summary="Opened from the ephemeral Magic Stack card"/>
    <variant name=".Omnibox" summary="Opened from Omnibox"/>
    <variant name=".Settings" summary="Opened from Chrome settings"/>
    <variant name=".SetUpList" summary="Opened from setup list"/>
    <variant name=".TipsNotification" summary="Opened from tips notification"/>
  </token>
</histogram>

<histogram name="IOS.DefaultBrowserVideoPromo.Fullscreen"
    enum="IOSDefaultBrowserVideoPromoAction" expires_after="2027-02-21">
  <owner>cheickcisse@google.com</owner>
  <owner>sebsg@chromium.org</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    The action taken by the user in response to the full screen default browser
    video promo.
  </summary>
</histogram>

<histogram name="IOS.DefaultStatusAPI.CooldownError.DaysLeft" units="Days"
    expires_after="2027-01-17">
  <owner>gujen@google.com</owner>
  <owner>sebsg@chromium.org</owner>
  <owner>rkgibson@google.com</owner>
  <owner>rohitrao@chromium.org</owner>
  <owner>chrome-metrics-team@google.com</owner>
  <summary>
    The number of days remaining before the default status API can be called
    again. The number of days is calculated from the time span between now and
    the date of next availability provided in the error status.

    Recorded once per failed API call. An API call is made three times per year
    at browser startup. Only recorded if the error is recognized as a cooldown
    error (i.e. the API was called too soon). Only recorded on iOS 18.4+.
  </summary>
</histogram>

<histogram name="IOS.DefaultStatusAPI.DaysSinceLastSuccessfulCall" units="Days"
    expires_after="2027-01-03">
  <owner>gujen@google.com</owner>
  <owner>sebsg@chromium.org</owner>
  <owner>rkgibson@google.com</owner>
  <owner>rohitrao@chromium.org</owner>
  <owner>chrome-metrics-team@google.com</owner>
  <summary>
    The number of days since the last successful call to the default status
    system API.

    Recorded once per successful API call. An API call is made three times per
    year at browser startup. If the call is not successful (i.e. there was an
    error), this histogram is not recorded. Only recorded on iOS 18.4+. Only
    recorded starting from the second successful API call for this client.
  </summary>
</histogram>

<histogram name="IOS.DefaultStatusAPI.DefaultStatusRetention"
    enum="IOSDefaultStatusRetention" expires_after="2027-01-03">
  <owner>gujen@google.com</owner>
  <owner>sebsg@chromium.org</owner>
  <owner>rkgibson@google.com</owner>
  <owner>rohitrao@chromium.org</owner>
  <owner>chrome-metrics-team@google.com</owner>
  <summary>
    Records the change in default status since the last successful call to the
    default status system API for this client.

    Recorded once per successful API call. An API call is made three times per
    year at browser startup. If the call is not successful (i.e. there was an
    error), this histogram is not recorded. Only recorded on iOS 18.4+. Only
    recorded starting from the second successful API call for this client.
  </summary>
</histogram>

<histogram name="IOS.DefaultStatusAPI.HeuristicAssessment{Days}"
    enum="IOSDefaultStatusHeuristicAssessment" expires_after="2027-02-07">
  <owner>gujen@google.com</owner>
  <owner>sebsg@chromium.org</owner>
  <owner>rkgibson@google.com</owner>
  <owner>rohitrao@chromium.org</owner>
  <owner>chrome-metrics-team@google.com</owner>
  <summary>
    Records the difference between the system reported default status, and the
    custom, heuristic-based default status (see IOS.IsDefaultBrowser,
    IOS.IsDefaultBrowser21, and IOS.IsDefaultBrowser[NumberOfDays]).

    A true positive means both the system API and the heuristic had a default
    status of true. A false positive means the heuristic had a default status of
    true, but the system API reported false. A true negative means both reported
    false, and a false negative means the heuristic reported false while the
    system reported true.

    Recorded once per successful API call. An API call is made three times per
    year at browser startup. If the call is not successful (i.e. there was an
    error), this histogram is not recorded. Only recorded on iOS 18.4+.

    This histogram variant is for the {Days}-day heuristic.
  </summary>
  <token key="Days">
    <variant name="1"/>
    <variant name="3"/>
    <variant name="7"/>
    <variant name="14"/>
    <variant name="21"/>
    <variant name="28"/>
    <variant name="35"/>
    <variant name="42"/>
  </token>
</histogram>

<!-- TODO(crbug.com/401551080) Mark this "expires-never" after validating it works as intended. -->

<histogram name="IOS.DefaultStatusAPI.IsDefaultBrowser" enum="Boolean"
    expires_after="2027-01-24">
  <owner>gujen@google.com</owner>
  <owner>sebsg@chromium.org</owner>
  <owner>rkgibson@google.com</owner>
  <owner>rohitrao@chromium.org</owner>
  <owner>chrome-metrics-team@google.com</owner>
  <summary>
    Whether Chrome is the default browser or not according to the default status
    system API.

    Recorded once per successful API call. An API call is made three times per
    year at browser startup. If the call is not successful (i.e. there was an
    error), this histogram is not recorded. Only recorded on iOS 18.4+.
  </summary>
</histogram>

<!-- LINT.IfChange(CohortNumber) -->

<histogram name="IOS.DefaultStatusAPI.IsDefaultBrowser.Cohort{Number}"
    enum="Boolean" expires_after="2027-02-07">
  <owner>gujen@google.com</owner>
  <owner>sebsg@chromium.org</owner>
  <owner>rkgibson@google.com</owner>
  <owner>rohitrao@chromium.org</owner>
  <owner>chrome-metrics-team@google.com</owner>
  <summary>
    Whether Chrome is the default browser or not according to the default status
    system API. Works the same as IOS.DefaultStatusAPI.IsDefaultBrowser, except
    this histogram has a variant for each cohort, and clients record only to the
    histogram variant corresponding to the cohort they are assigned to. The
    timeline of this histogram can be used to monitor cohort drift.

    Recorded once per successful API call. An API call is made three times per
    year at browser startup. If the call is not successful (i.e. there was an
    error), this histogram is not recorded. Only recorded on iOS 18.4+.

    This histogram variant is for cohort {Number}.
  </summary>
  <token key="Number">
    <variant name="1" summary="1 (January, May and September)"/>
    <variant name="2" summary="2 (February, June, October)"/>
    <variant name="3" summary="3 (March, July, November)"/>
    <variant name="4" summary="4 (April, August, December)"/>
  </token>
</histogram>

<!-- LINT.ThenChange(/ios/chrome/browser/default_browser/default_status/model/default_status_helper_constants.mm:kCohortCount) -->

<!-- TODO(crbug.com/401551080) Mark this "expires-never" after validating it works as intended. -->

<histogram name="IOS.DefaultStatusAPI.IsDefaultBrowser.StrictCohorts"
    enum="Boolean" expires_after="2027-01-03">
  <owner>gujen@google.com</owner>
  <owner>sebsg@chromium.org</owner>
  <owner>rkgibson@google.com</owner>
  <owner>rohitrao@chromium.org</owner>
  <owner>chrome-metrics-team@google.com</owner>
  <summary>
    Whether Chrome is the default browser or not according to the default status
    system API, but only for clients who made the API call during their assigned
    cohort's reporting window. Clients are split into 4 cohorts, each with 3
    assigned months in the year. Depending on usage frequency, it's possible
    some clients miss their window. When this happens, the API call is still
    made even if the client is outside their reporting window so that the API
    call opportunity is not wasted. However, those results will only be recorded
    to IOS.DefaultStatusAPI.IsDefaultBrowser, not to this histogram.

    Recorded once per successful API call. An API call is made three times per
    year at browser startup. If the call is not successful (i.e. there was an
    error), this histogram is not recorded. Only recorded on iOS 18.4+.
  </summary>
</histogram>

<histogram name="IOS.DefaultStatusAPI.OutcomeType"
    enum="IOSDefaultStatusAPIOutcomeType" expires_after="2027-01-03">
  <owner>gujen@google.com</owner>
  <owner>sebsg@chromium.org</owner>
  <owner>rkgibson@google.com</owner>
  <owner>rohitrao@chromium.org</owner>
  <owner>chrome-metrics-team@google.com</owner>
  <summary>
    Whether a call to the default status system API successfully returned a
    result or yielded an error. Errors are split into 2 buckets,
    cooldown-related errors and all other errors.

    Recorded once per API call. An API call is made three times per year at
    browser startup. Only recorded on iOS 18.4+.
  </summary>
</histogram>

<histogram name="IOS.Desktop.Promo.TotalImpressionsLimitHit" enum="Boolean"
    expires_after="2026-11-01">
  <owner>hiramahmood@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Records whether the total impressions limit across all Desktop to iOS promos
    was hit. Recorded when checking if a promo is allowed to be shown.
  </summary>
</histogram>

<histogram name="IOS.Desktop.{PromoType}.Shown"
    enum="DesktopIOSPromoImpression" expires_after="2027-01-03">
  <owner>nicolasmacbeth@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    The impression of the iOS {PromoType} shown to the user on Desktop. Desktop
    only. This is only recorded for contextual promo appearances, not when the
    eligibility criteria is override via feature flag.
  </summary>
  <token key="PromoType">
    <variant name="AddressPromo" summary="Desktop to iOS address promo shown"/>
    <variant name="PasswordPromo"
        summary="Desktop to iOS password promo shown"/>
    <variant name="PaymentPromo" summary="Desktop to iOS payment promo shown"/>
  </token>
</histogram>

<histogram name="IOS.Desktop.{PromoType}.{Impression}.Action"
    enum="DesktopIOSPromoAction" expires_after="2027-01-03">
  <owner>nicolasmacbeth@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    The action taken by the user when shown the iOS {PromoType} on Desktop for
    the {Impression}. Desktop only.
  </summary>
  <token key="PromoType">
    <variant name="AddressPromo" summary="Desktop to iOS address promo"/>
    <variant name="PasswordPromo" summary="Desktop to iOS password promo"/>
    <variant name="PaymentPromo" summary="Desktop to iOS payment promo"/>
  </token>
  <token key="Impression">
    <variant name="FirstImpression" summary="first"/>
    <variant name="SecondImpression" summary="second"/>
    <variant name="ThirdImpression" summary="third"/>
  </token>
</histogram>

<histogram name="IOS.Discover.BackgroundRefresh.Outcome"
    enum="DiscoverFeedBackgroundRefreshOutcome" expires_after="2026-12-15">
  <owner>sadhvikch@google.com</owner>
  <owner>sreeshmanair@google.com</owner>
  <owner>iga-discover-bld@google.com</owner>
  <summary>
    The final outcome of the Discover feed background refresh task execution.
    Recorded when the task completes execution (either success or failure).
  </summary>
</histogram>

<histogram name="IOS.Discover.BackgroundRefresh.ServiceAvailability"
    enum="DiscoverFeedServiceAvailability" expires_after="2026-12-15">
  <owner>sadhvikch@google.com</owner>
  <owner>sreeshmanair@google.com</owner>
  <owner>iga-discover-bld@google.com</owner>
  <summary>
    The availability of the DiscoverFeedService when the background refresh task
    is triggered. Recorded at the start of the task execution.
  </summary>
</histogram>

<histogram name="IOS.Discover.BackgroundRefresh.SystemExpired" enum="Boolean"
    expires_after="2026-12-15">
  <owner>sadhvikch@google.com</owner>
  <owner>sreeshmanair@google.com</owner>
  <owner>iga-discover-bld@google.com</owner>
  <summary>
    Whether the iOS system background task expired before the Discover feed
    background refresh task could finish execution. Recorded when the system
    expiration handler is triggered.
  </summary>
</histogram>

<histogram name="IOS.DistantTab.TimeSinceLastUse" units="ms"
    expires_after="2027-06-01">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>bling-pandamonium@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.DockingPromo.Action" enum="IOSDockingPromoAction"
    expires_after="2025-09-14">
  <owner>pabouchard@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Logs a user's action on the fullscreen, animated Docking Promo.
  </summary>
</histogram>

<histogram name="IOS.DockingPromo.Action.{Eligibility}"
    enum="IOSDockingPromoAction" expires_after="2027-03-01">
  <owner>pabouchard@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Logs a user's action on the fullscreen, animated Docking Promo, segmented by
    the user's eligibility criteria: {Eligibility}.
  </summary>
  <token key="Eligibility">
    <variant name="LowEngagement" summary="low engagement users"/>
    <variant name="LowEngagementWithNoRecentIconLaunches"
        summary="low engagement users with no recent icon launches"/>
    <variant name="NoRecentIconLaunches"
        summary="users with no recent icon launches"/>
  </token>
</histogram>

<histogram name="IOS.DockingPromo.Impression" enum="IOSDockingPromoEligibility"
    expires_after="2027-03-01">
  <owner>pabouchard@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the user's eligibility status at the moment of a Docking Promo
    impression. This is recorded every time the DockingPromoCoordinator begins
    the presentation flow.
  </summary>
</histogram>

<histogram name="IOS.DocumentDownload.ConflictResolution"
    enum="DocumentDownloadConflictResolution" expires_after="2026-12-28">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Whether there was already a download in progress when starting a document
    download and how it was resolved.
  </summary>
</histogram>

<histogram name="IOS.DocumentDownload.FinalState" enum="DocumentDownloadState"
    expires_after="2026-12-28">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>The final state of the document download.</summary>
</histogram>

<histogram name="IOS.DocumentDownload.MimeType" enum="DownloadMimeTypeResult"
    expires_after="2026-12-28">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>The mime type of a document downloaded from Preview.</summary>
</histogram>

<histogram name="IOS.DocumentDownload.SizeInMB" units="MB"
    expires_after="2026-12-28">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>The size of a document downloaded from Preview (in MB).</summary>
</histogram>

<histogram name="IOS.DocumentDownload.StateAtNavigation"
    enum="DocumentDownloadState" expires_after="2026-12-28">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    The state of the download when the user navigates out of the document.
  </summary>
</histogram>

<histogram name="IOS.EditMenu.Error" enum="IOSEditMenuError"
    expires_after="2027-03-09">
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Report errors when reporting metrics for web edit menu. This histogram is
    only collected on a subset of users and possibly not on every iOS version.
    Use with care.
  </summary>
</histogram>

<histogram name="IOS.EditMenu.SelectedAction" enum="IOSEditMenuActions"
    expires_after="2027-03-09">
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    The action that was triggered by the user on the iOS web edit menu. This
    histogram is only collected on a subset of users and possibly not on every
    iOS version. Use with care.
  </summary>
</histogram>

<histogram name="IOS.EditMenu.SelectedActionInContext"
    enum="IOSEditMenuActions" expires_after="2027-03-09">
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    The action that was triggered by the user on the iOS web edit menu when in
    iOS26+ context menu form. This histogram is only collected on a subset of
    users and possibly not on every iOS version. Use with care.
  </summary>
</histogram>

<histogram name="IOS.EnhancedCalendar.ResponseStatus"
    enum="EnhancedCalendarResponseStatus" expires_after="2026-12-15">
  <owner>nicolasmacbeth@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>Status of the enhanced calendar response.</summary>
</histogram>

<histogram name="IOS.Enterprise.DataProtection.ScreenshotBlock.Lookup.Success"
    enum="Boolean" expires_after="2027-01-03">
  <owner>dmytriievd@google.com</owner>
  <owner>eic@google.com</owner>
  <owner>bling-enterprise@google.com</owner>
  <summary>
    Logs whether a real-time lookup for screenshot protection on iOS succeeded
    or failed. Recorded from the DataProtectionTabHelper when a lookup result is
    received.
  </summary>
</histogram>

<histogram name="IOS.Enterprise.DataProtection.ScreenshotBlock.Source"
    enum="IOSDataProtectionScreenshotBlockSource" expires_after="2026-10-29">
  <owner>dmytriievd@google.com</owner>
  <owner>eic@google.com</owner>
  <owner>bling-enterprise@google.com</owner>
  <summary>
    Logs the source (Data Controls or Real-time Lookup) of a screenshot block on
    iOS. Recorded from the DataProtectionTabHelper when a blocked verdict is
    returned for a navigated URL.
  </summary>
</histogram>

<histogram name="IOS.ExperienceKitCalendar.Present"
    enum="ExperienceKitCalendarTypes" expires_after="2027-02-14">
  <owner>olivierrobin@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="2027-02-14">
  <owner>olivierrobin@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="2027-02-07">
  <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.ExplainWithGemini.CharSelected" units="characters"
    expires_after="2026-03-01">
  <owner>prasanaa@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records the number of characters selected when performing a Explain With
    Gemini.
  </summary>
</histogram>

<histogram name="IOS.ExternalAction" enum="IOSExternalAction"
    expires_after="2027-06-30">
  <owner>joemerramos@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the action passed to Chrome for iOS using an external action URL.
  </summary>
</histogram>

<histogram name="IOS.Feedback.ReportAnIssue.Displayed"
    enum="UserFeedbackSender" expires_after="2027-06-01">
  <owner>jlebel@google.com</owner>
  <owner>chrome-regionalcapabilities@google.com</owner>
  <summary>
    Records the sender of the feedback when the report an issue dialog is
    displayed.
  </summary>
</histogram>

<histogram name="IOS.Feedback.ReportAnIssue.NotDisplayed"
    enum="UserFeedbackSender" expires_after="2027-06-01">
  <owner>jlebel@google.com</owner>
  <owner>chrome-regionalcapabilities@google.com</owner>
  <summary>
    Records the sender of the feedback when the report an issue dialog is not
    displayed (e.g. because the user lacks the capability to submit feedback).
    TODO(crbug.com/512043635): Remove this histogram once Chrome uses Aloha
    feedback.
  </summary>
</histogram>

<histogram name="IOS.FeedbackKit.UserFlowStartedSuccess" enum="Boolean"
    expires_after="2023-10-31">
  <owner>rkgibson@google.com</owner>
  <owner>bling-kiwi-pod@google.com</owner>
  <summary>
    Whether or not the feedback kit presentation flow completed successfully or
    had an error.
  </summary>
</histogram>

<histogram name="IOS.FeedHandlingError.{Action}" enum="Boolean"
    expires_after="2025-07-05">
  <owner>ginnyhuang@chromium.org</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Emitted every time a request from Discover feed could not be fulfilled as
    intended.
  </summary>
  <token key="Action">
    <variant name="DisplayMessage"/>
    <variant name="OpenUrl"/>
    <variant name="PresentManageFlow"/>
    <variant name="PresentSignInFlow"/>
    <variant name="SendFeedback"/>
    <variant name="TapPreview"/>
  </token>
</histogram>

<histogram name="IOS.FilePicker.Drive.AccountSelection"
    enum="IOSFilePickerDriveAccountSelection" expires_after="2027-08-24">
  <owner>qpubert@google.com</owner>
  <owner>erahmaoui@google.com</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Report the outcome of changing an account within Drive File Picker.
  </summary>
</histogram>

<histogram name="IOS.FilePicker.Drive.Displayed"
    enum="IOSFilePickerDriveDisplayed" expires_after="2027-08-24">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Report whether the choose from drive was displayed or not (and in that case
    why).
  </summary>
</histogram>

<histogram name="IOS.FilePicker.Drive.Filter" enum="IOSFilePickerDriveFilter"
    expires_after="2027-08-24">
  <owner>qpubert@google.com</owner>
  <owner>erahmaoui@google.com</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Report the selected filter to apply logged on every filter change.
  </summary>
</histogram>

<histogram name="IOS.FilePicker.Drive.NumberOfSubmittedFiles" units="count"
    expires_after="2027-08-24">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>The number of files submitted with the Drive file picker.</summary>
</histogram>

<histogram name="IOS.FilePicker.Drive.Outcome" enum="IOSFilePickerDriveOutcome"
    expires_after="2027-08-24">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>The outcome of Drive file picker flow.</summary>
</histogram>

<histogram name="IOS.FilePicker.Drive.SearchOutcome"
    enum="IOSFilePickerDriveSearchOutcome" expires_after="2027-08-24">
  <owner>qpubert@google.com</owner>
  <owner>erahmaoui@google.com</owner>
  <owner>bling-team@google.com</owner>
  <summary>Report the outcome of searching once per file picker flow.</summary>
</histogram>

<histogram name="IOS.FilePicker.Drive.SignIn.Result"
    enum="IOSFilePickerDriveSignInResult" expires_after="2027-08-24">
  <owner>qpubert@google.com</owner>
  <owner>josephlanza@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logged when the sign-in coordinator for the Drive File Picker returns the
    result of the sign in attempt.
  </summary>
</histogram>

<histogram name="IOS.FilePicker.Drive.SignIn.Status"
    enum="IOSFilePickerDriveSignInStatus" expires_after="2027-08-24">
  <owner>qpubert@google.com</owner>
  <owner>josephlanza@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logged when the user attempts to access the Drive File Picker, indicating
    the sign-in status of the user e.g. signed-in, signed-out without account,
    signed-out with account on device.
  </summary>
</histogram>

<histogram name="IOS.FilePicker.Drive.Sorting" enum="IOSFilePickerDriveSorting"
    expires_after="2027-08-24">
  <owner>qpubert@google.com</owner>
  <owner>erahmaoui@google.com</owner>
  <owner>bling-team@google.com</owner>
  <summary>Report the selected sorting order to apply.</summary>
</histogram>

<histogram name="IOS.FilePicker.Drive.SubmittedFileSize" units="MB"
    expires_after="2027-08-24">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>The size in MB of submitted file.</summary>
</histogram>

<histogram name="IOS.FileUploadPanel.Camera.Result" enum="BooleanSuccess"
    expires_after="2027-01-17">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    When choosing a file to upload to a web page, reports whether the user
    finished picking from the camera or instead did cancel.
  </summary>
</histogram>

<histogram name="IOS.FileUploadPanel.CameraActionVariant"
    enum="IOSFileUploadPanelCameraActionVariant" expires_after="2027-01-17">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    When choosing a file to upload to a web page, reports the variant of the
    camera action that was shown when the file upload panel is presented.
  </summary>
</histogram>

<histogram name="IOS.FileUploadPanel.ContextMenuActionVariant"
    enum="IOSFileUploadPanelContextMenuActionVariant"
    expires_after="2027-01-17">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    When choosing a file to upload to a web page, reports the variant of the
    context menu action that was selected when the file upload panel is
    presented.
  </summary>
</histogram>

<histogram name="IOS.FileUploadPanel.ContextMenuVariant"
    enum="IOSFileUploadPanelContextMenuVariant" expires_after="2027-01-17">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    When choosing a file to upload to a web page, reports the variant of the
    context menu that was shown when the file upload panel is presented.
  </summary>
</histogram>

<histogram name="IOS.FileUploadPanel.EntryPointVariant"
    enum="IOSFileUploadPanelEntryPointVariant" expires_after="2027-01-17">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    When choosing a file to upload to a web page, reports the view that was
    shown when the file upload panel is presented.
  </summary>
</histogram>

<histogram name="IOS.FileUploadPanel.FilePicker.FileCount" units="count"
    expires_after="2027-01-17">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    When choosing a file to upload to a web page, the number of files submitted
    with the file picker.
  </summary>
</histogram>

<histogram name="IOS.FileUploadPanel.FilePicker.Result" enum="BooleanSuccess"
    expires_after="2027-01-17">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    When choosing a file to upload to a web page, reports whether the user
    finished picking from the file picker or instead did cancel.
  </summary>
</histogram>

<histogram name="IOS.FileUploadPanel.NilImageInfo.{InfoKey}" enum="Boolean"
    expires_after="2027-08-24">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Logs whether the {InfoKey} key is present in the info dictionary when the
    image is nil in the file upload panel. This is used to diagnose why the
    image is nil.
  </summary>
  <token key="InfoKey">
    <variant name="CropRect"/>
    <variant name="EditedImage"/>
    <variant name="ImageURL"/>
    <variant name="LivePhoto"/>
    <variant name="MediaMetadata"/>
    <variant name="MediaType"/>
    <variant name="MediaURL"/>
    <variant name="OriginalImage"/>
    <variant name="PHAsset"/>
    <variant name="ReferenceURL"/>
  </token>
</histogram>

<histogram name="IOS.FileUploadPanel.PhotoPicker.FileCount" units="count"
    expires_after="2027-01-17">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    When choosing a file to upload to a web page, the number of files submitted
    with the photo picker.
  </summary>
</histogram>

<histogram name="IOS.FileUploadPanel.PhotoPicker.Result" enum="BooleanSuccess"
    expires_after="2027-01-17">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    When choosing a file to upload to a web page, reports whether the user
    finished picking from the photo picker or instead did cancel.
  </summary>
</histogram>

<histogram name="IOS.FileUploadPanel.PhotoPicker.ResultLoader.FileCount"
    units="count" expires_after="2027-01-17">
  <owner>qpubert@google.com</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    The number of files successfully loaded by the photo picker. Recorded when
    the photo picker finishes loading all selected files.
  </summary>
</histogram>

<histogram name="IOS.FileUploadPanel.PhotoPicker.ResultLoader.Result"
    enum="BooleanSuccess" expires_after="2027-01-17">
  <owner>qpubert@google.com</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Whether the files selected by the user were successfully loaded by the photo
    picker. Recorded once per batch of selected files.
  </summary>
</histogram>

<histogram name="IOS.FileUploadPanel.SubmittedFileCount" units="count"
    expires_after="2027-01-17">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    When choosing a file to upload to a web page, the number of files submitted
    with the file upload panel.
  </summary>
</histogram>

<histogram name="IOS.FinishedNavigationHasContext" enum="Boolean"
    expires_after="2027-07-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. Expired 2025-05. Revived July 2025.
  </summary>
</histogram>

<histogram name="IOS.FinishedNavigationHasItem" enum="Boolean"
    expires_after="2027-07-06">
  <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="2027-06-19">
  <owner>gambard@chromium.org</owner>
  <owner>bling-fundamentals@google.com</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.FirstRun.BestFeatures.MainScreen.Action"
    enum="IOSBestFeaturesMainScreenActionType" expires_after="2027-02-14">
  <owner>hiramahmood@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Type of action user took on the initial/main screen of the Best Features
    Experience in the FRE.
  </summary>
</histogram>

<histogram name="IOS.FirstRun.BestFeatures.{FeatureName}.Action"
    enum="IOSBestFeaturesDetailScreenActionType" expires_after="2026-08-31">
  <owner>hiramahmood@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Type of action user took on the {FeatureName} detail screen of the Best
    Features Experience in the FRE.
  </summary>
  <token key="FeatureName">
    <variant name="EnhancedSafeBrowsing" summary="Enhanced Safe Browsing"/>
    <variant name="IncognitoBrowsing" summary="Incognito Browsing"/>
    <variant name="Lens"/>
    <variant name="LockedIncognitoTabs" summary="Locked Incognito Tabs"/>
    <variant name="PasswordsInOtherApps" summary="Passwords In Other Apps"/>
    <variant name="PriceTracking" summary="Price Tracking"/>
    <variant name="SaveAutofillPasswords"
        summary="Save and Autofill Passwords"/>
    <variant name="SharePasswords" summary="Share Passwords"/>
    <variant name="TabGroups" summary="Tab Groups"/>
  </token>
</histogram>

<histogram name="IOS.Frame.FirstContentfulPaint.MainFrame" units="ms"
    expires_after="2027-02-14">
  <owner>danieltwhite@chromium.org</owner>
  <owner>bling-fundamentals@google.com</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="2027-01-17">
  <owner>danieltwhite@chromium.org</owner>
  <owner>bling-fundamentals@google.com</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.AfterBackForwardCacheRestore2"
    units="ms" expires_after="2025-01-19">
  <owner>danieltwhite@chromium.org</owner>
  <owner>bling-fundamentals@google.com</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="2027-01-17">
  <owner>danieltwhite@chromium.org</owner>
  <owner>bling-fundamentals@google.com</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.AfterBackForwardCacheRestore2"
    units="ms" expires_after="2025-01-19">
  <owner>danieltwhite@chromium.org</owner>
  <owner>bling-fundamentals@google.com</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 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.SubFrame2" units="ms"
    expires_after="2025-01-19">
  <owner>danieltwhite@chromium.org</owner>
  <owner>bling-fundamentals@google.com</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.InteractionToNextPaint.{FrameType}" units="ms"
    expires_after="2027-03-30">
  <owner>jfle@google.com</owner>
  <owner>bling-fundamentals@google.com</owner>
  <summary>
    Interaction to Next Paint (INP) is a Core Web Vital metric that assesses
    responsiveness by observing the latency of all click, tap, and keyboard
    interactions throughout a user's visit to a page, capturing the 98th
    percentile latency (discarding outliers).

    Note that this histogram captures INP isolated to the {FrameType} and does
    not aggregate interactions across all frames on the page.

    Recorded when the page is navigated away from or the web state is destroyed,
    for each {FrameType} where user interactions occurred.
  </summary>
  <token key="FrameType" variants="IOSFrameType"/>
</histogram>

<histogram name="IOS.Fullscreen.State" enum="CrFullscreenState"
    expires_after="2026-10-11">
  <owner>joemerramos@chromium.org</owner>
  <owner>bling-fundamentals@google.com</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.Fullscreen.TimeInFullscreen" units="ms"
    expires_after="2027-04-02">
  <owner>alionadangla@google.com</owner>
  <owner>scottyoder@google.com</owner>
  <summary>
    The time spent in fullscreen mode (toolbars fully collapsed). Recorded when
    the toolbars start appearing due to scrolling (exiting fullscreen). This
    duration is NOT recorded if the fullscreen state is reset due to navigation
    or tab change before the user manually exits fullscreen. This ensures that
    forced exits don't pollute the duration metrics for user-initiated
    fullscreen sessions.
  </summary>
</histogram>

<histogram name="IOS.Fullscreen.TimeNotInFullscreen" units="ms"
    expires_after="2027-04-02">
  <owner>alionadangla@google.com</owner>
  <owner>scottyoder@google.com</owner>
  <summary>
    The time spent not in fullscreen mode (toolbars fully visible) before
    entering fullscreen. Recorded when the toolbars start collapsing due to
    scrolling (entering fullscreen). This represents the time spent on the
    current page/tab since it was last shown or navigated to. If a navigation or
    tab change occurs while not in fullscreen, the accumulated time is discarded
    and the timer resets for the new page/tab. In other words, this only logs
    the time spent on the current page session before it first enters
    fullscreen, or the time between a manual exit and the next entry on the same
    page.
  </summary>
</histogram>

<histogram name="IOS.Fullscreen.TimeSpentScrollingToTheBottom" units="ms"
    expires_after="2027-01-17">
  <owner>alionadangla@chromium.org</owner>
  <owner>scottyoder@google.com</owner>
  <summary>
    The metric captures the elapsed time between the first scroll event on a new
    page and the final scroll event that reaches the page's bottom. This
    measurement, which can span multiple scroll events, is only captured if the
    bottom of the page is successfully reached. Pages where toolbars can not be
    collapsed due to size constraints are omitted.
  </summary>
</histogram>

<histogram name="IOS.Fullscreen.TransitionTrigger.{Toggle}"
    enum="FullscreenModeTransitionTrigger" expires_after="2027-03-03">
  <owner>alionadangla@chromium.org</owner>
  <owner>scottyoder@google.com</owner>
  <summary>The action that leads to {Toggle} fullscreen.</summary>
  <token key="Toggle">
    <variant name="Enter" summary="enter"/>
    <variant name="Exit" summary="exit"/>
  </token>
</histogram>

<histogram name="IOS.Gemini.BlockQuerySubmissionWhileLoading" enum="Boolean"
    expires_after="2027-04-01">
  <owner>yasamans@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records whether query submission is blocked while page context is loading
    before initiating the Gemini session.
  </summary>
</histogram>

<histogram name="IOS.Gemini.Camera.Settings.GeminiCameraPermissionToggled"
    enum="Boolean" expires_after="2027-02-06">
  <owner>joepeplowski@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records that the user toggled the Camera setting on (true) or off (false) in
    the Gemini settings UI.
  </summary>
</histogram>

<histogram name="IOS.Gemini.CameraFlow.CameraPicker.Result"
    enum="IOSGeminiCameraPickerResult" expires_after="2027-01-28">
  <owner>joepeplowski@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records the result of the OS camera picker operation in the Gemini camera
    flow. The camera picker appears in the camera flow once the user has granted
    both OS- and Gemini-level camera permissions and the result is recorded when
    the camera picker is dismissed.
  </summary>
</histogram>

<histogram name="IOS.Gemini.CameraFlow.GeminiCameraPermission.InitialValue"
    enum="Boolean" expires_after="2027-01-28">
  <owner>joepeplowski@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records the initial value of the Gemini camera permission setting in the
    Gemini camera flow. This value is recorded once the camera flow starts and
    the OS-level camera permission has been granted.
  </summary>
</histogram>

<histogram name="IOS.Gemini.CameraFlow.GeminiCameraPermissionAlert.Result"
    enum="IOSGeminiCameraPermissionAlertResult" expires_after="2027-01-27">
  <owner>joepeplowski@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records the result of the Gemini camera permission alert in the Gemini
    camera flow. This alert appears after starting the camera flow when the
    user's OS-level camera permission is confirmed but the Gemini camera
    permission setting is false.
  </summary>
</histogram>

<histogram name="IOS.Gemini.CameraFlow.GoToOSSettingsAlert.Result"
    enum="IOSGeminiGoToOSSettingsAlertResult" expires_after="2027-01-27">
  <owner>joepeplowski@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records the result of the alert directing users to OS camera settings in the
    Gemini camera flow. This alert appears after starting the camera flow when
    the OS-level camera permission has been denied by the user in the past.
  </summary>
</histogram>

<histogram name="IOS.Gemini.CameraFlow.OSCameraAuthorization.InitialStatus"
    enum="IOSGeminiOSCameraAuthorizationInitialStatus"
    expires_after="2027-01-28">
  <owner>joepeplowski@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records the initial status of the OS-level camera authorization setting in
    the Gemini camera flow. This value is recorded when the camera flow starts.
  </summary>
</histogram>

<histogram name="IOS.Gemini.CameraFlow.OSCameraAuthorizationRequest.Result"
    enum="IOSGeminiCameraFlowOSCameraAuthorizationResult"
    expires_after="2027-01-27">
  <owner>joepeplowski@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records the result of an OS-level camera authorization request in the Gemini
    camera flow. This alert appears after starting the camera flow when a user
    has never previously responded to an OS-level camera authorization request.
  </summary>
</histogram>

<histogram name="IOS.Gemini.DynamicSettings.ItemShown"
    enum="IOSGeminiSettingsItem" expires_after="2027-01-05">
  <owner>joepeplowski@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>Records when an item is shown in Gemini Settings.</summary>
</histogram>

<histogram name="IOS.Gemini.DynamicSettings.ItemUsed"
    enum="IOSGeminiSettingsItem" expires_after="2027-01-05">
  <owner>joepeplowski@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>Records when the user taps an item in Gemini Settings.</summary>
</histogram>

<histogram name="IOS.Gemini.EditMenuPrompt.SelectedText.Length" units="count"
    expires_after="2027-01-27">
  <owner>yasamans@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <improvement direction="HIGHER_IS_BETTER"/>
  <summary>
    Records the length of the selected text that triggered Explain Gemini edit
    menu.
  </summary>
</histogram>

<histogram name="IOS.Gemini.Eligibility" enum="Boolean"
    expires_after="2027-02-14">
  <owner>sebsg@chromium.org</owner>
  <owner>bling-alchemy@google.com</owner>
  <summary>
    Records whether the user is eligible for Gemini. Logged when eligibility is
    checked prior to showing entry points, promos, etc.
  </summary>
</histogram>

<histogram name="IOS.Gemini.EntryPoint" enum="IOSGeminiEntryPoint"
    expires_after="2027-02-14">
  <owner>sebsg@chromium.org</owner>
  <owner>bling-alchemy@google.com</owner>
  <improvement direction="HIGHER_IS_BETTER"/>
  <summary>
    Records the entry point source from which Gemini was triggered. Recorded
    when Gemini is triggered. Starting M148, a portion of the Omnibox Chip
    traffic will be moved to DirectOmniboxBadge.
  </summary>
</histogram>

<histogram name="IOS.Gemini.EntryPoint.Available" enum="IOSGeminiEntryPoint"
    expires_after="2027-03-10">
  <owner>yasamans@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <improvement direction="HIGHER_IS_BETTER"/>
  <summary>
    Records the availability of an entry point source from which Gemini could be
    triggered. Recorded when the entry point is available to the user. Starting
    M148, a portion of the Omnibox Chip traffic will be moved to
    DirectOmniboxBadge.
  </summary>
</histogram>

<histogram name="IOS.Gemini.EntryPointImpression" enum="IOSGeminiEntryPoint"
    expires_after="2027-03-05">
  <owner>yasamans@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <improvement direction="HIGHER_IS_BETTER"/>
  <summary>
    Records the entry point source from which Gemini was impressed. Recorded
    when an entry point is shown. Starting M148, a portion of the Omnibox Chip
    traffic will be moved to DirectOmniboxBadge.
  </summary>
</histogram>

<histogram name="IOS.Gemini.Feedback" enum="IOSGeminiFeedback"
    expires_after="2027-01-14">
  <owner>joepeplowski@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    The feedback that a user has provided by interacting with the feedback
    buttons associated with a Gemini response.
  </summary>
</histogram>

<histogram name="IOS.Gemini.FirstPrompt.SubmissionMethod"
    enum="IOSGeminiFirstPromptSubmissionMethod" expires_after="2027-02-14">
  <owner>kanouche@google.com</owner>
  <owner>bling-alchemy@google.com</owner>
  <improvement direction="HIGHER_IS_BETTER"/>
  <summary>
    Records how the user submitted the first prompt of a session to BWG (Gemini)
    on iOS. Persisted floaties resumed from persisted tabs are considered new
    sessions.
  </summary>
</histogram>

<histogram name="IOS.Gemini.Floaty.DismissedState" enum="GeminiViewState"
    expires_after="2027-02-25">
  <owner>joemerramos@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>Records the state of the floaty when it is dismissed.</summary>
</histogram>

<histogram name="IOS.Gemini.Floaty.HiddenFromSource"
    enum="IOSGeminiFloatyUpdateSource" expires_after="2027-01-25">
  <owner>joemerramos@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records the floaty being hidden from a specific trigger source.
  </summary>
</histogram>

<histogram name="IOS.Gemini.Floaty.ShownFromSource"
    enum="IOSGeminiFloatyUpdateSource" expires_after="2027-01-25">
  <owner>joemerramos@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records the floaty being shown from a specific trigger source.
  </summary>
</histogram>

<histogram name="IOS.Gemini.Floaty.TimeMinimized" units="ms"
    expires_after="2027-01-25">
  <owner>joemerramos@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records the duration of a floaty in the minimized state until expanded.
  </summary>
</histogram>

<histogram name="IOS.Gemini.Floaty.ViewStateTransition"
    enum="IOSGeminiViewStateTransition" expires_after="2027-01-25">
  <owner>joemerramos@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records the transition between different Gemini view states. This enum is
    defined in IOSGeminiViewStateTransition.
  </summary>
</histogram>

<histogram name="IOS.Gemini.FRE.ConsentAction" enum="IOSGeminiFirstRunAction"
    expires_after="2027-02-07">
  <owner>sebsg@chromium.org</owner>
  <owner>bling-alchemy@google.com</owner>
  <summary>
    Records the user's selection on the Gemini FRE consent screen, including
    accept/dismiss decisions and link clicks for additional information.
  </summary>
</histogram>

<histogram name="IOS.Gemini.FRE.EntryPoint" enum="IOSGeminiEntryPoint"
    expires_after="2027-02-14">
  <owner>sebsg@chromium.org</owner>
  <owner>bling-alchemy@google.com</owner>
  <improvement direction="HIGHER_IS_BETTER"/>
  <summary>
    Records the entry point source from which Gemini First Run Experience (FRE)
    was triggered. Recorded when the Gemini FRE is triggered. Starting M148, a
    portion of the Omnibox Chip traffic will be moved to DirectOmniboxBadge.
  </summary>
</histogram>

<histogram name="IOS.Gemini.FRE.PromoAction" enum="IOSGeminiFirstRunAction"
    expires_after="2027-02-07">
  <owner>sebsg@chromium.org</owner>
  <owner>bling-alchemy@google.com</owner>
  <summary>
    Records the user's selection on the Gemini FRE promo screen.
  </summary>
</histogram>

<histogram name="IOS.Gemini.FRE.State" enum="IOSGeminiFirstRunState"
    expires_after="2027-02-03">
  <owner>fbeauchamp@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records the user's progression for the Gemini FRE. Logged once per Chrome
    session or whenever the state is updated during the session.
  </summary>
</histogram>

<histogram name="IOS.Gemini.GlicContextualCue.Decision"
    enum="OptimizationGuideOptimizationGuideDecision"
    expires_after="2027-05-01">
  <owner>ogallant@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records the optimization guide decision for Gemini contextual cueing. Logged
    when a response is received from the optimization guide service following a
    navigation.
  </summary>
</histogram>

<histogram name="IOS.Gemini.ImageActionButton"
    enum="IOSGeminiImageActionButtonType" expires_after="2027-02-02">
  <owner>joepeplowski@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records the type of action button tapped on an image in a Gemini response.
  </summary>
</histogram>

<histogram
    name="IOS.Gemini.ImageRemix.ContextMenuEntryPoint.AspectRatio.Tapped"
    enum="IOSGeminiAspectRatioBucket" expires_after="2027-01-16">
  <owner>joepeplowski@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    The aspect ratio bucket of the associated image when the user tapped the
    context menu Image Remix entry point.
  </summary>
</histogram>

<histogram name="IOS.Gemini.ImageRemix.IPH.DismissalReason"
    enum="InProductHelpDismissalReason" expires_after="2027-01-16">
  <owner>joepeplowski@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records the dismissal reason for the Gemini Image Remix IPH.
  </summary>
</histogram>

<histogram name="IOS.Gemini.IneligibilityReason"
    enum="IOSGeminiIneligibilityReason" expires_after="2027-02-03">
  <owner>fbeauchamp@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records a single ineligibility reason for Gemini. Logged whenever
    eligibility checks fail. Each ineligibility reason gets recorded
    individually and can't be meaning fully used for eligibility distribution.
    Instead use the IOS.Gemini.Eligibility histogram for that purpose.
  </summary>
</histogram>

<histogram name="IOS.Gemini.InputPlateAttachmentOption"
    enum="IOSGeminiInputPlateAttachmentOption" expires_after="2027-02-02">
  <owner>joepeplowski@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records the attachment option that was tapped in the input plate in Gemini.
  </summary>
</histogram>

<histogram name="IOS.Gemini.InvocationPageType"
    enum="IOSGeminiInvocationPageType" expires_after="2027-02-03">
  <owner>fbeauchamp@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records the type of page or WebState when Gemini is invoked. Recorded
    whenever the user initiates a Gemini flow.
  </summary>
</histogram>

<histogram name="IOS.Gemini.Live.AccumulatedDuration" units="ms"
    expires_after="2027-02-22">
  <owner>tarekmakkouk@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Tracks the total active voice time spent across all Live segments within a
    single overall Gemini interaction (until the Gemini is dismissed). Recorded
    when the Gemini floaty/interaction is dismissed.
  </summary>
</histogram>

<histogram name="IOS.Gemini.Live.DormantReason" enum="IOSGeminiDormantReason"
    expires_after="2027-02-22">
  <owner>tarekmakkouk@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    The reason why a Gemini Live session transitioned to the dormant state
    (e.g., timeout, low volume, backgrounding). Recorded when the session ends
    prematurely due to dormancy.
  </summary>
</histogram>

<histogram name="IOS.Gemini.Live.FREOutcome" enum="IOSGeminiLiveFREOutcome"
    expires_after="2027-02-22">
  <owner>tarekmakkouk@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Tracks the final outcome (success, dismissals, or permission denials) for
    the Gemini Live onboarding and permission flow. Recorded exactly once when
    the First Run Coordinator is dismissed or stopped.
  </summary>
</histogram>

<histogram name="IOS.Gemini.Live.ResponseDuration" units="ms"
    expires_after="2027-02-22">
  <owner>tarekmakkouk@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    The duration of Gemini's spoken response. Recorded only when a spoken
    response ends naturally (without being interrupted by the user).
  </summary>
</histogram>

<histogram name="IOS.Gemini.Live.ResponseLatency" units="ms"
    expires_after="2027-02-22">
  <owner>tarekmakkouk@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    The latency between when the user finishes speaking (thinking state starts)
    and when Gemini starts speaking its response (responding state starts).
    Recorded each time Gemini responds.
  </summary>
</histogram>

<histogram name="IOS.Gemini.Live.TurnCount" units="count"
    expires_after="2027-02-22">
  <owner>tarekmakkouk@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    The total number of speech turns (exchanges) in a Gemini Live session.
    Recorded once per Gemini Live session when the session ends.
  </summary>
</histogram>

<histogram name="IOS.Gemini.LocationBarBadgeUpdateSuccess" enum="Boolean"
    expires_after="2027-04-30">
  <owner>joemerramos@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records whether a location bar badge update operation was successfully
    dispatched.
  </summary>
</histogram>

<histogram name="IOS.Gemini.PageAvailability" enum="IOSGeminiPageAvailability"
    expires_after="2027-03-25">
  <owner>joemerramos@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records whether Gemini is available for a given page, including reasons for
    unavailability. Recorded once per navigation.
  </summary>
</histogram>

<histogram name="IOS.Gemini.PageEligible" enum="Boolean"
    expires_after="2027-01-01">
  <owner>tarekmakkouk@google.com</owner>
  <owner>bling-alchemy@google.com</owner>
  <summary>
    Records whether a page is eligible for Gemini. This is logged once per
    navigation to a new URL.
  </summary>
</histogram>

<histogram name="IOS.Gemini.Prompt.ContextAttachment" enum="Boolean"
    expires_after="2027-01-24">
  <owner>kanouche@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <improvement direction="HIGHER_IS_BETTER"/>
  <summary>
    Records whether prompts sent to Gemini include page context.
  </summary>
</histogram>

<histogram name="IOS.Gemini.Prompt.ImageRemix.Enabled" enum="Boolean"
    expires_after="2027-01-22">
  <owner>joepeplowski@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records whether a prompt sent to Gemini had Image Remix enabled.
  </summary>
</histogram>

<histogram name="IOS.Gemini.Prompt.ImagesAttached.Count" units="count"
    expires_after="2027-01-22">
  <owner>joepeplowski@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records the number of images sent by the user in a Gemini prompt.
  </summary>
</histogram>

<histogram name="IOS.Gemini.Prompt.LongPressImage.Included" enum="Boolean"
    expires_after="2027-01-22">
  <owner>joepeplowski@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records whether a prompt sent to Gemini included a long-press image.
  </summary>
</histogram>

<histogram name="IOS.Gemini.Prompt.MultiTabUsed" enum="Boolean"
    expires_after="2027-01-14">
  <owner>joepeplowski@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records whether a prompt sent to Gemini used multi-tab. This is defined as
    having at least one attached tab that is not the active tab.
  </summary>
</histogram>

<histogram name="IOS.Gemini.Prompt.SubmissionMethod"
    enum="IOSGeminiFirstPromptSubmissionMethod" expires_after="2027-02-14">
  <owner>kanouche@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <improvement direction="HIGHER_IS_BETTER"/>
  <summary>Records how the user submitted any prompt to Gemini on iOS.</summary>
</histogram>

<histogram name="IOS.Gemini.Prompt.TabsAttachedCount" units="count"
    expires_after="2027-01-14">
  <owner>joepeplowski@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records the number of tabs attached to a Gemini prompt on iOS.
  </summary>
</histogram>

<histogram name="IOS.Gemini.RegenerateButton.Tapped"
    enum="IOSGeminiRegenerateOptionType" expires_after="2027-04-01">
  <owner>fbeauchamp@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records that the user tapped the regenerate button in the Gemini floaty,
    along with the option type selected.
  </summary>
</histogram>

<histogram name="IOS.Gemini.Response.GeneratedImage.Included" enum="Boolean"
    expires_after="2027-01-22">
  <owner>joepeplowski@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records whether or not a Gemini response included a generated image.
  </summary>
</histogram>

<histogram name="IOS.Gemini.Response.Latency" units="ms"
    expires_after="2027-01-14">
  <owner>joepeplowski@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <improvement direction="LOWER_IS_BETTER"/>
  <summary>
    Records the latency from prompt submission to response received for Gemini
    on iOS.
  </summary>
</histogram>

<histogram name="IOS.Gemini.Response.Latency.MultiTabNotUsed" units="ms"
    expires_after="2027-01-14">
  <owner>joepeplowski@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <improvement direction="LOWER_IS_BETTER"/>
  <summary>
    Records the latency from prompt submission to response received for Gemini
    on iOS when multi-tab context was not used with the prompt. Multi-tab use is
    defined as having at least one attached tab that is not the active tab.
  </summary>
</histogram>

<histogram name="IOS.Gemini.Response.Latency.MultiTabUsed" units="ms"
    expires_after="2027-01-14">
  <owner>joepeplowski@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <improvement direction="LOWER_IS_BETTER"/>
  <summary>
    Records the latency from prompt submission to response received for Gemini
    on iOS when multi-tab context was used with the prompt. Multi-tab use is
    defined as having at least one attached tab that is not the active tab.
  </summary>
</histogram>

<histogram name="IOS.Gemini.Response.Latency.WithContext" units="ms"
    expires_after="2027-02-14">
  <owner>kanouche@google.com</owner>
  <owner>bling-alchemy@google.com</owner>
  <summary>
    Records the latency from prompt submission to response received for Gemini
    on iOS when page context was included with the prompt.
  </summary>
</histogram>

<histogram name="IOS.Gemini.Response.Latency.WithGeneratedImage" units="ms"
    expires_after="2027-01-30">
  <owner>joepeplowski@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records the latency from prompt submission to response received for Gemini
    on iOS when a generated image was included in the response.
  </summary>
</histogram>

<histogram name="IOS.Gemini.Response.Latency.WithoutContext" units="ms"
    expires_after="2027-01-17">
  <owner>kanouche@google.com</owner>
  <owner>bling-alchemy@google.com</owner>
  <summary>
    Records the latency from prompt submission to response received for Gemini
    on iOS when no page context was included with the prompt.
  </summary>
</histogram>

<histogram name="IOS.Gemini.Response.Latency.WithoutGeneratedImage" units="ms"
    expires_after="2027-01-30">
  <owner>joepeplowski@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records the latency from prompt submission to response received for Gemini
    on iOS when a generated image was not included in the response.
  </summary>
</histogram>

<histogram name="IOS.Gemini.Session.CancellationReason"
    enum="IOSGeminiSessionCancellationReason" expires_after="2027-02-07">
  <owner>fbeauchamp@google.com</owner>
  <owner>bling-alchemy@google.com</owner>
  <summary>Records the reason a gemini session was cancelled.</summary>
</histogram>

<histogram name="IOS.Gemini.Session.FirstPrompt" enum="Boolean"
    expires_after="2027-02-14">
  <owner>kanouche@google.com</owner>
  <owner>bling-alchemy@google.com</owner>
  <improvement direction="HIGHER_IS_BETTER"/>
  <summary>
    Records whether the user sent their first prompt in a Gemini session on iOS.
    False indicates abandoned sessions.
  </summary>
</histogram>

<histogram name="IOS.Gemini.Session.PromptCount" units="count"
    expires_after="2027-02-14">
  <owner>kanouche@google.com</owner>
  <owner>bling-alchemy@google.com</owner>
  <improvement direction="HIGHER_IS_BETTER"/>
  <summary>
    Records the total number of prompts sent by the user in a BWG (Gemini)
    session on iOS. Includes 0 for abandoned sessions where no prompts were
    sent.
  </summary>
</histogram>

<histogram name="IOS.Gemini.Session.TabSwitchCount" units="count"
    expires_after="2027-07-15">
  <owner>hamzamoh@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records the total number of times the active tab was switched during a
    Gemini (Floaty) session on iOS. Recorded when the Floaty session is
    dismissed.
  </summary>
</histogram>

<histogram name="IOS.Gemini.Session.Time" units="ms" expires_after="2027-01-24">
  <owner>kanouche@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records the duration of a BWG session. A session starts when the BWG UI
    appears and ends when the BWG UI disappears. Recorded when a session ends.
  </summary>
</histogram>

<histogram name="IOS.Gemini.SessionLength.FRE.{SessionType}" units="ms"
    expires_after="2027-01-03">
  <owner>kanouche@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    The duration of a Gemini session that happens to be the first run, from when
    the UI appears to when it is dismissed. This metric is segmented by the type
    of sessions.
  </summary>
  <token key="SessionType">
    <variant name="Abandoned"
        summary="Sessions closed without any prompts submitted"/>
    <variant name="WithPrompt"
        summary="Sessions where the user submitted at least one prompt"/>
  </token>
</histogram>

<histogram name="IOS.Gemini.SessionLength.{SessionType}" units="ms"
    expires_after="2027-01-03">
  <owner>kanouche@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    The duration of a Gemini session, from when the UI appears to when it is
    dismissed. This metric is segmented by the type of sessions.
  </summary>
  <token key="SessionType">
    <variant name="Abandoned"
        summary="Sessions closed without any prompts submitted"/>
    <variant name="WithPrompt"
        summary="Sessions where the user submitted at least one prompt"/>
  </token>
</histogram>

<histogram name="IOS.Gemini.ShowPageLoadingSnackbarOnOpeningInvocation"
    enum="Boolean" expires_after="2027-04-01">
  <owner>yasamans@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records whether the page loading snackbar is shown on the opening invocation
    while page context is loading.
  </summary>
</histogram>

<histogram name="IOS.Gemini.SignInRequiredSnackbarShown"
    enum="IOSGeminiEntryPoint" expires_after="2026-11-01">
  <owner>joemerramos@chromium.org</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records the entry point source from which Gemini was triggered on a page
    when the sign-in required snackbar is shown.
  </summary>
</histogram>

<histogram name="IOS.Gemini.StartupTime.{FirstRunBool}" units="ms"
    expires_after="2027-02-07">
  <owner>nicolasmacbeth@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    The latency between starting the preparation of presenting the Gemini
    overlay and actually presenting it. Includes the time to extract
    PageContext. Logged after the overlay is presented.
  </summary>
  <token key="FirstRunBool">
    <variant name="FirstRun"
        summary="User went from entrypoint, to BWG FRE, to BWG overlay.
                 Includes the time it took for the user to go through the FRE"/>
    <variant name="NotFirstRun"
        summary="User went directly from the entrypoint to the BWG overlay.
                 Does not include FRE time"/>
  </token>
</histogram>

<histogram name="IOS.GMOSKOAttributionPlacementID.LongAttributionWindow"
    units="Placement ID" expires_after="2027-07-26">
  <owner>gujen@google.com</owner>
  <owner>sebsg@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    The placement ID associated with a GMOSKO-attributed install. This is
    recorded on the first launch of the calendar month following the install, at
    startup, if the install happened within the long attribution window (15
    days) of the promo acceptance time.
  </summary>
</histogram>

<histogram name="IOS.GMOSKOAttributionPlacementID.ShortAttributionWindow"
    units="Placement ID" expires_after="2027-07-26">
  <owner>gujen@google.com</owner>
  <owner>sebsg@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    The placement ID associated with a GMOSKO-attributed install. This is
    recorded on the first launch of the calendar month following the install, at
    startup, if the install happened within the short attribution window (24
    hours) of the promo acceptance time.
  </summary>
</histogram>

<histogram name="IOS.GMOSKOInstallAttribution" enum="IOSInstallAttributionType"
    expires_after="2027-07-26">
  <owner>gujen@google.com</owner>
  <owner>sebsg@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    For installs that can be attributed to the acceptance of a recent external
    promo, records whether the acceptance was within the lat 24 hours or the
    last 15 days. Recorded once at app startup, once per promo acceptance.
  </summary>
</histogram>

<histogram name="IOS.GoogleOne.Outcome.{EntryPoint}" enum="GoogleOneOutcome"
    expires_after="2027-06-23">
  <owner>olivierrobin@chromium.org</owner>
  <owner>qpubert@chromium.org</owner>
  <summary>
    The outcome of the GoogleOne flow initiated from {EntryPoint}.
  </summary>
  <token key="EntryPoint">
    <variant name="DeepLink" summary="a deep link"/>
    <variant name="Drive" summary="Google Drive save error"/>
    <variant name="Photos" summary="Google Photos save error"/>
    <variant name="Settings" summary="the settings"/>
  </token>
</histogram>

<histogram name="IOS.GuidedTour.DidFinishStep" enum="GuidedTourStep"
    expires_after="2026-12-16">
  <owner>thegreenfrog@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>Recorded when the user finishes a step in the Guided Tour.</summary>
</histogram>

<histogram name="IOS.GuidedTour.Promo.DidAccept" enum="Boolean"
    expires_after="2026-12-16">
  <owner>thegreenfrog@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Records when the user is shown the Guided Tour modal promo and either
    decides to go through the tour or not.
  </summary>
</histogram>

<histogram name="IOS.Home.Click" enum="IOSHomeActionType"
    expires_after="2027-06-02">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    This histogram is logged whenever a click happens on the Home surface (NTP
    or Start). It is the union of IOS.NTP.Click and IOS.Start.Click.
  </summary>
</histogram>

<histogram name="IOS.Home.Impression" enum="IOSNTPImpressionType"
    expires_after="2027-06-02">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    This histogram is logged whenever the Home surface (NTP or Start) is shown.
    It is the union of IOS.NTP.Impression and IOS.Start.Impression, recording
    the feed visibility.
  </summary>
</histogram>

<histogram name="IOS.HomeCustomization.Background.Color.ClickCount"
    units="count" expires_after="2027-01-19">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the total number of color selection changes made while the Home
    Customization color picker is open. This value is recorded once when the
    user dismisses the color picker.
  </summary>
</histogram>

<histogram name="IOS.HomeCustomization.Background.Color.Outcome"
    enum="IOSBackgroundSelectionOutcome" expires_after="2027-01-19">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the outcome of a user's interaction with the color picker. Logged
    each time the background picker action sheet is dismissed, capturing whether
    the user applied a color, canceled, or canceled after selecting a color.
  </summary>
</histogram>

<histogram name="IOS.HomeCustomization.Background.Gallery.ClickCount"
    units="count" expires_after="2027-01-19">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the total number of item selection changes made while the Home
    Customization background gallery is open. This value is recorded once when
    the user dismisses the gallery view.
  </summary>
</histogram>

<histogram
    name="IOS.HomeCustomization.Background.Gallery.CollectionImageFetchError"
    enum="IOSNtpBackgroundServiceErrorType" expires_after="2027-01-19">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the type of error encountered when fetching an individual collection
    with images for the iOS NTP background customization gallery. Logged each
    time a collection images fetch operation happens.
  </summary>
</histogram>

<histogram
    name="IOS.HomeCustomization.Background.Gallery.CollectionInfoFetchError"
    enum="IOSNtpBackgroundServiceErrorType" expires_after="2027-01-19">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the type of error encountered when fetching background collection
    info for the iOS NTP background customization gallery. Logged each time a
    fetch operation happens.
  </summary>
</histogram>

<histogram
    name="IOS.HomeCustomization.Background.Gallery.ImageDownloadErrorCode"
    enum="HttpResponseCode" expires_after="2027-01-19">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the HTTP status response code of a background thumbnail download
    attempt from the background customization gallery on iOS. Logged for each
    image download attempt that failed.
  </summary>
</histogram>

<histogram
    name="IOS.HomeCustomization.Background.Gallery.ImageDownloadSuccessful"
    enum="Boolean" expires_after="2027-01-19">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records whether an individual image was successfully downloaded from the
    image fetcher in the NTP background customization gallery. Logged for each
    image download attempt.
  </summary>
</histogram>

<histogram name="IOS.HomeCustomization.Background.Gallery.MaxVisibleItemIndex"
    units="index" expires_after="2027-01-19">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    The maximum background thumbnail index within a collection that was visible
    to the user in the background image gallery. This is recorded when the
    gallery view is dismissed.
  </summary>
</histogram>

<histogram
    name="IOS.HomeCustomization.Background.Gallery.MaxVisibleSectionIndex"
    units="index" expires_after="2027-01-19">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    The maximum collection index that was visible to the user in the background
    image gallery. This is recorded when the gallery view is dismissed.
  </summary>
</histogram>

<histogram name="IOS.HomeCustomization.Background.Gallery.Outcome"
    enum="IOSBackgroundSelectionOutcome" expires_after="2027-01-19">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the outcome of a user's interaction with the image gallery picker.
    Logged each time the background picker action sheet is dismissed, capturing
    whether the user applied an image, canceled, or canceled after selecting an
    image.
  </summary>
</histogram>

<histogram
    name="IOS.HomeCustomization.Background.Gallery.SelectedCollectionIndex"
    units="index" expires_after="2027-01-19">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Records the index of the gallery collection when a user selects a background
    image and applies it on the NTP.
  </summary>
</histogram>

<histogram name="IOS.HomeCustomization.Background.Ntp.CacheCleanupEvent"
    enum="NtpBackgroundCacheCleanupEvent" expires_after="2027-01-19">
  <owner>pabouchard@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records events related to the NTP background image fetcher cache cleanup.
    Logged once, the first time the NTP is loaded for a user requiring the
    migration, and never again.
  </summary>
</histogram>

<histogram name="IOS.HomeCustomization.Background.Ntp.ImageDownloadErrorCode"
    enum="HttpResponseCode" expires_after="2027-01-19">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the HTTP status response code received when downloading an image for
    the NTP background. Logged for each image download attempt that failed.
  </summary>
</histogram>

<histogram
    name="IOS.HomeCustomization.Background.Ntp.ImageUserUploadedFetchError"
    enum="IOSUserUploadedImageError" expires_after="2027-01-19">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the result of loading a user-uploaded image on the NTP. This is
    logged each time the NTP is loaded or the background is updated with a
    user-uploaded image.
  </summary>
</histogram>

<histogram name="IOS.HomeCustomization.Background.Ntp.Loaded"
    enum="IOSHomeCustomizationBackgroundStyle" expires_after="2027-01-17">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the background style loaded on the NTP. This is logged each time on
    NTP initial load.
  </summary>
</histogram>

<histogram name="IOS.HomeCustomization.Background.RecentlyUsed.ClickCount"
    units="count" expires_after="2027-01-17">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the total number of times recently used backgrounds are selected
    while the Home Customization panel is open. This value is recorded once when
    the user dismisses the panel.
  </summary>
</histogram>

<histogram
    name="IOS.HomeCustomization.Background.RecentlyUsed.ImageUserUploadedFetchError"
    enum="IOSUserUploadedImageError" expires_after="2027-01-19">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the result of loading a user-uploaded image in the recently used
    list. This is logged each time the customization menu is opened and a
    user-uploaded image is present in the recently used list.
  </summary>
</histogram>

<histogram name="IOS.HomeCustomization.Background.UserUploaded.Error"
    enum="IOSUserUploadedImageError" expires_after="2027-01-03">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the result of a user attempting to upload an image for the ntp
    background. This is logged on each attempt to upload an image from the
    customization menu even if there is no error.
  </summary>
</histogram>

<histogram
    name="IOS.HomeCustomization.Background.UserUploaded.ImageMemoryFootprint"
    units="KB" expires_after="2027-01-17">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the memory footprint of Home’s user uploaded background image (in
    KB). This is logged each time the background image is loaded.
  </summary>
</histogram>

<histogram name="IOS.HomeCustomization.Background.UserUploaded.ImageSizeInKB"
    units="KB" expires_after="2027-01-03">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the size (in KB) of the image uploaded by the user for the ntp
    background customization on iOS. This is logged each time a user
    successfully selects and uploads a new background image.
  </summary>
</histogram>

<histogram name="IOS.HomeCustomization.Background.UserUploaded.Outcome"
    enum="IOSBackgroundSelectionOutcome" expires_after="2026-12-16">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the outcome of a user's interaction with the user-uploaded image
    picker. Logged each time the background picker action sheet is dismissed,
    capturing whether the user uploaded their own image, canceled, or canceled
    after selecting an image.
  </summary>
</histogram>

<histogram name="IOS.HomeCustomization.MagicStack.SafetyCheck.Enabled"
    enum="Boolean" expires_after="2027-01-19">
  <owner>adamta@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Records whether the Safety Check module is currently enabled in the Magic
    Stack from the Home Customization menu. Logged on each NTP impression.
  </summary>
</histogram>

<histogram name="IOS.HomeCustomization.MagicStack.SetUpList.Enabled"
    enum="Boolean" expires_after="2027-01-19">
  <owner>adamta@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Records whether the Set Up List module is currently enabled in the Magic
    Stack from the Home Customization menu. Logged on each NTP impression.
  </summary>
</histogram>

<histogram name="IOS.HomeCustomization.MagicStack.TabResumption.Enabled"
    enum="Boolean" expires_after="2027-01-19">
  <owner>adamta@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Records whether the Tab Resumption module is currently enabled in the Magic
    Stack from the Home Customization menu. Logged on each NTP impression.
  </summary>
</histogram>

<histogram name="IOS.HomeCustomization.MagicStack.Tips.Enabled" enum="Boolean"
    expires_after="2027-01-19">
  <owner>bwwilliams@google.com</owner>
  <owner>adamta@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Records whether the Tips module is currently enabled in the Magic Stack from
    the Home Customization menu. Logged on each NTP impression.
  </summary>
</histogram>

<histogram name="IOS.HomeCustomization.Opened"
    enum="IOSHomeCustomizationEntrypoint" expires_after="2027-01-19">
  <owner>adamta@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Records the entrypoint used to open the Home Customization menu. Logged
    whenever the Home Customization menu is opened.
  </summary>
</histogram>

<histogram name="IOS.InactiveTabs.Settings.Threshold"
    enum="InactiveTabsThresholdSettingType" expires_after="2026-11-01">
  <owner>alionadangla@chromium.org</owner>
  <owner>lpromero@chromium.org</owner>
  <summary>Logs the chosen inactive tab threshold at profile load.</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.GridStatus" enum="IOSIncognitoGridStatus"
    expires_after="2027-07-12">
  <owner>ddac@google.com</owner>
  <owner>chrome-kids-eng@google.com</owner>
  <summary>
    Logged when the incognito tab grid is shown. Logs the grid's enable status
    along with the user's management status, which can be unmanaged, under
    parental controls, or subject to enterprise policies.
  </summary>
</histogram>

<histogram name="IOS.Incognito.TimeSpent" units="ms" expires_after="2027-01-03">
  <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="2027-08-24">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@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.

    Warning: this histogram was expired from 2025-08-10 to 2026-08-24; data may
    be missing.
  </summary>
</histogram>

<histogram name="IOS.IncognitoInterstitial.Settings"
    enum="IncognitoInterstitialSettingsActionType" expires_after="2027-08-24">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@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.

    Warning: this histogram was expired from 2024-06-16 to 2026-08-24; data may
    be missing.
  </summary>
</histogram>

<histogram name="IOS.IncognitoLockImpression"
    enum="IncognitoLockImpressionType" expires_after="2027-01-03">
  <owner>alimariam@google.com</owner>
  <owner>chrome-browser-privacy-team@google.com</owner>
  <summary>Logged when the Incognito lock overlay is displayed.</summary>
</histogram>

<histogram name="IOS.IncognitoLockOverlayInteraction"
    enum="IncognitoLockOverlayInteractionType" expires_after="2026-12-27">
  <owner>alimariam@google.com</owner>
  <owner>chrome-browser-privacy-team@google.com</owner>
  <summary>
    Logged when the user interacts with the incognito lock overlay.
  </summary>
</histogram>

<histogram name="IOS.IncognitoLockSettingInteraction"
    enum="IncognitoLockSettingInteractionType" expires_after="2025-12-14">
  <owner>alimariam@google.com</owner>
  <owner>chrome-browser-privacy-team@google.com</owner>
  <summary>
    Logged when the user changes settings for Hide Incognito tabs.
  </summary>
</histogram>

<histogram name="IOS.IncognitoLockSettingStartupState"
    enum="IncognitoLockSettingStartupState" expires_after="2027-01-03">
  <owner>alimariam@google.com</owner>
  <owner>chrome-browser-privacy-team@google.com</owner>
  <summary>
    Logged once per app launch. Logs incognito lock setting state. 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.InputLatency.{ClassName}.{Gesture}.DroppedFrames"
    units="count" expires_after="never">
<!-- expires-never: Input latency is a guardrail metric -->

  <owner>junov@chromium.org</owner>
  <owner>bling-fundamentals@google.com</owner>
  <summary>
    Records the number of dropped frames for {Gesture} gestures on {ClassName}.
    This metric is subsampled to 1% of occurrences. This metric only captures
    the propagation of immediate UI updates. Delayed effects, such as future
    updates after network responses to requests triggered by a gesture, are not
    captured.

    Note: The dropped frame count is estimated and the reliability of these
    estimates on variable refresh rate displays (ProMotion) is not yet well
    understood.
  </summary>
  <token key="ClassName">
    <variant name="AssistantAIMViewController"/>
    <variant name="BrowserViewController"/>
    <variant name="IncognitoViewController"/>
    <variant name="NewTabPageViewController"/>
    <variant name="SceneViewController"/>
    <variant name="TabGridViewController"/>
    <variant name="TestUIViewControllerWithDisplayTracing"/>
  </token>
  <token key="Gesture">
    <variant name="Pan" summary="pan"/>
    <variant name="Tap" summary="tap"/>
  </token>
</histogram>

<histogram name="IOS.InputLatency.{ClassName}.{Gesture}.{MeasurementType}"
    units="ms" expires_after="never">
<!-- expires-never: Input latency is a guardrail metric -->

  <owner>junov@chromium.org</owner>
  <owner>bling-fundamentals@google.com</owner>
  <summary>
    Records {MeasurementType} for {Gesture} gestures on {ClassName}. This metric
    is subsampled to 1% of occurrences. This metric only captures the
    propagation of immediate UI updates. Delayed effects, such as future updates
    after network responses to requests triggered by a gesture, are not
    captured.

    Note: Scanout delays are estimated and the reliability of these estimates on
    variable refresh rate displays (ProMotion) is not yet well understood.
  </summary>
  <token key="ClassName">
    <variant name="AssistantAIMViewController"/>
    <variant name="BrowserViewController"/>
    <variant name="IncognitoViewController"/>
    <variant name="NewTabPageViewController"/>
    <variant name="SceneViewController"/>
    <variant name="TabGridViewController"/>
    <variant name="TestUIViewControllerWithDisplayTracing"/>
  </token>
  <token key="Gesture">
    <variant name="Pan" summary="pan"/>
    <variant name="Tap" summary="tap"/>
  </token>
  <token key="MeasurementType">
    <variant name="CommitToDisplay"
        summary="the display latency from CoreAnimation transaction commit to
                 display scanout"/>
    <variant name="InputToCommit"
        summary="the input latency from event dispatch to CoreAnimation
                 transaction commit"/>
    <variant name="InputToDisplay"
        summary="the input latency from event dispatch to display scanout"/>
  </token>
</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 a link is
    opened in Chrome in the last 21 days, the user will be considered a default
    user.
  </summary>
</histogram>

<histogram name="IOS.IsDefaultBrowser{NumberOfDays}" enum="Boolean"
    expires_after="2027-02-07">
  <owner>sebsg@chromium.org</owner>
  <owner>gujen@chromium.org</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 a link is
    opened in Chrome in the last {NumberOfDays} days, the user will be
    considered a default user.
  </summary>
  <token key="NumberOfDays">
    <variant name="1"/>
    <variant name="3"/>
    <variant name="14"/>
    <variant name="28"/>
    <variant name="35"/>
    <variant name="42"/>
  </token>
</histogram>

<histogram name="IOS.IsEnabled.Password.BottomSheet" enum="Boolean"
    expires_after="2026-04-26">
  <owner>sugoi@chromium.org</owner>
  <owner>tmartino@chromium.org</owner>
  <summary>
    At the moment of trying to enable the bottom sheet at page load time, track
    whether the bottom sheet is enabled or whether it has been disabled due to
    the number of dismisses.
  </summary>
</histogram>

<histogram name="IOS.JavaScript.ErrorReportProcessor"
    enum="IOSJavascriptErrorReportProcessorResult" expires_after="2027-02-07">
  <owner>michaeldo@google.com</owner>
  <owner>bling-fundamentals@google.com</owner>
  <summary>
    Records the result of creating, and potentially attempting to upload, a
    Javascript error report.
  </summary>
</histogram>

<histogram name="IOS.JavaScript.InterestingScriptError" enum="Boolean"
    expires_after="2027-02-07">
  <owner>michaeldo@google.com</owner>
  <owner>bling-fundamentals@google.com</owner>
  <summary>
    Records when a JavaScript error occurs as a result of executing a JavaScript
    string. Logged into the true bucket if the script error is interesting and
    would be reported as a JavaScript report. Logged into the false bucket if
    the error is ignored and not considered an actionable error.
  </summary>
</histogram>

<histogram name="IOS.JavaScript.Permissions.Geolocation.Authorized"
    enum="GeolocationAPI" expires_after="2027-02-07">
  <owner>michaeldo@google.com</owner>
  <owner>bling-fundamentals@google.com</owner>
  <summary>
    Records when a webpage attempts to access geolocation APIs and the user has
    authorized the API at the application level. NOTE: This is only logged if
    the JavaScript override is setup, which currently ONLY happens if the native
    level permission is disabled/undetermined at JavaScriptFeature creation
    time.
  </summary>
</histogram>

<histogram name="IOS.JavaScript.Permissions.Geolocation.Denied"
    enum="GeolocationAPI" expires_after="2027-02-07">
  <owner>michaeldo@google.com</owner>
  <owner>bling-fundamentals@google.com</owner>
  <summary>
    Records when a webpage attempts to access geolocation APIs, but the user has
    denied the API at the application level. NOTE: This is only logged if the
    JavaScript override is setup, which currently ONLY happens if the native
    level permission is disabled/undetermined at JavaScriptFeature creation
    time.
  </summary>
</histogram>

<histogram name="IOS.JavaScript.Permissions.Geolocation.NotDetermined"
    enum="GeolocationAPI" expires_after="2027-02-07">
  <owner>michaeldo@google.com</owner>
  <owner>bling-fundamentals@google.com</owner>
  <summary>
    Records when a webpage attempts to access geolocation APIs and the API
    access at the application level has not yet been determined. NOTE: This is
    only logged if the JavaScript override is setup, which currently ONLY
    happens if the native level permission is disabled/undetermined at
    JavaScriptFeature creation time.
  </summary>
</histogram>

<histogram name="IOS.JavaScript.Permissions.Geolocation.Restricted"
    enum="GeolocationAPI" expires_after="2026-12-01">
  <owner>michaeldo@google.com</owner>
  <owner>bling-fundamentals@google.com</owner>
  <summary>
    Records when a webpage attempts to access geolocation APIs, but the API
    access at the application level is restricted. NOTE: This is only logged if
    the JavaScript override is setup, which currently ONLY happens if the native
    level permission is disabled/undetermined at JavaScriptFeature creation
    time.
  </summary>
</histogram>

<histogram name="IOS.JavaScript.Permissions.Media.Denied" enum="MediaAPIParams"
    expires_after="2026-12-01">
  <owner>michaeldo@google.com</owner>
  <owner>bling-fundamentals@google.com</owner>
  <summary>
    Records when a webpage attempts to access media APIs, but the user has
    denied the API at the application level. NOTE: This is only logged if the
    JavaScript override is setup, which currently ONLY happens if the native
    level permission is disabled/undetermined at JavaScriptFeature creation
    time.
  </summary>
</histogram>

<histogram name="IOS.JavaScript.Permissions.Media.Granted"
    enum="MediaAPIParams" expires_after="2026-12-01">
  <owner>michaeldo@google.com</owner>
  <owner>bling-fundamentals@google.com</owner>
  <summary>
    Records when a webpage attempts to access media APIs and the user has
    granted the API at the application level. NOTE: This is only logged if the
    JavaScript override is setup, which currently ONLY happens if the native
    level permission is disabled/undetermined at JavaScriptFeature creation
    time.
  </summary>
</histogram>

<histogram name="IOS.JavaScript.Permissions.Media.Undetermined"
    enum="MediaAPIParams" expires_after="2026-12-01">
  <owner>michaeldo@google.com</owner>
  <owner>bling-fundamentals@google.com</owner>
  <summary>
    Records when a webpage attempts to access media APIs, but the application
    level access to the API has not yet been determined. NOTE: This is only
    logged if the JavaScript override is setup, which currently ONLY happens if
    the native level permission is disabled/undetermined at JavaScriptFeature
    creation time.
  </summary>
</histogram>

<histogram name="IOS.LaunchSource" enum="IOSLaunchSource" expires_after="never">
<!-- expires-never: Core metric to track how Chrome is launched -->

  <owner>sebsg@chromium.org</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>Records the way the app was launched on iOS.</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.LocationBar.Badge{State}" enum="IOSLocationBarBadgeType"
    expires_after="2027-02-07">
  <owner>joemerramos@google.com</owner>
  <owner>bling-alchemy@google.com</owner>
  <summary>
    Records the badge type when a badge {State} is received in the location bar.
  </summary>
  <token key="State">
    <variant name="Shown" summary="is being shown to a user."/>
    <variant name="Update"
        summary="is being received. Does not correlate with a badge being
                 shown to a user."/>
  </token>
</histogram>

<histogram name="IOS.LocationBar.LensOverlayEntrypointAvailable" enum="Boolean"
    expires_after="2027-02-07">
  <owner>christianxu@chromium.org</owner>
  <owner>stkhapugin@chromium.org</owner>
  <summary>
    Records that the lens entrypoint is available after a page has finished
    loading.
  </summary>
</histogram>

<histogram name="IOS.LocationBar.LensOverlayEntrypointHidden"
    enum="IOSLocationBarLeadingIconType" expires_after="2027-02-07">
  <owner>christianxu@chromium.org</owner>
  <owner>stkhapugin@chromium.org</owner>
  <summary>
    Recorded when the lens overlay entrypoint is hidden due to another button
    being prioritized. Records which button is shown in place of the lens
    overlay.
  </summary>
</histogram>

<histogram name="IOS.MagicStack.AppBundlePromo.Impression" enum="Boolean"
    expires_after="2026-11-29">
  <owner>ericekey@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Records impressions for the App Bundle Promo module in the Magic Stack.
  </summary>
</histogram>

<histogram name="IOS.MagicStack.Module.Click" enum="IOSMagicStackModuleType"
    expires_after="2027-01-31">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>scottyoder@google.com</owner>
  <summary>
    Records a user engagement with a module within the Magic Stack.
  </summary>
</histogram>

<histogram name="IOS.MagicStack.Module.Click.AppBundlePromo" units="index"
    expires_after="2026-11-01">
  <owner>ericekey@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Records the rank index of the App Bundle promo module when a user clicks on
    it.
  </summary>
</histogram>

<histogram name="IOS.MagicStack.Module.Click.DefaultBrowser" units="index"
    expires_after="2027-01-24">
  <owner>bmcclure@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Records the rank index of the Default Browser module when a user clicks on
    it.
  </summary>
</histogram>

<histogram name="IOS.MagicStack.Module.Click.MostVisited" units="index"
    expires_after="2027-09-28">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Records the rank index of the Most Visited Sites module when a user clicks
    on it.
  </summary>
</histogram>

<histogram name="IOS.MagicStack.Module.Click.OnNTP"
    enum="IOSMagicStackModuleType" expires_after="2027-09-13">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    This histogram is logged whenever a Magic Stack click happens on the NTP.
  </summary>
</histogram>

<histogram name="IOS.MagicStack.Module.Click.OnStart"
    enum="IOSMagicStackModuleType" expires_after="2027-09-28">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    This histogram is logged whenever a Magic Stack click happens on Start.
  </summary>
</histogram>

<histogram name="IOS.MagicStack.Module.Click.PriceTrackingPromo" units="index"
    expires_after="2025-08-06">
  <owner>davidjm@chromium.org</owner>
  <owner>chrome-shopping@google.com</owner>
  <summary>
    Records the rank index of the Price Tracking Promo module when a user taps
    on it.
  </summary>
</histogram>

<histogram name="IOS.MagicStack.Module.Click.SafetyCheck" units="index"
    expires_after="2026-10-25">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Records the rank index of the Safety Check module when a user clicks on it.
  </summary>
</histogram>

<histogram name="IOS.MagicStack.Module.Click.SendTabPromo" units="index"
    expires_after="2026-08-20">
  <owner>hiramahmood@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Records the rank index of the Send Tab Promo module when a user taps on it.
  </summary>
</histogram>

<histogram name="IOS.MagicStack.Module.Click.Shortcuts" units="index"
    expires_after="2027-09-27">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Records the rank index of the Shortcuts module when a user clicks on it.
  </summary>
</histogram>

<histogram name="IOS.MagicStack.Module.Click.TabResumption" units="index"
    expires_after="2027-02-07">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Records the rank index of the Tab Resumption module when a user clicks on
    it.
  </summary>
</histogram>

<histogram name="IOS.MagicStack.Module.Click.Tips" units="index"
    expires_after="2027-09-26">
  <owner>bwwilliams@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Records the rank index of the Tips module when a user clicks on it.
  </summary>
</histogram>

<histogram name="IOS.MagicStack.Module.Disabled" enum="IOSMagicStackModuleType"
    expires_after="2027-01-25">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>Records when a module was disabled.</summary>
</histogram>

<histogram name="IOS.MagicStack.Module.TopImpression"
    enum="IOSMagicStackModuleType" expires_after="2027-01-31">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>scottyoder@google.com</owner>
  <summary>
    Records the first module shown for every Magic Stack impression.
  </summary>
</histogram>

<histogram
    name="IOS.MagicStack.Module.{Event}.TabResumption.{Surface}.{Source}"
    units="index" expires_after="2027-02-14">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Records the rank index of the Tab Resumption module displaying a {Source}
    tab, if it is displaying on {Surface} on {Event} event.
    &quot;IOS.MagicStack.Module.Click.TabResumption&quot; is also recorded.
  </summary>
  <token key="Event">
    <variant name="Click" summary="a click"/>
    <variant name="Impression" summary="an impression"/>
  </token>
  <token key="Surface">
    <variant name="OnNTP" summary="NTP"/>
    <variant name="OnStart" summary="start"/>
  </token>
  <token key="Source">
    <variant name="Recent" summary="local recent"/>
    <variant name="Sync" summary="distant synced"/>
  </token>
</histogram>

<histogram name="IOS.MagicStack.ScrollActionToIndex" units="index"
    expires_after="2027-09-07">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Records the Magic Stack card index to which the user scrolled to each time a
    scroll to a new module happens.
  </summary>
</histogram>

<histogram name="IOS.MagicStack.ShopCard.{Type}.Impression" units="index"
    expires_after="2026-09-06">
  <owner>davidjm@chromium.org</owner>
  <owner>thegreenfrog@google.com</owner>
  <owner>gloriafang@google.com</owner>
  <summary>
    Records impressions for different variations of the ShopCard module in the
    magic stack. In this instance, {Type}.
  </summary>
  <token key="Type">
    <variant name="PriceTracking"
        summary="a price drop is shown on the ShopCard, if there is a price
                 drop on the user's tracked products"/>
    <variant name="Reviews"
        summary="reviews are shown on the ShopCard, if the user recently
                 navigated to a URL we have reviews for"/>
  </token>
</histogram>

<histogram name="IOS.MagicStack.ShopCard.{Type}.ImpressionLimitStorageSize"
    units="KB" expires_after="2026-08-09">
  <owner>davidjm@chromium.org</owner>
  <owner>chrome-shopping@google.com</owner>
  <summary>
    The size of the storage in user preferences regarding impression counts for
    various cards in the Magic Stack. This storage enables auto dismissing cards
    after 3 impressions. This instance is for the {Type} card.
  </summary>
  <token key="Type">
    <variant name="PriceDropOnTrackedItem"
        summary="price drop on tracked item"/>
    <variant name="TabResumptionRegular" summary="regular tab resumption"/>
    <variant name="TabResumptionWithPriceDrop"
        summary="tab resumption with a price drop"/>
    <variant name="TabResumptionWithPriceTracking"
        summary="tab resumption where the URL is price trackable"/>
  </token>
</histogram>

<histogram name="IOS.MagicStack.TabResumption.{Type}.Impression" units="index"
    expires_after="2027-02-14">
  <owner>davidjm@chromium.org</owner>
  <owner>thegreenfrog@google.com</owner>
  <owner>gloriafang@google.com</owner>
  <summary>
    Records impressions for different variations of the Tab Resumption module in
    the magic stack. In this instance, {Type}.
  </summary>
  <token key="Type">
    <variant name="PriceDrop"
        summary="a price drop is shown on Tab Resumption, if a price drop
                 exists for the URL"/>
    <variant name="Regular"
        summary="regular Tab Resumption is shown with no variation"/>
  </token>
</histogram>

<histogram name="IOS.MainFrameNavigationIsInBrowserLockdownMode" enum="Boolean"
    expires_after="2027-01-04">
  <owner>joemerramos@chromium.org</owner>
  <owner>bling-fundamentals@google.com</owner>
  <summary>
    Records whether Browser 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.MemoryExperimenter.AllocationTime" units="ms"
    expires_after="2025-11-09">
  <owner>rohitrao@google.com</owner>
  <owner>bling-fundamentals@google.com</owner>
  <summary>
    The time take to allocate memory and fill it with random bytes during memory
    experimentation. Recorded each time that memory is allocated by the memory
    experimenter provider.
  </summary>
</histogram>

<histogram
    name="IOS.MetricKit.{MXVersion}ApplicationHangTime{ActivityReportDomain}"
    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>
  <improvement direction="LOWER_IS_BETTER"/>
  <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.
    The exact percentage of users who are opted into sharing data with Apple is
    not known, but see go/chrome-uma-metrickit-sharing-rate for an estimate.

    Note: Data is received from Apple once a day when Chrome is running,
    covering the previous 24 hours as well as any older data that has not yet
    been delivered to Chrome. This means that the date the data is reported may
    be later than the user activity it corresponds to.

    {MXVersion}

    {ActivityReportDomain}

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

<histogram name="IOS.MetricKit.{MXVersion}ApplicationResumeTime" units="ms"
    expires_after="2027-01-31">
  <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.
    The exact percentage of users who are opted into sharing data with Apple is
    not known, but see go/chrome-uma-metrickit-sharing-rate for an estimate.

    Note: Data is received from Apple once a day when Chrome is running,
    covering the previous 24 hours as well as any older data that has not yet
    been delivered to Chrome. This means that the date the data is reported may
    be later than the user activity it corresponds to.

    {MXVersion}
  </summary>
  <token key="MXVersion" variants="MXVersion"/>
</histogram>

<histogram
    name="IOS.MetricKit.{MXVersion}AverageSuspendedMemory{ActivityReportDomain}"
    units="MB" expires_after="2027-01-31">
  <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.
    The exact percentage of users who are opted into sharing data with Apple is
    not known, but see go/chrome-uma-metrickit-sharing-rate for an estimate.

    Note: Data is received from Apple once a day when Chrome is running,
    covering the previous 24 hours as well as any older data that has not yet
    been delivered to Chrome. This means that the date the data is reported may
    be later than the user activity it corresponds to.

    {MXVersion}

    {ActivityReportDomain}
  </summary>
  <token key="MXVersion" variants="MXVersion"/>
  <token key="ActivityReportDomain" variants="ActivityReportDomain"/>
</histogram>

<histogram
    name="IOS.MetricKit.{MXVersion}BackgroundExitData{ActivityReportDomain}"
    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>
  <improvement direction="LOWER_IS_BETTER"/>
  <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.
    The exact percentage of users who are opted into sharing data with Apple is
    not known, but see go/chrome-uma-metrickit-sharing-rate for an estimate.

    Note: Data is received from Apple once a day when Chrome is running,
    covering the previous 24 hours as well as any older data that has not yet
    been delivered to Chrome. This means that the date the data is reported may
    be later than the user activity it corresponds to.

    {MXVersion}

    {ActivityReportDomain}

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

<histogram
    name="IOS.MetricKit.{MXVersion}BackgroundTimePerDay{ActivityReportDomain}"
    units="ms" expires_after="2027-07-20">
  <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.
    The exact percentage of users who are opted into sharing data with Apple is
    not known, but see go/chrome-uma-metrickit-sharing-rate for an estimate.

    Note: Data is received from Apple once a day when Chrome is running,
    covering the previous 24 hours as well as any older data that has not yet
    been delivered to Chrome. This means that the date the data is reported may
    be later than the user activity it corresponds to.

    {MXVersion}

    {ActivityReportDomain}
  </summary>
  <token key="MXVersion" variants="MXVersion"/>
  <token key="ActivityReportDomain" variants="ActivityReportDomain"/>
</histogram>

<histogram name="IOS.MetricKit.{MXVersion}CPUTimePerDay{ActivityReportDomain}"
    units="s" expires_after="2027-02-07">
  <owner>justincohen@chromium.org</owner>
  <owner>bling-fundamentals@google.com</owner>
  <summary>
    The total amout of CPU time used by the app over a 24 hour period. This is
    logged when an MXMetricPayload is received (one per day).

    Recorded only if user opted in for sharing diagnostic data on iOS device.
    The exact percentage of users who are opted into sharing data with Apple is
    not known, but see go/chrome-uma-metrickit-sharing-rate for an estimate.

    Note: Data is received from Apple once a day when Chrome is running,
    covering the previous 24 hours as well as any older data that has not yet
    been delivered to Chrome. This means that the date the data is reported may
    be later than the user activity it corresponds to.

    {MXVersion}

    {ActivityReportDomain}
  </summary>
  <token key="MXVersion" variants="MXVersion"/>
  <token key="ActivityReportDomain" variants="ActivityReportDomain"/>
</histogram>

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

  <owner>justincohen@chromium.org</owner>
  <owner>chrome-analysis-team@google.com</owner>
  <improvement direction="LOWER_IS_BETTER"/>
  <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.ColdStartFromMain 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. This metric only covers cold starts, that is, when
    Chrome is not running and is then launched into the foreground. It does not
    cover warms starts, that is, when Chrome is already running in the
    background and is then brought into the foreground. 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 with Apple. The exact percentage of
    users who are opted into sharing data with Apple is not known, but see
    go/chrome-uma-metrickit-sharing-rate for an estimate.

    Note: Data is received from Apple once a day when Chrome is running,
    covering the previous 24 hours as well as any older data that has not yet
    been delivered to Chrome. This means that the date the data is reported may
    be later than the user activity it corresponds to.

    {MXVersion}

    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}ForegroundExitData{ActivityReportDomain}"
    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>
  <improvement direction="LOWER_IS_BETTER"/>
  <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.
    The exact percentage of users who are opted into sharing data with Apple is
    not known, but see go/chrome-uma-metrickit-sharing-rate for an estimate.

    Note: Data is received from Apple once a day when Chrome is running,
    covering the previous 24 hours as well as any older data that has not yet
    been delivered to Chrome. This means that the date the data is reported may
    be later than the user activity it corresponds to.

    {MXVersion}

    {ActivityReportDomain}

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

<histogram
    name="IOS.MetricKit.{MXVersion}ForegroundTimePerDay{ActivityReportDomain}"
    units="s" expires_after="2026-10-25">
  <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.
    The exact percentage of users who are opted into sharing data with Apple is
    not known, but see go/chrome-uma-metrickit-sharing-rate for an estimate.

    Note: Data is received from Apple once a day when Chrome is running,
    covering the previous 24 hours as well as any older data that has not yet
    been delivered to Chrome. This means that the date the data is reported may
    be later than the user activity it corresponds to.

    {MXVersion}

    {ActivityReportDomain}
  </summary>
  <token key="MXVersion" variants="MXVersion"/>
  <token key="ActivityReportDomain" variants="ActivityReportDomain"/>
</histogram>

<histogram name="IOS.MetricKit.{MXVersion}OptimizedTimeToFirstDraw" units="ms"
    expires_after="2026-11-29">
  <owner>justincohen@chromium.org</owner>
  <owner>bling-fundamentals@google.com</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. The exact percentage of users who are
    opted into sharing data with Apple is not known, but see
    go/chrome-uma-metrickit-sharing-rate for an estimate.

    Note: Data is received from Apple once a day when Chrome is running,
    covering the previous 24 hours as well as any older data that has not yet
    been delivered to Chrome. This means that the date the data is reported may
    be later than the user activity it corresponds to.

    {MXVersion}
  </summary>
  <token key="MXVersion" variants="MXVersion"/>
</histogram>

<histogram
    name="IOS.MetricKit.{MXVersion}PeakMemoryUsage{ActivityReportDomain}"
    units="MB" expires_after="2027-01-31">
  <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.
    The exact percentage of users who are opted into sharing data with Apple is
    not known, but see go/chrome-uma-metrickit-sharing-rate for an estimate.

    Note: Data is received from Apple once a day when Chrome is running,
    covering the previous 24 hours as well as any older data that has not yet
    been delivered to Chrome. This means that the date the data is reported may
    be later than the user activity it corresponds to.

    {MXVersion}

    {ActivityReportDomain}
  </summary>
  <token key="MXVersion" variants="MXVersion"/>
  <token key="ActivityReportDomain" variants="ActivityReportDomain"/>
</histogram>

<histogram name="IOS.MetricKit.{MXVersion}TimeToFirstDraw" units="ms"
    expires_after="2027-01-31">
  <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.
    The exact percentage of users who are opted into sharing data with Apple is
    not known, but see go/chrome-uma-metrickit-sharing-rate for an estimate.

    Note: Data is received from Apple once a day when Chrome is running,
    covering the previous 24 hours as well as any older data that has not yet
    been delivered to Chrome. This means that the date the data is reported may
    be later than the user activity it corresponds to.

    {MXVersion}
  </summary>
  <token key="MXVersion" variants="MXVersion"/>
</histogram>

<histogram name="IOS.Minimap.AddressValidation.Outcome"
    enum="IOSAddressValidationOutcome" expires_after="2027-08-18">
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    The result of the revalidation of the address to avoid false positives.
  </summary>
</histogram>

<histogram name="IOS.MiniMap.ConsentOutcome" enum="IOSMiniMapConsentOutcome"
    expires_after="2027-08-18">
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>Outcome of the MiniMap consent screen.</summary>
</histogram>

<histogram name="IOS.MiniMap.Link.ConsentOutcome"
    enum="IOSMiniMapConsentOutcome" expires_after="2027-08-18">
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>Outcome of the MiniMap consent screen when showing a link.</summary>
</histogram>

<histogram name="IOS.MiniMap.Link.Outcome" enum="IOSMiniMapOutcome"
    expires_after="2027-08-18">
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>Outcome of the MiniMap screen when showing a link.</summary>
</histogram>

<histogram name="IOS.MiniMap.Outcome" enum="IOSMiniMapOutcome"
    expires_after="2027-08-18">
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>Outcome of the MiniMap screen.</summary>
</histogram>

<histogram name="IOS.MostVisited.PinnedSiteForm.{FormType}"
    enum="IOSMostVisitedPinSiteFormUserAction" expires_after="2027-02-07">
  <owner>ginnyhuang@chromium.org</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Records the user action on the {FormType} form for pinned sites, once every
    time the form is displayed.
  </summary>
  <token key="FormType">
    <variant name="AddSite" summary="Add Site"/>
    <variant name="EditSite" summary="Edit Site"/>
  </token>
</histogram>

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

<histogram name="IOS.MultiWindow.ConnectedScenesCount" units="scenes"
    expires_after="2027-02-17">
  <owner>fedegermi@google.com</owner>
  <owner>marq@chromium.org</owner>
  <summary>Records the number of connected scenes.</summary>
</histogram>

<histogram name="IOS.MultiWindow.DisconnectedScenesCount" units="scenes"
    expires_after="2027-01-28">
  <owner>fedegermi@google.com</owner>
  <owner>marq@chromium.org</owner>
  <summary>Records the number of disconnected scenes.</summary>
</histogram>

<histogram name="IOS.MultiWindow.OpenInNewWindow" enum="WindowActivityOrigin"
    expires_after="2027-02-07">
  <owner>marq@chromium.org</owner>
  <owner>fedegermi@google.com</owner>
  <summary>
    The source of &quot;Open in new Window&quot; user requests. Recorded when a
    newly created window is added to a session. Collection of
    WindowActivityRestoredOrigin data is intentionally skipped. Note that
    computation was wrong until M125.
  </summary>
</histogram>

<histogram name="IOS.Notification.Dismissed" enum="NotificationType"
    expires_after="2027-01-24">
  <owner>scottyoder@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Logs when a notification was dismissed on a user's device. Will be logged
    when the user opens the app.
  </summary>
</histogram>

<histogram name="IOS.Notification.Interaction" enum="NotificationType"
    expires_after="2027-01-24">
  <owner>scottyoder@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Logs when a notification was interacted with on a user's device. Will be
    logged when the user opens the app.
  </summary>
</histogram>

<histogram name="IOS.Notification.Received" enum="NotificationType"
    expires_after="2027-01-24">
  <owner>thegreenfrog@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Logs when a notification was received on a user's device. Will be logged
    when the user opens the app, after the notification has been received.
  </summary>
</histogram>

<histogram name="IOS.Notifications.OptInPrompt.Action"
    enum="IOSNotificationsOptInActionOnPrompt" expires_after="2027-01-24">
  <owner>hiramahmood@google.com</owner>
  <owner>scottyoder@google.com</owner>
  <summary>Logs a user's action on the Notifications Opt-In Prompt.</summary>
</histogram>

<histogram
    name="IOS.Notifications.PriceTracking.ClientStatus.Enabled.ByProvider"
    enum="Boolean" expires_after="2027-01-03">
  <owner>davidjm@chromium.org</owner>
  <owner>chrome-shopping@google.come</owner>
  <summary>
    Logs the permission status, stored in iOS settings, the user has given for
    receiving price tracking notifications on the device. Logged every time the
    metrics provider reports filter metrics.
  </summary>
</histogram>

<histogram name="IOS.Notifications.SafetyCheck.Dismissed"
    enum="IOSSafetyCheckNotificationType" expires_after="2027-02-07">
  <owner>bwwilliams@google.com</owner>
  <owner>scottyoder@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Logs when a Safety Check notification that was triggered appears to have
    dismissed or cleared from the notification center. Will be logged when or if
    the app starts again, after the notification has dismissed.
  </summary>
</histogram>

<histogram name="IOS.Notifications.SafetyCheck.Interaction"
    enum="IOSSafetyCheckNotificationType" expires_after="2027-02-07">
  <owner>bwwilliams@google.com</owner>
  <owner>scottyoder@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Logs when the user interacts with a Safety Check notification.
  </summary>
</histogram>

<histogram name="IOS.Notifications.SafetyCheck.NotificationsOptInSource"
    enum="IOSSafetyCheckNotificationsOptInSource" expires_after="2027-02-07">
  <owner>bwwilliams@google.com</owner>
  <owner>scottyoder@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Logs the source where the user opted in or opted out of receiving Safety
    Check notifications.
  </summary>
</histogram>

<histogram name="IOS.Notifications.SafetyCheck.Requested"
    enum="IOSSafetyCheckNotificationType" expires_after="2027-02-07">
  <owner>bwwilliams@google.com</owner>
  <owner>scottyoder@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Logs when a Safety Check notification is requested to be sent to the user.
    Note: this does not indicate that the notification was received by the user,
    only that the notification was requested to be sent.
  </summary>
</histogram>

<histogram name="IOS.Notifications.SafetyCheck.Triggered"
    enum="IOSSafetyCheckNotificationType" expires_after="2027-02-07">
  <owner>bwwilliams@google.com</owner>
  <owner>scottyoder@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Logs when a Safety Check notification that was requested appears to have
    triggered. Will be logged when or if the app starts again, after the
    notification has triggered.
  </summary>
</histogram>

<histogram
    name="IOS.Notifications.SendTab.MagicStack.AllowNotificationsPressed"
    enum="Boolean" expires_after="2026-06-07">
  <owner>hiramahmood@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Recorded when a user taps on the 'Allow Notifications' button on the Send
    Tab Notifications Promo module in the Magic Stack.
  </summary>
</histogram>

<histogram name="IOS.Notifications.SendTab.Received"
    enum="PushNotificationSettingsAuthorizationStatus"
    expires_after="2026-12-06">
  <owner>ioanabalas@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Logs the notification permission status when a Send Tab notification is
    received on the target device.
  </summary>
</histogram>

<histogram name="IOS.Notifications.Tips.ClientStatus.Enabled.ByProvider"
    enum="Boolean" expires_after="2026-12-27">
  <owner>hiramahmood@google.com</owner>
  <owner>scottyoder@google.com</owner>
  <summary>
    Logs the permission status, stored in iOS settings, the user has given for
    receiving tips notifications on the device. Logged every time the metrics
    provider reports filter metrics.
  </summary>
</histogram>

<histogram name="IOS.Notifications.Tips.Proactive.{Event}"
    enum="IOSTipsNotificationType" expires_after="2026-08-23">
  <owner>scottyoder@google.com</owner>
  <owner>bling-gsu-pod@google.com</owner>
  <summary>Logs when a Proactive Tips notification {Event}.</summary>
  <token key="Event">
    <variant name="Dismissed" summary="has been dismissed by the user"/>
    <variant name="Interaction" summary="is tapped by the user"/>
    <variant name="Sent" summary="is scheduled / requested"/>
    <variant name="Triggered" summary="appears to have triggered"/>
  </token>
</histogram>

<histogram name="IOS.Notifications.Tips.UserType"
    enum="IOSTipsNotificationUserType" expires_after="2026-12-16">
  <owner>scottyoder@google.com</owner>
  <owner>hiramahmood@google.com</owner>
  <summary>
    Logs when a Tips Notifications user is classified, when returning to the app
    after the first notification has been scheduled.
  </summary>
</histogram>

<histogram name="IOS.Notifications.Tips.{Event}" enum="IOSTipsNotificationType"
    expires_after="2027-01-03">
  <owner>scottyoder@google.com</owner>
  <owner>bling-gsu-pod@google.com</owner>
  <summary>Logs when a Tips notification {Event}.</summary>
  <token key="Event">
    <variant name="Dismissed" summary="has been dismissed by the user"/>
    <variant name="Interaction" summary="is tapped by the user"/>
    <variant name="Sent" summary="is scheduled / requested"/>
    <variant name="Triggered" summary="appears to have triggered"/>
  </token>
</histogram>

<histogram name="IOS.NTP.Click" enum="IOSHomeActionType"
    expires_after="2027-02-14">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    This histogram is logged whenever a click happens on the NTP.
  </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="2027-01-17">
  <owner>thegreenfrog@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.Impression.CustomizationState"
    enum="IOSNTPImpressionCustomizationState" expires_after="2027-02-07">
  <owner>adamta@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    The current visibility of NTP components chosen from the customization menu.
    Logged each time an NTP is made visible.
  </summary>
</histogram>

<histogram name="IOS.NTP.LandscapeMode" enum="Boolean"
    expires_after="2027-01-19">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records whether the NTP on iOS is displayed in landscape. This is logged as
    true when the NTP is opened directly in landscape mode or when the device is
    rotated to landscape while the NTP is visible.
  </summary>
</histogram>

<histogram name="IOS.NTP.LensButtonNewBadgeShown"
    enum="IOSNTPNewBadgeShownResult" expires_after="2024-11-17">
  <owner>hujasonx@google.com</owner>
  <owner>lens-in-bling-team@google.com</owner>
  <summary>
    The result of an attempt to show the New Feature badge on the Lens button in
    the NTP on iOS. Logged when the NTP view is created.
  </summary>
</histogram>

<histogram name="IOS.NTP.OverscrollAction" enum="IOSNTPOverscrollAction"
    expires_after="2027-06-07">
  <owner>scottyoder@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.NumberOfContextsToOpen" enum="ContextsToOpen"
    expires_after="2026-12-20">
  <owner>fedegermi@google.com</owner>
  <owner>bling-fundamentals@google.com</owner>
  <summary>
    Logs the number of times we receive one or more than one url context to
    open. This is done by checking how many UIOpenURLContext are passed to
    sceneState:hasPendingURLs:.
  </summary>
</histogram>

<histogram name="IOS.Omaha.HoursSinceLastSuccess" units="hours"
    expires_after="2025-12-14">
  <owner>rohitrao@google.com</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    The elapsed (wall clock) time since the last successful Omaha ping. This is
    recorded each time a ping receives a success response.
  </summary>
</histogram>

<histogram name="IOS.Omnibox.AimShortcutTapped" units="count"
    expires_after="2026-07-28">
  <owner>ameurhosni@google.com</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Records the number of characters typed in the omnibox, without
    autocompletion, before the user taps the AIM shortcut icon.
  </summary>
</histogram>

<histogram name="IOS.Omnibox.AssistiveKeyboard" enum="IOSOmniboxAssistiveKey"
    expires_after="2027-01-22">
  <owner>ameurhosni@google.com</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Records the assistive keyboard keys usage, when editing the omnibox.
  </summary>
</histogram>

<histogram name="IOS.Omnibox.Copy" enum="IOSOmniboxCopyType"
    expires_after="2027-01-22">
  <owner>christianxu@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>Records copy event in the omnibox with the type of copy.</summary>
</histogram>

<histogram name="IOS.Omnibox.MobileFusebox.TabPicker.PickedWebStateIsRealized"
    enum="Boolean" expires_after="2027-04-01">
  <owner>stkhapugin@google.com</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Logs whether a web state was already realized or needed to be forced
    realized when the user picks it in the composebox tab picker. Logged when
    the user taps on a tab item in the picker.
  </summary>
</histogram>

<histogram name="IOS.Omnibox.NumberOfLines" units="count"
    expires_after="2027-01-22">
  <owner>christianxu@google.com</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Records the number of lines shown in the multiline omnibox when a query is
    accepted.
  </summary>
</histogram>

<histogram name="IOS.Omnibox.SteadyStatePositionAtStartup"
    enum="OmniboxPositionType" expires_after="2027-01-22">
  <owner>christianxu@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Logs the steady state (unfocused) omnibox position when starting the app.
  </summary>
</histogram>

<histogram name="IOS.Omnibox.SteadyStatePositionAtStartup.Selected"
    enum="OmniboxPositionType" expires_after="2027-01-22">
  <owner>christianxu@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Logs the selected steady state (unfocused) omnibox position when starting
    the app. This only logged when the position is user selected.
  </summary>
</histogram>

<histogram name="IOS.Omnibox.SuggestionsListScrolled.{PageClass}"
    enum="Boolean" expires_after="2027-01-22">
  <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="2027-06-01">
  <owner>qpubert@chromium.org</owner>
  <owner>bling-squid-squad@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="2027-02-07">
  <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.ActionTriggered" enum="IOSOverflowMenuAction"
    expires_after="2027-03-31">
  <owner>gambard@chromium.org</owner>
  <owner>bling-meridian@google.com</owner>
  <summary>The action taken by the user on the overflow menu.</summary>
</histogram>

<histogram name="IOS.OverflowMenu.ActionTriggeredOnNTP"
    enum="IOSOverflowMenuAction" expires_after="2027-03-31">
  <owner>gambard@chromium.org</owner>
  <owner>bling-meridian@google.com</owner>
  <summary>
    The action taken by the user on the overflow menu when on NTP.
  </summary>
</histogram>

<histogram name="IOS.OverflowMenu.ActionType" enum="IOSOverflowMenuActionType"
    expires_after="2027-01-31">
  <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.Customization.ActionAdded"
    enum="IOSOverflowMenuAction" expires_after="2027-01-31">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>The action added during an overflow menu customization.</summary>
</histogram>

<histogram name="IOS.OverflowMenu.Customization.ActionRemoved"
    enum="IOSOverflowMenuAction" expires_after="2027-01-31">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>The action removed during an overflow menu customization.</summary>
</histogram>

<histogram name="IOS.OverflowMenu.Customization.ActionsCustomized"
    units="bitfield value" expires_after="2027-01-31">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    A bitfield value representing various sub-events that can take place during
    an action customization session. Only fired when some customization actually
    occurred.
  </summary>
</histogram>

<histogram name="IOS.OverflowMenu.Customization.ActionsReordered.FirstPosition"
    enum="IOSOverflowMenuAction" expires_after="2027-01-31">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>The action in the first position after reordering the menu.</summary>
</histogram>

<histogram
    name="IOS.OverflowMenu.Customization.ActionsReordered.FourthPosition"
    enum="IOSOverflowMenuAction" expires_after="2027-01-31">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    The action in the fourth position after customizing the menu.
  </summary>
</histogram>

<histogram
    name="IOS.OverflowMenu.Customization.ActionsReordered.SecondPosition"
    enum="IOSOverflowMenuAction" expires_after="2027-01-31">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    The action in the second position after customizing the menu.
  </summary>
</histogram>

<histogram name="IOS.OverflowMenu.Customization.ActionsReordered.ThirdPosition"
    enum="IOSOverflowMenuAction" expires_after="2027-01-31">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    The action in the third position after customizing the menu.
  </summary>
</histogram>

<histogram name="IOS.OverflowMenu.Customization.DestinationAdded"
    enum="IOSOverflowMenuDestination" expires_after="2027-01-31">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    The destination added during an overflow menu customization.
  </summary>
</histogram>

<histogram name="IOS.OverflowMenu.Customization.DestinationRemoved"
    enum="IOSOverflowMenuDestination" expires_after="2027-01-31">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    The destination removed during an overflow menu customization.
  </summary>
</histogram>

<histogram name="IOS.OverflowMenu.Customization.DestinationsCustomized"
    units="bitfield value" expires_after="2027-01-31">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    A bitfield value representing various sub-events that can take place during
    a destination customization session. Only fired when some customization
    actually occurred.
  </summary>
</histogram>

<histogram
    name="IOS.OverflowMenu.Customization.DestinationsReordered.FirstPosition"
    enum="IOSOverflowMenuDestination" expires_after="2027-01-31">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    The destination in the first position after the user manually reordered the
    menu.
  </summary>
</histogram>

<histogram
    name="IOS.OverflowMenu.Customization.DestinationsReordered.FourthPosition"
    enum="IOSOverflowMenuDestination" expires_after="2027-01-31">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    The destination in the fourth position after the user manually reordered the
    menu.
  </summary>
</histogram>

<histogram
    name="IOS.OverflowMenu.Customization.DestinationsReordered.SecondPosition"
    enum="IOSOverflowMenuDestination" expires_after="2027-01-31">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    The destination in the second position after the user manually reordered the
    menu.
  </summary>
</histogram>

<histogram
    name="IOS.OverflowMenu.Customization.DestinationsReordered.ThirdPosition"
    enum="IOSOverflowMenuDestination" expires_after="2027-01-31">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    The destination in the third position after the user manually reordered the
    menu.
  </summary>
</histogram>

<histogram name="IOS.OverflowMenu.DestinationsOrderChangedProgrammatically"
    enum="IOSOverflowMenuReorderingReason" expires_after="2027-01-31">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    The cause of the overflow menu being programatically reordered when it is
    reordered.
  </summary>
</histogram>

<histogram name="IOS.OverflowMenu.OverflowMenuVisited" units="bitfield value"
    expires_after="2027-01-31">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    A bitfield value representing various sub events that can take place when
    visiting the overflow menu. Fired once per visit, when the menu closes.
  </summary>
</histogram>

<histogram name="IOS.OverflowMenu.SmartSortingStateChange"
    enum="IOSOverflowMenuSmartSortingChange" expires_after="2027-01-31">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Whether Smart Sorting was newly enabled or disabled when the state changed.
  </summary>
</histogram>

<histogram name="IOS.OverflowMenu.TimeOpen" units="ms"
    expires_after="2027-01-31">
  <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.OverflowMenu.TimeOpen.ActionChosen" units="ms"
    expires_after="2027-01-31">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    The amount of time the overflow/tools menu is open and an action (the
    vertical list) is selected.
  </summary>
</histogram>

<histogram name="IOS.OverflowMenu.TimeOpen.DestinationChosen" units="ms"
    expires_after="2027-01-31">
  <owner>rkgibson@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    The amount of time the overflow/tools menu is open and a destination (the
    horizontal list) is selected.
  </summary>
</histogram>

<histogram name="IOS.OverflowMenu.UserScrolledToEndAndStartedCustomization"
    enum="Boolean" expires_after="2027-01-31">
  <owner>rkgibson@google.com</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Fired whenever the user ends an overflow menu session after having scrolled
    to the end of the menu. Records whether the user started the menu
    customization flow during that session.
  </summary>
</histogram>

<histogram name="IOS.PageActionMenu.FeatureRowSettingsOpened"
    enum="IOSPageActionMenuFeatureType" expires_after="2027-02-07">
  <owner>kanouche@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records when users navigate to settings or detailed views from Page Action
    Menu feature rows.
  </summary>
</histogram>

<histogram name="IOS.PageActionMenu.FeatureRowShown"
    enum="IOSPageActionMenuFeatureType" expires_after="2027-01-24">
  <owner>kanouche@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records when feature rows are displayed in the Page Action Menu.
  </summary>
</histogram>

<histogram name="IOS.PageActionMenu.FeatureRowUsed"
    enum="IOSPageActionMenuFeatureType" expires_after="2027-01-24">
  <owner>kanouche@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records when users interact with feature actions (buttons, toggles) in Page
    Action Menu feature rows.
  </summary>
</histogram>

<histogram name="IOS.PageActionMenu.Footer.RowShown"
    enum="IOSPageActionMenuFooterReason" expires_after="2026-11-21">
  <owner>fbeauchamp@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records when an ineligibility disclaimer is shown to the user in the Page
    Action Menu footer.
  </summary>
</histogram>

<histogram name="IOS.PageContext.AnnotatedPageContent.{Config}.ByteSize"
    units="bytes" expires_after="2027-05-01">
  <owner>nicolasmacbeth@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    The total size of the AnnotatedPageContent proto in bytes, broken down by
    configuration extraction mode. Logged when extraction finishes successfully.

    This metric is capped at 10 MB (recorded in raw bytes), providing high
    resolution for typical/small payloads (in the kilobyte range).
  </summary>
  <token key="Config" variants="PageContextConfigVariants"/>
</histogram>

<histogram
    name="IOS.PageContext.AnnotatedPageContent.{Config}.HighRangeSizeInKB"
    units="KB" expires_after="2026-11-22">
  <owner>nicolasmacbeth@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    The total size of the AnnotatedPageContent proto in Kilobytes, broken down
    by configuration extraction mode. Logged when extraction finishes
    successfully.

    This metric has a wide range capped at 500 MB (recorded in KB units). It
    provides coarser resolution but covers outlier big payloads, allowing us to
    detect potential IPC drop-offs or OOMs.
  </summary>
  <token key="Config" variants="PageContextConfigVariants"/>
</histogram>

<histogram
    name="IOS.PageContext.AnnotatedPageContent.{Status}.{Config}.Latency"
    units="ms" expires_after="2027-02-07">
  <owner>nicolasmacbeth@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    The latency of extracting AnnotatedPageContent data in milliseconds, broken
    down per completion status and configuration extraction mode. Logged when
    overall PageContext execution is complete.
  </summary>
  <token key="Status" variants="PageContextStatusVariants"/>
  <token key="Config" variants="PageContextConfigVariants"/>
</histogram>

<histogram name="IOS.PageContext.{Task}.{Status}.Latency" units="ms"
    expires_after="2027-01-03">
  <owner>nicolasmacbeth@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    The latency of extracting PageContext data in milliseconds, broken down per
    task (or overall execution), and per completion status. Logged when overall
    execution is complete. Each task has its own completion status.
  </summary>
  <token key="Task" variants="PageContextTaskVariants"/>
  <token key="Status" variants="PageContextStatusVariants"/>
</histogram>

<histogram name="IOS.PageLoad.DefaultModeMobile" enum="Boolean"
    expires_after="2027-01-28">
  <owner>gambard@chromium.org</owner>
  <owner>bling-fundamentals@google.com</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="2027-01-03">
  <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="2027-01-03">
  <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="2026-04-12">
  <owner>edchin@chromium.org</owner>
  <owner>justincohen@chromium.org</owner>
  <owner>asamidoi@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="2027-03-09">
  <owner>gambard@chromium.org</owner>
  <owner>bling-fundamentals@google.com</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.ParcelTracking.OptInStatus"
    enum="IOSParcelTrackingOptInStatus" expires_after="2025-07-06">
  <owner>hiramahmood@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Logs the opt-in status the user has given for whether or not they allow
    parcel tracking on the device. Logged once per app start. For users who have
    not yet interacted with the opt-in prompt, new users on M127 will log
    StatusNotSet, while users before M127 will log AskToTrack.
  </summary>
</histogram>

<histogram name="IOS.PartialTranslate.Outcome" enum="PartialTranslateOutcome"
    expires_after="2027-02-07">
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>The outcome of the partial translate feature.</summary>
</histogram>

<histogram name="IOS.PartialTranslate.SelectionLength" units="characters"
    expires_after="2027-07-30">
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>The length of the selection received from javascript.</summary>
</histogram>

<histogram name="IOS.PasswordBottomSheet.Details.ValidCredential"
    enum="Boolean" expires_after="2026-10-31">
  <owner>sugoi@chromium.org</owner>
  <owner>tmartino@chromium.org</owner>
  <summary>
    Tracks whether the credential used to open the credential details menu from
    the password suggestion bottom sheet is valid.
  </summary>
</histogram>

<histogram name="IOS.PasswordBottomSheet.ExitReason"
    enum="PasswordSuggestionBottomSheetExitReason" expires_after="2027-02-07">
  <owner>sugoi@chromium.org</owner>
  <owner>tmartino@chromium.org</owner>
  <summary>
    Tracks the bottom sheet dismissal, use of a password suggestion and long
    press menu events.
  </summary>
</histogram>

<histogram name="IOS.PasswordManager.BulkSavePasswordsInAccountCount"
    units="passwords" expires_after="2025-11-01">
  <owner>nicolasmacbeth@google.com</owner>
  <owner>tmartino@chromium.org</owner>
  <summary>
    The number of local passwords the user has moved to their account using the
    bulk save passwords in account module in password manager settings. This is
    logged when the user chooses to bulk move their passwords to their account.
  </summary>
</histogram>

<histogram name="IOS.PasswordManager.Favicons.Percentage" units="%"
    expires_after="2027-06-19">
  <owner>rgod@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.

    Note: this metric was expired from 2024-04-19 to 2025-05-13; data may be
    missing.
  </summary>
</histogram>

<histogram name="IOS.PasswordManager.Settings.DeleteAllSavedCredentialsActions"
    enum="IOSDeleteAllSavedCredentialsActions" expires_after="2026-12-01">
  <owner>mxlg@google.com</owner>
  <owner>bling-transactions@google.com</owner>
  <summary>
    Record the user's decisions when the confirmation dialog of deleting all
    saved credentials shows up.
  </summary>
</histogram>

<histogram name="IOS.PasswordManager.TrustedVaultKeyRetrievalPromo.Action"
    enum="PromoWithTrustedVaultKeyRetrievalAction" expires_after="2026-07-19">
  <owner>ylahodiuk@google.com</owner>
  <owner>rgod@google.com</owner>
  <summary>
    [iOS Only] Tracks impressions and clicks of the Password Manager Trusted
    Vault widget promo. Note: there might be multiple reports of the 'Acted
    upon' event per a single 'Displayed' event (this can make the interpretation
    harder as we are not be able to distinguish 100 display with 1 activation
    each, or 100 display with 50 having 2 activations and 50 without any).
  </summary>
</histogram>

<histogram name="IOS.PasswordManager.TrustedVaultNotification.Events"
    enum="IOSTipsTrustedVaultNotificationEvents" expires_after="2027-01-01">
  <owner>ylahodiuk@google.com</owner>
  <owner>rgod@google.com</owner>
  <summary>
    [iOS Only] Tracks events of the Password Manager Trusted Vault tips
    notification.
  </summary>
</histogram>

<histogram name="IOS.PaymentsBottomSheet.ExitReason"
    enum="PaymentsSuggestionBottomSheetExitReason" expires_after="2027-01-10">
  <owner>sugoi@chromium.org</owner>
  <owner>tmartino@chromium.org</owner>
  <summary>
    Tracks the bottom sheet dismissal or use of a payments suggestion.
  </summary>
</histogram>

<histogram name="IOS.PaymentsBottomSheetV3.TimeToTrigger.{Outcome}" units="ms"
    expires_after="2027-04-01">
  <owner>vincb@google.com</owner>
  <owner>noemies@google.com</owner>
  <owner>bling-transactions@google.com</owner>
  <summary>
    Records the elapsed time between receiving the signal to trigger the bottom
    sheet V3 and actually making a decision on triggering the sheet, split by
    {Outcome}. Recorded when making the decision to trigger the sheet.
  </summary>
  <token key="Outcome">
    <variant name="NotTriggered" summary="The sheet was not triggered."/>
    <variant name="Triggered" summary="The sheet was actually triggered."/>
  </token>
</histogram>

<histogram name="IOS.PaymentsBottomSheetV3.Triggered" enum="Boolean"
    expires_after="2027-01-03">
  <owner>vincb@google.com</owner>
  <owner>noemies@google.com</owner>
  <owner>bling-transactions@google.com</owner>
  <summary>
    Records the outcome of attempting to trigger the bottom sheet V3 as a
    boolean, true if it triggered or false if it didn't. Recorded when the
    decision is made on triggering the sheet which corresponds to when the
    activation signal is received from the sheet's form activity listeners.
  </summary>
</histogram>

<histogram name="IOS.Permission.Modal.Events" enum="IOSPermissionEvent"
    expires_after="2027-06-01">
  <owner>ewannpv@chromium.org</owner>
  <owner>bling-meridian@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="2027-06-01">
  <owner>ewannpv@chromium.org</owner>
  <owner>bling-meridian@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="2027-06-01">
  <owner>ewannpv@chromium.org</owner>
  <owner>bling-meridian@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.PersistTabContext.CreateDirectoryResult"
    enum="BooleanSuccess" expires_after="2027-02-11">
  <owner>cloutierc@google.com</owner>
  <owner>nicolasmacbeth@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records the result of attempting to create a profile-specific directory in
    which serialized page contexts are to be saved.
  </summary>
</histogram>

<histogram name="IOS.PersistTabContext.DeleteDirectoryResult"
    enum="IOSPersistTabContextDeleteDirectoryResult" expires_after="2027-01-10">
  <owner>cloutierc@google.com</owner>
  <owner>nicolasmacbeth@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records the outcome when the PersistTabContextBrowserAgent attempts to
    delete the persisted contexts directory and its contents. This cleanup
    process is performed for users who do not currently have the Persist Tab
    Context experiment enabled. This includes users for whom the experiment has
    been disabled, as well as those who have never been part of the experiment.
  </summary>
</histogram>

<histogram name="IOS.PersistTabContext.DeleteResult"
    enum="IOSPersistTabContextDeleteResult" expires_after="2027-02-11">
  <owner>cloutierc@google.com</owner>
  <owner>nicolasmacbeth@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records the result of attempting to delete a serialized page context from
    storage.
  </summary>
</histogram>

<histogram name="IOS.PersistTabContext.DeleteTime" units="ms"
    expires_after="2027-02-11">
  <owner>cloutierc@google.com</owner>
  <owner>nicolasmacbeth@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    The time taken to successfully delete a serialized page context from disk in
    milliseconds. Time is not logged for failures
  </summary>
</histogram>

<histogram name="IOS.PersistTabContext.PurgeFileResult" enum="BooleanSuccess"
    expires_after="2027-02-11">
  <owner>cloutierc@google.com</owner>
  <owner>nicolasmacbeth@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Logs the result of each individual file deletion attempt during the purging
    of expired persisted tab context files. This is recorded each time
    `PurgeExpiredPageContexts` tries to delete a file identified as expired.
  </summary>
</histogram>

<histogram name="IOS.PersistTabContext.ReadResult"
    enum="IOSPersistTabContextReadResult" expires_after="2027-02-07">
  <owner>cloutierc@google.com</owner>
  <owner>nicolasmacbeth@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records the result of attempting to read a serialized page context from
    storage.
  </summary>
</histogram>

<histogram name="IOS.PersistTabContext.ReadTime" units="ms"
    expires_after="2027-01-03">
  <owner>cloutierc@google.com</owner>
  <owner>nicolasmacbeth@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    The time taken to successfully read and parse a serialized page context from
    disk in milliseconds. This includes file reading and proto parsing. Time is
    not logged for failures
  </summary>
</histogram>

<histogram name="IOS.PersistTabContext.Size" units="bytes"
    expires_after="2027-01-17">
  <owner>cloutierc@google.com</owner>
  <owner>nicolasmacbeth@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    The size in bytes of each tab context that is persisted in storage. Logged
    whenever a tab context is saved to storage.
  </summary>
</histogram>

<histogram name="IOS.PersistTabContext.StorageDifference" units="difference"
    expires_after="2027-01-10">
  <owner>cloutierc@google.com</owner>
  <owner>nicolasmacbeth@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    The difference between the number of persisted page context files found in
    the storage directory and the number of WebStates currently in the
    WebStateLists of all active Browsers, calculated as (StoredFileCount -
    WebStateCount). A positive value suggests more persisted files than active
    tabs, potentially indicating orphaned data. A negative value means fewer
    persisted files than active tabs. This metric is logged once during the
    initialization of the PersistTabContextBrowserAgent.
  </summary>
</histogram>

<histogram name="IOS.PersistTabContext.WriteResult"
    enum="IOSPersistTabContextWriteResult" expires_after="2027-02-11">
  <owner>cloutierc@google.com</owner>
  <owner>nicolasmacbeth@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records the result of attempting to write a serialized page context to
    storage.
  </summary>
</histogram>

<histogram name="IOS.PersistTabContext.WriteTime" units="ms"
    expires_after="2027-02-11">
  <owner>cloutierc@google.com</owner>
  <owner>nicolasmacbeth@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    The time taken to successfully write a serialized page context to disk in
    milliseconds. This includes directory creation and file writing. Time is not
    logged for failures
  </summary>
</histogram>

<histogram name="IOS.PictureInPicture.{Feature}.AppRestoration"
    enum="PictureInPictureAppRestoration" expires_after="2027-01-28">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Logs the app restoration method (e.g. via the PiP's full-screen button or
    manually reopening the app) for a given Picture in Picture feature. Logged
    when the app is restored from the background while a Picture in Picture
    window is active.
  </summary>
  <token key="Feature" variants="PictureInPictureFeature"/>
</histogram>

<histogram name="IOS.PictureInPicture.{Feature}.DismissalReason"
    enum="PictureInPictureDismissalReason" expires_after="2027-01-28">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Logs the session dismissal reason for a given Picture in Picture feature.
    Logged when the Picture in Picture session is dismissed.
  </summary>
  <token key="Feature" variants="PictureInPictureFeature"/>
</histogram>

<histogram name="IOS.PictureInPicture.{Feature}.PrimaryButtonTapCount"
    units="count" expires_after="2027-01-28">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Logs the number of times the user tapped the primary action button in the
    fullscreen video player within the app for a given Picture in Picture
    feature. Logged when the Picture in Picture coordinator is dismissed.
  </summary>
  <token key="Feature" variants="PictureInPictureFeature"/>
</histogram>

<histogram name="IOS.PictureInPicture.{Feature}.SessionDuration" units="ms"
    expires_after="2027-01-28">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Logs the duration of a Picture in Picture session for a given feature.
    Logged when the Picture in Picture session successfully ends (e.g. when
    closed by the user or app was restored).
  </summary>
  <token key="Feature" variants="PictureInPictureFeature"/>
</histogram>

<histogram name="IOS.PictureInPicture.{Feature}.StartSuccessful" enum="Boolean"
    expires_after="2027-01-28">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Logs whether a Picture in Picture session started successfully for a given
    feature.
  </summary>
  <token key="Feature" variants="PictureInPictureFeature"/>
</histogram>

<histogram name="IOS.PostDefaultAbandonmentPromo.UserAction"
    enum="IOSPostRestoreDefaultBrowserActionOnPrompt"
    expires_after="2024-12-31">
  <owner>gujen@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records which action the user took when the post-default browser abandonment
    promo was displayed. Recorded once per promo impression, when the promo is
    dismissed.
  </summary>
</histogram>

<histogram name="IOS.PostRestoreDefaultBrowser.ActionOnPrompt"
    enum="IOSPostRestoreDefaultBrowserActionOnPrompt"
    expires_after="2025-01-26">
  <owner>hiramahmood@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Logs a user's action on the Post Restore Default Browser promo.
  </summary>
</histogram>

<histogram name="IOS.PostRestoreSignin.Choice"
    enum="IOSPostRestoreSigninChoice" expires_after="2026-12-14">
  <owner>scottyoder@google.com</owner>
  <owner>jlebel@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Logs a user's choice when presented with the Post Restore Signin Promo.
    Note: this metric got expired for a while between 2024-03-31 and 2024-11-07.
  </summary>
</histogram>

<histogram name="IOS.PostRestoreSignin.Displayed" enum="Boolean"
    expires_after="2026-12-14">
  <owner>scottyoder@google.com</owner>
  <owner>jlebel@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Indicates whether the Post Restore Signin Promo was displayed. Note: this
    metric got expired for a while between 2024-03-31 and 2024-11-07.
  </summary>
</histogram>

<histogram name="IOS.PreviousActiveDays{Days}" units="count"
    expires_after="2027-03-01">
  <owner>gujen@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the total number of days during which the client was active in a
    lookback window of {Days} days ending on the day before the current. A
    client is considered active on a given day if it emitted either
    Session.IsActive=Active or any value to Session.TotalDuration. Recorded the
    first time a session starts or ends per calendar day (based on current local
    time).
  </summary>
  <token key="Days">
    <variant name="7"/>
    <variant name="14"/>
    <variant name="28"/>
  </token>
</histogram>

<histogram name="IOS.PriceInsights.Model.CanTrack" enum="Boolean"
    expires_after="2027-03-01">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Whether or not the current URL and the user are eligible for tracking on
    page load.
  </summary>
</histogram>

<histogram name="IOS.PriceInsights.Model.IsSubscribed" enum="Boolean"
    expires_after="2027-03-01">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Whether or not the current url is currently being tracked on page load.
  </summary>
</histogram>

<histogram name="IOS.PriceInsights.Model.PriceInsightsInfo"
    enum="BooleanAvailable" expires_after="2027-03-01">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Whether or not PriceInsightsInfo was available on page load.
  </summary>
</histogram>

<histogram name="IOS.PriceInsights.Model.ProductInfo" enum="BooleanAvailable"
    expires_after="2027-03-01">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>Whether or not ProductInfo was available on page load.</summary>
</histogram>

<histogram name="IOS.Process.ActivePrewarm" enum="Boolean"
    expires_after="2027-04-05">
  <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.EligiblePromosInQueueCount" units="count"
    expires_after="2027-02-07">
  <owner>gayane@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Logs number of eligible for display promos in the promos manager's queue
    when next promo to display is identified. Recorded only if there is at least
    1 eligible promo.
  </summary>
</histogram>

<histogram name="IOS.PromosManager.Promo" enum="IOSPromosManagerPromo"
    expires_after="2027-02-07">
  <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.Type" enum="IOSPromosManagerPromoType"
    expires_after="2027-02-07">
  <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.PromosManager.{Promo}.RegistrationStateChanged"
    enum="IOSPromoRegistrationState" expires_after="2027-02-07">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    ogs the registration state change for a given promo. This is emitted when a
    promo is registered, deregistered after being displayed, or deregistered
    because its eligibility changed.
  </summary>
  <token key="Promo" variants="PromosManagerPromo"/>
</histogram>

<histogram name="IOS.PromoStyleSheet.Outcome" enum="PromoStyleSheetAction"
    expires_after="2027-01-31">
  <owner>pabouchard@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the outcome of user interactions with the promo style sheet. This
    includes clicks on the primary, secondary, or tertiary action buttons, as
    well as dismissing the alert.
  </summary>
</histogram>

<histogram name="IOS.PushNotification.APNSDeviceRegistration"
    enum="BooleanSuccess" expires_after="2027-02-22">
  <owner>danieltwhite@google.com</owner>
  <owner>scottyoder@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="2027-05-03">
  <owner>danieltwhite@google.com</owner>
  <owner>scottyoder@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="2027-04-21">
  <owner>scottyoder@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.Client.Disabled"
    enum="PushNotificationClientId" expires_after="2027-02-07">
  <owner>scottyoder@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Logs that a particular Push Notification Client was disabled by the user.
  </summary>
</histogram>

<histogram name="IOS.PushNotification.Client.Enabled"
    enum="PushNotificationClientId" expires_after="2027-02-07">
  <owner>scottyoder@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Logs that a particular Push Notification Client was enabled by the user.
  </summary>
</histogram>

<histogram name="IOS.PushNotification.ClientManagerAccessFailure"
    enum="PushNotificationClientManagerFailurePoint" expires_after="2027-05-03">
  <owner>scottyoder@google.com</owner>
  <owner>treib@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Logs the specific code path where obtaining the
    PushNotificationClientManager for the current Profile failed during
    notification processing. Helps identify failures caused by
    PushNotificationProfileService unavailability. Essential for monitoring the
    health of the multi-Profile push notification infrastructure, especially
    during its initial rollout and migration.
  </summary>
</histogram>

<histogram name="IOS.PushNotification.EnabledPermisisons"
    enum="PushNotificationPermissionPromptStatus" expires_after="2027-01-10">
  <owner>danieltwhite@google.com</owner>
  <owner>scottyoder@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.EnabledPermisisons.{Status}"
    enum="PushNotificationOptInAccessPoint" expires_after="2027-02-07">
  <owner>thegreenfrog@google.com</owner>
  <owner>bling-gsu-pod@google.com</owner>
  <summary>
    Logs a user {Status} decision in reaction to a push notification permissions
    prompt the current device.
  </summary>
  <token key="Status">
    <variant name="Denied"/>
    <variant name="Enabled"/>
    <variant name="Error"/>
  </token>
</histogram>

<histogram name="IOS.PushNotification.IncomingNotificationProcessingTime"
    units="ms" expires_after="2027-05-24">
  <owner>danieltwhite@google.com</owner>
  <owner>scottyoder@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.PushNotification.LifecyleEvents"
    enum="PushNotificationLifecycleEvent" expires_after="2026-12-28">
  <owner>danieltwhite@google.com</owner>
  <owner>scottyoder@google.com</owner>
  <summary>
    Logs various lifecycle stages a push notification can observe on the device.
    This histogram is logged each time a push notification is received on the
    device, displayed while Chrome is in the foreground, and tapped by the user.
    An important stipulation to note is that if Chrome is neither in the
    foreground nor the background and a push notification is received on the
    device, iOS will not notify Chrome of this reception and thus will not be
    represented in the histogram. Therefore, when interpreting this metric, the
    push notification reception count may be lower than in reality.
  </summary>
</histogram>

<histogram
    name="IOS.PushNotification.MultiProfile.PushNotificationTargetProfileHandlingResult"
    enum="PushNotificationTargetProfileHandlingResult"
    expires_after="2026-06-28">
  <owner>bwwilliams@google.com</owner>
  <owner>scottyoder@google.com</owner>
  <owner>treib@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Records the outcome of handling a push notification interaction in a
    multi-Profile environment. Tracks whether the correct target Profile handled
    the interaction, either because it was already active or because a Profile
    switch was initiated to ensure correctness. Also tracks unidentifiable
    Profiles or unavailable UI scenes. Helps measure the effectiveness of the
    multi-Profile notification routing logic.
  </summary>
</histogram>

<histogram
    name="IOS.PushNotification.NotificationAutorizationStatusChangedToAuthorized"
    enum="PushNotificationSettingsAuthorizationStatus"
    expires_after="2027-02-07">
  <owner>ioanabalas@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Logs the push notification iOS settings permission status the user's device
    was previously in before the user updated their push notifications
    permission status to enable push notifications. This histogram is logged
    only when push notification permission status has changed and Chrome makes
    an APNS device token request.
  </summary>
</histogram>

<histogram
    name="IOS.PushNotification.NotificationAutorizationStatusChangedToDenied"
    enum="PushNotificationSettingsAuthorizationStatus"
    expires_after="2026-12-27">
  <owner>ioanabalas@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Logs the push notification iOS settings permission status the user's device
    was previously in before the user updated their push notifications
    permission status to disable push notifications. This histogram is logged
    only when push notification permission status has changed and Chrome makes
    an APNS device token request.
  </summary>
</histogram>

<histogram
    name="IOS.PushNotification.NotificationAutorizationStatusChangedToProvisional"
    enum="PushNotificationSettingsAuthorizationStatus"
    expires_after="2027-02-07">
  <owner>ioanabalas@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Logs the push notification iOS settings permission status the user's device
    was previously in before their push notifications permission status changed
    to provisional. This histogram is logged only when push notification
    permission status has changed and Chrome makes an APNS device token request.
  </summary>
</histogram>

<histogram name="IOS.PushNotification.NotificationSettingsAuthorizationStatus"
    enum="PushNotificationSettingsAuthorizationStatus"
    expires_after="2027-02-07">
  <owner>gujen@google.com</owner>
  <owner>ioanabalas@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Logs the permission status, stored in iOS settings, the user has given for
    whether Chrome can receive push notifications on the device. This histogram
    is logged each time Chrome requests the device's APNS token from the APNS
    server: on cold start-up, on primary account set, and after the user is
    presented with the notification permission OS dialog.
  </summary>
</histogram>

<histogram
    name="IOS.PushNotification.NotificationSettingsAuthorizationStatus.ByProvider"
    enum="PushNotificationSettingsAuthorizationStatus"
    expires_after="2027-02-07">
  <owner>ioanabalas@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Logs the permission status, stored in iOS settings, the user has given for
    whether Chrome can receive push notifications on the device. Logged every
    time the metrics provider reports filter metrics.
  </summary>
</histogram>

<histogram
    name="IOS.PushNotification.ProfileRequestCreationFailureReason.{ClientId}"
    enum="ProfileNotificationRequestCreationFailureReason"
    expires_after="2025-12-26">
  <owner>bwwilliams@google.com</owner>
  <owner>scottyoder@google.com</owner>
  <owner>treib@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Records the specific reason why creating a Profile-specific
    UNNotificationRequest failed within PushNotificationClient for the
    {ClientId}. This helps diagnose issues in scheduling local notifications
    associated with a user Profile, broken down by the client responsible for
    the notification.
  </summary>
<!-- LINT.IfChange(ClientId) -->

  <token key="ClientId">
    <variant name="CONTENT" summary="Content feature"/>
    <variant name="PRICE_DROP" summary="Commerce feature"/>
    <variant name="REMINDER" summary="Tab Reminders feature"/>
    <variant name="SAFETY_CHECK" summary="Safety Check feature"/>
    <variant name="SEND_TAB" summary="Send Tab To Self feature"/>
    <variant name="SPORTS" summary="Sports feature"/>
    <variant name="TIPS" summary="Tips feature"/>
    <variant name="XPLAT_PROMOS" summary="Cross-Platform Promos feature"/>
  </token>
<!-- LINT.ThenChange(/ios/chrome/browser/push_notification/model/constants.mm:ClientId) -->

</histogram>

<histogram name="IOS.PushNotification.ProminenceAlert.Result"
    enum="IOSNotificationsProminenceAlertActionResult"
    expires_after="2026-11-10">
  <owner>thegreenfrog@google.com</owner>
  <owner>bling-gsu-pod@google.com</owner>
  <summary>
    Logs the action the user takes on the alert informing the user that their
    notifications are being delivered silently.
  </summary>
</histogram>

<histogram name="IOS.PushNotification.Provisional.EnabledPermissisons"
    enum="PushNotificationPermissionProvisionalStatus"
    expires_after="2025-11-24">
  <owner>guiperez@google.com</owner>
  <owner>chrome-sherlock@google.com</owner>
  <summary>
    Logs whether the provisional push notification permissions were granted for
    the current device or an error occured. This is logged each time the device
    responds to a provisional notification permission request.
  </summary>
</histogram>

<histogram name="IOS.ReaderMode.AccessPoint" enum="ReaderModeAccessPoint"
    expires_after="2027-02-07">
  <owner>fernandex@google.com</owner>
  <owner>qpubert@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logs the access point where the user enabled Reading Mode UI on iOS, this
    does not include situations when the user changes web state (e.g. by
    switching tabs or closing the browser).
  </summary>
</histogram>

<histogram name="IOS.ReaderMode.AccessPointWithMode"
    enum="ReaderModeAccessPointWithMode" expires_after="2027-03-09">
  <owner>fernandex@google.com</owner>
  <owner>qpubert@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logs the access point where the user enabled Reading Mode UI on iOS, this
    does not include situations when the user changes web state (e.g. by
    switching tabs or closing the browser). The results are further divided by
    the application mode (Incognito or Regular).
  </summary>
</histogram>

<histogram name="IOS.ReaderMode.Customization"
    enum="ReaderModeCustomizationType" expires_after="2027-01-17">
  <owner>fernandex@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logs any change the user has made to the default Reading Mode UI including
    font family, size, and theme changes on iOS devices.
  </summary>
</histogram>

<histogram name="IOS.ReaderMode.DeactivationReason"
    enum="ReaderModeDeactivationReason" expires_after="2026-02-22">
  <owner>fernandex@google.com</owner>
  <owner>qpubert@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logs the reason that the Reading Mode UI has been dismissed ranging from
    explicit user interaction via the UI entry points to general interactions
    with the browser such as closing the tab or performing a new navigation.
  </summary>
</histogram>

<histogram name="IOS.ReaderMode.Distiller.Latency" units="ms"
    expires_after="2027-02-07">
  <owner>fernandex@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logs the latency of distilling the web page content for Reader Mode from
    when the JavaScript is executed until the result is processed. Sampled on a
    subset of user page loads based on page load probability configuration which
    will be dependent on the milestone and channel for iOS.
  </summary>
</histogram>

<histogram name="IOS.ReaderMode.Distiller.Result"
    enum="ReaderModeDistillerOutcome" expires_after="2027-08-24">
  <owner>fernandex@google.com</owner>
  <owner>qpubert@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logs the distillation result and access point of the web page.
  </summary>
</histogram>

<histogram name="IOS.ReaderMode.FontFamily" enum="ReaderModeFontFamily"
    expires_after="2027-01-24">
  <owner>fernandex@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logs any change the user has made to the default Reading Mode UI font family
    including customizations to Sans Serif, Serif, and Monospace fonts on iOS
    devices.
  </summary>
</histogram>

<histogram name="IOS.ReaderMode.FontScale" units="count"
    expires_after="2026-11-29">
  <owner>fernandex@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logs any change the user has made to the default Reading Mode UI font scale
    taking the original double value and multiplying by 100.
  </summary>
</histogram>

<histogram name="IOS.ReaderMode.Heuristic.Classification"
    enum="ReaderModeHeuristicClassification" expires_after="2025-11-24">
  <owner>fernandex@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Compares the result of the triggering heuristic for Reader Mode with the
    result from the distillation technique. Sampled on a subset of user page
    loads based on page load probability configuration which will be dependent
    on the milestone and channel for iOS.
  </summary>
</histogram>

<histogram name="IOS.ReaderMode.Heuristic.Latency" units="ms"
    expires_after="2027-02-07">
  <owner>fernandex@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logs the latency of triggering the heuristic for Reader Mode from when the
    JavaScript is executed until there are values for distillation. Sampled on a
    subset of user page loads based on page load probability configuration which
    will be dependent on the milestone and channel for iOS.
  </summary>
</histogram>

<histogram name="IOS.ReaderMode.Heuristic.Result"
    enum="ReaderModeHeuristicResult" expires_after="2027-01-31">
  <owner>fernandex@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logs the result of the triggering heuristic for Reader Mode. Sampled on a
    subset of user page loads based on page load probability configuration which
    will be dependent on the milestone and channel for iOS.
  </summary>
</histogram>

<histogram name="IOS.ReaderMode.State" enum="ReaderModeState"
    expires_after="2027-01-03">
  <owner>fernandex@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logs the user's state in the Reading Mode journey from the background
    triggering of the heuristic on the page to showing and interacting with
    Reading Mode UI on iOS.
  </summary>
</histogram>

<histogram name="IOS.ReaderMode.Theme" enum="ReaderModeTheme"
    expires_after="2027-01-24">
  <owner>fernandex@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logs any change the user has made to the default Reading Mode UI theme
    including background customizations to sepia, dark, and light colors on iOS
    devices.
  </summary>
</histogram>

<histogram name="IOS.ReaderMode.TimeSpent" units="ms"
    expires_after="2027-01-03">
  <owner>fernandex@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logs the amount of time spent (in ms) in Reading Mode from when the user
    first loads the content on the page either via a direct entrypoint or by
    switching tabs back to a page that had it previously enabled to when the
    user closes Reading Mode or moves away from the screen (e.g. by switching
    tabs or closing the browser). Tracked for the iOS platform.
  </summary>
</histogram>

<histogram name="IOS.ReaderMode.TranslationState"
    enum="ReaderModeTranslationPageEventState" expires_after="2027-01-28">
  <owner>fernandex@google.com</owner>
  <owner>olivierrobin@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logs the translation state of the original web page and Reading Mode page to
    capture translation events within Reading Mode at the time that it has been
    deactivated.
  </summary>
</histogram>

<histogram name="IOS.ReadingList.BulkAddURLsCount" units="count"
    expires_after="2027-03-30">
  <owner>gujen@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    The number of URLs a user has successfully added to Chrome Reading List via
    bulk addition (Siri Shortcut). This count is taken after checking for
    possibly invalid URLs inputted.
  </summary>
</histogram>

<histogram name="IOS.ReadingList.ImageTooLargeFailure" units="KB"
    expires_after="2027-07-30">
  <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="2027-07-30">
  <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="2026-10-11">
  <owner>sugoi@chromium.org</owner>
  <owner>bling-transactions@google.com</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>tmartino@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="2025-07-13">
  <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="2026-08-10">
  <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.SadTab.FileIsPDF" enum="Boolean"
    expires_after="2027-01-24">
  <owner>gambard@chromium.org</owner>
  <owner>bling-fundamentals@google.com</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="2026-10-26">
  <owner>gambard@chromium.org</owner>
  <owner>bling-fundamentals@google.com</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.SafariImport.EntryPoint{EntryPoint}.Action"
    enum="SafariDataImportEntryPointAction" expires_after="2027-02-07">
  <owner>ginnyhuang@chromium.org</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    User is on the Safari Import half-sheet landing page {EntryPoint} and
    performs an action on it. Pertentages of the total count are NOT meaningful
    since actions are not mutually exclusive.
  </summary>
  <token key="EntryPoint">
    <variant name="FRE" summary="on first run"/>
    <variant name="Reminder" summary="displayed as a reminder promo"/>
    <variant name="Setting" summary="through setting"/>
  </token>
</histogram>

<histogram name="IOS.SafariImport.ExportEducationAction"
    enum="SafariDataImportExportEducationAction" expires_after="2027-02-07">
  <owner>ginnyhuang@chromium.org</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    This histogram is logged when the user taps the button on the export
    education screen to perform the logged action. Pertentages of the total
    count is NOT meaningful since actions are NOT mutually exclusive.
  </summary>
</histogram>

<histogram name="IOS.SafariImport.Import.DeleteFile" enum="Boolean"
    expires_after="2026-11-15">
  <owner>ginnyhuang@chromium.org</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Logs whether the user chooses to delete the ZIP file when being asked on
    exitting the Safari Import workflow.
  </summary>
</histogram>

<histogram name="IOS.SafariImport.Import.ExitOnStage"
    enum="SafariDataImportStage" expires_after="2026-11-15">
  <owner>ginnyhuang@chromium.org</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Logs the import stage when the user exits the workflow for users who have
    landed on the import screen. If the user exits on the stage &quot;import
    complete&quot;, that means the user has completed the import from Safari
    from start to finish!
  </summary>
</histogram>

<histogram name="IOS.SafariImport.Import.FailureAlert" enum="BooleanSuccess"
    expires_after="2026-11-01">
  <owner>ginnyhuang@chromium.org</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    This histogram log attempts to display an alert when the user has selected
    an invalid file to be imported to Chrome as Safari data, indicating whether
    the display is success or not. Added to keep track of potential race
    conditions when the file picker has not been fully dismissed.
  </summary>
</histogram>

<histogram name="IOS.SafariImport.Import.InvalidPasswords.Display"
    enum="Boolean" expires_after="2026-03-29">
  <owner>ginnyhuang@chromium.org</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    This histogram is logged when the user taps the &quot;info&quot; button next
    to password import results to view the list of invalid passwords.
  </summary>
</histogram>

<histogram name="IOS.SafariImport.Import.PasswordConflictsScreenAction"
    enum="DataImportCredentialConflictScreenAction" expires_after="2026-04-26">
  <owner>ginnyhuang@chromium.org</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    This histogram is logged when the user performs the respective action on the
    passwords conflict page. Pertentages of the total count are NOT meaningful
    since actions are not mutually exclusive.
  </summary>
</histogram>

<histogram name="IOS.SafariImport.Import.TapBackOnStage"
    enum="SafariDataImportStage" expires_after="2026-10-11">
  <owner>ginnyhuang@chromium.org</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Logs the import stage when the user taps the &quot;back&quot; button import
    screen. Should only be applicable for &quot;not started&quot; and
    &quot;ready to import&quot; stages.
  </summary>
</histogram>

<histogram name="IOS.SafeBrowsing.Enhanced.Infobar.Interaction"
    enum="IOSEnhancedSafeBrowseringInfobarInteraction"
    expires_after="2027-06-26">
  <owner>danieltwhite@google.com</owner>
  <owner>bling-fundamentals@google.com</owner>
  <summary>
    This histogram tracks the Enhanced Safe Browsing Infobar promo's conversion
    rate by comparing how many times the infobar is surfaced to users and how
    many times it is tapped on.
  </summary>
</histogram>

<histogram name="IOS.SafeBrowsing.RedirectedRequestResponseHostsMatch"
    enum="BooleanMatched" expires_after="2027-06-19">
  <owner>danieltwhite@google.com</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.SafetyCheck.MagicStack.HiddenReason"
    enum="IOSSafetyCheckHiddenReason" expires_after="2026-02-01">
  <owner>bwwilliams@google.com</owner>
  <owner>thegreenfrog@google.com</owner>
  <summary>
    This histogram logs the reason why the Safety Check module is hidden in the
    Magic Stack.
  </summary>
</histogram>

<histogram name="IOS.SandboxMetrics.ApplicationSupportSize" units="MB"
    expires_after="2027-06-01">
  <owner>michaeldo@chromium.org</owner>
  <owner>rohitrao@chromium.org</owner>
  <summary>
    The amount of storage used by the &quot;Application Support&quot; directory
    excluding the storage used by all currently open tabs. Logged at application
    startup, maximum once every 2 weeks, if the
    `kLogApplicationStorageSizeMetrics` flag is enabled. Warning: this histogram
    was expired from 2024-03-09 to 2025-08-28; data may be missing.
  </summary>
</histogram>

<histogram name="IOS.SandboxMetrics.AverageColorSnapshotSize" units="KB"
    expires_after="2027-06-01">
  <owner>michaeldo@chromium.org</owner>
  <owner>rohitrao@chromium.org</owner>
  <summary>
    The average amount of storage used by a color snapshot image for this user.
    Logged at application startup, maximum once every 2 weeks, if the
    `kLogApplicationStorageSizeMetrics` flag is enabled.
  </summary>
</histogram>

<histogram name="IOS.SandboxMetrics.ChromeCacheSize" units="MB"
    expires_after="2027-06-01">
  <owner>michaeldo@chromium.org</owner>
  <owner>rohitrao@chromium.org</owner>
  <summary>
    The amount of storage used by the Chrome cache directory. Logged at
    application startup, maximum once every 2 weeks, if the
    `kLogApplicationStorageSizeMetrics` flag is enabled.
  </summary>
</histogram>

<histogram name="IOS.SandboxMetrics.ChromeTempSize" units="MB"
    expires_after="2027-06-01">
  <owner>michaeldo@chromium.org</owner>
  <owner>rohitrao@chromium.org</owner>
  <summary>
    The amount of storage used by the Chrome tmp directory. Logged at
    application startup, maximum once every 2 weeks, if the
    `kLogApplicationStorageSizeMetrics` flag is enabled. Warning: this histogram
    was expired from 2024-03-09 to 2025-08-28; data may be missing.
  </summary>
</histogram>

<histogram name="IOS.SandboxMetrics.DocumentsSize2" units="MB"
    expires_after="2027-06-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.FaviconsSize" units="KB"
    expires_after="2027-06-01">
  <owner>michaeldo@chromium.org</owner>
  <owner>rohitrao@chromium.org</owner>
  <summary>
    The total amount of storage used by the favicons file. Logged at application
    startup, maximum once every 2 weeks, if the
    `kLogApplicationStorageSizeMetrics` flag is enabled. Warning: this histogram
    was expired from 2024-03-09 to 2025-08-28; data may be missing.
  </summary>
</histogram>

<histogram name="IOS.SandboxMetrics.LibrarySize" units="MB"
    expires_after="2027-06-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="2027-06-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="MB" expires_after="2027-06-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.TotalOTRSessionSize" units="MB"
    expires_after="2027-06-01">
  <owner>michaeldo@chromium.org</owner>
  <owner>rohitrao@chromium.org</owner>
  <summary>
    The total amount of storage used by the currently open incognito tabs. This
    includes both the storage used for current tab state and the associated
    snapshot images. Logged at application startup, maximum once every 2 weeks,
    if the `kLogApplicationStorageSizeMetrics` flag is enabled.
  </summary>
</histogram>

<histogram name="IOS.SandboxMetrics.TotalRegularSessionSize" units="MB"
    expires_after="2027-06-01">
  <owner>michaeldo@chromium.org</owner>
  <owner>rohitrao@chromium.org</owner>
  <summary>
    The total amount of storage used by the currently open regular (non
    incognito) tabs. This includes both the storage used for current tab state
    and the associated snapshot images. Logged at application startup, maximum
    once every 2 weeks, if the `kLogApplicationStorageSizeMetrics` flag is
    enabled.
  </summary>
</histogram>

<histogram name="IOS.SandboxMetrics.WebKitCacheSize" units="MB"
    expires_after="2027-06-01">
  <owner>michaeldo@chromium.org</owner>
  <owner>rohitrao@chromium.org</owner>
  <summary>
    The amount of storage used by the WebKit cache directory. Logged at
    application startup, maximum once every 2 weeks, if the
    `kLogApplicationStorageSizeMetrics` flag is enabled.
  </summary>
</histogram>

<histogram name="IOS.SandboxMetrics.WebKitTempSize" units="MB"
    expires_after="2027-06-01">
  <owner>michaeldo@chromium.org</owner>
  <owner>rohitrao@chromium.org</owner>
  <summary>
    The amount of storage used by the WebKit tmp directory. Logged at
    application startup, maximum once every 2 weeks, if the
    `kLogApplicationStorageSizeMetrics` flag is enabled.
  </summary>
</histogram>

<histogram name="IOS.SandboxMetrics.WebsiteLocalData" units="MB"
    expires_after="2027-06-01">
  <owner>michaeldo@chromium.org</owner>
  <owner>rohitrao@chromium.org</owner>
  <summary>
    The amount of storage used by the
    &quot;Library/WebKit/WebsiteData/Default&quot; directory which stores
    IndexedDB and Local Storage data for websites. Logged at application
    startup, maximum once every 2 weeks, if the
    `kLogApplicationStorageSizeMetrics` flag is enabled.
  </summary>
</histogram>

<histogram name="IOS.SaveToDrive.SignIn.Result"
    enum="IOSSaveToDriveSignInResultType" expires_after="2027-03-27">
  <owner>josephlanza@google.com</owner>
  <owner>qpubert@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logged when the sign-in coordinator for the &quot;Save To Drive&quot;
    feature returns the result of the sign-in attempt e.g. sign-in success,
    sign-in failure or sign-in cancelled.
  </summary>
</histogram>

<histogram name="IOS.SaveToDrive.SignIn.Status"
    enum="IOSSaveToDriveSignInStatusType" expires_after="2027-03-27">
  <owner>josephlanza@google.com</owner>
  <owner>qpubert@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logged when the &quot;Save&quot; button of the Save to Drive feature is
    tapped, indicating the sign in status of the user e.g. signed-in, signed-out
    without account, signed-out with account.
  </summary>
</histogram>

<histogram name="IOS.SaveToDrive.UI.FileSizeMB.{Outcome}" units="MB"
    expires_after="2027-01-15">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logged the Save to Drive UI is dismissed, indicating the size of the file to
    download, as a function of the final outcome of the UI flow e.g. whether the
    user canceled, whether they selected Drive or Files, etc. Only logged if the
    size is available.
  </summary>
  <token key="Outcome" variants="IOSSaveToDriveUIOutcomeVariant"/>
</histogram>

<histogram name="IOS.SaveToDrive.UI.ManageStorageAlert.Cancelled"
    enum="BooleanCanceled" expires_after="2027-01-15">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logged when an alert was shown to let the user manage their Drive storage.
    Reports whether the user cancelled or instead opted to manage their Drive
    storage. Warning: Data gap between 2025-02-09 - 2025-02-12.
  </summary>
</histogram>

<histogram name="IOS.SaveToDrive.UI.ManageStorageAlert.Shown"
    enum="BooleanShown" expires_after="2027-01-15">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logged when the user attempts to select Drive as destination for their
    download. Reports whether an alert was shown to let the user manage their
    Drive storage.
  </summary>
</histogram>

<histogram name="IOS.SaveToDrive.UI.MimeType.{Outcome}"
    enum="DownloadMimeTypeResult" expires_after="2027-01-15">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logged the Save to Drive UI is dismissed, indicating the MIME type of the
    file to download, as a function of the final outcome of the UI flow e.g.
    whether the user canceled, whether they selected Drive or Files, etc.
  </summary>
  <token key="Outcome" variants="IOSSaveToDriveUIOutcomeVariant"/>
</histogram>

<histogram name="IOS.SaveToDrive.UI.NumberOfAttempts.{Outcome}" units="count"
    expires_after="2027-01-15">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logged the Save to Drive UI is dismissed, indicating the number of attempts
    to select a destination (i.e. number of times &quot;Save&quot; was tapped)
    as a function of the final outcome of the UI flow e.g. whether the user
    canceled, whether they selected Drive or Files, etc. Warning: Data gap
    between 2025-02-09 - 2025-02-12.
  </summary>
  <token key="Outcome" variants="IOSSaveToDriveUIOutcomeVariant"/>
</histogram>

<histogram name="IOS.SaveToDrive.UI.Outcome" enum="IOSSaveToDriveOutcomeType"
    expires_after="2027-01-15">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logged before dismissing the Save to Drive UI i.e. the file destination and
    account selection view. Describes what destination was picked, whether the
    user cancelled or not, etc.
  </summary>
</histogram>

<histogram name="IOS.SaveToDrive.UploadTask.FileSizeMB.{FinalState}" units="MB"
    expires_after="2027-01-15">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logged when a Drive upload task's destructor is called, indicating the the
    size of the uploaded file as a function of the final state of the task e.g.
    Not Started, Cancelled, Completed or Failed.
  </summary>
  <token key="FinalState" variants="IOSSaveToDriveUploadTaskFinalStateVariant"/>
</histogram>

<histogram name="IOS.SaveToDrive.UploadTask.FinalState"
    enum="IOSSaveToDriveUploadTaskStateType" expires_after="2027-01-15">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logged when a Drive upload task's destructor is called, indicating the final
    state of the task e.g. Not Started, Cancelled, Completed or Failed.
  </summary>
</histogram>

<histogram name="IOS.SaveToDrive.UploadTask.GetResponseLinkFailure"
    enum="IOSSaveToDriveGetResponseLinkFailure" expires_after="2027-01-15">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logged when a request for the response link identifies that the link is not
    available. This histogram records the failure reason.
  </summary>
</histogram>

<histogram name="IOS.SaveToDrive.UploadTask.MimeType.{FinalState}"
    enum="DownloadMimeTypeResult" expires_after="2027-01-15">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logged when a Drive upload task's destructor is called, indicating the the
    MIME type of the uploaded file as a function of the final state of the task
    e.g. Not Started, Cancelled, Completed or Failed.
  </summary>
  <token key="FinalState" variants="IOSSaveToDriveUploadTaskFinalStateVariant"/>
</histogram>

<histogram name="IOS.SaveToDrive.UploadTask.NumberOfAttempts.{FinalState}"
    units="count" expires_after="2027-01-15">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logged when a Drive upload task's destructor is called, indicating the
    number of attempts to complete the task (i.e. number of times it was
    started) as a function of the final state of the task e.g. Not Started,
    Cancelled, Completed or Failed. Warning: Data gap between 2025-02-09 -
    2025-02-12.
  </summary>
  <token key="FinalState" variants="IOSSaveToDriveUploadTaskFinalStateVariant"/>
</histogram>

<histogram name="IOS.SaveToDrive.{QueryType}.ErrorCode" enum="HttpResponseCode"
    expires_after="2027-01-15">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logged when receiving the response for a failed Drive query, indicating the
    error code associated with the response.
  </summary>
  <token key="QueryType" variants="IOSSaveToDriveQueryTypeVariant"/>
</histogram>

<histogram name="IOS.SaveToDrive.{QueryType}.Successful" enum="BooleanSuccess"
    expires_after="2027-01-15">
  <owner>qpubert@google.com</owner>
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logged when receiving the response for a Drive query, indicating whether the
    response is successful or not.
  </summary>
  <token key="QueryType" variants="IOSSaveToDriveQueryTypeVariant"/>
</histogram>

<histogram name="IOS.SaveToPhotos" enum="IOSSaveToPhotosType"
    expires_after="2027-07-22">
  <owner>qpubert@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logged before the &quot;Save to Photos&quot; UI is dismissed with the result
    i.e. whether upload succeeded or failed, reason of the failure if any and
    whether any action was performed after the upload, such as opening the
    Photos app or showing StoreKit.
  </summary>
</histogram>

<histogram name="IOS.SaveToPhotos.AccountPicker"
    enum="IOSSaveToPhotosAccountPickerType" expires_after="2027-07-22">
  <owner>qpubert@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logged after the &quot;Save to Photos&quot; UI knows what account to use as
    destination for the photo to be saved i.e. an account saved in preferences
    as the default (account picker skipped), or an account selected with the
    account picker, or no account if the user cancels.
  </summary>
</histogram>

<histogram name="IOS.SaveToPhotos.ContextMenu"
    enum="IOSSaveToPhotosContextMenuType" expires_after="2027-07-22">
  <owner>qpubert@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logged when the user performs an action from the context menu which appears
    after long pressing an image in a web page.
  </summary>
</histogram>

<histogram name="IOS.SaveToPhotos.GTLRErrorObjectDomainErrorCode"
    enum="HttpResponseCode" expires_after="2027-07-22">
  <owner>qpubert@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logged when the Photos service returns an error with domain
    GTLRErrorObjectDomain. The recorded value is the error code interpreted as a
    HTTP response code.
  </summary>
</histogram>

<histogram name="IOS.SaveToPhotos.Settings" enum="IOSSaveToPhotosSettingsType"
    expires_after="2027-07-22">
  <owner>qpubert@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logged when the Photos service starts. It gives information about the state
    of the Save to Photos settings i.e. (a) if a default account has been set,
    and if so, if the account still exists on the device; (b) if the user did
    opt-in to skip the account picker by disabling the &quot;Ask which account
    to use every time&quot; switch.
  </summary>
</histogram>

<histogram name="IOS.SaveToPhotos.SignIn.Result"
    enum="IOSSaveToPhotosSignInResultType" expires_after="2027-07-22">
  <owner>josephlanza@google.com</owner>
  <owner>qpubert@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logged after the user attempts to sign in during the Save to Photos flow.
    Records the outcome of the sign-in flow (Success, Cancelled, or Failed).
  </summary>
</histogram>

<histogram name="IOS.SaveToPhotos.SignIn.Status"
    enum="IOSSaveToPhotosSignInStatusType" expires_after="2027-07-22">
  <owner>josephlanza@google.com</owner>
  <owner>qpubert@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logged when the Save to Photos flow is initiated. Records the sign-in status
    of the user (Signed In, Signed Out Without Account on Device, or Signed Out
    With Account on Device).
  </summary>
</histogram>

<histogram name="IOS.SaveToPhotos.UploadFailureLatency" units="ms"
    expires_after="2027-07-22">
  <owner>qpubert@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logged when the Photos service completes an image upload with failure. It
    records the time elapsed between the moment the upload request is submitted
    to the service and the moment the service calls the provided completion
    callback. In particular, this includes the time necessary to create a
    destination album if necessary, upload the media item and add it to the
    destination album. See IOS.SaveToPhotos.UploadSuccessLatency for recording
    of successful completion.
  </summary>
</histogram>

<histogram name="IOS.SaveToPhotos.UploadFailureType"
    enum="IOSPhotosServiceUploadFailureType" expires_after="2027-07-22">
  <owner>qpubert@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logged when the Photos service completes an image upload with failure. It
    records the type of failure which occurred.
  </summary>
</histogram>

<histogram name="IOS.SaveToPhotos.UploadSuccessLatency" units="ms"
    expires_after="2027-07-22">
  <owner>qpubert@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    Logged when the Photos service completes an image upload with success. It
    records the time elapsed between the moment the upload request is submitted
    to the service and the moment the service calls the provided completion
    callback. In particular, this includes the time necessary to create a
    destination album if necessary, upload the media item and add it to the
    destination album. See IOS.SaveToPhotos.UploadFailureLatency for recording
    of unsuccessful completion.
  </summary>
</histogram>

<histogram name="IOS.ScanCard.EndToEndLatency" units="ms"
    expires_after="2027-04-01">
  <owner>qihuizhao@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the total elapsed time from the initiation of the scan card session
    to the successful extraction of card attributes. Recorded when the scanner
    finished scan and card details are set.
  </summary>
</histogram>

<histogram name="IOS.ScanCardBottomSheet.ExitReason"
    enum="ScanCardSuggestionBottomSheetExitReason" expires_after="2027-03-31">
  <owner>qihuizhao@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Tracks the reason the Scan Card bottom sheet suggestion was dismissed or
    accepted. Recorded when the user accepts the suggestion or the bottom sheet
    is dismissed.
  </summary>
</histogram>

<histogram name="IOS.ScanCardBottomSheet.TimeToSelection" units="ms"
    expires_after="2027-03-31">
  <owner>qihuizhao@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the elapsed time between displaying the Scan Card bottom sheet
    suggestion and selecting the scan button. Recorded when the user taps the
    scan button.
  </summary>
</histogram>

<histogram name="IOS.ScanCardBottomSheet.TimeToTrigger.{Outcome}" units="ms"
    expires_after="2027-04-01">
  <owner>qihuizhao@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the elapsed time between receiving the signal to trigger the Scan
    Card and Autofill bottom sheet and actually making a decision on triggering
    the sheet, split by {Outcome}. Recorded when making the decision to trigger
    the sheet.
  </summary>
  <token key="Outcome">
    <variant name="NotTriggered" summary="The sheet was not triggered."/>
    <variant name="Triggered" summary="The sheet was actually triggered."/>
  </token>
</histogram>

<histogram name="IOS.ScanCardBottomSheet.Triggered" enum="Boolean"
    expires_after="2027-04-01">
  <owner>qihuizhao@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the outcome of attempting to trigger the Scan Card and Autofill
    bottom sheet as a boolean, true if it triggered or false if it didn't.
    Recorded when the decision is made on triggering the sheet which corresponds
    to when the activation signal is received from the sheet's form activity
    listeners.
  </summary>
</histogram>

<histogram name="IOS.ScanCardFinished" enum="Boolean"
    expires_after="2027-04-01">
  <owner>qihuizhao@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records whether the card scan flow was successfully completed (saved) or
    resulted in an early exit (drop-off). Recorded when the scanner finished
    scan.
  </summary>
</histogram>

<histogram name="IOS.ScanCardOfferToSave" enum="ScanCardOfferToSaveAction"
    expires_after="2027-04-01">
  <owner>qihuizhao@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the user action on the scanned card save dialog (Accept, Reject, or
    Ignore). Recorded when the user taps Save, Cancel, or dismisses the dialog.
  </summary>
</histogram>

<histogram name="IOS.ScanCardOfferToSave.ValidExpMonth" enum="Boolean"
    expires_after="2027-04-01">
  <owner>qihuizhao@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records whether the scanned credit card expiration month was valid. Recorded
    when the scan result is received.
  </summary>
</histogram>

<histogram name="IOS.ScanCardOfferToSave.ValidExpYear" enum="Boolean"
    expires_after="2027-04-01">
  <owner>qihuizhao@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records whether the scanned credit card expiration year was valid. Recorded
    when the scan result is received.
  </summary>
</histogram>

<histogram name="IOS.ScanCardOfferToSave.ValidNumber" enum="Boolean"
    expires_after="2027-04-01">
  <owner>qihuizhao@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records whether the scanned credit card number was valid. Recorded when the
    scan result is received.
  </summary>
</histogram>

<histogram name="IOS.ScannedCard.ExpMonthEdited" enum="Boolean"
    expires_after="2027-04-01">
  <owner>qihuizhao@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records whether the user manually edited the card expiration month after
    scanning. Recorded when the user accepts the save offer.
  </summary>
</histogram>

<histogram name="IOS.ScannedCard.ExpYearEdited" enum="Boolean"
    expires_after="2027-04-01">
  <owner>qihuizhao@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records whether the user manually edited the card expiration year after
    scanning. Recorded when the user accepts the save offer.
  </summary>
</histogram>

<histogram name="IOS.ScannedCard.NumberEdited" enum="Boolean"
    expires_after="2027-04-01">
  <owner>qihuizhao@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records whether the user manually edited the card number after scanning.
    Recorded when the user accepts the save offer.
  </summary>
</histogram>

<histogram name="IOS.SearchWith.CharSelected" units="characters"
    expires_after="2027-04-01">
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records the number of characters selected when performing a Search With.
  </summary>
</histogram>

<histogram name="IOS.SearchWith.Trigger" enum="IOSSearchWithContext"
    expires_after="2027-03-09">
  <owner>olivierrobin@chromium.org</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>The context in which Search With has been triggered.</summary>
</histogram>

<histogram name="IOS.Sessions.DiscardedSceneConnectedAfterBeingPurged"
    enum="Boolean" expires_after="2026-12-31">
  <owner>sdefresne@google.com</owner>
  <owner>bling-fundamentals@google.com</owner>
  <summary>
    This histogram is recorded each time a Scene is connected to a Profile. It
    records a &quot;true&quot; value if the Scene identifier is present in the
    recently purged Scene identifiers. This should not happen and this histogram
    should only record &quot;false&quot;.

    This exists to identify whether there is a bug in iOS where UIKit informs
    the application that a Scene has been discarded (i.e. permanently dropped
    and its data should be deleted) while still connected. If this histogram
    records a non-zero value, then it is concerning as the data for the scene
    will be deleted and the corresponding tabs lost.

    This is only recorded on iPad (since iPhone only have one Scene and ignore
    the message from UIKit). It is recorded once per Scene when it connects to a
    Profile.
  </summary>
</histogram>

<histogram name="IOS.Sessions.DiscardedScenesStillConnectedCount"
    units="sessions" expires_after="2027-01-03">
  <owner>sdefresne@google.com</owner>
  <owner>bling-fundamentals@google.com</owner>
  <summary>
    This histogram counts the number of sessions that are discarded while still
    being connected (this should not happen and thus the values recorded should
    always be zero).

    This exists to identify whether there is a bug in iOS where UIKit informs
    the application that a Scene has been discarded (i.e. permanently dropped
    and its data should be deleted) while still connected. If this histogram
    records a non-zero value, then it is concerning as the data for the scene
    will be deleted and the corresponding tabs lost.

    This is only recorded on iPad (since iPhone only have one Scene and ignore
    the message from UIKit). It is recorded each time iOS informs the app that
    some Scene have been discarded (i.e. infrequently).
  </summary>
</histogram>

<histogram name="IOS.Settings.DefaultBrowserSettingsPassivePromo"
    enum="IOSDefaultBrowserSettingsPassivePromoAction"
    expires_after="2027-01-03">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the action taken by the user on the Default Browser Settings Passive
    Promo Card (Closed, Action, or No Action).
  </summary>
</histogram>

<histogram name="IOS.SetUpList.AllItemsCompleted" enum="Boolean"
    expires_after="2027-02-07">
  <owner>scottyoder@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    This histogram counts the number of times that all items in the Set Up List
    are completed.
  </summary>
</histogram>

<histogram name="IOS.SetUpList.Displayed" enum="Boolean"
    expires_after="2027-01-17">
  <owner>scottyoder@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    This histogram counts the number of times the Set Up List is shown on the
    NTP.
  </summary>
</histogram>

<histogram name="IOS.SetUpList.ItemCompleted" enum="IOSSetUpListItemType"
    expires_after="2027-01-17">
  <owner>scottyoder@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    This histogram counts the number of times Set Up List items are completed.
    It is recorded when the Set Up List item is marked complete in prefs, or
    when Set Up List is loaded and the code detects that an item was completed
    since the last time Set Up List was displayed.
  </summary>
</histogram>

<histogram name="IOS.SetUpList.ItemDisplayed" enum="IOSSetUpListItemType"
    expires_after="2026-06-28">
  <owner>scottyoder@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    This histogram counts the number of times Set Up List items are displayed.
  </summary>
</histogram>

<histogram name="IOS.SetUpList.ItemSelected" enum="IOSSetUpListItemType"
    expires_after="2027-02-07">
  <owner>scottyoder@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    This histogram counts the number of times Set Up List items are selected.
  </summary>
</histogram>

<histogram name="IOS.ShareExtension.ReceivedEntriesCount" units="files"
    expires_after="2024-09-18">
  <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="2027-07-30">
  <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="2024-09-18">
  <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="2027-07-30">
  <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.SignInpromo.Fullscreen.PromoEvents"
    enum="IOSSigninFullscreenPromoEvents" expires_after="2027-02-07">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Tracks the progression of the fullscreen sign-in promotion on iOS, from
    being triggered by the Promo Manager to the promo UI being shown. This helps
    identify potential drop-offs in the promo presentation flow.
  </summary>
</histogram>

<histogram name="IOS.SignInPromo.NonModal.Bookmark"
    enum="NonModalSignInPromoAction" expires_after="2026-12-27">
  <owner>kanouche@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records actions taken on the non-modal sign-in promo shown after a user adds
    a bookmark. Recorded when a user interacts with the promo or when the promo
    is shown or dismissed.
  </summary>
</histogram>

<histogram name="IOS.SignInPromo.NonModal.Password"
    enum="NonModalSignInPromoAction" expires_after="2026-11-01">
  <owner>kanouche@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records actions taken on the non-modal sign-in promo shown after a user
    saves a password. Recorded when a user interacts with the promo or when the
    promo is shown or dismissed.
  </summary>
</histogram>

<histogram name="IOS.SiriShortcuts.Count" units="shortcuts"
    expires_after="2027-03-30">
  <owner>gujen@google.com</owner>
  <owner>bling-mony-pod@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.
  </summary>
</histogram>

<histogram name="IOS.Snapshots.BlockedByPlaceholder" enum="Boolean"
    expires_after="2027-02-12">
  <owner>tarekmakkouk@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records whether a snapshot extraction fails because a placeholder is
    scheduled to be shown for the next navigation. Yes (true) if blocked, No
    (false) otherwise.
  </summary>
</histogram>

<histogram name="IOS.Snapshots.DowngradedQualityImageMemoryFootprint"
    units="KB" expires_after="2027-02-12">
  <owner>tarekmakkouk@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>
    Records the memory footprint of a snapshot image (in KB) after its quality
    has been downgraded.
  </summary>
</histogram>

<histogram name="IOS.Snapshots.RetrieveColorSnapshotTime" units="ms"
    expires_after="2027-02-14">
  <owner>asamidoi@chromium.org</owner>
  <owner>bling-kiwi-pod@google.com</owner>
  <summary>Records the time to retrieve a color snapshot.</summary>
</histogram>

<histogram name="IOS.Snapshots.RetrieveGreySnapshotTime" units="ms"
    expires_after="2027-02-14">
  <owner>asamidoi@chromium.org</owner>
  <owner>bling-kiwi-pod@google.com</owner>
  <summary>Records the time to retrieve a grey snapshot.</summary>
</histogram>

<histogram name="IOS.Snapshots.SnapshotImageMemoryFootprint" units="KB"
    expires_after="2027-02-12">
  <owner>tarekmakkouk@google.com</owner>
  <owner>bling-alchemy-eng@google.com</owner>
  <summary>Records the memory footprint of a snapshot image (in KB).</summary>
</histogram>

<histogram name="IOS.Snapshots.UpdateSnapshotTime" units="ms"
    expires_after="2027-02-14">
  <owner>asamidoi@chromium.org</owner>
  <owner>bling-kiwi-pod@google.com</owner>
  <summary>Records the time to update a snapshot.</summary>
</histogram>

<histogram name="IOS.SpeechInput.CountryCodeNotDetected" enum="BooleanHit"
    expires_after="2025-01-16">
  <owner>rohitrao@chromium.org</owner>
  <owner>bling-fundamentals@google.com</owner>
  <summary>
    A boolean that is used to indicate that neither the device's current locale
    nor the locale corresponding to the device's preferred language has a valid
    country code. Recorded every time that SpeechInputLocaleConfigImpl attempts
    to detect the country code but fails to do so.
  </summary>
</histogram>

<histogram name="IOS.Spotlight.Action" enum="IOSSpotlightAction"
    expires_after="2026-06-01">
  <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="2026-06-01">
  <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="2026-06-01">
  <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="2026-06-01">
  <owner>olivierrobin@chromium.org</owner>
  <owner>rohitrao@chromium.org</owner>
  <summary>
    Number of bookmarks indexed during initial indexation. Starting in M122,
    this is batched. Only recorded on successful reindexing.
  </summary>
</histogram>

<histogram name="IOS.Spotlight.BookmarksReindexRestarted" units="units"
    expires_after="2026-06-01">
  <owner>ameurhosni@google.com</owner>
  <owner>stkhapugin@chromium.org</owner>
  <owner>olivierrobin@chromium.org</owner>
  <summary>
    How many times full bookmarks reindex had to restart due to a model mutation
    that happened during reindexing. Logged for each interruption (so for 3
    interruptions it will log values 1, 2, and 3).
  </summary>
</histogram>

<histogram name="IOS.Spotlight.DonatedIntentType"
    enum="IOSSpotlightDonatedIntentType" expires_after="2027-07-30">
  <owner>stkhapugin@chromium.org</owner>
  <owner>ameurhosni@chromium.org</owner>
  <owner>olivierrobin@chromium.org</owner>
  <summary>Recorded each time an intent is donated.</summary>
</histogram>

<histogram name="IOS.Spotlight.LaunchedIntentType"
    enum="IOSSpotlightDonatedIntentType" expires_after="2027-01-03">
  <owner>stkhapugin@chromium.org</owner>
  <owner>ameurhosni@chromium.org</owner>
  <owner>olivierrobin@chromium.org</owner>
  <summary>
    Recorded each time the app is opened via a siri shortcut, which can be
    triggered from Spotlight, the Shortcuts app, or Siri. Note that this list
    does not contain all intent types but only the ones that can be donated.
  </summary>
</histogram>

<histogram name="IOS.Spotlight.OpenTabsIndexingDuration" units="ms"
    expires_after="2026-06-01">
  <owner>stkhapugin@chromium.org</owner>
  <owner>olivierrobin@chromium.org</owner>
  <summary>Time spent in Spotlight initial indexation of open tabs.</summary>
</histogram>

<histogram name="IOS.Spotlight.OpenTabsInitialIndexSize" units="units"
    expires_after="2026-06-01">
  <owner>stkhapugin@chromium.org</owner>
  <owner>olivierrobin@chromium.org</owner>
  <summary>Number of open tabs indexed during initial indexation.</summary>
</histogram>

<histogram name="IOS.Spotlight.OpenTabsReindexRestarted" units="units"
    expires_after="2026-06-01">
  <owner>stkhapugin@chromium.org</owner>
  <owner>ameurhosni@google.com</owner>
  <summary>
    How many times full open tabs reindex had to restart due to a model mutation
    that happened during reindexing. Logged for each interruption (so for 3
    interruptions it will log values 1, 2, and 3).
  </summary>
</histogram>

<histogram name="IOS.Spotlight.Origin" enum="IOSSpotlightOrigin"
    expires_after="never">
<!-- expires-never: part of vital metric ChromeSearch.Actions -->

  <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.Spotlight.ReadingListIndexingDuration" units="ms"
    expires_after="2026-06-01">
  <owner>stkhapugin@chromium.org</owner>
  <owner>olivierrobin@chromium.org</owner>
  <summary>Time spent in Spotlight initial indexation of reading list.</summary>
</histogram>

<histogram name="IOS.Spotlight.ReadingListInitialIndexSize" units="units"
    expires_after="2026-06-01">
  <owner>stkhapugin@chromium.org</owner>
  <owner>olivierrobin@chromium.org</owner>
  <summary>
    Number of reading list items indexed during initial indexation.
  </summary>
</histogram>

<histogram name="IOS.Start.Click" enum="IOSHomeActionType"
    expires_after="2027-02-14">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    This histogram is logged whenever a click happens on the Start surface.
  </summary>
</histogram>

<histogram name="IOS.Start.Impression" enum="IOSNTPImpressionType"
    expires_after="2026-12-27">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    The type of Start impressions on iOS, split by the feed visibility. Logged
    each time Start is opened for the user.
  </summary>
</histogram>

<histogram name="IOS.Start.TimeSpent" units="ms" expires_after="2027-02-01">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>freedjm@chromium.org</owner>
  <summary>
    The time spent on the Start Home surface as measured from when it was loaded
    or last brought to the foreground until it was navigated away from or
    hidden. Only measured on iOS.
  </summary>
</histogram>

<histogram name="IOS.StartSurface.EnabledByUserSetting" enum="Boolean"
    expires_after="2027-06-01">
  <owner>pabouchard@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Tracks whether the start surface is enabled by the user in settings.
    Recorded when the start surface would be shown (i.e. all other conditions
    like inactivity duration are satisfied), if the rollout feature flag is
    enabled.
  </summary>
</histogram>

<histogram name="IOS.SyncedSetUp.Interstitial.RemotePrefDifference"
    enum="SyncedSetUpRemotePrefDifference" expires_after="2027-01-17">
  <owner>ericekey@google.com</owner>
  <owner>bwwilliams@google.com</owner>
  <owner>scottyoder@google.com</owner>
  <summary>
    Records the result of comparing appearance-related preferences from remote
    devices against the current device. Logged once after the user completes the
    First Run Experience.
  </summary>
</histogram>

<histogram name="IOS.SyncedSetUp.Interstitial.Shown" enum="Boolean"
    expires_after="2027-01-10">
  <owner>ericekey@google.com</owner>
  <owner>bwwilliams@google.com</owner>
  <owner>scottyoder@google.com</owner>
  <summary>
    Records whether the Synced Set Up interstitial is shown. Logged as true each
    time the coordinator attempts to present the interstitial view.
  </summary>
</histogram>

<histogram name="IOS.SyncedSetUp.PrefApplied" enum="SyncedSetUpAppliedPref"
    expires_after="2027-01-10">
  <owner>bwwilliams@google.com</owner>
  <owner>scottyoder@google.com</owner>
  <owner>ericekey@google.com</owner>
  <summary>
    Records the application of specific appearance and customization preferences
    from the user's remote devices to the current device. Logged once for each
    preference in an applied batch.
  </summary>
</histogram>

<histogram name="IOS.SyncedSetUp.RemoteAppliedPrefCount" units="count"
    expires_after="2027-02-07">
  <owner>ericekey@google.com</owner>
  <owner>bwwilliams@google.com</owner>
  <owner>scottyoder@google.com</owner>
  <summary>
    Records the number of preferences applied from a remote device to the
    current device. Logged each time the user accepts a suggestion to update
    their settings.
  </summary>
</histogram>

<histogram name="IOS.SyncedSetUp.Snackbar.Interaction"
    enum="SyncedSetUpSnackbarInteraction" expires_after="2027-01-17">
  <owner>ericekey@google.com</owner>
  <owner>bwwilliams@google.com</owner>
  <owner>scottyoder@google.com</owner>
  <summary>
    Records user interactions with snackbars offering to apply or revert
    appearance-related preferences synced from other devices. Logged when the
    snackbar is shown, acted upon (e.g., Apply, Undo, Redo), or dismissed.
  </summary>
</histogram>

<histogram name="IOS.SyncedSetUp.TriggerSource" enum="SyncedSetUpTriggerSource"
    expires_after="2027-01-10">
  <owner>ericekey@google.com</owner>
  <owner>bwwilliams@google.com</owner>
  <owner>scottyoder@google.com</owner>
  <summary>
    Records the event that caused the Synced Set Up flow to start (e.g., First
    Run, remote pref change, or scene activation). This provides a key metric
    for understanding how users are entering the flow.
  </summary>
</histogram>

<histogram name="IOS.System.PreferredSystemFontSize"
    enum="IOSContentSizeCategory" expires_after="2026-08-02">
  <owner>jlebel@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Records the preferred system font size from iOS device. Recorded at cold
    start.
  </summary>
</histogram>

<histogram name="IOS.TabGrid.CloseTabs" units="Tabs" expires_after="2027-04-01">
  <owner>huitingyu@google.com</owner>
  <owner>bling-pandamonium@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="2026-11-01">
  <owner>huitingyu@google.com</owner>
  <owner>bling-pandamonium@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="2026-11-01">
  <owner>huitingyu@google.com</owner>
  <owner>bling-pandamonium@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="2026-11-01">
  <owner>huitingyu@google.com</owner>
  <owner>bling-pandamonium@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="2026-11-01">
  <owner>gambard@chromium.org</owner>
  <owner>bling-pandamonium@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="2027-02-07">
  <owner>huitingyu@google.com</owner>
  <owner>bling-pandamonium@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.TabPicker.Accepted.SelectedTabs.Count" units="count"
    expires_after="2027-07-07">
  <owner>alionadangla@google.com</owner>
  <owner>bling-search@google.com</owner>
  <summary>
    Records the number of tabs selected when the user exits the Tab Picker by
    accepting the selection.
  </summary>
</histogram>

<histogram name="IOS.TabPicker.Cancel.SelectedTabs.Count" units="count"
    expires_after="2027-07-07">
  <owner>alionadangla@google.com</owner>
  <owner>bling-search@google.com</owner>
  <summary>
    Records the number of tabs selected when the user exits the Tab Picker by
    cancelling.
  </summary>
</histogram>

<histogram name="IOS.TabStrip.DragDropGroups" enum="IOSTabSwitcherDragDropTabs"
    expires_after="2027-04-01">
  <owner>huitingyu@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Records tab group drag and drop interactions on the tab strip. An
    interaction is recorded twice (one drag and one drop).
  </summary>
</histogram>

<histogram name="IOS.TabStrip.DragDropTabs" enum="IOSTabSwitcherDragDropTabs"
    expires_after="2027-04-01">
  <owner>huitingyu@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Records tab drag and drop interactions on the tab strip. An interaction is
    recorded twice (one drag and one drop).
  </summary>
</histogram>

<histogram name="IOS.TabStrip.DragInteraction" enum="Boolean"
    expires_after="2027-04-01">
  <owner>huitingyu@google.com</owner>
  <owner>bling-pandamonium@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.DragOrigin" enum="IOSTabSwitcherDragOrigin"
    expires_after="2027-04-01">
  <owner>huitingyu@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>Records the origin of dropped items in the tab strip.</summary>
</histogram>

<histogram name="IOS.TabStrip.DragOrigin.Group" enum="IOSTabSwitcherDragOrigin"
    expires_after="2027-04-01">
  <owner>huitingyu@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>Records the origin of dropped tab groups in the tab strip.</summary>
</histogram>

<histogram name="IOS.TabStrip.TapInteraction" enum="Boolean"
    expires_after="2027-04-01">
  <owner>huitingyu@google.com</owner>
  <owner>bling-pandamonium@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.DragDropGroups"
    enum="IOSTabSwitcherDragDropTabs" expires_after="2027-04-01">
  <owner>huitingyu@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Records tab group drag and drop interactions on the tab switcher. An
    interaction is recorded twice (one drag and one drop).
  </summary>
</histogram>

<histogram name="IOS.TabSwitcher.DragDropMultiSelect"
    enum="IOSTabSwitcherDragDropTabs" expires_after="2027-04-01">
  <owner>huitingyu@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Records multi-selection drag and drop interactions on the tab switcher. An
    interaction is recorded twice (one drag and one drop).
  </summary>
</histogram>

<histogram name="IOS.TabSwitcher.DragDropTabs"
    enum="IOSTabSwitcherDragDropTabs" expires_after="2027-04-01">
  <owner>huitingyu@google.com</owner>
  <owner>bling-pandamonium@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="2027-04-01">
  <owner>huitingyu@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>Records the origin of dropped items in the tab switcher.</summary>
</histogram>

<histogram name="IOS.TabSwitcher.DragOrigin.Group"
    enum="IOSTabSwitcherDragOrigin" expires_after="2027-04-01">
  <owner>huitingyu@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Records the origin of dropped tab groups in the tab switcher.
  </summary>
</histogram>

<histogram name="IOS.TabSwitcher.Group.DragOrigin"
    enum="IOSTabSwitcherDragOrigin" expires_after="2027-04-01">
  <owner>huitingyu@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Records the origin of dropped items in the tab group view. This is recorded
    when items are drop in the tab group view.
  </summary>
</histogram>

<histogram name="IOS.TabSwitcher.Idle.IncognitoTabGridPage" enum="Boolean"
    expires_after="2027-04-01">
  <owner>huitingyu@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Tracks whether the user closed the incognito tab grid page without doing any
    meaningful action on any tab grid pages. 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.RegularTabGridPage" enum="Boolean"
    expires_after="2027-04-01">
  <owner>huitingyu@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Tracks whether the user closed the regular tab grid page without doing any
    meaningful action on any tab grid pages. 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.Idle.TabGroups" enum="Boolean"
    expires_after="2027-04-01">
  <owner>huitingyu@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Tracks whether the user closed the tab groups page without doing any
    meaningful action on any tab grid pages. Meaningful action is opening a tab.
    Recorded when the user closed the tab groups page or switched to a tab grid
    page.
  </summary>
</histogram>

<histogram name="IOS.TabSwitcher.PageChangeInteraction"
    enum="IOSTabSwitcherPageChangeInteraction" expires_after="2027-02-07">
  <owner>huitingyu@google.com</owner>
  <owner>bling-pandamonium@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="2027-04-01">
  <owner>huitingyu@google.com</owner>
  <owner>bling-pandamonium@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="2027-04-01">
  <owner>huitingyu@google.com</owner>
  <owner>bling-pandamonium@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="2027-01-17">
  <owner>huitingyu@google.com</owner>
  <owner>bling-pandamonium@google.com</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. Note: this metric
    got expired for a while between 2023-05-14 and 2023-06-07.
  </summary>
</histogram>

<histogram name="IOS.TabSwitcher.TimeSpentOpeningExistingTab" units="ms"
    expires_after="2027-07-02">
  <owner>huitingyu@google.com</owner>
  <owner>bling-pandamonium@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="2027-07-02">
  <owner>huitingyu@google.com</owner>
  <owner>bling-pandamonium@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.TaskOrchestrator.TaskSchedulingOutcome"
    enum="IOSTaskOrchestratorTaskSchedulingOutcome" expires_after="2027-02-21">
  <owner>fedegermi@google.com</owner>
  <owner>sdefresnem@google.com</owner>
  <summary>Records the outcome of scheduling a task request.</summary>
</histogram>

<histogram name="IOS.TextSelection.EntityDetection.DetectedEntityType"
    enum="TextSelectionDetectedEntityType" expires_after="2025-08-10">
  <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.TFLiteModelEvaluationDuration"
    units="ms" expires_after="2025-06-22">
  <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.ThemeSync.InitialSyncState"
    enum="IOSThemeSyncInitialState" expires_after="2027-06-18">
  <owner>hiramahmood@google.com</owner>
  <owner>adamta@google.com</owner>
  <summary>
    Records the state of the Sync server during the initial Theme Sync flow.
  </summary>
</histogram>

<histogram name="IOS.ThemeSync.RemoteThemeAction"
    enum="IOSThemeSyncRemoteAction" expires_after="2027-02-07">
  <owner>bwwilliams@google.com</owner>
  <owner>adamta@google.com</owner>
  <summary>
    Records the action taken by the Sync client when evaluating an incoming
    remote theme.
  </summary>
</histogram>

<histogram name="IOS.ThemeSync.StopAction" enum="IOSThemeSyncStopAction"
    expires_after="2027-06-18">
  <owner>hiramahmood@google.com</owner>
  <owner>adamta@google.com</owner>
  <summary>
    Records that the local pre-sync theme was successfully restored when sync
    was stopped, disabled, or cleared.
  </summary>
</histogram>

<histogram name="IOS.TipsMagicStack.Module.DisplayedType" enum="TipIdentifier"
    expires_after="2027-02-07">
  <owner>bmcclure@google.com</owner>
  <owner>bwwilliams@google.com</owner>
  <summary>
    Logged when Tips (Magic Stack) is displayed for a user. The enumeration
    indicates which tip was displayed.
  </summary>
</histogram>

<histogram name="IOS.TipsMagicStack.Module.TappedType" enum="TipIdentifier"
    expires_after="2026-11-15">
  <owner>bmcclure@google.com</owner>
  <owner>bwwilliams@google.com</owner>
  <summary>
    Logged when the user taps on the Tips (Magic Stack) module. The enumeration
    indicates which tip was interacted with.
  </summary>
</histogram>

<histogram name="IOS.TipsNotification.{PromoType}.PromoAction"
    enum="IOSTipsNotificationPromoAction" expires_after="2026-09-17">
  <owner>bmcclure@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Logs when a user taps the primary or secondary action button in the
    {PromoType} promo view triggered by a Tips Notification.
  </summary>
  <token key="PromoType">
    <variant name="EnhancedSafeBrowsing" summary="Enhanced Safe Browsing"/>
    <variant name="Lens" summary="Lens"/>
    <variant name="PriceTracking" summary="Price Tracking"/>
    <variant name="SearchWhatYouSee" summary="Search What You See"/>
    <variant name="TabGroups" summary="Tab Groups"/>
  </token>
</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.Translate.PDF.OpenedFromTranslatedPage"
    enum="BooleanAvailable" expires_after="2026-12-10">
  <owner>erahmaoui@google.com</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Logs whether a PDF was opened from an already translated page. Emitted at
    each navigation.
  </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.UnitConversion.DetectedMeasurements" units="measurements"
    expires_after="2026-05-11">
  <owner>erahmaoui@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Records the number of detected measurements in a webpage after the page
    load.
  </summary>
</histogram>

<histogram name="IOS.UnitConversion.{Type}" enum="UnitChangeTypes"
    expires_after="2026-05-11">
  <owner>erahmaoui@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Logs the changes in the source or target units change under a unit type
    state (unchanged or changed).
  </summary>
  <token key="Type">
    <variant name="SourceUnitChangeAfterUnitTypeChange"
        summary="Recorded once when the source unit change after any unit
                 type change."/>
    <variant name="SourceUnitChangeBeforeUnitTypeChange"
        summary="Recorded once after a source unit type change before any
                 change of the unit type."/>
    <variant name="TargetUnitChange"
        summary="Recorded once, when the first target unit change occures,
                 without taking into consideration the changes in the unit
                 type."/>
  </token>
</histogram>

<histogram name="IOS.UpgradeCenter.UpgradeFailed"
    enum="IOSUpgradeCenterFailureReason" expires_after="2025-10-31">
  <owner>bwwilliams@google.com</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    Logs the failure reasons when Chrome on iOS cannot upgrade its version. Each
    bucket in the histogram corresponds to a distinct failure reason (see
    IOSUpgradeCenterFailureReason).
  </summary>
</histogram>

<histogram name="IOS.Variations.FirstRun.SeedApplicationStage"
    enum="VariationsFirstRunSeedApplicationStage" expires_after="2027-04-01">
  <owner>ginnyhuang@chromium.org</owner>
  <owner>huitingyu@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    Warning: this histogram was expired from 2026-02-09 to 2026-03-31; data may
    be missing.

    The stage of applying a downloaded initial variations seed during Chrome
    first run on platforms that implemented first run variations. This would be
    emitted on the first run, after Chrome iOS has finished initializing the
    browser objects for the background handlers, to indicate whether the initial
    variations seed fetched natively has been applied, and if not, which stage
    of the variations seed importing process has it reached for debugging
    purpose.
  </summary>
</histogram>

<histogram name="IOS.Variations.FirstRun.SeedFetchResult"
    enum="VariationsSeedFetchResult" expires_after="2027-01-10">
  <owner>ginnyhuang@chromium.org</owner>
  <owner>bling-pandamonium@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="2026-03-01">
  <owner>ginnyhuang@chromium.org</owner>
  <owner>bling-pandamonium@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.Web.ErrorPagePresentationFailed"
    enum="IOSErrorPagePresentationFailed" expires_after="2027-01-24">
  <owner>michaeldo@chromium.org</owner>
  <owner>bling-fundamentals@google.com</owner>
  <summary>
    Logged when the error page fails to load. Sometimes, for example, when the
    web view no longer exists, this error may be expected. Other times, it will
    have unknown causes. These unknown cases will cause a blank white page to
    remain displayed in the web content area after the failed load instead of a
    descriptive error message. Ref: crbug.com/1489167
  </summary>
</histogram>

<histogram name="IOS.Web.FileInput.Clicked" enum="IOSWebFileInputAttributes"
    expires_after="2027-03-03">
  <owner>olivierrobin@chromium.org</owner>
  <owner>qpubert@google.com</owner>
  <summary>
    An enum describing the accept and the multiple attributes of an input file
    element. Logged when the element is clicked.
  </summary>
</histogram>

<histogram name="IOS.Web.FileInput.ContentState"
    enum="IOSWebFileInputContentState" expires_after="2027-03-03">
  <owner>olivierrobin@chromium.org</owner>
  <owner>qpubert@google.com</owner>
  <summary>
    An enum describing the state of the file input when clicked (whether it
    accepts multiple files and whether it already has some files).
  </summary>
</histogram>

<histogram name="IOS.Web.FileInput.ContentState.Drive"
    enum="IOSWebFileInputContentState" expires_after="2027-03-03">
  <owner>olivierrobin@chromium.org</owner>
  <owner>qpubert@google.com</owner>
  <summary>
    An enum describing the state of the file input when clicked (whether it
    accepts multiple files and whether it already has some files) specifically
    when choosing a file from Drive.
  </summary>
</histogram>

<histogram name="IOS.Web.FileInput.DirectoryAttributeMismatched" enum="Boolean"
    expires_after="2027-03-03">
  <owner>olivierrobin@chromium.org</owner>
  <owner>qpubert@google.com</owner>
  <summary>
    Histogram describing whether a &quot;Choose File&quot; event unexpectedly
    accepted/denied directories as selection. Logged when an &quot;Open
    Panel&quot; event is triggered by the web page which does not agree with the
    &quot;Choose File&quot; event as to whether directories can be selected.
  </summary>
</histogram>

<histogram name="IOS.Web.FileInput.EventDropped" enum="Boolean"
    expires_after="2027-03-03">
  <owner>olivierrobin@chromium.org</owner>
  <owner>qpubert@google.com</owner>
  <summary>
    Histogram describing whether a &quot;Choose File&quot; event was dropped in
    order to record a new incoming &quot;Choose File&quot; event. Logged when a
    new &quot;Choose File&quot; event is triggered by the web page.
  </summary>
</histogram>

<histogram name="IOS.Web.FileInput.EventMatched" enum="Boolean"
    expires_after="2027-03-03">
  <owner>olivierrobin@chromium.org</owner>
  <owner>qpubert@google.com</owner>
  <summary>
    Histogram describing whether a &quot;Choose File&quot; event was matched to
    an &quot;Open Panel&quot; event. Logged when an &quot;Open Panel&quot; event
    is triggered by the web page.
  </summary>
</histogram>

<histogram name="IOS.Web.FileInput.MultipleAttributeMismatched" enum="Boolean"
    expires_after="2027-03-03">
  <owner>olivierrobin@chromium.org</owner>
  <owner>qpubert@google.com</owner>
  <summary>
    Histogram describing whether a &quot;Choose File&quot; event unexpectedly
    accepted/denied multiple files as selection. Logged when an &quot;Open
    Panel&quot; event is triggered by the web page which does not agree with the
    &quot;Choose File&quot; event as to whether multiple files can be selected.
  </summary>
</histogram>

<histogram name="IOS.Web.JSMessaging.ScriptMessageConversion.Duration"
    units="microseconds" expires_after="2027-01-03">
  <owner>danieltwhite@google.com</owner>
  <owner>bling-fundamentals@google.com</owner>
  <summary>
    The time it takes to convert a WKScriptMessage object to be converted to a
    web::ScriptMessage object. This metrics is only collected on clients with
    high-resolution clocks.
  </summary>
</histogram>

<histogram name="IOS.Web.URLDidChangeToEmptyURL" enum="BooleanHit"
    expires_after="2027-03-30">
  <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. This histogram was expired between 2026-03-30 and 2026-06-02,
    data may be missing.
  </summary>
</histogram>

<histogram name="IOS.WebState.Clipboard.{Action}.Outcome" enum="BooleanAllowed"
    expires_after="2027-02-07">
  <owner>eic@google.com</owner>
  <owner>mxlg@google.com</owner>
  <owner>bling-enterprise@google.com</owner>
  <summary>
    Records the final outcome of an intercepted clipboard {Action}, indicating
    whether the action was ultimately Allowed (true) or Blocked (false). Emitted
    after a clipboard interception.
  </summary>
  <token key="Action">
    <variant name="Copy"/>
    <variant name="Cut"/>
    <variant name="Paste"/>
  </token>
</histogram>

<histogram name="IOS.WebState.Clipboard.{Action}.Source"
    enum="IOSClipboardSource" expires_after="2027-02-07">
  <owner>eic@google.com</owner>
  <owner>mxlg@google.com</owner>
  <owner>bling-enterprise@google.com</owner>
  <summary>
    The source of an intercepted clipboard {Action} operation in a WebState.
    Emitted after a clipboard interception.
  </summary>
  <token key="Action">
    <variant name="Copy"/>
    <variant name="Cut"/>
    <variant name="Paste"/>
  </token>
</histogram>

<histogram name="IOS.WebUI.{Action}" enum="WebUIMojoActions"
    expires_after="2027-06-15">
  <owner>alexandrasp@google.com</owner>
  <owner>bling-fundamentals@google.com</owner>
  <summary>
    Records the outcome of interactions with Mojo through Mojo Facade on iOS.

    Note: Starting in M153, MojoHandle.readMessage metrics are logged, and
    unknown action variants are recorded under Mojo.Unknown.
  </summary>
  <token key="Action">
    <variant name="Mojo.bindInterface"/>
    <variant name="Mojo.createMessagePipe"/>
    <variant name="Mojo.Unknown"
        summary="An unrecognized or malformed Mojo message"/>
    <variant name="MojoHandle.close"/>
    <variant name="MojoHandle.readMessage"/>
    <variant name="MojoHandle.watch"/>
    <variant name="MojoHandle.writeMessage"/>
    <variant name="MojoWatcher.cancel"/>
  </token>
</histogram>

<histogram name="IOS.WelcomeBack.ActiveDaysInPast28Days" units="days"
    expires_after="2027-04-01">
  <owner>joemerramos@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the number of active session days in the past 28 days for users
    evaluated by the Welcome Back screen under the UseActiveDays arm. Recorded
    when the feature engagement tracker is successfully initialized.
  </summary>
</histogram>

<histogram name="IOS.WelcomeBack.ActiveDaysInPast28DaysForInactives"
    units="days" expires_after="2027-04-01">
  <owner>joemerramos@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the number of active session days in the past 28 days specifically
    for inactive users (previous active days count 1 or fewer) evaluated by the
    Welcome Back screen.
  </summary>
</histogram>

<histogram name="IOS.WelcomeBack.DaysSinceActive" units="days"
    expires_after="2027-04-01">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the number of days since the user was last active in the app,
    calculated on cold start. Recorded once per cold start if there is a valid
    previous session end time. Uses 1-day buckets up to 50 days.
  </summary>
</histogram>

<histogram name="IOS.WelcomeBack.DaysSinceActiveNotFeatureFlagGuarded"
    units="days" expires_after="2027-04-01">
  <owner>joemerramos@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the number of days since the user was last active in the app,
    calculated unconditionally on cold start for the entire user population.
    Recorded once per cold start if there is a valid previous session end time.
    Uses 1-day buckets up to 50 days.
  </summary>
</histogram>

<histogram name="IOS.WelcomeBack.DetailScreen.Impression"
    enum="IOSBestFeaturesItemType" expires_after="2027-08-02">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the type of feature displayed in welcome back. Recorded each time a
    user clicks on a feature in the Welcome Back main screen to view more
    details.
  </summary>
</histogram>

<histogram name="IOS.WelcomeBack.FeaturesClickedCount" units="count"
    expires_after="2027-08-02">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the number of features clicked by the user within the Welcome Back
    screen. Recorded when the Welcome Back screen is dismissed or closed.
  </summary>
</histogram>

<histogram name="IOS.WelcomeBack.PromoRegistration.MissingFeature"
    enum="IOSBestFeaturesItemType" expires_after="2027-04-01">
  <owner>joemerramos@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Tracks which promoted features were missing/already-used when the Welcome
    Back promo registration failed because the minimum number of eligible
    features (2) was not met. Logged once per missing feature when the
    registration fails.
  </summary>
</histogram>

<histogram name="IOS.WelcomeBack.PromoRegistrationResult"
    enum="WelcomeBackPromoRegistrationResult" expires_after="2027-04-01">
  <owner>joemerramos@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Records the success and failure reasons when registering the Welcome Back
    promo. Recorded on profile startup when checking if the promo should be
    registered.
  </summary>
</histogram>

<histogram name="IOS.WelcomeBack.SuppressedInFavorOfPromo"
    enum="IOSPromosManagerPromo" expires_after="2027-04-01">
  <owner>joemerramos@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Tracks which other promo was selected for display instead of the Welcome
    Back promo when the Welcome Back promo was registered, in the display queue,
    and otherwise fully eligible to trigger. Logged once per session when a
    promo is displayed.
  </summary>
</histogram>

<histogram name="IOS.WhatsNew.InstructionsShown" enum="WhatsNewType"
    expires_after="2027-01-30">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Recorded each time the instructions of a What's New feature is displayed.
    The recorded value is the type of the feature that was being viewed.
  </summary>
</histogram>

<histogram name="IOS.WhatsNew.ItemsClickedCount" units="count"
    expires_after="2027-01-30">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>The number of clicked What's New items per impression</summary>
</histogram>

<histogram name="IOS.WhatsNew.LearnMoreTapped" enum="WhatsNewType"
    expires_after="2027-01-30">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Recorded each time the learn more button of a What's New feature is tapped.
    The recorded value is the type of the feature that was being viewed.
  </summary>
</histogram>

<histogram name="IOS.WhatsNew.PrimaryActionTapped" enum="WhatsNewType"
    expires_after="2027-01-30">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Recorded each time the primary button of a What's New feature is tapped. The
    recorded value is the type of the feature that was being viewed.
  </summary>
</histogram>

<histogram name="IOS.WhatsNew.Shown" enum="WhatsNewType"
    expires_after="2027-01-30">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>
    Recorded each time a feature cell in What's New is tapped. The recorded
    value is the type of the feature that will show.
  </summary>
</histogram>

<histogram name="IOS.WhatsNew.TableViewDidScroll" enum="Boolean"
    expires_after="2027-01-30">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@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="2027-01-30">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>Logs the time a user spent on What's New.</summary>
</histogram>

<histogram name="IOS.WhatsNew.{Type}.TimeSpent" units="ms"
    expires_after="2027-01-30">
  <owner>cheickcisse@google.com</owner>
  <owner>bling-mony-pod@google.com</owner>
  <summary>Logs the time a user spent on each feature of What's New.</summary>
  <token key="Type">
    <variant name="AddPasswordManually" summary="Add Password Manually"/>
    <variant name="Autofill" summary="Autofill"/>
    <variant name="BlingEnterpriseProfiles"
        summary="Bling Enterprise Profiles"/>
    <variant name="BottomOmnibox" summary="Bottom Omnibox"/>
    <variant name="CalendarEvent" summary="Calendar Event"/>
    <variant name="ChooseFromDrive" summary="Choose From Drive"/>
    <variant name="ChromeActions" summary="Chrome Actions"/>
    <variant name="CustomizableOverflowMenu"
        summary="Customizable Overflow Menu"/>
    <variant name="DockingBling" summary="Docking Bling"/>
    <variant name="ESB" summary="Enhanced Safe Browsing"/>
    <variant name="InactiveTabs" summary="Inactive Tabs"/>
    <variant name="IncognitoLock" summary="Incognito Lock"/>
    <variant name="IncognitoTabsFromOtherApps"
        summary="Incognito Tabs From Other Apps"/>
    <variant name="LensQuestion" summary="Lens Question"/>
    <variant name="LensSearch" summary="Lens Search"/>
    <variant name="LensSearchWhatYouSee" summary="Lens Search What You See"/>
    <variant name="LensTranslate" summary="Lens Translate"/>
    <variant name="MiniMaps" summary="Mini Maps"/>
    <variant name="NewOverflowMenu" summary="New Overflow Menu"/>
    <variant name="OtherBuyingOptions" summary="Other Buying Options"/>
    <variant name="PackageTracking" summary="Package Tracking"/>
    <variant name="Passkeys" summary="Passkeys"/>
    <variant name="PasswordSharing" summary="Password Sharing"/>
    <variant name="PasswordsInOtherApps" summary="Passwords In Other Apps"/>
    <variant name="PinnedTabs" summary="Pinned Tabs"/>
    <variant name="PriceHistory" summary="Price History"/>
    <variant name="PriceTracking" summary="Price Tracking"/>
    <variant name="PWMWidget" summary="Password Manager Widget"/>
    <variant name="SaveToDrive" summary="Save To Drive"/>
    <variant name="SearchTabs" summary="Search Tabs"/>
    <variant name="SharedHighlighting" summary="Shared Highlighting"/>
    <variant name="UseChromeByDefault" summary="Use Chrome By Default"/>
  </token>
</histogram>

<histogram name="IOS.WidgetKit.Action" enum="IOSWidgetKitAction"
    expires_after="never">
<!-- expires-never: part of vital metric ChromeSearch.Actions -->

  <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="2027-02-07">
  <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.WidgetsForMIM.DeletedAccountUiDisplayed"
    enum="IOSWidgetKitDeletedUiCount" expires_after="2027-02-18">
  <owner>fedegermi@google.com</owner>
  <owner>bling-fundamentals@google.com</owner>
  <summary>
    Logs the number of times that the deleted account ui was displayed on
    widgets. This data is collected when the ui is presented on the widget. The
    value is then added to the histogram when the app is launched.
  </summary>
</histogram>

<histogram name="IOS.WKWebViewFinishBeforeCommit" enum="Boolean"
    expires_after="2026-10-30">
  <owner>gambard@chromium.org</owner>
  <owner>michaeldo@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.

    Expired between M77 and M117.
  </summary>
</histogram>

<histogram name="IOS.{AppVersion}AppLaunchesPerSession" units="launches"
    expires_after="2027-02-22">
  <owner>michaeldo@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    The number of application launches per &quot;cold start&quot;. (A &quot;cold
    start&quot; is an application launch which occurs when the app is not
    already running in the background.) Even when the application is in the
    background, the system may keep it alive if the resource usage is low. This
    will result in subsequent launches being faster by resuming the exisiting
    launched application instead of requiring a full, new launch. In the context
    of feature experiments, a decrease in this metric may signal that a feature
    is doing more work than necessary while the application is in the background
    and thus being terminated more frequently by the system.
  </summary>
  <token key="AppVersion" variants="AppVersion"/>
</histogram>

<histogram name="IOS.{AppVersion}WarmStartCount" units="launches"
    expires_after="2026-10-25">
  <owner>michaeldo@chromium.org</owner>
  <owner>bling-team@google.com</owner>
  <summary>
    This event is recorded on application launch when the app was not already
    running in the background (a &quot;cold start&quot;). The value represents
    how many times the application was brought to the foreground while already
    running in the background (a &quot;warm start&quot;) during the previous
    session. Cold starts are slower because the entire application must be
    re-launched, while warm starts are merely a transistion from background to
    foreground state. In the context of feature experiments, a decrease in this
    metric may signal that a feature is doing more work than necessary while the
    application is in the background and thus being terminated more frequently
    by the system. NOTE: This metric is logged for the prior session, which may
    have been a different application version than the version logging this
    metric.
  </summary>
  <token key="AppVersion" variants="AppVersion"/>
</histogram>

<histogram name="ManualFallback.PresentedOptions.AllPasswords"
    units="Credentials" expires_after="2026-06-22">
  <owner>tmartino@chromium.org</owner>
  <owner>bling-transactions@google.com</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="2026-12-27">
  <owner>tmartino@chromium.org</owner>
  <owner>bling-transactions@google.com</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. Warning: this
    histogram was expired from 2023-12-10 to 2024-4-15; data may be missing.
  </summary>
</histogram>

<histogram name="ManualFallback.PresentedOptions.Passwords" units="Credentials"
    expires_after="2026-06-22">
  <owner>tmartino@chromium.org</owner>
  <owner>bling-transactions@google.com</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="2026-12-27">
  <owner>tmartino@chromium.org</owner>
  <owner>bling-transactions@google.com</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. Warning: this
    histogram was expired from 2024-1-28 to 2024-4-15; data may be missing.
  </summary>
</histogram>

<histogram name="ManualFallback.VisibleSuggestions.ExpandIcon.OpenAddresses"
    units="Suggestions" expires_after="2027-02-07">
  <owner>noemies@google.com</owner>
  <owner>sugoi@google.com</owner>
  <summary>
    [iOS Only] Tracks the number of autofill suggestions present when the user
    taps on the expand button in the keyboard accessory to open the address
    manual fallback menu.
  </summary>
</histogram>

<histogram name="ManualFallback.VisibleSuggestions.ExpandIcon.OpenPasswords"
    units="Suggestions" expires_after="2026-07-26">
  <owner>noemies@google.com</owner>
  <owner>sugoi@google.com</owner>
  <summary>
    [iOS Only] Tracks the number of autofill suggestions present when the user
    taps on the expand button in the keyboard accessory to open the password
    manual fallback menu.
  </summary>
</histogram>

<histogram
    name="ManualFallback.VisibleSuggestions.ExpandIcon.OpenPaymentMethods"
    units="Suggestions" expires_after="2026-05-31">
  <owner>noemies@google.com</owner>
  <owner>sugoi@google.com</owner>
  <summary>
    [iOS Only] Tracks the number of autofill suggestions present when the user
    taps on the expand button in the keyboard accessory to open the payment
    method manual fallback menu.
  </summary>
</histogram>

<histogram name="ManualFallback.VisibleSuggestions.OpenCreditCards"
    units="Suggestions" expires_after="2026-07-05">
  <owner>tmartino@chromium.org</owner>
  <owner>bling-transactions@google.com</owner>
  <summary>
    [iOS Only] Tracks the number of autofill suggestions present when the user
    taps on the credit card button in manual fallback. Warning: this histogram
    was expired from 2023-12-10 to 2024-4-15; data may be missing.
  </summary>
</histogram>

<histogram name="UserInterfaceStyle.CurrentlyUsed" enum="IOSUserInterfaceStyle"
    expires_after="2027-04-29">
  <owner>qpubert@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    The currently used interface style (light or dark). Recorded when the app
    becomes active and when the style changes while the app is in the
    foreground.
  </summary>
</histogram>

<histogram name="UserInterfaceStyle.CurrentlyUsed.{TimeOfDay}"
    enum="IOSUserInterfaceStyle" expires_after="2027-04-29">
  <owner>qpubert@google.com</owner>
  <owner>bling-squid-squad@google.com</owner>
  <summary>
    The currently used interface style (light or dark) during the specified time
    of day. Recorded when the app becomes active and when the style changes
    while the app is in the foreground. The time used for bucketing is based on
    the device's local time.
  </summary>
  <token key="TimeOfDay">
    <variant name="6AMToNoon"/>
    <variant name="6PMToMidnight"/>
    <variant name="MidnightTo6AM"/>
    <variant name="NoonTo6PM"/>
  </token>
</histogram>

</histograms>

</histogram-configuration>
