<!--
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 Android 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="ActivityType">
  <variant name="" summary="activity"/>
  <variant name=".ChromeTabbedActivity" summary="ChromeTabbedActivity"/>
  <variant name=".CustomTabActivity" summary="CustomTabActivity"/>
  <variant name=".FirstRunActivity" summary="FirstRunActivity"/>
</variants>

<variants name="AndroidDownloadTypes">
  <variant name=".Audio" summary=""/>
  <variant name=".Document" summary=""/>
  <variant name=".Image" summary=""/>
  <variant name=".OfflinePage" summary=""/>
  <variant name=".Other" summary=""/>
  <variant name=".PrefetchedOfflinePage" summary=""/>
  <variant name=".Total" summary=""/>
  <variant name=".Video" summary=""/>
</variants>

<variants name="ChildProcessConnectionMetricsBindingState">
  <variant name="ContentModerate"
      summary="Moderate binding excluding BindingManager bindings"/>
  <variant name="ContentVisible"
      summary="Visible binding excluding BindingManager bindings"/>
  <variant name="ContentWaived"
      summary="Waived binding excluding BindingManager bindings"/>
  <variant name="Moderate" summary="strongest binding of Moderate"/>
  <variant name="NotPerceptible"
      summary="strongest binding of Not Perceptible"/>
  <variant name="Strong" summary="strongest binding of Strong"/>
  <variant name="Visible" summary="strongest binding of Visible"/>
  <variant name="Waivable" summary="binding only from BindingManager"/>
  <variant name="Waived" summary="strongest binding of Waived"/>
</variants>

<variants name="MessageIdentifiers">
  <variant name=".AboutThisSite"/>
  <variant name=".AddToHomescreenIPH"/>
  <variant name=".AdsBlocked"/>
  <variant name=".ArCoreUpgrade"/>
  <variant name=".AutoDarkWebContents"/>
  <variant name=".ChromeSurvey"/>
  <variant name=".DesktopSiteGlobalDefaultOptOut"/>
  <variant name=".DesktopSiteGlobalOptIn"/>
  <variant name=".DownloadIncognitoWarning"/>
  <variant name=".DownloadProgress"/>
  <variant name=".ExternalNavigation"/>
  <variant name=".FramebustBlocked"/>
  <variant name=".GeneratedPasswordSaved"/>
  <variant name=".InstallableAmbientBadge"/>
  <variant name=".MerchantTrust"/>
  <variant name=".NearOomReduction"/>
  <variant name=".NotificationBlocked"/>
  <variant name=".OfferNotification"/>
  <variant name=".PermissionUpdate"/>
  <variant name=".PopupBlocked"/>
  <variant name=".ReaderMode"/>
  <variant name=".RestoreCustomTab"/>
  <variant name=".SafetyTip"/>
  <variant name=".SaveAddressProfile"/>
  <variant name=".SaveCard"/>
  <variant name=".SavePassword"/>
  <variant name=".SendTabToSelf"/>
  <variant name=".SharedHighlighting"/>
  <variant name=".SyncError"/>
  <variant name=".TailoredSecurityDisabled"/>
  <variant name=".TailoredSecurityEnabled"/>
  <variant name=".Translate"/>
  <variant name=".UndoCustomTabRestoration"/>
  <variant name=".UpdatePassword"/>
  <variant name=".VrServicesUpgrade"/>
</variants>

<variants name="TaskType">
  <variant name="BackgroundSyncOneShot" summary="BackgroundSyncOneShot"/>
  <variant name="ChromeMinidumpUploading" summary="ChromeMinidumpUploading"/>
  <variant name="ComponentUpdate" summary="ComponentUpdate"/>
  <variant name="DeprecatedDownloadResumption"
      summary="DeprecatedDownloadResumption"/>
  <variant name="DeprecatedExploreSitesRefresh"
      summary="DeprecatedExploreSitesRefresh"/>
  <variant name="DownloadAutoResumption" summary="DownloadAutoResumption"/>
  <variant name="DownloadCleanup" summary="DownloadCleanup"/>
  <variant name="DownloadLater" summary="DownloadLater"/>
  <variant name="DownloadService" summary="DownloadService"/>
  <variant name="ExploreSitesRefresh" summary="ExploreSitesRefresh"/>
  <variant name="FeedRefresh" summary="FeedRefresh"/>
  <variant name="FeedV2Refresh" summary="FeedV2Refresh"/>
  <variant name="Gcm" summary="Gcm"/>
  <variant name="NotificationScheduler" summary="NotificationScheduler"/>
  <variant name="NotificationService" summary="NotificationService"/>
  <variant name="NotificationTrigger" summary="NotificationTrigger"/>
  <variant name="OfflinePages" summary="OfflinePages"/>
  <variant name="Omaha" summary="Omaha"/>
  <variant name="PeriodicBackgroundSyncChromeWakeup"
      summary="PeriodicBackgroundSyncChromeWakeup"/>
  <variant name="QueryTile" summary="QueryTile"/>
  <variant name="Test" summary="Test"/>
  <variant name="WebApkUpdate" summary="WebApkUpdate"/>
  <variant name="WebviewComponentUpdate" summary="WebviewComponentUpdate"/>
  <variant name="WebviewMinidumpUploading" summary="WebviewMinidumpUploading"/>
  <variant name="WebviewVariationsSeedFetch"
      summary="WebviewVariationsSeedFetch"/>
</variants>

<variants name="ThumbnailProvider_ClientType">
  <variant name=".DownloadHome" summary="Download home"/>
  <variant name=".NTPSnippets" summary="NTP snippets"/>
</variants>

<histogram name="Android.ActivityStop.NumberOfTabsUsed" units="count"
    expires_after="2023-10-08">
  <owner>gauravjj@google.com</owner>
  <owner>skavuluru@google.com</owner>
  <owner>clank-large-form-factors@google.com</owner>
  <summary>
    Captures the number of regular and incognito tabs used. Used tabs are
    calculated by identifying the number of tabs that were selected between
    ChromeTabbedActivity onResumeWithNative() and onStopWithNative(). This is
    recorded when onStopWithNative() is called by backgrounding the app or by
    opening another activity like SettingsActivity. If multiple instances are
    running, each instance will only track and record usage of tabs that it
    contains.
  </summary>
</histogram>

<histogram name="Android.ActivityStop.PercentageOfTabsUsed" units="%"
    expires_after="2023-10-22">
  <owner>gauravjj@google.com</owner>
  <owner>skavuluru@google.com</owner>
  <owner>clank-large-form-factors@google.com</owner>
  <summary>
    Captures the percentage of regular and incognito tabs used. This is
    calculated by finding the ratio of the number of tabs used to the total
    number of tabs available between ChromeTabbedActivity onResumedWithNative
    and onStopWithNative. Total number of tabs available is the sum of the tab
    count when CTA is resumed and any new tabs that are opened before CTA is
    stopped. This is recorded when ChromeTabbedActivity#onStopWithNative() is
    called by backgrounding the app or by opening another activity like
    SettingsActivity. If multiple instances are running, each instance will only
    track and record usage of tabs that it contains.
  </summary>
</histogram>

<histogram name="Android.AdaptiveToolbarButton.Clicked"
    enum="AdaptiveToolbarButtonVariant" expires_after="2023-09-03">
  <owner>bttk@chromium.org</owner>
  <owner>chrome-segmentation-platform@google.com</owner>
  <summary>
    Reports the variant of the optional toolbar button that was clicked. Reports
    only when the feature AdaptiveButtonInTopToolbar is active.
  </summary>
</histogram>

<histogram name="Android.AdaptiveToolbarButton.SessionVariant"
    enum="AdaptiveToolbarButtonVariant" expires_after="2023-09-03">
  <owner>bttk@chromium.org</owner>
  <owner>chrome-segmentation-platform@google.com</owner>
  <summary>
    Reports the variant of the optional toolbar button used during the session.
    Reports only when the feature AdaptiveButtonInTopToolbar is active, the
    button is placed in the toolbar, and is clickable.
  </summary>
</histogram>

<histogram name="Android.AdaptiveToolbarButton.Settings.Changed"
    enum="AdaptiveToolbarRadioButtonState" expires_after="2023-08-27">
  <owner>shaktisahu@chromium.org</owner>
  <owner>chrome-segmentation-platform@google.com</owner>
  <summary>
    Records the newly selected radio button option for the adaptive toolbar
    button on the toolbar shortcut settings page. Recorded only when the
    selected radio button state is changed.
  </summary>
</histogram>

<histogram name="Android.AdaptiveToolbarButton.Settings.Startup"
    enum="AdaptiveToolbarRadioButtonState" expires_after="2023-08-27">
  <owner>shaktisahu@chromium.org</owner>
  <owner>chrome-segmentation-platform@google.com</owner>
  <summary>
    Records the currently selected radio button option for the adaptive toolbar
    button on the toolbar shortcut settings page. Recorded on startup, only if
    AdaptiveButtonInTopToolbarCustomization feature is enabled.
  </summary>
</histogram>

<histogram name="Android.AdaptiveToolbarButton.SettingsToggle.Changed"
    enum="BooleanEnabled" expires_after="2023-09-24">
  <owner>shaktisahu@chromium.org</owner>
  <owner>chrome-segmentation-platform@google.com</owner>
  <summary>
    Records whether the toolbar settings toggle button is on or off on the
    toolbar shortcut settings page after the user manually changes it. Recorded
    after the user explicitly taps on the toggle button.
  </summary>
</histogram>

<histogram name="Android.AdaptiveToolbarButton.SettingsToggle.Startup"
    enum="BooleanEnabled" expires_after="2023-09-03">
  <owner>shaktisahu@chromium.org</owner>
  <owner>chrome-segmentation-platform@google.com</owner>
  <summary>
    Records whether the toolbar settings toggle button is on or off on the
    toolbar shortcut settings page. Recorded on startup.
  </summary>
</histogram>

<histogram name="Android.AdaptiveToolbarButton.Variant.OnPageLoad"
    enum="AdaptiveToolbarButtonVariant" expires_after="2023-09-03">
  <owner>shaktisahu@chromium.org</owner>
  <owner>chrome-segmentation-platform@google.com</owner>
  <summary>
    Reports the variant of the optional toolbar button that was shown after a
    page load. Reports only when a page is loaded or a tab is switched. Reports
    only when the contextual page actions feature is enabled and after all the
    action providers have responded or the request has timed out. Only reported
    for pages in the regular profile.
  </summary>
</histogram>

<histogram name="Android.AdaptiveToolbarButton.Variant.OnStartNavigation"
    enum="AdaptiveToolbarButtonVariant" expires_after="2023-09-03">
  <owner>shaktisahu@chromium.org</owner>
  <owner>chrome-segmentation-platform@google.com</owner>
  <summary>
    Reports the variant of the optional toolbar button being shown during the
    start of a new navigation. Reports whenever
    TabObserver.onDidStartNavigationInPrimaryMainFrame() is called which then
    records the button variant currently being shown on the toolbar. Recorded
    for both regular and incognito profiles.
  </summary>
</histogram>

<histogram name="Android.AppLaunch.BlockDrawForInitialTabAccuracy"
    enum="AppLaunchBlockDrawForInitialTabAccuracy" expires_after="2022-10-16">
  <owner>sinansahin@google.com</owner>
  <owner>twellington@chromium.org</owner>
  <owner>skym@chromium.org</owner>
  <owner>clank-app-team@google.com</owner>
  <summary>
    Records the accuracy of the logic used to decide whether to block the view
    draw of the first tab, expressed as an enum. Recorded when the active tab is
    restored or an initial tab is created in ChromeTabbedActivity.
  </summary>
</histogram>

<histogram name="Android.AppLaunch.DurationDrawWasBlocked" units="ms"
    expires_after="2022-08-21">
  <obsolete>
    Removed 03/2022. Superseded by
    Android.AppLaunch.DurationDrawWasBlocked.OnInitialTab
  </obsolete>
  <owner>sinansahin@google.com</owner>
  <owner>twellington@chromium.org</owner>
  <owner>skym@chromium.org</owner>
  <owner>clank-app-team@google.com</owner>
  <summary>
    Records how long the initial tab's draw was blocked, if it was. Recorded
    when the active tab is restored or an initial tab is created in
    ChromeTabbedActivity.
  </summary>
</histogram>

<histogram name="Android.AppLaunch.DurationDrawWasBlocked.OnIncognitoReauth"
    units="ms" expires_after="2023-10-08">
  <owner>roagarwal@chromium.org</owner>
  <owner>chrome-incognito@google.com</owner>
  <summary>
    Records the time (ms) we blocked the draw of the Incognito tab (if any)
    during the app restore phase to be sure the Incognito re-auth screen is
    shown. This gets recorded only when both native and tab state have been
    initialized as by then we would show the re-auth screen.

    Blocking draw on Incognito re-auth screen prevents accidental leakage of the
    Incognito tab contents. Note that, the Incognito re-auth screen is an opt-in
    feature controlled behind the Chrome Setting &quot;Lock Incognito tabs when
    you leave Chrome&quot; under &quot;Privacy and Security&quot; So, if the
    feature is turned off, we wouldn't block draw for this use-case and won't
    record this metric.
  </summary>
</histogram>

<histogram name="Android.AppLaunch.DurationDrawWasBlocked.OnInitialTab"
    units="ms" expires_after="2022-08-21">
  <owner>sinansahin@google.com</owner>
  <owner>twellington@chromium.org</owner>
  <owner>skym@chromium.org</owner>
  <owner>clank-app-team@google.com</owner>
  <summary>
    Records how long the initial tab's draw was blocked, if it was. Recorded no
    more than once per cold start. Recorded when the active tab is restored or
    an initial tab is created in ChromeTabbedActivity. Recorded always except
    when the overview page is shown during startup.
  </summary>
</histogram>

<histogram name="Android.AppLaunch.DurationDrawWasBlocked.OnOverviewPage"
    units="ms" expires_after="2022-08-21">
  <owner>sinansahin@google.com</owner>
  <owner>twellington@chromium.org</owner>
  <owner>skym@chromium.org</owner>
  <owner>clank-app-team@google.com</owner>
  <summary>
    Records how long the overview page's draw was blocked, if it was. Recorded
    no more than once per cold start. Recorded when the overview page state is
    initialized in ChromeTabbedActivity and only when overview page was shown
    during startup.
  </summary>
</histogram>

<histogram
    name="Android.ApplicationState.TimeInBackgroundBeforeForegroundedAgain"
    units="ms" expires_after="2023-10-08">
  <owner>lizeb@google.com</owner>
  <owner>clank-performance-team@google.com</owner>
  <summary>
    Record the time the application spent in the background in-between two
    foregrounded periods, meaning that when the application is started in
    background, then foregrounded, no data points are recorded. This is recorded
    at the end of each such background interval. Saturates at 1h.
  </summary>
</histogram>

<histogram name="Android.AppNotificationStatus" enum="NotificationAppStatus"
    expires_after="never">
<!-- expires-never: Indicates whether Chrome has notification permission. -->

  <owner>dtrainor@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    Records whether notifications are enabled for Chrome, as the Android app,
    every time metrics are logged.
  </summary>
</histogram>

<histogram name="Android.ArmCpuPart" enum="ArmCpuPart"
    expires_after="2023-08-27">
  <owner>rsesek@chromium.org</owner>
  <owner>clank-security@google.com</owner>
  <summary>
    Reports information about the ARM CPU of a device. This composes the 8-bit
    ARM implementer identifier and the 12-bit part number into a single 20-bit
    CPU identifier, ranging from [0x00000,0xFFFFF]. Depending on the CPU
    package, processor configuration, and/or kernel version, this may only
    report information about the processor on which the metric was collected.
    This can happen on heterogeneous-processor SoCs. The metric is logged once
    every startup.
  </summary>
</histogram>

<histogram name="Android.BackgroundRestrictions.IsBackgroundRestricted"
    enum="Boolean" expires_after="2023-04-30">
  <owner>shaktisahu@chromium.org</owner>
  <owner>chrome-segmentation-platform@google.com</owner>
  <summary>
    Records whether user has enabled background restriction for chrome. Recorded
    after native initialization in browser process.
  </summary>
</histogram>

<histogram name="Android.BackgroundRestrictions.StandbyBucket"
    enum="StandbyBucket" expires_after="2023-04-30">
  <owner>shaktisahu@chromium.org</owner>
  <owner>chrome-segmentation-platform@google.com</owner>
  <summary>
    Records the standby bucket (UsageStatsManager.getAppStandbyBucket) in which
    chrome is currently placed by android. Recorded after native initialization
    in browser process.
  </summary>
</histogram>

<histogram
    name="Android.BackgroundRestrictions.StandbyBucket.WithoutUserRestriction"
    enum="StandbyBucket" expires_after="2022-10-23">
  <owner>shaktisahu@chromium.org</owner>
  <owner>chrome-segmentation-platform@google.com</owner>
  <summary>
    Records the standby bucket (UsageStatsManager.getAppStandbyBucket) in which
    chrome is currently placed by android, when user hasn't explicitly enabled
    background restrictions. Recorded after native initialization in browser
    process.
  </summary>
</histogram>

<histogram
    name="Android.BackgroundRestrictions.StandbyBucket.WithUserRestriction"
    enum="StandbyBucket" expires_after="2023-04-30">
  <owner>shaktisahu@chromium.org</owner>
  <owner>chrome-segmentation-platform@google.com</owner>
  <summary>
    Records the standby bucket (UsageStatsManager.getAppStandbyBucket) in which
    chrome is currently placed by android, when user has explicitly enabled
    background restrictions. Recorded after native initialization in browser
    process.
  </summary>
</histogram>

<histogram name="Android.BackgroundTaskScheduler.ExactTaskCreated"
    enum="BackgroundTaskId" expires_after="2023-06-04">
  <owner>nator@chromium.org</owner>
  <owner>knollr@chromium.org</owner>
  <owner>shaktisahu@chromium.org</owner>
  <summary>
    Records that an exact task has been created. Recorded when the task is
    scheduled.
  </summary>
</histogram>

<histogram name="Android.BackgroundTaskScheduler.TaskCanceled"
    enum="BackgroundTaskId" expires_after="2023-06-04">
  <owner>nyquist@chromium.org</owner>
  <owner>shaktisahu@chromium.org</owner>
  <summary>Records that a specific background task has been canceled.</summary>
</histogram>

<histogram name="Android.BackgroundTaskScheduler.TaskCreated.WithExpiration"
    enum="BackgroundTaskId" expires_after="2023-06-04">
  <owner>nator@chromium.org</owner>
  <owner>knollr@chromium.org</owner>
  <owner>shaktisahu@chromium.org</owner>
  <summary>
    Records that a specific task has been created with an expiration deadline.
    Recorded when the task is scheduled.
  </summary>
</histogram>

<histogram name="Android.BackgroundTaskScheduler.TaskCreated.WithoutExpiration"
    enum="BackgroundTaskId" expires_after="2023-06-04">
  <owner>nator@chromium.org</owner>
  <owner>knollr@chromium.org</owner>
  <owner>shaktisahu@chromium.org</owner>
  <summary>
    Records that a specific task has been created without the expiration feature
    activated. Recorded when the task is scheduled.
  </summary>
</histogram>

<histogram name="Android.BackgroundTaskScheduler.TaskExpired"
    enum="BackgroundTaskId" expires_after="2023-08-08">
  <owner>nator@chromium.org</owner>
  <owner>knollr@chromium.org</owner>
  <owner>shaktisahu@chromium.org</owner>
  <summary>
    Records that a specific background task has expired. Recorded before the
    task is to be started.
  </summary>
</histogram>

<histogram name="Android.BackgroundTaskScheduler.TaskFinished.{TaskType}"
    units="ms" expires_after="2023-06-04">
  <owner>nyquist@chromium.org</owner>
  <owner>shaktisahu@chromium.org</owner>
  <summary>
    Records the time (uptimeMillis) taken by a background task of type
    {TaskType}. Recorded when the task finished callback is invoked.
  </summary>
  <token key="TaskType" variants="TaskType"/>
</histogram>

<histogram name="Android.BackgroundTaskScheduler.TaskLoadedNative"
    enum="BackgroundTaskId" expires_after="2023-06-04">
  <owner>nyquist@chromium.org</owner>
  <owner>shaktisahu@chromium.org</owner>
  <summary>
    Records that a task extending a NativeBackgroundTask started loading the
    native portion of Chrome (either in Reduced Mode or Full Browser Mode).
  </summary>
</histogram>

<histogram name="Android.BackgroundTaskScheduler.TaskLoadedNative.FullBrowser"
    enum="BackgroundTaskId" expires_after="2023-06-04">
  <owner>mheikal@chromium.org</owner>
  <owner>hanxi@chromium.org</owner>
  <owner>hnakashima@chromium.org</owner>
  <summary>
    Records that a specific background task has loaded native in Full Browser
    Mode.
  </summary>
</histogram>

<histogram name="Android.BackgroundTaskScheduler.TaskLoadedNative.ReducedMode"
    enum="BackgroundTaskId" expires_after="2023-06-04">
  <owner>mheikal@chromium.org</owner>
  <owner>hanxi@chromium.org</owner>
  <owner>hnakashima@chromium.org</owner>
  <summary>
    Records that a specific background task has loaded native in Reduced Mode.
  </summary>
</histogram>

<histogram name="Android.BackgroundTaskScheduler.TaskScheduled.Failure"
    enum="BackgroundTaskId" expires_after="2023-08-13">
  <owner>nyquist@chromium.org</owner>
  <owner>shaktisahu@chromium.org</owner>
  <summary>
    Records that a specific background task has failed to be scheduled.
  </summary>
</histogram>

<histogram name="Android.BackgroundTaskScheduler.TaskScheduled.Success"
    enum="BackgroundTaskId" expires_after="2023-10-15">
  <owner>nyquist@chromium.org</owner>
  <owner>shaktisahu@chromium.org</owner>
  <summary>
    Records that a specific background task has been successfully scheduled.
  </summary>
</histogram>

<histogram name="Android.BackgroundTaskScheduler.TaskStarted"
    enum="BackgroundTaskId" expires_after="2023-10-08">
  <owner>nyquist@chromium.org</owner>
  <owner>shaktisahu@chromium.org</owner>
  <summary>Records that a specific background task has been started.</summary>
</histogram>

<histogram name="Android.BackgroundTaskScheduler.TaskStopped"
    enum="BackgroundTaskId" expires_after="2023-06-04">
  <owner>nyquist@chromium.org</owner>
  <owner>shaktisahu@chromium.org</owner>
  <summary>
    Records that a specific background task has been stopped by Background Task
    Scheduler before it was able to complete itself.
  </summary>
</histogram>

<histogram name="Android.BackPress.Failure" enum="BackPressConsumer"
    expires_after="2023-09-03">
  <owner>lazzzis@chromium.org</owner>
  <owner>src/chrome/browser/back_press/android/OWNERS</owner>
  <summary>
    Recorded when the user invokes a back navigation only if the handler failed
    to operate as expected, (e.g. it does nothing). May be recorded multiple
    times for a single back press event if there are multiple failed handlers.
    Android only.
  </summary>
</histogram>

<histogram name="Android.BackPress.Intercept" enum="BackPressConsumer"
    expires_after="2023-09-03">
  <owner>lazzzis@chromium.org</owner>
  <owner>src/chrome/browser/back_press/android/OWNERS</owner>
  <summary>
    Records that a specific feature intercepted the system's back press gesture.
  </summary>
</histogram>

<histogram name="Android.BackPress.MinimizeAppAndCloseTab"
    enum="MinimizeAppAndCloseTabType" expires_after="2023-09-03">
  <owner>lazzzis@chromium.org</owner>
  <owner>src/chrome/browser/back_press/android/OWNERS</owner>
  <summary>
    Records that the back press causes the app to be minimized or the current
    tab to be closed.
  </summary>
</histogram>

<histogram name="Android.BindingManger.ConnectionsDroppedDueToMaxSize"
    units="connections" expires_after="2023-10-22">
  <owner>ckitagawa@chromium.org</owner>
  <owner>yfriedman@chromium.org</owner>
  <summary>
    Records the total number of BindingManager bindings to
    ChildProcessConnections that were dropped due to the BindingManager reaching
    the connection limit. This value accumulates while the app is running and is
    emitted upong the app being backgrounded at which time the counter is reset.
  </summary>
</histogram>

<histogram name="Android.BiometricAuth.AuthRequester"
    enum="DeviceAuthRequester" expires_after="M118">
  <owner>ioanap@chromium.org</owner>
  <owner>fhorschig@chromium.org</owner>
  <summary>
    Recorded when a UI surface/flow in Chrome on Android chooses to re-auth the
    user via biometrics. It records that surface/flow which made the request.
  </summary>
</histogram>

<histogram name="Android.ChildMismatch.AppInfoError" enum="ChildAppInfoError"
    expires_after="2022-11-01">
  <obsolete>
    Replaced by Android.ChildMismatch.AppInfoError2; the previous implementation
    did not record the metric correctly in all cases.
  </obsolete>
  <owner>torne@chromium.org</owner>
  <owner>boliu@chromium.org</owner>
  <summary>
    Records what error (if any) was encountered verifying the child process's
    app info each time a child process is started via ChildProcessConnection.
  </summary>
</histogram>

<histogram name="Android.ChildMismatch.AppInfoError2" enum="ChildAppInfoError"
    expires_after="2023-10-22">
  <owner>torne@chromium.org</owner>
  <owner>boliu@chromium.org</owner>
  <summary>
    Records what error (if any) was encountered verifying the child process's
    app info each time a child process is started via ChildProcessConnection.
  </summary>
</histogram>

<histogram name="Android.ChildMismatch.BrowserVersionChanged"
    enum="BooleanChanged" expires_after="2022-11-01">
  <obsolete>
    Replaced by Android.ChildMismatch.BrowserVersionChanged2; the previous
    implementation did not record the metric correctly in all cases.
  </obsolete>
  <owner>torne@chromium.org</owner>
  <owner>boliu@chromium.org</owner>
  <summary>
    Records if the installed browser version appears to have changed since the
    browser process was launched. Recorded each time a child process is started
    via ChildProcessConnection, but only if the child's ApplicationInfo did not
    match (i.e. when Android.ChildMismatch.AppInfoError is recorded as something
    other than no error).
  </summary>
</histogram>

<histogram name="Android.ChildMismatch.BrowserVersionChanged2"
    enum="BooleanChanged" expires_after="2023-10-22">
  <owner>torne@chromium.org</owner>
  <owner>boliu@chromium.org</owner>
  <summary>
    Records if the installed browser version appears to have changed since the
    browser process was launched. Recorded each time a child process is started
    via ChildProcessConnection, but only if the child's ApplicationInfo did not
    match (i.e. when Android.ChildMismatch.AppInfoError is recorded as something
    other than no error).
  </summary>
</histogram>

<histogram
    name="Android.ChildProcessBinding.Percentage{ChildProcessConnectionMetricsBindingState}Connections_{TotalConnectionBucket}"
    units="%" expires_after="2023-08-20">
  <owner>ckitagawa@chromium.org</owner>
  <owner>yfriedman@chromium.org</owner>
  <summary>
    Records the percentage of sandboxed ChildProcessConnections with a
    {ChildProcessConnectionMetricsBindingState} out of the total number of
    ChildProcessConnections where there are {TotalConnectionBucket}. This is not
    emitted if there are no live connections. Emitted at a Poisson distributed
    period with a mean of 5 minutes on Chrome on Android while in the
    foreground.
  </summary>
  <token key="ChildProcessConnectionMetricsBindingState"
      variants="ChildProcessConnectionMetricsBindingState"/>
  <token key="TotalConnectionBucket">
    <variant name="3To5Connections" summary="3 to 5 connections"/>
    <variant name="6To10Connections" summary="6 to 10 connections"/>
    <variant name="11To20Connections" summary="11 to 20 connections"/>
    <variant name="21To50Connections" summary="21 to 50 connections"/>
    <variant name="LessThan3Connections" summary="less than 3 connections"/>
    <variant name="MoreThan51Connections" summary="more than 51 connections"/>
  </token>
</histogram>

<histogram name="Android.ChildProcessBinding.TotalConnections"
    units="connections" expires_after="2023-10-22">
  <owner>ckitagawa@chromium.org</owner>
  <owner>yfriedman@chromium.org</owner>
  <summary>
    Records the total number of sandboxed ChildProcessConnections in existence.
    This is emitted even if there are no live connections. Emitted at a Poisson
    distributed period with a mean of 5 minutes on Chrome on Android while in
    the foreground.
  </summary>
</histogram>

<histogram
    name="Android.ChildProcessBinding.{ChildProcessConnectionMetricsBindingState}Connections"
    units="connections" expires_after="2023-08-20">
  <owner>ckitagawa@chromium.org</owner>
  <owner>yfriedman@chromium.org</owner>
  <summary>
    Records the number of sandboxed ChildProcessConnections with a
    {ChildProcessConnectionMetricsBindingState}. This is emitted even if there
    are no live connections. Emitted at a Poisson distributed period with a mean
    of 5 minutes on Chrome on Android while in the foreground.
  </summary>
  <token key="ChildProcessConnectionMetricsBindingState"
      variants="ChildProcessConnectionMetricsBindingState"/>
</histogram>

<histogram name="Android.ChildProcessStartTimeV2{type}" units="ms"
    expires_after="2023-02-22">
  <owner>cduvall@chromium.org</owner>
  <owner>boliu@chromium.org</owner>
  <summary>
    Measures time from {type} child process starts to right before main. Only
    recorded on Android N+. Zygote measurements are recorded on Q+.

    Zygote measurements capture the CPU time (thread time) spent to create the
    app zygote process, before the zygote preload starts. For other processes it
    measures the time (uptimeMillis) to create the child process service.
  </summary>
  <token key="type">
    <variant name=".All" summary="all (excluding zygote)"/>
    <variant name=".Isolated" summary="isolated"/>
    <variant name=".NotIsolated" summary="non-isolated"/>
    <variant name=".Zygote" summary="app zygote"/>
  </token>
</histogram>

<histogram name="Android.ChromeActivity.Type" enum="ChromeActivityType"
    expires_after="never">
<!-- expires-never: Used to classify UMA reports by the dashboards. -->

  <owner>peconn@chromium.org</owner>
  <owner>src/base/metrics/OWNERS</owner>
  <summary>
    Recorded at the same time as &quot;CustomTabs.Visible&quot;, this metric
    should eventually replace that one. This additionally distinguishes between
    Trusted Web Activities, WebAPKs and Webapps.

    As of M87, this histogram is logged on a log start, rather than log end to
    tag more logs.
  </summary>
</histogram>

<histogram name="Android.ChromeStartupDelegate.FailureReason"
    enum="ChromeStartupDelegateFailureType" expires_after="2022-12-25">
  <owner>gangwu@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Records the failure reason for ChromeStartupDelegate requests. Recorded at
    most once on application startup.
  </summary>
</histogram>

<histogram name="Android.ChromeStartupDelegate.Result"
    enum="ChromeStartupDelegateResult" expires_after="2022-10-16">
  <owner>gangwu@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Records the result for ChromeStartupDelegate. Recorded on application
    startup.
  </summary>
</histogram>

<histogram name="Android.ContactsPicker.ContactCount" units="Contacts"
    expires_after="2023-09-10">
  <owner>finnur@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Measures the total number of contacts shown in the contacts picker. Measured
    once when the Contacts Picker dialog is dismissed.
  </summary>
</histogram>

<histogram name="Android.ContactsPicker.DialogAction"
    enum="ContactsPickerDialogAction" expires_after="2023-09-10">
  <owner>finnur@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Records which action the user takes in the ContactsPickerDialog. Measured
    once when the Contacts Picker dialog is dismissed.
  </summary>
</histogram>

<histogram name="Android.ContactsPicker.PropertiesRequested"
    enum="ContactsPickerProperties" expires_after="2023-06-01">
  <owner>finnur@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    The contact properties requested by the website (names, emails, telephone
    numbers). Measured once when the Contacts Picker dialog is dismissed.
  </summary>
</histogram>

<histogram name="Android.ContactsPicker.SelectCount" units="Contacts"
    expires_after="2023-06-01">
  <owner>finnur@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Measures the total number of contacts selected in the contacts picker.
    Measured once when the Contacts Picker dialog is dismissed.
  </summary>
</histogram>

<histogram name="Android.ContactsPicker.SelectPercentage" units="%"
    expires_after="2023-06-01">
  <owner>finnur@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Measures the percentage of contacts selected in the contacts picker.
    Measured once when the Contacts Picker dialog is dismissed.
  </summary>
</histogram>

<histogram name="Android.DarkTheme.AutoDarkMode.SettingsChangeSource{NewState}"
    enum="AndroidAutoDarkModeSettingsChangeSource" expires_after="2023-04-01">
  <owner>nemco@google.com</owner>
  <owner>wenyufu@chromium.org</owner>
  <owner>clank-app-team@google.com</owner>
  <summary>
    Source that changed the auto dark web content settings. This includes both
    changes to global theme settings as well as individual site exceptions. This
    histogram does not take into account whether the browser UI theme is dark or
    not (e.g. browser theme could be &quot;light&quot; and user could still
    change auto dark mode state in site settings). Recorded when the auto dark
    web content settings changes including {NewState}
  </summary>
  <token key="NewState">
    <variant name=".Disabled"
        summary="default value change to Blocked, or a site exception is
                 added."/>
    <variant name=".Enabled"
        summary="default value change to Allowed, or a site exception is
                 removed."/>
  </token>
</histogram>

<histogram name="Android.DarkTheme.EnabledReason" enum="DarkThemeEnabledReason"
    expires_after="2023-02-26">
  <owner>twellington@chromium.org</owner>
  <owner>clank-app-team@google.com</owner>
  <summary>
    Records the reason why dark theme is enabled when dark theme is visible to
    user.
  </summary>
</histogram>

<histogram name="Android.DarkTheme.EnabledState" enum="BooleanEnabled"
    expires_after="2023-09-03">
  <owner>twellington@chromium.org</owner>
  <owner>clank-app-team@google.com</owner>
  <summary>
    Records whether dark theme is enabled or not on cold start and when the
    enabled state changes.
  </summary>
</histogram>

<histogram name="Android.DarkTheme.Preference.State"
    enum="DarkThemePreferences" expires_after="2023-02-26">
  <owner>twellington@chromium.org</owner>
  <owner>clank-app-team@google.com</owner>
  <summary>
    Records user theme preference of system default, light or dark theme on cold
    start and when the theme preference changes.
  </summary>
</histogram>

<histogram name="Android.DarkTheme.ThemeSettingsEntry"
    enum="AndroidThemeSettingsEntry" expires_after="2023-04-16">
  <owner>nemco@google.com</owner>
  <owner>wenyufu@chromium.org</owner>
  <owner>clank-app-team@google.com</owner>
  <summary>
    Entry that navigate the user into the Theme Settings. Recorded when the
    Theme settings is opened.
  </summary>
</histogram>

<histogram name="Android.DeviceSize.LargestDisplaySize" units="dp"
    expires_after="2022-05-14">
  <obsolete>
    Removed May 2022.
  </obsolete>
  <owner>twellington@chromium.org</owner>
  <owner>tedchoc@chromium.org</owner>
  <owner>clank-app-team@google.com</owner>
  <summary>
    Records the largest display dimension in dp during deferred startup. The
    display size is not affected by Android N multi-window mode. Clamped at
    200dp to 1200dp.
  </summary>
</histogram>

<histogram name="Android.DeviceSize.LargestDisplaySize2" units="dp"
    expires_after="2023-08-27">
  <owner>twellington@chromium.org</owner>
  <owner>shuyng@google.com</owner>
  <owner>clank-app-team@google.com</owner>
  <summary>
    Records the largest display dimension in dp during deferred startup. The
    display size is not affected by Android N multi-window mode. Clamped at
    200dp to 2000dp. 20dp granularity.
  </summary>
</histogram>

<histogram name="Android.DeviceSize.ScreenSizeInTensOfInches"
    units="10x inches" expires_after="2023-08-27">
  <owner>twellington@chromium.org</owner>
  <owner>aishwaryarj@google.com</owner>
  <owner>clank-app-team@google.com</owner>
  <summary>
    Records the primary display (screen) size in tens of inches with 0.2 inches
    (2 units) granularity, during deferred startup. The display size is not
    affected by Android N multi-window mode.
  </summary>
</histogram>

<histogram name="Android.DeviceSize.SmallestDisplaySize" units="dp"
    expires_after="2022-05-14">
  <obsolete>
    Removed May 2022.
  </obsolete>
  <owner>twellington@chromium.org</owner>
  <owner>tedchoc@chromium.org</owner>
  <owner>clank-app-team@google.com</owner>
  <summary>
    Records the smallest display dimension in dp during deferred startup. The
    display size is not affected by Android N multi-window mode. Clamped at 0 to
    1000dp.
  </summary>
</histogram>

<histogram name="Android.DeviceSize.SmallestDisplaySize2" units="dp"
    expires_after="2023-08-27">
  <owner>twellington@chromium.org</owner>
  <owner>shuyng@google.com</owner>
  <owner>clank-app-team@google.com</owner>
  <summary>
    Records the smallest display dimension in dp during deferred startup. The
    display size is not affected by Android N multi-window mode. Clamped at 100
    to 1000dp. 10dp granularity.
  </summary>
</histogram>

<histogram name="Android.DexFixer" enum="DexFixerReason"
    expires_after="2023-01-30">
  <obsolete>
    Removed Feb 2020.
  </obsolete>
  <owner>agrieve@chromium.org</owner>
  <owner>cduvall@chromium.org</owner>
  <summary>
    Records the number of times Chrome runs &quot;cmd package compile&quot; to
    fix dexopt issues, and for what reason.
  </summary>
</histogram>

<histogram name="Android.DirectAction.Perform" enum="DirectActionId"
    expires_after="2023-10-10">
  <owner>arbesser@google.com</owner>
  <owner>autofill_assistant@google.com</owner>
  <summary>
    Counts calls to Activity.onPerformDirectAction made by the system on behalf
    of the assist app and which action was performed, if any. Available starting
    with Android Q.
  </summary>
</histogram>

<histogram name="Android.Download.Rename.Dialog.Action"
    enum="Android.Download.Rename.Dialog.Action" expires_after="2021-08-09">
  <obsolete>
    Removed in April 2023.
  </obsolete>
  <owner>hesen@chromium.org</owner>
  <owner>clank-downloads@google.com</owner>
  <summary>
    Records various actions taken by the user on the rename dialog in download
    home.
  </summary>
</histogram>

<histogram name="Android.DownloadManager.ForegroundServiceLifecycle"
    enum="DownloadNotificationForegroundLifecycle" expires_after="never">
<!-- expires-never: Download foreground notification stability metric. -->

  <owner>qinmin@chromium.org</owner>
  <owner>clank-downloads@google.com</owner>
  <summary>
    Records instances where the foreground undergoes a lifecycle change (when
    the foreground starts, changes pinned notification, or stops).
  </summary>
</histogram>

<histogram
    name="Android.DownloadManager.InitialCount.Viewed{AndroidDownloadTypes}"
    units="units" expires_after="2020-10-04">
  <owner>dtrainor@chromium.org</owner>
  <owner>clank-downloads@google.com</owner>
  <summary>
    The number of non-incognito download items displayed that are already viewed
    by the user at any time, recorded when the download UI is initialized.
    {AndroidDownloadTypes}
  </summary>
  <token key="AndroidDownloadTypes" variants="AndroidDownloadTypes">
    <variant name=""/>
  </token>
</histogram>

<histogram name="Android.DownloadManager.InitialCount{AndroidDownloadTypes}"
    units="units" expires_after="2021-01-24">
  <owner>dtrainor@chromium.org</owner>
  <owner>clank-downloads@google.com</owner>
  <summary>
    The number of non-incognito download items displayed when the download UI is
    initialized. {AndroidDownloadTypes}
  </summary>
  <token key="AndroidDownloadTypes" variants="AndroidDownloadTypes">
    <variant name=""/>
  </token>
</histogram>

<histogram name="Android.DownloadManager.Item.OpenFailed"
    enum="AndroidDownloadFilterType" expires_after="M81">
  <owner>dtrainor@chromium.org</owner>
  <owner>clank-downloads@google.com</owner>
  <summary>Recorded when a download fails to open.</summary>
</histogram>

<histogram name="Android.DownloadManager.Item.OpenSucceeded"
    enum="AndroidDownloadFilterType" expires_after="M85">
  <owner>dtrainor@chromium.org</owner>
  <owner>clank-downloads@google.com</owner>
  <summary>Recorded when a download is opened.</summary>
</histogram>

<histogram name="Android.DownloadManager.List.View.Action"
    enum="Android.DownloadManager.List.View.Actions" expires_after="2021-01-24">
  <owner>dtrainor@chromium.org</owner>
  <owner>clank-downloads@google.com</owner>
  <summary>The count of Download Home list entry actions taken.</summary>
</histogram>

<histogram name="Android.DownloadManager.Menu.Action"
    enum="Android.DownloadManager.Menu.Actions" expires_after="2022-12-25">
  <owner>dtrainor@chromium.org</owner>
  <owner>clank-downloads@google.com</owner>
  <summary>The count of Download Home top level menu actions taken.</summary>
</histogram>

<histogram name="Android.DownloadManager.Menu.Delete.SelectedCount"
    units="units" expires_after="M81">
  <obsolete>
    Removed in April 2023.
  </obsolete>
  <owner>dtrainor@chromium.org</owner>
  <owner>clank-downloads@google.com</owner>
  <summary>
    The number of items selected when performing a multi-delete action.
  </summary>
</histogram>

<histogram name="Android.DownloadManager.Menu.Share.SelectedCount"
    units="units" expires_after="M81">
  <obsolete>
    Removed in April 2023.
  </obsolete>
  <owner>dtrainor@chromium.org</owner>
  <owner>clank-downloads@google.com</owner>
  <summary>
    The number of items selected when performing a multi-share action.
  </summary>
</histogram>

<histogram name="Android.DownloadManager.NotificationInteraction"
    enum="DownloadNotificationInteractions" expires_after="2023-01-01">
  <owner>qinmin@chromium.org</owner>
  <owner>clank-downloads@google.com</owner>
  <summary>
    Records instances where a user interacts with a download notification (ie.
    clicks on, pauses, resumes, cancels).
  </summary>
</histogram>

<histogram name="Android.DownloadManager.OpenSource.Audio"
    enum="AndroidDownloadOpenSource" expires_after="2023-07-09">
  <owner>shaktisahu@chromium.org</owner>
  <owner>clank-downloads@google.com</owner>
  <summary>Records how users open audio download files on Android.</summary>
</histogram>

<histogram name="Android.DownloadManager.OpenSource.Other"
    enum="AndroidDownloadOpenSource" expires_after="2023-06-25">
  <owner>shaktisahu@chromium.org</owner>
  <owner>clank-downloads@google.com</owner>
  <summary>
    Records the entry point for users opening downloaded files on Android, that
    are not audio nor video.
  </summary>
</histogram>

<histogram name="Android.DownloadManager.OpenSource.Video"
    enum="AndroidDownloadOpenSource" expires_after="2023-06-25">
  <owner>shaktisahu@chromium.org</owner>
  <owner>clank-downloads@google.com</owner>
  <summary>Records how users open video download files on Android.</summary>
</histogram>

<histogram name="Android.DownloadManager.ServiceStopped.DownloadForeground"
    enum="DownloadNotificationServiceStopped" expires_after="never">
  <owner>qinmin@chromium.org</owner>
  <owner>clank-downloads@google.com</owner>
<!-- expires-never: Download foreground notification stability metric. -->

  <summary>
    Records instances of DownloadForegroundService stops. The number of expected
    stops (stopped) and unexpected stops (task removed, low memory, etc) can be
    compared to get a sense of how often the service crashes to see how it
    handles restarts. For example, the number of times the service is stopped
    because of low memory can be compared to the number of times the service has
    been destroyed to see how frequently it occurs. Or, the number of start
    sticky's will indicate how often the service is able to restart due to an
    unexpected stop.
  </summary>
</histogram>

<histogram name="Android.DownloadManager.Share.Count" units="units"
    expires_after="M86">
  <obsolete>
    Removed in April 2023.
  </obsolete>
  <owner>twellington@chromium.org</owner>
  <owner>clank-downloads@google.com</owner>
  <summary>The number of downloads shared at the same time.</summary>
</histogram>

<histogram name="Android.DownloadManager.Share.FileTypes"
    enum="AndroidDownloadFilterType" expires_after="2020-03-01">
  <obsolete>
    Removed in April 2023.
  </obsolete>
  <owner>twellington@chromium.org</owner>
  <owner>clank-downloads@google.com</owner>
  <summary>
    Recorded when downloads are shared through the download manager. A recorded
    value of &quot;All&quot; indicates that multiple types of downloads were
    shared.
  </summary>
</histogram>

<histogram name="Android.DownloadManager.SpaceUsed" units="%"
    expires_after="M81">
  <owner>twellington@chromium.org</owner>
  <owner>clank-downloads@google.com</owner>
  <summary>The percentage of total storage downloads consume.</summary>
</histogram>

<histogram
    name="Android.DownloadManager.Thumbnail.MaxRequiredStretch{AndroidDownloadTypes}"
    units="%" expires_after="2021-01-30">
  <owner>shaktisahu@chromium.org</owner>
  <owner>clank-downloads@google.com</owner>
  <summary>
    Records the required stretch of the smaller dimension before displaying an
    image on download home. Measured in percentage. {AndroidDownloadTypes}
  </summary>
  <token key="AndroidDownloadTypes" variants="AndroidDownloadTypes"/>
</histogram>

<histogram name="Android.DownloadPage.OpenSource"
    enum="AndroidDownloadOpenSource" expires_after="2023-04-23">
  <owner>qinmin@chromium.org</owner>
  <owner>clank-downloads@google.com</owner>
  <summary>
    Records the entry point for users opening the download page on Android.
  </summary>
</histogram>

<histogram name="Android.DragDrop.FromWebContent.DropInWebContent.DistanceDip"
    units="dp" expires_after="2023-08-08">
  <owner>wenyufu@chromium.org</owner>
  <owner>clank-large-form-factors@google.com</owner>
  <summary>
    Records the distance of the drag end position from the initial drag start
    position when dragging starts and ends within ContentView containing web
    contents. Note that the distance only counts the distance of drag event
    happend on the screen; scrolling for the web content will be disabled during
    drag. Used to assist in setting proper threshold to dismiss context menu
    during drag. Android only.
  </summary>
</histogram>

<histogram name="Android.DragDrop.FromWebContent.DropInWebContent.Duration"
    units="ms" expires_after="2023-10-01">
  <owner>wenyufu@chromium.org</owner>
  <owner>clank-large-form-factors@google.com</owner>
  <summary>
    Records the duration in ms of drag process when drop happend inside
    ContentView containing web contents, regardless DragEvent#getResult. Does
    not capture drag events that end outside the ContentView (Use
    Android.DragDrop.FromWebContent.Duration instead). Android only.
  </summary>
</histogram>

<histogram name="Android.DragDrop.FromWebContent.Duration{DropResult}"
    units="ms" expires_after="2023-08-08">
  <owner>wenyufu@chromium.org</owner>
  <owner>clank-large-form-factors@google.com</owner>
  <summary>
    Records the duration in ms of drag process when {DropResult}. Recorded for
    the drag process starts from the web content, and drop happens outside of
    the web content. Does not capture drag events that end inside the
    ContentView containing web contents. Recorded when such a drag event ends.
    Android only.

    For more information regarding drag results, see:
    https://developer.android.com/reference/android/view/DragEvent#getResult()
  </summary>
  <token key="DropResult">
    <variant name=".Canceled" summary="DragEvent#getResult() returns false."/>
    <variant name=".Success" summary="DragEvent#getResult() returns true."/>
  </token>
</histogram>

<histogram name="Android.DragDrop.FromWebContent.TargetType"
    enum="AndroidDragTargetType" expires_after="2023-10-08">
  <owner>wenyufu@chromium.org</owner>
  <owner>clank-large-form-factors@google.com</owner>
  <summary>
    Records the type of object being dragged, for the drag process starts from
    the web content, and drop happens outside of the web content. Does not
    capture drag events that end inside the ContentView containing web contents.
    Recorded when such a drag event ends. Android only.
  </summary>
</histogram>

<histogram name="Android.DragDrop.Image.OpenFileTime.AllExpired" units="ms"
    expires_after="2023-08-08">
  <owner>shuyng@google.com</owner>
  <owner>clank-large-form-factors@google.com</owner>
  <summary>
    Records the duration between the URI being cleared and
    ContentProvider#openFile attempts with that expired URI. This is used to
    evaluate how long we should keep the image data. Because drop target app
    could request data multiple times with the same URI, this metric could
    record multiple times per URI, which gives us the holistic view about the
    timing when the image data associated with the URI is needed. Another metric
    Android.DragDrop.Image.OpenFileTime.FirstExpired only records at most once
    per URI, to avoid counting in retries from drop target app when Chrome
    rejects the expired URI. This metric is recorded when Chrome receives an
    expired URI to retrieve data. If the URI is not the latest expired one, the
    metric will not be recorded because we do not calculate the elapsed time for
    older URIs. Android only.
  </summary>
</histogram>

<histogram name="Android.DragDrop.Image.OpenFileTime.FirstAttempt" units="ms"
    expires_after="2023-08-08">
  <owner>shuyng@google.com</owner>
  <owner>clank-large-form-factors@google.com</owner>
  <summary>
    Records the duration between receiving Android Drag End event and the first
    ContentProvider#openFile attempted by the drop target app. The duration is
    calculated during the first ContentProvider#openFile for each URI. Another
    metric Android.DragDrop.Image.OpenFileTime.LastAttempt is recorded for the
    last ContentProvider#openFile. Record 0 if the duration is negative (e.g.
    ContentProvider#openFile is accessed before drag ends). Android only.
  </summary>
</histogram>

<histogram name="Android.DragDrop.Image.OpenFileTime.FirstExpired" units="ms"
    expires_after="2023-08-08">
  <owner>shuyng@google.com</owner>
  <owner>clank-large-form-factors@google.com</owner>
  <summary>
    Records the duration between the URI being cleared and the first
    ContentProvider#openFile attempt with that expired URI. This is used to
    evaluate how long we should keep the image data. Because drop target app may
    retry after Chrome rejects the expired URI; and the retries are not helpful
    to evaluate how long the data is needed; this metric records at most once
    per URI. Another metric Android.DragDrop.Image.OpenFileTime.AllExpired
    records multiple times per URI, to gives us the holistic view about the
    timing when the image data associated with the URI is needed. This metric is
    recorded when Chrome receives an expired URI to retrieve data. If the URI is
    not the latest expired one, the metric will not be recorded because we do
    not calculate the elapsed time for older URIs. Android only.
  </summary>
</histogram>

<histogram name="Android.DragDrop.Image.OpenFileTime.LastAttempt" units="ms"
    expires_after="2023-08-08">
  <owner>shuyng@google.com</owner>
  <owner>clank-large-form-factors@google.com</owner>
  <summary>
    Records the duration between receiving Android Drag End event and the last
    ContentProvider#openFile attempted by the drop target app. The duration is
    calculated when the image data expired at the designated time limit. It is
    not recorded if the image data is replaced before the time limit due to the
    start of the next image drag. Another metric
    Android.DragDrop.Image.OpenFileTime.FirstAttempt is recorded for the first
    ContentProvider#openFile. Record 0 if the duration is negative (e.g.
    ContentProvider#openFile is accessed before drag ends). Android only.
  </summary>
</histogram>

<histogram name="Android.DragDrop.Image.Size" units="KB"
    expires_after="2023-08-08">
  <owner>shuyng@google.com</owner>
  <owner>clank-large-form-factors@google.com</owner>
  <summary>
    Records the image size being dragged from Chrome. Recorded when start
    dragging an image from Chrome's web content, regardless of whether drop is
    handled successfully. Used to evaluate the memory consumption. Android only.
  </summary>
</histogram>

<histogram name="Android.DragDrop.Image.UriCreatedInterval" units="ms"
    expires_after="2023-08-08">
  <owner>shuyng@google.com</owner>
  <owner>clank-large-form-factors@google.com</owner>
  <summary>
    Records the interval between two back-to-back image drags. This is used to
    evaluate the duration to preserve the image data. Android only.
  </summary>
</histogram>

<histogram name="Android.DynamicColors.IsAvailable" enum="Boolean"
    expires_after="2023-10-08">
  <owner>skym@chromium.org</owner>
  <owner>clank-sbui-team@google.com</owner>
  <summary>
    Recorded during ChromeBaseAppCompatActivity initialization if third_party
    dynamic colors logic thinks dynamic colors are available. This is often
    based on Android version and OEM. This metric is not related to whether
    dynamic colors are desired by features/experiments.
  </summary>
</histogram>

<histogram name="Android.Event.ActionDown" enum="InputDeviceSource"
    expires_after="2024-04-01">
  <owner>mvanouwerkerk@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <owner>src/chrome/android/OWNERS</owner>
  <summary>
    Records the input device source for the action down touch event.
  </summary>
</histogram>

<histogram
    name="Android.FamilyLinkUser.LocalWebApprovalParentAuthenticationError"
    units="Status error codes raised in GMS Core" expires_after="2023-06-13">
  <owner>anthie@google.com</owner>
  <owner>ljjlee@google.com</owner>
  <owner>chrome-kids-eng@google.com</owner>
  <owner>cros-families-eng@google.com</owner>
  <summary>
    The different GMS error status codes that a user may encounter during the
    parent authentication step in the local web approval flow. Recorded on
    Android only. See go/chrome-local-web-approval-parent-auth-error-codes
    (Googlers only) for the error code definitions.
  </summary>
</histogram>

<histogram base="true" name="Android.FeatureModules.AvailabilityStatus"
    enum="FeatureModuleAvailabilityStatus" expires_after="2023-10-16">
<!-- Name completed by histogram_suffixes
       name="AndroidFeatureModuleName" -->

  <owner>agrieve@chromium.org</owner>
  <owner>fredmello@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>wnwen@chromium.org</owner>
  <summary>
    Availability status for each dynamic feature module. Reported once per
    Chrome start. This metric's purpose is to measure a feature module's install
    penetration over time.
  </summary>
</histogram>

<histogram base="true" name="Android.FeatureModules.CachedAwakeInstallDuration"
    units="ms" expires_after="2023-06-13">
<!-- Name completed by histogram_suffixes
       name="AndroidFeatureModuleName" -->

  <owner>agrieve@chromium.org</owner>
  <owner>fredmello@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>wnwen@chromium.org</owner>
  <summary>
    Duration of successful installs for each dynamic feature module. Only
    contains install durations for modules first requested *before* Chrome
    started last and may therefore be installed from cache. Omits deep sleep
    time.
  </summary>
</histogram>

<histogram base="true" name="Android.FeatureModules.InstallingStatus"
    enum="FeatureModuleInstallingStatus" expires_after="2023-10-16">
<!-- Name completed by histogram_suffixes
       name="AndroidFeatureModuleName" -->

  <owner>agrieve@chromium.org</owner>
  <owner>fredmello@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>wnwen@chromium.org</owner>
  <summary>
    Install status counter for each dynamic feature module. Recorded during
    on-demand and deferred installs.
  </summary>
</histogram>

<histogram base="true" name="Android.FeatureModules.InstallStatus"
    enum="FeatureModuleInstallStatus" expires_after="2023-06-13">
<!-- Name completed by histogram_suffixes
       name="AndroidFeatureModuleName" -->

  <owner>agrieve@chromium.org</owner>
  <owner>fredmello@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>wnwen@chromium.org</owner>
  <summary>
    Install status for each dynamic feature module. Recorded after the
    installation has finished.
  </summary>
</histogram>

<histogram name="Android.FeatureModules.StartupTime" units="ms"
    expires_after="2023-09-18">
  <owner>agrieve@chromium.org</owner>
  <owner>fredmello@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>wnwen@chromium.org</owner>
  <summary>
    Length of time during startup used by module framework code. This is our
    metric to improve and used to guard against regressions.
  </summary>
</histogram>

<histogram base="true"
    name="Android.FeatureModules.UncachedAwakeInstallDuration" units="ms"
    expires_after="2023-06-13">
<!-- Name completed by histogram_suffixes
       name="AndroidFeatureModuleName" -->

  <owner>agrieve@chromium.org</owner>
  <owner>fredmello@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>wnwen@chromium.org</owner>
  <summary>
    Duration of successful installs for each dynamic feature module. Only
    contains install durations of modules first requested *after* Chrome started
    last and are therefore unlikely to be installed from cache. Omits deep sleep
    time.
  </summary>
</histogram>

<histogram name="Android.FontLookup.Blink.DLFontsLatencyFailure2"
    units="microseconds" expires_after="2023-01-15">
  <owner>drott@chromium.org</owner>
  <owner>layout-dev@chromium.org</owner>
  <summary>
    Records the latency of looking up a local font from Android downloadable
    fonts at the time of instantiating the font in the fonts backend in the
    renderer. Includes time for error checking and attempting to create the font
    from the retrieved blob, if there is one. Only records timings for
    situations in which a font could not be instantiated. This is recorded only
    on devices that support high resolution timers.
  </summary>
</histogram>

<histogram name="Android.FontLookup.Blink.DLFontsLatencySuccess2"
    units="microseconds" expires_after="2023-07-30">
  <owner>drott@chromium.org</owner>
  <owner>layout-dev@chromium.org</owner>
  <summary>
    Records the latency of looking up a local font from Android downloadable
    fonts at the time of instantiating the font in the fonts backend in the
    renderer. Includes time for error checking and attempting to create the font
    from the retrieved blob, if there is one. Only records timings for
    situations in which a font was successfully instantiated and returned. This
    is recorded only on devices that support high resolution timers.
  </summary>
</histogram>

<histogram name="Android.FontLookup.Blink.GetTableLatency" units="ms"
    expires_after="2023-08-27">
  <owner>drott@chromium.org</owner>
  <owner>cduvall@chromium.org</owner>
  <owner>layout-dev@chromium.org</owner>
  <summary>
    Records the latency of fetching the font name lookup table from the browser.
    The table is cached by the renderer so will usually only be fetched once per
    renderer startup. This is recorded when an attempt is made to fetch the
    table, typically once per renderer on the first font lookup for that
    process. If the original fetch fails, this will be recorded the next time a
    font lookup is requested.
  </summary>
</histogram>

<histogram name="Android.FontLookup.FetchAllFontFiles.Time" units="ms"
    expires_after="2023-10-08">
  <owner>twellington@chromium.org</owner>
  <owner>clank-app-team@google.com</owner>
  <summary>
    Records the time taken to fetch all available font files from the GMS Core
    Android downloadable font provider.
  </summary>
</histogram>

<histogram name="Android.FontLookup.FetchFontName" enum="FetchFontName"
    expires_after="2022-09-20">
  <obsolete>
    Removed 09/2022. No longer needed.
  </obsolete>
  <owner>twellington@chromium.org</owner>
  <owner>clank-app-team@google.com</owner>
  <summary>
    Records font fetch requests by font name. These results may be used to
    determine whether it remains worthwhile to preload fonts that are available
    for renderer font match requests.
  </summary>
</histogram>

<histogram name="Android.FontLookup.FetchFontResult" enum="FetchFontResult"
    expires_after="2022-09-20">
  <obsolete>
    Removed 09/2022. No longer needed.
  </obsolete>
  <owner>twellington@chromium.org</owner>
  <owner>clank-app-team@google.com</owner>
  <summary>
    Records the result of font fetch requests made to the GMS Core Android
    downloadable font provider. The result may be success, or failure with a
    reason. In the case of multiple failures, only the first one encountered is
    reported. See implementation at AndroidFontLookupImpl.
  </summary>
</histogram>

<histogram name="Android.FontLookup.GmsFontRequest.Time" units="ms"
    expires_after="2023-08-08">
  <owner>twellington@chromium.org</owner>
  <owner>clank-app-team@google.com</owner>
  <summary>
    Records the time taken to make a fetchFonts font request to GMS Core via the
    Android downloadable font provider API. This metric may be used to determine
    whether it's reasonable to execute this task on the IO thread rather than
    posting to a background thread.
  </summary>
</histogram>

<histogram name="Android.FontLookup.MatchLocalFontByUniqueName.Time" units="ms"
    expires_after="2023-08-13">
  <owner>twellington@chromium.org</owner>
  <owner>clank-app-team@google.com</owner>
  <summary>
    Records the time taken to respond to a request from the renderer to fetch a
    specific font file from the GMS Core Android downloadable font provider.
  </summary>
</histogram>

<histogram
    name="Android.Fonts.TimeDownloadableFontsRetrievedAfterFirstDraw{ActivityType}"
    units="ms" expires_after="2023-06-15">
  <owner>sinansahin@google.com</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Time it took to retrieve the downloadable fonts after the first draw of
    {ActivityType}'s content view. Mutually exclusive with *BeforeFirstDraw.
    Recorded when all downloadable fonts are retrieved.
  </summary>
  <token key="ActivityType" variants="ActivityType"/>
</histogram>

<histogram
    name="Android.Fonts.TimeDownloadableFontsRetrievedAfterPostInflationStartup{ActivityType}"
    units="ms" expires_after="2023-06-15">
  <owner>sinansahin@google.com</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Time it took to retrieve the downloadable fonts after post-inflation
    startup. Mutually exclusive with *BeforePostInflationStartup. Recorded when
    all downloadable fonts are retrieved. {ActivityType}
  </summary>
  <token key="ActivityType" variants="ActivityType"/>
</histogram>

<histogram
    name="Android.Fonts.TimeDownloadableFontsRetrievedBeforeFirstDraw{ActivityType}"
    units="ms" expires_after="2023-06-15">
  <owner>sinansahin@google.com</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Amount of time the downloadable fonts were retrieved before the first draw.
    Mutually exclusive with *AfterFirstDraw. Recorded when the first #onDraw
    call happens for the {ActivityType}'s content view.
  </summary>
  <token key="ActivityType" variants="ActivityType"/>
</histogram>

<histogram
    name="Android.Fonts.TimeDownloadableFontsRetrievedBeforePostInflationStartup{ActivityType}"
    units="ms" expires_after="2023-06-15">
  <owner>sinansahin@google.com</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Amount of time the downloadable fonts were retrieved before post-inflation
    startup. Mutually exclusive with *AfterPostInflationStartup. Recorded after
    AsyncInitializationActivity#performPostInflationStartup. {ActivityType}
  </summary>
  <token key="ActivityType" variants="ActivityType"/>
</histogram>

<histogram
    name="Android.Fonts.TimeToRetrieveDownloadableFontsAfterOnCreate{ActivityType}"
    units="ms" expires_after="2023-06-15">
  <owner>sinansahin@google.com</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Time it took to retrieve the downloadable fonts after Application#OnCreate.
    Recorded when all downloadable fonts are retrieved. {ActivityType}
  </summary>
  <token key="ActivityType" variants="ActivityType"/>
</histogram>

<histogram name="Android.HistoryPage.ClearBrowsingData.PerProfileType"
    enum="BrowserProfileType" expires_after="2023-10-08">
  <owner>roagarwal@chromium.org</owner>
  <owner>chrome-incognito@google.com</owner>
  <summary>
    Records the clicks on Clear Browsing Data button at history page for each
    profile type in Android.
  </summary>
</histogram>

<histogram name="Android.HomeButton.PerProfileType" enum="BrowserProfileType"
    expires_after="2023-01-15">
  <owner>roagarwal@chromium.org</owner>
  <owner>chrome-incognito@google.com</owner>
  <summary>
    Records the clicks on Home button in Android toolbar for each profile type.
  </summary>
</histogram>

<histogram name="Android.IncognitoNotification.FileNotDeleted" enum="Boolean"
    expires_after="2023-06-25">
  <owner>roagarwal@chromium.org</owner>
  <owner>chrome-incognito@google.com</owner>
  <summary>
    Records the count of any cases when clicking on the &quot;Close all
    Incognito tabs&quot; notification may not delete any files which were opened
    in the Incognito session. True value denotes file was not deleted and false
    otherwise.
  </summary>
</histogram>

<histogram name="Android.IncognitoReauth.AuthResult"
    enum="DeviceAuthFinalResult" expires_after="2023-09-24">
  <owner>roagarwal@chromium.org</owner>
  <owner>chrome-incognito@google.com</owner>
  <summary>
    Records the result of the attempt to re-auth the user via biometrics or
    device lock for the Incognito re-auth screen.
  </summary>
</histogram>

<histogram name="Android.IncognitoReauth.PrefToggledFromSettingPage"
    enum="IncognitoReauthToggleValueType" expires_after="2023-10-08">
  <owner>roagarwal@chromium.org</owner>
  <owner>chrome-incognito@google.com</owner>
  <summary>
    Records the count when the Incognito lock setting was either turned
    &quot;on&quot; or &quot;off&quot; from the Chrome Settings &gt; Privacy and
    Security &gt; Lock Incognito tabs when you leave Chrome, option. This
    setting can be in disabled state if the Android screen lock is not set-up,
    in which case we don't record this metric. This is recorded only when the
    toggle is not in disabled state and if the re-authentication checks succeeds
    which follows after the user changes the toggle. This covers only the
    interactions done from the above mentioned Incognito lock Setting page. See
    also the metric &quot;Android.IncognitoReauth.PromoActionType&quot; which
    records the opt-in made exclusively from promo card.
  </summary>
</histogram>

<histogram name="Android.IncognitoReauth.PromoAcceptedOrDismissed"
    enum="IncognitoReauthPromoActionType" expires_after="2023-09-10">
  <owner>roagarwal@chromium.org</owner>
  <owner>chrome-incognito@google.com</owner>
  <summary>
    Records the action type the user makes on the Incognito re-auth promo card
    which is shown inside the Incognito tab grid view. There's only two possible
    interactions possible which is either to turn on the Incognito lock or
    dismiss the promo. A &quot;Promo accepted&quot; entry is emitted when user
    clicks on &quot;Turn on Incognito lock&quot; (gated on successful
    re-authentication) and a &quot;No thanks&quot; value is emitted when the
    user clicks on &quot;No thanks&quot;.
  </summary>
</histogram>

<histogram name="Android.IncognitoReauth.PromoImpressionAfterActionCount"
    units="count" expires_after="M119">
  <owner>arabm@google.com</owner>
  <owner>chrome-incognito@google.com</owner>
  <summary>
    Records the number of impressions of the Incognito re-auth promo card when
    user clicks accept or dismiss or when the promo expires after the max number
    of impressions.
  </summary>
</histogram>

<histogram name="Android.IncognitoReauth.ToggleOnOrOff" enum="BooleanToggled"
    expires_after="2023-09-03">
  <owner>roagarwal@chromium.org</owner>
  <owner>chrome-incognito@google.com</owner>
  <summary>
    Records the Incognito lock setting state (if available to clients) exactly
    once during the browser startup, after the native code is initialized. Note,
    for multi-windows this histogram would be emitted as many times as the users
    enter multi-window(s).
  </summary>
</histogram>

<histogram name="Android.Intent.BlockedExternalNavLastGestureTime" units="ms"
    expires_after="2023-08-27">
  <owner>mthiesse@chromium.org</owner>
  <owner>yfriedman@chromium.org</owner>
  <summary>
    When a navigation to an external protocol is blocked due to a missing
    gesture on the redirect chain, records the time in milliseconds since the
    last time the user touched the screen before the navigation. Note that this
    notion is decoupled from the last user activation in blink due to quirks
    around how the RedirectHandler works.
  </summary>
</histogram>

<histogram name="Android.Intent.IntentUriNavigationResult"
    enum="IntentUriNavigationResult" expires_after="2023-10-15">
  <owner>mthiesse@chromium.org</owner>
  <owner>yfriedman@chromium.org</owner>
  <summary>
    Recorded when a navigation to an Intent URI occurs. Records the results of
    the navigation.
  </summary>
</histogram>

<histogram name="Android.Intent.IntentUriWithSelector" enum="Boolean"
    expires_after="2023-06-18">
  <owner>mthiesse@chromium.org</owner>
  <owner>yfriedman@chromium.org</owner>
  <summary>
    When a site attempts to navigate an intent: or android-app: URI, records
    whether or not the URI contained an intent selector.
  </summary>
</histogram>

<histogram name="Android.Intent.MainFrameIntentLaunch"
    enum="MainFrameIntentLaunch" expires_after="2023-10-15">
  <owner>mthiesse@chromium.org</owner>
  <owner>yfriedman@chromium.org</owner>
  <summary>
    Recorded when an external app is launched as the result of a navigation.
    Records the source and scheme of the navigation.
  </summary>
</histogram>

<histogram name="Android.Intent.OpenFileType" enum="AndroidUtilsMimeTypes"
    expires_after="2023-09-18">
  <owner>twellington@chromium.org</owner>
  <owner>mthiesse@chromium.org</owner>
  <summary>
    When a user attempts to navigate a file: URI, records the mime type of the
    file.
  </summary>
</histogram>

<histogram name="Android.Intent.ShareIntentUrlCount" units="URLs"
    expires_after="2024-02-01">
  <owner>mthiesse@chromium.org</owner>
  <owner>tedchoc@google.com</owner>
  <summary>
    Number of URLs present in Text Share intents (ACTION_SEND) received by
    Chrome.
  </summary>
</histogram>

<histogram name="Android.IsLastSharedAppInfoRetrieved"
    enum="BooleanIsLastSharedAppInfoRetrieved" expires_after="M77">
  <owner>tedchoc@chromium.org</owner>
  <owner>clank-team@google.com</owner>
  <summary>
    Signifies whether the last shared app information is retrieved successfully
    or not. This is logged when configuring the direct sharing menu item.
  </summary>
</histogram>

<histogram base="true" name="Android.IsolatedSplits.ClassLoaderReplaced"
    enum="BooleanYesNo" expires_after="2023-06-26">
<!-- Name completed by histogram_suffixes name="AndroidFeatureModuleName" -->

  <owner>cduvall@chromium.org</owner>
  <owner>agrieve@chromium.org</owner>
  <summary>
    Whether a split Context has had its ClassLoader replaced due to b/172602571.
    This is recorded every time a split Context is created.
  </summary>
</histogram>

<histogram base="true" name="Android.IsolatedSplits.ContextCreateTime"
    units="ms" expires_after="2023-08-27">
<!-- Name completed by histogram_suffixes name="AndroidFeatureModuleName" -->

  <owner>cduvall@chromium.org</owner>
  <owner>agrieve@chromium.org</owner>
  <summary>
    Amount of time it takes to create a new Context for a split. This will only
    be recorded if isolated splits are enabled.
  </summary>
</histogram>

<histogram base="true" name="Android.IsolatedSplits.PreloadWaitTime" units="ms"
    expires_after="2023-08-27">
<!-- Name completed by histogram_suffixes name="AndroidFeatureModuleName" -->

  <owner>cduvall@chromium.org</owner>
  <owner>agrieve@chromium.org</owner>
  <summary>
    Amount of time spent waiting for a split preload task to finish. This will
    only be recorded if isolated splits are enabled.
  </summary>
</histogram>

<histogram name="Android.Jank.AsyncTaskGetOnUiThreadStatus"
    enum="AsyncTaskStatus" expires_after="2023-10-22">
  <owner>smaier@chromium.org</owner>
  <owner>agrieve@chromium.org</owner>
  <summary>
    The status of an AsyncTask when get() is called on the UI thread. This is
    only recorded if the AsyncTask isn't immediately available.

    Seeing the distribution of PENDING vs RUNNING tasks will give us a better
    idea for how to approach these hangs.
  </summary>
</histogram>

<histogram name="Android.KernelVersion" enum="AndroidKernelVersion"
    expires_after="2023-08-27">
  <owner>rsesek@chromium.org</owner>
  <summary>
    Reports the kernel major and minor version from the utsname.release field.
    The low 16 bits of each version are combined into a 32-bit integer. The
    range is from [0x00020006,0x0004000a] to track kernel versions 2.6 through
    4.10.
  </summary>
</histogram>

<histogram name="Android.MediaPickerShown" enum="MediaPickerShown"
    expires_after="2023-08-08">
  <owner>finnur@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    Recorded once per batch of files uploaded, when Chrome has made the
    determination of what media picker to show to the user.
  </summary>
</histogram>

<histogram name="Android.MemoryPressureMonitor.GetMyMemoryState.Failed.Time"
    units="microseconds" expires_after="M77">
  <obsolete>
    Removed 09/2022. Expired and not needed anymore.
  </obsolete>
  <owner>ssid@chromium.org</owner>
  <summary>
    The duration of each failed ActivityManager.getMyMemoryState() call made by
    MemoryPressureMonitor.

    Warning: This metric may include reports from clients with low-resolution
    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
    will cause this metric to have an abnormal distribution. When considering
    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
    solution.
  </summary>
</histogram>

<histogram name="Android.MemoryPressureNotification{AndroidProcessType}"
    enum="Android.MemoryPressureNotification" expires_after="2021-12-05">
  <owner>ssid@chromium.org</owner>
  <summary>
    Memory pressure notifications sent by Android through ComponentCallbacks2.
    This metric was added 04/2018; for prior data for the browser process see
    MemoryAndroid.NotificationBackground and
    MemoryAndroid.NotificationForeground. {AndroidProcessType}
  </summary>
  <token key="AndroidProcessType">
    <variant name=".Browser" summary="Browser process"/>
    <variant name=".ChildService"
        summary="Child service process (renderer, GPU, etc.)"/>
  </token>
</histogram>

<histogram name="Android.Messages.Dismissed{MessageIdentifier}"
    enum="MessageDismissReason" expires_after="M122">
  <owner>lazzzis@chromium.org</owner>
  <owner>src/components/messages/OWNERS</owner>
  <summary>
    Recorded once per message when the message is dismissed to capture the
    dismissal reason (e.g. primary button tap, timeout). The histogram can be
    used for measuring user engagement with messages of different types.
  </summary>
  <token key="MessageIdentifier" variants="MessageIdentifiers"/>
</histogram>

<histogram name="Android.Messages.Enqueued" enum="MessageIdentifier"
    expires_after="M122">
  <owner>lazzzis@chromium.org</owner>
  <owner>src/components/messages/OWNERS</owner>
  <summary>
    Records the message identifier each time a message is enqueued through
    MessageDispatcher (the entry point to Chrome for Android's messages system).
    This histogram can be used for getting a count of messages broken down by
    message identifier.
  </summary>
</histogram>

<histogram name="Android.Messages.Enqueued.Hidden" enum="MessageIdentifier"
    expires_after="M122">
  <owner>lazzzis@chromium.org</owner>
  <owner>src/components/messages/OWNERS</owner>
  <summary>
    Records the message identifier when an enqueued message is not immediately
    displayed either because there is another message on the secreen or because
    message scope (e.g. tab) is not active. This metric is recorded along with
    Android.Messages.Enqueued.Hiding, which records identifier of currently
    visible message.
  </summary>
</histogram>

<histogram name="Android.Messages.Enqueued.Hiding" enum="MessageIdentifier"
    expires_after="M122">
  <owner>lazzzis@chromium.org</owner>
  <owner>src/components/messages/OWNERS</owner>
  <summary>
    Recorded when an enqueued message is not immediately displayed. This metric
    records message identifier of a message currently displayed on the screen
    (that prevented the enqueued message from getting displayed immediately).
    INVALID_MESSAGE is recorded when the message isn't displayed because message
    scope (e.g. tab) isn't active or when message queue is suspended.
  </summary>
</histogram>

<histogram name="Android.Messages.Enqueued.Visible" enum="MessageIdentifier"
    expires_after="M122">
  <owner>lazzzis@chromium.org</owner>
  <owner>src/components/messages/OWNERS</owner>
  <summary>
    Records the message identifier when a message is displayed immediately when
    it is enqueued. This includes cases when there are no other messages on the
    screen as well as cases when the new message is high priority and causes
    some other message to hide.
  </summary>
</histogram>

<histogram name="Android.Messages.Stacking" enum="StackingAnimationType"
    expires_after="M122">
  <owner>lazzzis@chromium.org</owner>
  <owner>src/components/messages/OWNERS</owner>
  <summary>
    Records the type of stacking animation when it is triggered. The type
    indicates the relation between current displayed messages and incoming
    messages.
  </summary>
</histogram>

<histogram name="Android.Messages.Stacking.ThreeStacked"
    enum="StackingAnimationThreeStackedType" expires_after="M122">
  <owner>lazzzis@chromium.org</owner>
  <owner>src/components/messages/OWNERS</owner>
  <summary>
    Records the scenario when 3 message stacking could be possible.
  </summary>
</histogram>

<histogram name="Android.Messages.Stacking.{Action}" enum="MessageIdentifier"
    expires_after="M122">
  <owner>lazzzis@chromium.org</owner>
  <owner>src/components/messages/OWNERS</owner>
  <summary>
    Records the message identifier when {Action} during a stacking animation.
  </summary>
  <token key="Action">
    <variant name="InsertAtBack" summary="a message is inserted at back."/>
    <variant name="InsertAtFront" summary="a message is inserted at front."/>
    <variant name="PushToBack" summary="a front message is pushed to back."/>
    <variant name="PushToFront" summary="a back message is pushed to front."/>
    <variant name="RemoveBack" summary="a back message is removed."/>
    <variant name="RemoveFront" summary="a front message is removed."/>
  </token>
</histogram>

<histogram name="Android.Messages.TimeToAction.Dismiss{MessageIdentifier}"
    units="ms" expires_after="M122">
  <owner>lazzzis@chromium.org</owner>
  <owner>src/components/messages/OWNERS</owner>
  <summary>
    Records the time interval the message was displayed on the screen before the
    user dismissed it with a gesture. The metric is NOT recorded when the user
    presses primary or secondary button or when the message is auto-dismissed
    based on timer. The interval includes both enter and exit animation. The
    metric can be used to analyze the time threshold for the user to give up
    waiting for autodismiss timer and dismiss the message explicitly.
  </summary>
  <token key="MessageIdentifier" variants="MessageIdentifiers"/>
</histogram>

<histogram name="Android.Messages.TimeToAction{MessageIdentifier}" units="ms"
    expires_after="M122">
  <owner>lazzzis@chromium.org</owner>
  <owner>src/components/messages/OWNERS</owner>
  <summary>
    Records the time interval the message was displayed on the screen before the
    user explicitly dismissed it. The metric is recorded when the user presses
    primary or secondary button, or dismisses the message with a gesture. It is
    not recorded when the message is auto-dismissed based on timer. The interval
    includes both enter and exit animation. The metric can be used to analyze
    the amount of time it takes for the user to understand the message and take
    an action (e.g. click a button, dismiss the message, etc.).
  </summary>
  <token key="MessageIdentifier" variants="MessageIdentifiers"/>
</histogram>

<histogram name="Android.ModalDialog.SecurityFilteredTouchResult"
    enum="SecurityFilteredTouchResult" expires_after="2023-09-01">
  <owner>twellington@chromium.org</owner>
  <owner>clank-app-team@google.com</owner>
  <summary>
    Records the action taken on a security sensitive touch event in modal
    dialog. As of M84 it is used for site premission dialogs.
  </summary>
</histogram>

<histogram name="Android.ModerateBindingCount" units="bindings"
    expires_after="M77">
  <obsolete>
    Expired in M77. See Android.ChildProcessBinding.*
  </obsolete>
  <owner>tedchoc@chromium.org</owner>
  <owner>clank-team@google.com</owner>
  <summary>
    The number of moderate bindings which were kept while Chrome process is in
    the foreground. This is logged right before Chrome process goes into the
    background.
  </summary>
</histogram>

<histogram name="Android.MultiInstance.MaxInstanceCount" units="instances"
    expires_after="2023-09-10">
  <owner>jinsukkim@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <owner>clank-app-team@google.com</owner>
  <summary>
    The maximum number of Chrome instances that ran at the same time in a
    24-hour period. Checked whenever there is an activity state change to log
    the stats once in 24 hours.
  </summary>
</histogram>

<histogram name="Android.MultiInstance.NumActivities" units="activities"
    expires_after="2023-09-03">
  <owner>jinsukkim@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <owner>clank-app-team@google.com</owner>
  <summary>
    Records the number of running ChromeTabbedActivity's on every
    ChromeTabbedActivity startup. This includes activities that may not be
    visible on screen (i.e. it includes ChromeTabbedActivity's in the
    &quot;stopped&quot; state). This does not include ChromeTabbedActivity's
    that have been destroyed regardless of whether their owning Android Task may
    be retrieved in Android Recents. Applicable to Android S+ only.
  </summary>
</histogram>

<histogram name="Android.MultiInstance.NumInstances" units="instances"
    expires_after="2023-09-03">
  <owner>jinsukkim@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <owner>clank-app-team@google.com</owner>
  <summary>
    The number of allocated instance IDs which corresponds to the number of
    retrievable Chrome instances (aka windows). An instance is considered
    retrievable if it has tab state data on disk irrespective of whether that
    data is currently assigned to a running ChromeTabbedActivity. These
    instances may be retrieved from Chrome's in-app window manager from Android
    Recents if they are associated with a live ChromeTabbedActivity or Android
    Task. Recorded on every ChromeTabbedActivity start-up. Applicable to Android
    S+ only.
  </summary>
</histogram>

<histogram name="Android.MultipleUserProfilesState"
    enum="MultipleUserProfilesState" expires_after="2023-10-08">
  <owner>ckitagawa@chromium.org</owner>
  <owner>yfriedman@chromium.org</owner>
  <owner>chrome-metrics-team@google.com</owner>
  <summary>
    Records whether multiple user profiles are present in Android. This is
    recorded every time a metrics log is closed.
  </summary>
</histogram>

<histogram name="Android.MultiWindowMode.Active" enum="BooleanEnabled"
    expires_after="never">
<!-- expires-never: topline metric for monitoring multi-window mode usage on Chrome for Android. -->

  <owner>twellington@chromium.org</owner>
  <owner>tedchoc@chromium.org</owner>
  <owner>clank-app-team@google.com</owner>
  <summary>
    Records on every metrics upload whether the activity is running in Android N
    multi-window mode or not.
  </summary>
</histogram>

<histogram name="Android.MultiWindowMode.TotalDuration" units="ms"
    expires_after="2022-08-16">
  <owner>jinsukkim@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <owner>clank-app-team@google.com</owner>
  <summary>
    Total time spent in Android N+ multi-window (aka split-screen) mode.
    Recorded when multi-window mode is exited.
  </summary>
</histogram>

<histogram name="Android.NativeBackgroundTask.TaskFinished"
    enum="BackgroundTaskId" expires_after="2023-06-15">
  <owner>mheikal@chromium.org</owner>
  <owner>hanxi@chromium.org</owner>
  <owner>hnakashima@chromium.org</owner>
  <owner>yfriedman@chromium.org</owner>
  <summary>
    Records that a specific background task has finished cleanly (i.e. no
    unexpected exits because of chrome crash or OOM). This includes tasks that
    have been stopped due to timeout.
  </summary>
</histogram>

<histogram name="Android.NativeBackgroundTask.TaskFinished.FullBrowser"
    enum="BackgroundTaskId" expires_after="2023-06-15">
  <owner>mheikal@chromium.org</owner>
  <owner>hanxi@chromium.org</owner>
  <owner>hnakashima@chromium.org</owner>
  <summary>
    Records that a specific native background task started in Full Browser Mode
    has finished cleanly. See Android.NativeBackgroundTask.TaskFinished for more
    details.
  </summary>
</histogram>

<histogram name="Android.NativeBackgroundTask.TaskFinished.ReducedMode"
    enum="BackgroundTaskId" expires_after="2023-06-15">
  <owner>mheikal@chromium.org</owner>
  <owner>hanxi@chromium.org</owner>
  <owner>hnakashima@chromium.org</owner>
  <summary>
    Records that a specific native background task started in Reduced Mode has
    finished cleanly. It is possible that Full Browser has launched while the
    task was running. See Android.NativeBackgroundTask.TaskFinished for more
    details.
  </summary>
</histogram>

<histogram name="Android.NativeBackgroundTask.TaskStarted"
    enum="BackgroundTaskId" expires_after="2023-06-15">
  <owner>mheikal@chromium.org</owner>
  <owner>hanxi@chromium.org</owner>
  <owner>hnakashima@chromium.org</owner>
  <owner>yfriedman@chromium.org</owner>
  <summary>
    Records that a specific native background task has been started. This does
    not consider tasks that are marked as DONE or RESCHEDULED before a call to
    start native is made (regardless of whether native is already loaded).
  </summary>
</histogram>

<histogram name="Android.NativeBackgroundTask.TaskStarted.FullBrowser"
    enum="BackgroundTaskId" expires_after="2023-08-20">
  <owner>mheikal@chromium.org</owner>
  <owner>hanxi@chromium.org</owner>
  <owner>hnakashima@chromium.org</owner>
  <summary>
    Records that a specific native background task has been started in Full
    Browser Mode. See Android.NativeBackgroundTask.TaskStarted for more details.
  </summary>
</histogram>

<histogram name="Android.NativeBackgroundTask.TaskStarted.ReducedMode"
    enum="BackgroundTaskId" expires_after="2023-08-20">
  <owner>mheikal@chromium.org</owner>
  <owner>hanxi@chromium.org</owner>
  <owner>hnakashima@chromium.org</owner>
  <summary>
    Records that a specific native background task has been started in Reduced
    Mode. See Android.NativeBackgroundTask.TaskStarted for more details.
  </summary>
</histogram>

<histogram name="Android.NTP.Impression" enum="NTPImpressionType"
    expires_after="2023-09-10">
  <owner>finkm@chromium.org</owner>
  <summary>
    Counts impressions of the NTP on Android. It also counts potential
    impressions. A potential impression is a place where it would make sense to
    open the NTP instead of the current view. E.g. the no-tab view is counted as
    a potential impression since this view could be replaced with the NTP. For
    better comparison regular impressions are also counted. The no-tab view
    counting happens right after the user closed the last tab and the regular
    impression counting happens at construction time of the NTP (=whenever a new
    tab is opened).
  </summary>
</histogram>

<histogram name="Android.OfflineItems.StateAtCancel{OfflineItemsSource}"
    enum="OfflineItemsStateAtCancel" expires_after="M81">
  <owner>chili@chromium.org</owner>
  <summary>
    State of a download or offline page request at user-initiated cancel.
    {OfflineItemsSource}
  </summary>
  <token key="OfflineItemsSource">
    <variant name=".Downloads" summary="Downloads"/>
    <variant name=".OfflinePages" summary="Offline pages"/>
  </token>
</histogram>

<histogram name="Android.Omnibox.ActionInSuggest.IntentResult"
    enum="ActionInSuggestIntentResult" expires_after="2023-08-20">
  <owner>ender@google.com</owner>
  <owner>chrome-mobile-search@google.com</owner>
  <summary>
    Records the outcome of the User's interaction with ActionInSuggest chips,
    breaking down the cases where the intent could not be created or started.

    Recorded every time the user interacts with the ActionInSuggest, for the
    Action that the user interacted with. Not recorded if the user does not
    interact with ActionInSuggest.
  </summary>
</histogram>

<histogram name="Android.Omnibox.InputToNavigationControllerStart" units="ms"
    expires_after="2023-10-22">
  <owner>spelchat@chromium.org</owner>
  <owner>chrome-brapp-loading@google.com</owner>
  <summary>
    Records time between the user input that triggered an Omnibox navigation on
    Android to the time the Omnibox code calls into the shared C++ navigation
    code (NavigationController).
  </summary>
</histogram>

<histogram name="Android.Omnibox.InvalidMatch" enum="MatchResult"
    expires_after="2023-08-27">
  <owner>ender@chromium.org</owner>
  <owner>tedchoc@chromium.org</owner>
  <owner>mpearson@chromium.org</owner>
  <owner>jdonnelly@chromium.org</owner>
  <summary>
    Recorded every time AutocompleteController.java interacts with
    autocomplete_controller_android.cc. Indicates how often matches referenced
    by Java are different from the matches referenced by C++ at any position.

    Note: Chrome M91 and before only increased this histogram for specific Match
    objects that the user interacted with. As of M92, this histogram is
    increased for every case where at least one Match referenced by Java was
    different from its corresponding C++ match at the same exact position.
  </summary>
</histogram>

<histogram name="Android.Omnibox.RefineActionUsage" enum="RefineActionUsage"
    expires_after="2023-10-22">
  <owner>ender@chromium.org</owner>
  <owner>jdonnelly@chromium.org</owner>
  <summary>
    Records interactions with the Search Refine button, differentiating by
    context (zero-prefix vs non-zero-prefix), including the cases where the User
    did not interact with the Refine button placed beside the Search suggestion
    at all.

    Recorded once per interaction with the Omnibox and Sugestions, when the
    Omnibox loses focus. This includes cases where the User chooses to navigate
    somewhere (both by using a suggestion or pressing Go button on keyboard), or
    abandons the Omnibox.
  </summary>
</histogram>

<histogram name="Android.Omnibox.SetGeolocationHeadersTime" units="ms"
    expires_after="2023-10-15">
  <owner>spelchat@chromium.org</owner>
  <owner>chrome-brapp-loading@google.com</owner>
  <summary>
    Records time spent setting geolocation headers when the user navigates via
    the Omnibox. This time blocks the start of the navigation and is included in
    InputToNavigationStart metrics, but not in NavigationTo* metrics.
  </summary>
</histogram>

<histogram name="Android.Omnibox.SuggestionList.LayoutTime" units="ms"
    expires_after="2022-10-23">
  <obsolete>
    Retired with M103. Please refer to .CreateTime2
  </obsolete>
  <owner>ender@chromium.org</owner>
  <owner>mpearson@chromium.org</owner>
  <owner>jdonnelly@chromium.org</owner>
  <summary>
    Records time spent on positioning all suggestions on screen. This histogram
    is recorded every time a new suggestion list is received.

    Values recorded here should generally aim to be small, likely below 2ms
    range. Higher values are an indicator of a performance problem.

    Layout operation should take place just once when suggestion view is shown
    for the first time.

    This metric is reported for all users and uses 100microsecond granularity.

    When comparing Durations measured here, also compare Total Counts for a
    correct indication of how frequently views are laid out and how the overall
    time spent performing layout operation changed.

    This histogram is related to Android.Omnibox.SuggestionView.Reused,
    Android.Omnibox.SuggestionList.MeasureTime,
    Android.Omnibox.SuggestionView.CreateTime.
  </summary>
</histogram>

<histogram name="Android.Omnibox.SuggestionList.LayoutTime2" units="ms"
    expires_after="2023-10-15">
  <owner>ender@chromium.org</owner>
  <owner>mpearson@chromium.org</owner>
  <owner>jdonnelly@chromium.org</owner>
  <summary>
    Records time spent on positioning all suggestions on screen. This histogram
    is recorded every time a new suggestion list is received.

    Values recorded here should generally aim to be small, likely below 2ms
    range. Higher values are an indicator of a performance problem.

    Layout operation should take place just once when suggestion view is shown
    for the first time.

    This metric is reported for all users and uses 100microsecond granularity.

    When comparing Durations measured here, also compare Total Counts for a
    correct indication of how frequently views are laid out and how the overall
    time spent performing layout operation changed.

    This histogram is related to Android.Omnibox.SuggestionView.Reused,
    Android.Omnibox.SuggestionList.MeasureTime2,
    Android.Omnibox.SuggestionView.CreateTime2.
  </summary>
</histogram>

<histogram name="Android.Omnibox.SuggestionList.MeasureTime" units="ms"
    expires_after="2022-06-19">
  <obsolete>
    Retired with M103. Please refer to .MeasureTime2
  </obsolete>
  <owner>ender@chromium.org</owner>
  <owner>mpearson@chromium.org</owner>
  <owner>jdonnelly@chromium.org</owner>
  <summary>
    Records time spent on measuring all suggestions ahead of positioning them on
    screen. This histogram is recorded every time a new suggestion list is
    received.

    Values recorded here should generally aim to be small, likely below 2ms
    range. Higher values are an indicator of a performance problem.

    Measure operation should take place just once when suggestion view is shown
    for the first time.

    This metric is reported for all users and uses 100microsecond granularity.

    When comparing Durations measured here, also compare Total Counts for a
    correct indication of how frequently views are measured and how the overall
    time spent measuring views changed.

    This histogram is related to Android.Omnibox.SuggestionView.Reused,
    Android.Omnibox.SuggestionList.LayoutTime,
    Android.Omnibox.SuggestionView.CreateTime.
  </summary>
</histogram>

<histogram name="Android.Omnibox.SuggestionList.MeasureTime2" units="ms"
    expires_after="2023-10-15">
  <owner>ender@chromium.org</owner>
  <owner>mpearson@chromium.org</owner>
  <owner>jdonnelly@chromium.org</owner>
  <summary>
    Records time spent on measuring all suggestions ahead of positioning them on
    screen. This histogram is recorded every time a new suggestion list is
    received.

    Values recorded here should generally aim to be small, likely below 2ms
    range. Higher values are an indicator of a performance problem.

    Measure operation should take place just once when suggestion view is shown
    for the first time.

    This metric is reported for all users and uses 100microsecond granularity.

    When comparing Durations measured here, also compare Total Counts for a
    correct indication of how frequently views are measured and how the overall
    time spent measuring views changed.

    This histogram is related to Android.Omnibox.SuggestionView.Reused,
    Android.Omnibox.SuggestionList.LayoutTime2,
    Android.Omnibox.SuggestionView.CreateTime2.
  </summary>
</histogram>

<histogram name="Android.Omnibox.SuggestionList.RequestToUiModel.First"
    units="ms" expires_after="2023-10-22">
  <owner>ender@google.com</owner>
  <owner>pnoland@chromium.org</owner>
  <owner>gangwu@chromium.org</owner>
  <summary>
    Records time elapsed between requesting the suggestions and converting the
    first (synchronous) set of received suggestions to the UI model.

    For the complete, asynchronous iteration see the
    Android.Omnibox.SuggestionList.RequestToUiModel.Last metric.

    This metric is recorded exactly once per request, including the zero-prefix
    suggestions request.
  </summary>
</histogram>

<histogram name="Android.Omnibox.SuggestionList.RequestToUiModel.Last"
    units="ms" expires_after="2023-10-22">
  <owner>ender@google.com</owner>
  <owner>pnoland@chromium.org</owner>
  <owner>gangwu@chromium.org</owner>
  <summary>
    Records time elapsed between requesting the suggestions and converting the
    final (asynchronous) set of received suggestions to the UI model.

    For the short, synchronous iteration see the
    Android.Omnibox.SuggestionList.RequestToUiModel.First metric.

    This metric is recorded at most once per request, including the zero-prefix
    suggestions request. The metric will not be emitted if the current
    Autocomplete cycle was canceled by the user - either by refining the input
    in the omnibox, or by ending the interaction with the Omnibox.
  </summary>
</histogram>

<histogram name="Android.Omnibox.SuggestionsListScrolled.{PageClass}"
    enum="Boolean" expires_after="2024-02-01">
  <owner>ender@chromium.org</owner>
  <owner>jdonnelly@chromium.org</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"/>
    <variant name="Widget" summary="the Widget Search Activity"/>
  </token>
</histogram>

<histogram name="Android.Omnibox.SuggestionView.CreatedType"
    enum="OmniboxSuggestionUiType" expires_after="2023-09-03">
  <owner>ender@google.com</owner>
  <owner>gangwu@chromium.org</owner>
  <owner>rongtan@chromium.org</owner>
  <summary>
    Records the type of suggestion that was reused with the help of
    RecyclerView.

    This histogram drives OmniboxSuggestionsDropdown optimization, helping us
    find the balance between the volume of suggestions and amount of memory we
    delegate to re-use the pre-constructed suggestion views.

    Along with the Android.Omnibox.SuggestionView.ReusedType, the two histograms
    paint the picture of which suggestions need to be created more often than
    others vs which suggestions have more capacity than is actually needed.
    Higher reuse means lower latency at the expense of slight increase of memory
    consumption.

    This histogram is related to Android.Omnibox.SuggestionView.ReusedType.
  </summary>
</histogram>

<histogram name="Android.Omnibox.SuggestionView.CreateTime" units="ms"
    expires_after="2022-06-19">
  <obsolete>
    Retired with M103. Please refer to .CreateTime2
  </obsolete>
  <owner>ender@chromium.org</owner>
  <owner>mpearson@chromium.org</owner>
  <owner>jdonnelly@chromium.org</owner>
  <summary>
    Records time spent creating a single suggestion.

    Values recorded here should generally aim to be small, below 1ms range.
    Higher values may be an indicator of a performance problem.

    This metric is reported for all users and uses 100microsecond granularity.

    When comparing Durations measured here, also compare Total Counts for a
    correct indication of how frequently views are created and how the overall
    time spent creating views changed.

    This histogram is related to Android.Omnibox.SuggestionList.LayoutTime,
    Android.Omnibox.SuggestionList.MeasureTime,
    Android.Omnibox.SuggestionView.Reused.
  </summary>
</histogram>

<histogram name="Android.Omnibox.SuggestionView.CreateTime2" units="ms"
    expires_after="2023-10-15">
  <owner>ender@chromium.org</owner>
  <owner>mpearson@chromium.org</owner>
  <owner>jdonnelly@chromium.org</owner>
  <summary>
    Records time spent creating a single suggestion.

    Values recorded here should generally aim to be small, below 1ms range.
    Higher values may be an indicator of a performance problem.

    This metric is reported for all users and uses 100microsecond granularity.

    When comparing Durations measured here, also compare Total Counts for a
    correct indication of how frequently views are created and how the overall
    time spent creating views changed.

    This histogram is related to Android.Omnibox.SuggestionList.LayoutTime2,
    Android.Omnibox.SuggestionList.MeasureTime2,
    Android.Omnibox.SuggestionView.Reused.
  </summary>
</histogram>

<histogram name="Android.Omnibox.SuggestionView.Reused" enum="BooleanReused"
    expires_after="M110">
  <obsolete>
    Replaced with Android.Omnibox.SessionViewsCreated and
    Android.Omnibox.SessionViewsReused since M110
  </obsolete>
  <owner>ender@chromium.org</owner>
  <owner>mpearson@chromium.org</owner>
  <owner>jdonnelly@chromium.org</owner>
  <summary>
    Records number of times a suggestion was successfully reused.

    Values recorded here tell how efficiently View reuse algorithms operate and
    how frequently these algorithms have managed to prevent unnecessary view
    creation. Higher Reuse counts indicate better performance.

    When analysing this metric, consider checking also the Total Counts of
    Android.Omnibox.SuggestionView.CreateTime metric for a better information
    regarding how view creations and re-uses have changed:

    * If this metric increased while the Total Count of the CreateTime
    decreased, the change has positive effect.

    * If this metric increased (or decreased) and there is a similar change in
    Total Counts of CreateTime, then the effect is neutral.

    * If this metric decreased, while the Total Count increased, then the change
    has a negative effect (fewer reuses, more time spent creating views)

    Obsolete: Please use Android.Omnibox.SessionViewsCreated and
    Android.Omnibox.SessionViewsReused.

    This histogram is related to Android.Omnibox.SuggestionList.LayoutTime2,
    Android.Omnibox.SuggestionList.MeasureTime2,
    Android.Omnibox.SuggestionView.CreateTime2.
  </summary>
</histogram>

<histogram name="Android.Omnibox.SuggestionView.ReusedType"
    enum="OmniboxSuggestionUiType" expires_after="2023-09-03">
  <owner>ender@google.com</owner>
  <owner>gangwu@chromium.org</owner>
  <owner>rongtan@chromium.org</owner>
  <summary>
    Records the type of suggestion that was reused with the help of
    RecyclerView.

    This histogram drives OmniboxSuggestionsDropdown optimization, helping us
    find the balance between the volume of suggestions and amount of memory we
    delegate to re-use the pre-constructed suggestion views.

    Along with the Android.Omnibox.SuggestionView.CreatedType, the two
    histograms paint the picture of which suggestions need to be created more
    often than others vs which suggestions have more capacity than is actually
    needed. Higher reuse means lower latency at the expense of slight increase
    of memory consumption.

    This histogram is related to Android.Omnibox.SuggestionView.CreatedType.
  </summary>
</histogram>

<histogram name="Android.Omnibox.SuggestionView.SessionViewsCreated"
    units="count" expires_after="2023-09-03">
  <owner>ender@google.com</owner>
  <owner>rongtan@google.com</owner>
  <summary>
    Records number of views created from the moment the Omnibox was focused,
    until the interaction was completed, whether the user navigated somewhere or
    canceled the interaction.

    Values recorded here tell how efficiently the view creation and re-use
    works, highlighting possible issues related to unusually frequent view
    creation; the number of views created should be low and not exceed the sum
    of all the views recycled by HistogramRecordingRecycledViewPool component.
    Any deviation from this are a signal that the RecycledViewPool limits are
    not optimal.

    When observing a higher than expected number of created views, consult the
    Android.Omnibox.SuggestionView.CreatedType to identify view type that is not
    correctly captured and update the limits of the
    HistogramRecordingRecycledViewPool.

    This histogram is related to Android.Omnibox.SuggestionView.CreatedType,
    Android.Omnibox.SuggestionView.SessionViewsReused.
  </summary>
</histogram>

<histogram name="Android.Omnibox.SuggestionView.SessionViewsReused" units="%"
    expires_after="2023-09-03">
  <owner>ender@google.com</owner>
  <owner>rongtan@google.com</owner>
  <summary>
    Captures the efficiency of the view re-use from the moment the Omnibox was
    focused, until the interaction was completed, whether the user navigated
    somewhere or canceled the interaction.

    Values captured here directly reflect the efficiency of recycled view pool
    tuning, with the following caveats:

    * short sessions (omnibox focused and defocused, with no inputs) will report
    efficiency of 0% (because all the views had to be created and no views were
    available for re-use).

    * this metric will never truly capture 100% effectiveness, because during
    every input session some views will have to be created.

    The captured value should be at or above 90% re-use. Lower re-use rates may
    be an indication of a possible issue.

    This histogram is related to
    Android.Omnibox.SuggestionView.SessionViewsCreated.
  </summary>
</histogram>

<histogram name="Android.Omnibox.UsedSuggestionFromCache" enum="Boolean"
    expires_after="2022-09-04">
  <owner>ender@chromium.org</owner>
  <owner>jdonnelly@chromium.org</owner>
  <owner>mpearson@chromium.org</owner>
  <summary>
    Records whether users interacted with suggestion originating from Java
    cache.

    Android presents the Cached suggestions for a brief time before the Native
    libraries become available, replacing these with a fresh content as soon as
    Autocomplete subsystem serves them. This histogram records all the events
    where the cached suggestions were shown for an extended period of time -
    long enough for the User to identify and interact with a suggestion of their
    choice.

    Recorded every time the User initiates navigation using the Omnibox or the
    Suggestions list, regardless of context.
  </summary>
</histogram>

<histogram name="Android.OmniboxFocusReason" enum="OmniboxFocusReason"
    expires_after="2023-10-08">
  <owner>mdjones@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <owner>amaralp@chromium.org</owner>
  <owner>mpearson@chromium.org</owner>
  <owner>jdonnelly@chromium.org</owner>
  <summary>Records how the omnibox was focused.</summary>
</histogram>

<histogram name="Android.OpenHistoryFromMenu.PerProfileType"
    enum="BrowserProfileType" expires_after="2023-01-15">
  <owner>roagarwal@chromium.org</owner>
  <owner>chrome-incognito@google.com</owner>
  <summary>
    Records the clicks on History menu item separately for each profile type in
    Android.
  </summary>
</histogram>

<histogram name="Android.PackageStats.CacheSize" units="MB"
    expires_after="2024-03-05">
  <owner>nyquist@chromium.org</owner>
  <owner>yfriedman@chromium.org</owner>
  <summary>
    Records the size of the user's cache at startup on Android O and above.
  </summary>
</histogram>

<histogram name="Android.PackageStats.CodeSize" units="MB"
    expires_after="2024-03-05">
  <owner>nyquist@chromium.org</owner>
  <owner>yfriedman@chromium.org</owner>
  <summary>
    At startup, records the space on disk taken by Chrome application including
    APK resources, compiled libraries, and extracted native code. Only recorded
    for Android O and above.
  </summary>
</histogram>

<histogram name="Android.PackageStats.DataSize" units="MB"
    expires_after="2024-03-05">
  <owner>nyquist@chromium.org</owner>
  <owner>yfriedman@chromium.org</owner>
  <summary>
    Records the size of the user's data directory at startup on Android O and
    above. Does not include cache size.
  </summary>
</histogram>

<histogram name="Android.PartnerBrowserCustomizationInitDuration" units="ms"
    expires_after="2023-09-01">
  <owner>wenyufu@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Records the total duration of initializing PartnerBrowserCustomization in
    the background. Noting that and the initialization has a 10-second timeout,
    and this histogram does not count the duration for all associated callback.
    Recorded when the initialization is completed or canceled.
  </summary>
</histogram>

<histogram name="Android.PartnerBrowserCustomizationInitDuration.WithCallbacks"
    units="ms" expires_after="2023-09-01">
  <owner>wenyufu@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Records the total duration of initializing PartnerBrowserCustomization in
    the background and running all of the associated callbacks. Recorded when
    the initialization is completed or canceled, and all the associated async
    callbacks are run.
  </summary>
</histogram>

<histogram name="Android.PartnerCustomizationInitializedBeforeInitialTab"
    enum="Boolean" expires_after="2023-09-01">
  <owner>wenyufu@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Records whether partner customization is initialized before the first tab is
    created. A value of false means the first tab might be using a different
    homepage than the one customized by the partner. Recorded during Chrome
    start up when the very first tab is created.
  </summary>
</histogram>

<histogram name="Android.PhotoPicker.BitmapScalerTask" units="ms"
    expires_after="2023-06-01">
  <owner>finnur@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Measures the amount of time the BitmapScaler spent scaling a bitmap.
  </summary>
</histogram>

<histogram name="Android.PhotoPicker.CacheHits" units="Hits"
    expires_after="2023-06-01">
  <owner>finnur@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Measures the total number of images served from the high-res cache during
    the lifetime of the dialog.
  </summary>
</histogram>

<histogram name="Android.PhotoPicker.DecodeRequests" units="Hits"
    expires_after="2023-06-01">
  <owner>finnur@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Measures the total number of images sent for decoding during the lifetime of
    the dialog.
  </summary>
</histogram>

<histogram name="Android.PhotoPicker.DecoderHostFailureOutOfMemory" units="%"
    expires_after="2023-06-01">
  <owner>finnur@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    The percentage of out-of-memory decoding failures, per batch of photos (not
    videos) decoded. Intended to help identify if there are devices where
    decoding fails 100% of the time. Be wary at looking at other numbers in the
    histogram, as a value emitted at, say, 50% may represent one failure in a
    two-item decoding or 50 failures in a hundred-item decoding. These are
    qualitatively different experiences for a user.
  </summary>
</histogram>

<histogram name="Android.PhotoPicker.DecoderHostVideoFileError" units="%"
    expires_after="2023-06-01">
  <owner>finnur@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    The percentage of file error decoding failures, per batch of videos (not
    photos) decoded. Intended to help identify if there are devices where
    decoding fails 100% of the time. Be wary at looking at other numbers in the
    histogram, as a value emitted at, say, 50% may represent one failure in a
    two-item decoding or 50 failures in a hundred-item decoding. These are
    qualitatively different experiences for a user.
  </summary>
</histogram>

<histogram name="Android.PhotoPicker.DecoderHostVideoIoError" units="%"
    expires_after="2023-06-01">
  <owner>finnur@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    The percentage of IO error decoding failures, per batch of videos (not
    photos) decoded. Intended to help identify if there are devices where
    decoding fails 100% of the time. Be wary at looking at other numbers in the
    histogram, as a value emitted at, say, 50% may represent one failure in a
    two-item decoding or 50 failures in a hundred-item decoding. These are
    qualitatively different experiences for a user.
  </summary>
</histogram>

<histogram name="Android.PhotoPicker.DecoderHostVideoRuntimeError" units="%"
    expires_after="2023-06-01">
  <owner>finnur@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    The percentage of runtime error decoding failures, per batch of videos (not
    photos) decoded. Intended to help identify if there are devices where
    decoding fails 100% of the time. Be wary at looking at other numbers in the
    histogram, as a value emitted at, say, 50% may represent one failure in a
    two-item decoding or 50 failures in a hundred-item decoding. These are
    qualitatively different experiences for a user.
  </summary>
</histogram>

<histogram name="Android.PhotoPicker.DecoderHostVideoUnknownError" units="%"
    expires_after="2023-06-01">
  <owner>finnur@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    The percentage of unknown decoding error failures, per batch of videos (not
    photos) decoded. Intended to help identify if there are devices where
    decoding fails 100% of the time. Be wary at looking at other numbers in the
    histogram, as a value emitted at, say, 50% may represent one failure in a
    two-item decoding or 50 failures in a hundred-item decoding. These are
    qualitatively different experiences for a user.
  </summary>
</histogram>

<histogram name="Android.PhotoPicker.DialogAction"
    enum="PhotoPickerDialogAction" expires_after="2023-10-08">
  <owner>finnur@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Records which action the user takes in the PhotoPickerDialog.
  </summary>
</histogram>

<histogram name="Android.PhotoPicker.EnumeratedFiles" units="Files"
    expires_after="2023-06-01">
  <owner>finnur@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Measures the total number of files returned from the enumeration operation.
    Measured once at the end of the enumeration operation.
  </summary>
</histogram>

<histogram name="Android.PhotoPicker.EnumeratedRate"
    units="Files per 10th of a second" expires_after="2023-06-01">
  <owner>finnur@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Measures the enumeration rate (files per tenths of a second). Measured once
    at the end of the enumeration operation.
  </summary>
</histogram>

<histogram name="Android.PhotoPicker.EnumerationTime" units="ms"
    expires_after="2023-06-01">
  <owner>finnur@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Measures the amount of time the BitmapScaler spent enumerating files on
    disk. Measured once at the end of the enumeration operation.
  </summary>
</histogram>

<histogram name="Android.PhotoPicker.ExifOrientation" enum="ExifOrientation"
    expires_after="2023-06-01">
  <owner>finnur@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Records whether the EXIF orientation directive is present and what it is set
    to. Collected once per decoded image, but only on Android N and above (and
    when no IO error occurs).
  </summary>
</histogram>

<histogram name="Android.PhotoPicker.ImageByteCount" units="KB"
    expires_after="2023-06-01">
  <owner>finnur@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Measures the byte count of a decoded image. Only recorded on successful
    decodes.
  </summary>
</histogram>

<histogram name="Android.PhotoPicker.ImageDecodeTime" units="ms"
    expires_after="2023-06-01">
  <owner>finnur@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Measures the amount of time it takes the decoder to decode one image. Only
    recorded on successful decodes.
  </summary>
</histogram>

<histogram name="Android.PhotoPicker.RequestProcessTime" units="ms"
    expires_after="2023-06-01">
  <owner>finnur@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Measures the amount of time it takes to process one image decode request
    (not video) end to end (RPC and actual decoding of the bits by utility
    process). Recorded whether or not the RPC/decode request was successful.
  </summary>
</histogram>

<histogram name="Android.PhotoPicker.RequestProcessTimeAnimation" units="ms"
    expires_after="2023-06-01">
  <owner>finnur@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Measures the amount of time it takes to decode all the frames needed to show
    the animation -- end to end (RPC and actual decoding of the bits by utility
    process). Recorded whether or not the RPC/decode request was successful.
  </summary>
</histogram>

<histogram name="Android.PhotoPicker.RequestProcessTimeThumbnail" units="ms"
    expires_after="2023-06-01">
  <owner>finnur@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Measures the amount of time it takes to process one video frame request end
    to end (RPC and actual decoding of the bits by utility process). Recorded
    whether or not the RPC/decode request was successful.
  </summary>
</histogram>

<histogram name="Android.PhotoPicker.UpscaleLowResBitmap" units="ms"
    expires_after="2023-06-01">
  <owner>finnur@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Measures the amount of time it takes to upscale a bitmap from the low-res
    cache. Recorded only when there a cache miss from the high-res bitmap but a
    cache hit from the low-res (placeholder) bitmap.
  </summary>
</histogram>

<histogram name="Android.PhotoPicker.VideoByteCount" units="KB"
    expires_after="2023-06-01">
  <owner>finnur@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Measures the byte count of the first video thumbnail. Only recorded on
    successful decodes.
  </summary>
</histogram>

<histogram name="Android.PhotoPicker.VideoDecodeTimeAnimation" units="ms"
    expires_after="2023-06-01">
  <owner>finnur@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Measures the amount of time it takes the decoder to decode all the frames
    needed to display an animated thumbnail. Only recorded on successful
    decodes.
  </summary>
</histogram>

<histogram name="Android.PhotoPicker.VideoDecodeTimeThumbnail" units="ms"
    expires_after="2023-06-01">
  <owner>finnur@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Measures the amount of time it takes the decoder to decode the first frame
    of a video. Only recorded on successful decodes.
  </summary>
</histogram>

<histogram name="Android.PlayServices.Installed" enum="BooleanInstalled"
    expires_after="2022-12-25">
  <owner>twellington@chromium.org</owner>
  <owner>tedchoc@chromium.org</owner>
  <summary>
    Whether Google Play Services is installed on the device. Recorded during
    deferred startup.
  </summary>
</histogram>

<histogram name="Android.PlayServices.Version" units="versioncode"
    expires_after="2023-09-03">
  <owner>twellington@chromium.org</owner>
  <owner>tedchoc@chromium.org</owner>
  <summary>
    The version code for Google Play Services if it is installed on the device,
    or 0 if it is not. Recorded during deferred startup.
  </summary>
</histogram>

<histogram name="Android.PrepareMenu.OpenWebApkVisibilityCheck" units="ms"
    expires_after="2023-12-01">
  <owner>hartmanng@chromium.org</owner>
  <owner>src/chrome/android/webapk/OWNERS</owner>
  <summary>
    Measures the amount of time spent querying for whether a WebAPK is already
    installed.
  </summary>
</histogram>

<histogram name="Android.RequestDesktopSite.Changed" enum="SiteLayout"
    expires_after="2023-10-15">
  <owner>shuyng@google.com</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Records the changes of request desktop site content settings. This is
    recorded when a user manually switches the global setting between
    mobile/desktop.
  </summary>
</histogram>

<histogram name="Android.RequestDesktopSite.DomainSettingChanged"
    enum="Boolean" expires_after="2023-08-13">
  <owner>shuyng@google.com</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Records the new domain level Request Desktop Setting when changed. False
    means Mobile site while true means Desktop site. This is recorded when a
    user manually edits a domain level Request Desktop Setting from the site
    settings exception list.
  </summary>
</histogram>

<histogram name="Android.RequestDesktopSite.PerSiteIphDismissed.AppMenuOpened"
    enum="Boolean" expires_after="2023-08-13">
  <owner>aishwaryarj@google.com</owner>
  <owner>shuyng@google.com</owner>
  <summary>
    Records if a user opened the app menu as a consequence of showing the
    per-site IPH, emitted when the IPH is dismissed.
  </summary>
</histogram>

<histogram name="Android.RequestDesktopSite.SubDomainSettingChanged"
    enum="Boolean" expires_after="2023-08-13">
  <owner>shuyng@google.com</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Records the new subdomain level Request Desktop Setting when changed. False
    means Mobile site while true means Desktop site. This is recorded when a
    user manually edits a subdomain level Request Desktop Setting from the site
    settings exception list.
  </summary>
</histogram>

<histogram name="Android.RequestDesktopSite.TabletEligible" enum="Boolean"
    expires_after="2022-04-17">
  <obsolete>
    Deprecated in December 2022. This is no longer recorded as we cleanup
    feature flag RequestDesktopSiteForTablets.
  </obsolete>
  <owner>gangwu@chromium.org</owner>
  <owner>fgorski@chromium.org</owner>
  <summary>
    Records if Chrome width is eligible for requesting desktop sites. Recorded
    only when navigating to google or google search. This is recorded when
    chrome adds X-Eligible-Tablet to the http header per request.
  </summary>
</histogram>

<histogram name="Android.RequestDesktopSite.UseDesktopUserAgent" enum="Boolean"
    expires_after="2023-08-27">
  <owner>gangwu@chromium.org</owner>
  <owner>fgorski@chromium.org</owner>
  <summary>
    Records if Chrome uses the desktop site user agent to request websites. This
    is recorded when each tab loads a new url or reloads a url.
  </summary>
</histogram>

<histogram name="Android.RequestDesktopSite.UserSwitchToDesktop" enum="Boolean"
    expires_after="2023-08-27">
  <owner>gangwu@chromium.org</owner>
  <owner>fgorski@chromium.org</owner>
  <summary>
    Records if a user switched to request desktop site from the app menu. This
    is recorded when a user manually switches sites between the desktop/mobile.
  </summary>
</histogram>

<histogram
    name="Android.RequestDesktopSite.UserSwitchToDesktop.DomainSettingAdded"
    enum="Boolean" expires_after="2023-08-13">
  <owner>shuyng@google.com</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Records the new domain level Request Desktop Setting when added. False means
    Mobile site while true means Desktop site. This is recorded when a user
    manually adds a domain level Request Desktop Setting from the Add site
    dialog in Site settings.
  </summary>
</histogram>

<histogram
    name="Android.RequestDesktopSite.UserSwitchToDesktop.SubDomainSettingAdded"
    enum="Boolean" expires_after="2023-08-13">
  <owner>shuyng@google.com</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Records the new subdomain level Request Desktop Setting when added. False
    means Mobile site while true means Desktop site. This is recorded when a
    user manually adds a subdomain level Request Desktop Setting from the Add
    site dialog in Site settings.
  </summary>
</histogram>

<histogram name="Android.RestoreResult" enum="AndroidRestoreResult"
    expires_after="2023-08-27">
  <owner>triploblastic@chromium.org</owner>
  <owner>chrome-signin-team@google.com</owner>
  <summary>
    Whether Chrome tried to restore its settings from a previous device or
    installation, and what happened when it did. Only recorded on first run.
  </summary>
</histogram>

<histogram name="Android.Rotation.BeginToRendererFrameActivation" units="ms"
    expires_after="2023-09-03">
  <owner>jonross@chromium.org</owner>
  <owner>graphics-dev@chromium.org</owner>
  <summary>
    Measures the amount of time from when Android begins notifying the Browser
    process of a rotation, to when the Renderer successfully submits and
    activates a frame in the new orientation.
  </summary>
</histogram>

<histogram name="Android.SearchEngineChoice.ChosenSearchEngine"
    enum="OmniboxSearchEngineType" expires_after="2023-06-01">
  <owner>fgorski@chromium.org</owner>
  <owner>wylieb@chromium.org</owner>
  <summary>
    The type of the search engine chosen by the user in Search Engine Choice
    flow.
  </summary>
</histogram>

<histogram name="Android.SearchEngineChoice.Events"
    enum="AndroidSearchEngineChoiceEvents" expires_after="2023-06-01">
  <owner>wylieb@chromium.org</owner>
  <owner>fgorski@chromium.org</owner>
  <summary>
    Counts occurences of various events related to Search Engine Choice feature.
  </summary>
</histogram>

<histogram name="Android.SearchEngineChoice.EventsV2"
    enum="AndroidSearchEngineChoiceEventsV2" expires_after="2023-08-08">
  <owner>wylieb@chromium.org</owner>
  <owner>pavely@chromium.org</owner>
  <owner>fgorski@chromium.org</owner>
  <summary>
    Counts occurences of various events related to Search Engine Choice V2
    feature.
  </summary>
</histogram>

<histogram name="Android.SearchEngineChoice.SearchEngineBeforeChoicePrompt"
    enum="OmniboxSearchEngineType" expires_after="2023-08-08">
  <owner>wylieb@chromium.org</owner>
  <owner>fgorski@chromium.org</owner>
  <summary>
    The type of the search engine used before Search Engine Choice flow was
    presented.
  </summary>
</histogram>

<histogram name="Android.SeccompStatus.RendererSandbox"
    enum="AndroidSeccompSandboxStatus" expires_after="2023-08-27">
  <owner>rsesek@chromium.org</owner>
  <summary>
    Reports the status of the seccomp-bpf sandbox in renderer processes.
    Anything other than &quot;Sandbox Engaged&quot; indicates the sandbox is not
    turned on. See https://crbug.com/477049.
  </summary>
</histogram>

<histogram name="Android.SelectFileDialogContentSelected"
    enum="SelectFileDialogContent" expires_after="2023-08-27">
  <owner>finnur@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    Records the types of content selected for upload, focusing mostly on image
    and video types and how they were determined (asking ContentResolver for the
    MIME type or going by extension). Recorded when user uploads files to a
    website (once per item uploaded).
  </summary>
</histogram>

<histogram name="Android.SelectFileDialogImgCount" units="images"
    expires_after="2023-08-27">
  <owner>finnur@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    Records the number of images selected in either the new Photo Picker or the
    standard Android file picker. Note: Only recorded in situations determined
    to warrant the new Photo Picker (not, for example, if mixed content, like
    images and text files, was requested).
  </summary>
</histogram>

<histogram name="Android.SelectFileDialogScope" enum="SelectFileDialogScope"
    expires_after="2023-08-27">
  <owner>peter@chromium.org</owner>
  <owner>finnur@chromium.org</owner>
  <summary>
    Records the scope of accepted content for a select file dialog when shown by
    a Web developer.
  </summary>
</histogram>

<histogram name="Android.SpareTab.FinalStatus" enum="SpareTabFinalStatus"
    expires_after="2023-10-10">
  <owner>sreejakshetty@chromium.org</owner>
  <owner>chrome-brapp-loading@google.com</owner>
  <summary>
    Records the final status of the spare tab, for example, if the spare tab is
    used, destroyed, crashed, etc. This is recorded when the spare tab is used
    for navigation or destroyed. It is only recorded when a spare tab is
    created, and it is only recorded once per spare tab.
  </summary>
</histogram>

<histogram name="Android.StrictMode.OverrideUrlLoadingTime" units="ms"
    expires_after="2023-09-10">
  <owner>yfriedman@chromium.org</owner>
  <owner>wnwen@chromium.org</owner>
  <summary>
    Measures the amount of time due to a StrictMode violation from calling out
    to Android activity manager.
  </summary>
</histogram>

<histogram name="Android.StrictMode.ThumbnailCacheDir" units="ms"
    expires_after="M85">
  <owner>wnwen@chromium.org</owner>
  <owner>yfriedman@chromium.org</owner>
  <summary>
    Measures the amount of time due to a StrictMode violation from fetching for
    the thumbnail cache directory.
  </summary>
</histogram>

<histogram name="Android.Survey.DownloadAttemptsBeforeAccepted" units="units"
    expires_after="2023-08-27">
  <owner>skym@chromium.org</owner>
  <owner>wenyufu@chromium.org</owner>
  <owner>clank-app-team@google.com</owner>
  <summary>
    The number of survey download request attempts that have been made before
    the survey is accepted. Note:

    1) The download attempt might not result in a survey download due to
    different reasons (e.g. download request failed or network failure). 2)
    Chrome may have also successfully downloaded the survey several times in
    previous sessions, but the surveys were not able to be shown for min amount
    of times. In such scenarios, the total number of attempts across all
    sessions will be recorded. 3) If the number of allowed download attempts has
    been saturated before the survey is accepted, nothing will be recorded.

    Recorded when a survey prompt is accepted. Android Only.
  </summary>
</histogram>

<histogram name="Android.Survey.DownloadRequested2" enum="BooleanRequested"
    expires_after="2023-08-27">
  <owner>twellington@chromium.org</owner>
  <owner>wenyufu@chromium.org</owner>
  <owner>clank-app-team@google.com</owner>
  <summary>
    Recorded when a survey download is requested. If the download has been
    attemped, but the download request is not sent (e.g. user is not signed-in),
    'not requested' will be recorded.
  </summary>
</histogram>

<histogram name="Android.Survey.DownloadResponseCode2"
    enum="SurveyDownloadResponseCodes2" expires_after="2023-08-27">
  <owner>skym@chromium.org</owner>
  <owner>wenyufu@chromium.org</owner>
  <owner>clank-app-team@google.com</owner>
  <summary>
    The result of the completed survey download request. A survey download is
    initiated on ChromeTabbedActivity cold start iff the user passes a series of
    eligibility checks. Recorded when a valid survey response is received.
    Android only.
  </summary>
</histogram>

<histogram name="Android.Survey.ShowSurveyStatus"
    enum="SurveyPresentationStatusCode" expires_after="2023-08-27">
  <owner>aishwaryarj@google.com</owner>
  <owner>twellington@chromium.org</owner>
  <owner>wenyufu@chromium.org</owner>
  <owner>clank-app-team@google.com</owner>
  <summary>
    The result of the request to show the survey after it has been downloaded.
    This request is initiated when the user accepts to take the survey on the
    survey prompt. This histogram is agnostic to the content of the survey,
    which is configured server side, and will be recorded for all surveys shown
    in Chrome. Android only.
  </summary>
</histogram>

<histogram name="Android.Survey.SurveyCompleted" enum="BooleanCompleted"
    expires_after="2023-08-27">
  <owner>skym@chromium.org</owner>
  <owner>wenyufu@chromium.org</owner>
  <owner>clank-app-team@google.com</owner>
  <summary>
    Whether a user completed the survey after it was presented. This histogram
    is agnostic to the content of the survey, which is configured server side,
    and will be recorded for all surveys shown in Chrome. Android only.
  </summary>
</histogram>

<histogram name="Android.Survey.SurveyFilteringResults"
    enum="SurveyFilteringResult" expires_after="2023-08-27">
  <owner>twellington@chromium.org</owner>
  <owner>wenyufu@chromium.org</owner>
  <owner>clank-app-team@google.com</owner>
  <summary>
    The result of the survey filtering process. Each enum represents a different
    filter that caught the user. This is recorded on cold starts when we check
    if a user qualifies for a survey.
  </summary>
</histogram>

<histogram name="Android.Tab.CreateNewTabDuration.{TabLaunchType}" units="ms"
    expires_after="2023-07-10">
  <owner>sreejakshetty@chromium.org</owner>
  <owner>spelchat@chromium.org</owner>
  <owner>chrome-brapp-loading@google.com</owner>
  <summary>
    Records the duration of new tab creation for {TabLaunchType}. Emitted
    everytime a new tab is finished being created. Take into account that
    low-end devices create tabs more slowly, so adjust your analysis
    accordingly.
  </summary>
  <token key="TabLaunchType">
    <variant name="AppWidget" summary="tabs opened from an app widget"/>
    <variant name="BrowserActions"
        summary="tabs opened from browser actions context menu"/>
    <variant name="ChromeUI" summary="tabs opened via Chrome UI"/>
    <variant name="ExternalApp" summary="tabs opened from an external app"/>
    <variant name="LauncherShortcut"
        summary="tabs opened from launcher shortcut"/>
    <variant name="Link" summary="tabs opened from a link"/>
    <variant name="LongpressBackground"
        summary="tabs opened from the long press context menu which are
                 opened in the background"/>
    <variant name="LongpressBackgroundInGroup"
        summary="tabs opened from long press context menu item 'Open in new
                 tab in group'"/>
    <variant name="LongpressForeground"
        summary="tabs opended from the long press context menu"/>
    <variant name="LongpressIncognito"
        summary="tabs opened from the long press context menu item 'Open in
                 Incognito Tab'"/>
    <variant name="NewIncognitoTab"
        summary="tabs opened by an external application launching a new
                 Chrome incognito tab"/>
    <variant name="ReadingList" summary="tabs opened from the reading list"/>
    <variant name="RecentTabs"
        summary="tabs opened in backrgound from recent tabs"/>
    <variant name="Reparenting" summary="tabs opened from changing windows"/>
    <variant name="Restore" summary="tabs opened from restores"/>
    <variant name="SpeculativeBackgroundCreation"
        summary="tabs opened from CCT in the background"/>
    <variant name="StartSurface" summary="tabs opened from the start surface"/>
    <variant name="Startup" summary="tabs opened during the startup process"/>
    <variant name="TabGroupUI" summary="tabs opened from Tab group UI"/>
    <variant name="TabSwitcherUI" summary="tabs opened from Tab Switcher UI"/>
    <variant name="TypeUnknown"
        summary="tabs opened from a different case than one's listed"/>
  </token>
</histogram>

<histogram
    name="Android.Tab.CreateNewTabDuration.{TabLaunchType}.WithExistingWebContents"
    units="ms" expires_after="2023-07-10">
  <owner>sreejakshetty@chromium.org</owner>
  <owner>spelchat@chromium.org</owner>
  <owner>chrome-brapp-loading@google.com</owner>
  <summary>
    Records the duration of the creation of a new tab from an existing
    WebContents for {TabLaunchType}. A record is made each time a tab is created
    using an existing WebContents.
  </summary>
  <token key="TabLaunchType">
    <variant name="AppWidget" summary="tabs opened from an app widget"/>
    <variant name="BrowserActions"
        summary="tabs opened from browser actions context menu"/>
    <variant name="ChromeUI" summary="tabs opened via Chrome UI"/>
    <variant name="ExternalApp" summary="tabs opened from an external app"/>
    <variant name="LauncherShortcut"
        summary="tabs opened from launcher shortcut"/>
    <variant name="Link" summary="tabs opened from a link"/>
    <variant name="LongpressBackground"
        summary="tabs opened from the long press context menu which are
                 opened in the background"/>
    <variant name="LongpressBackgroundInGroup"
        summary="tabs opened from long press context menu item 'Open in new
                 tab in group'"/>
    <variant name="LongpressForeground"
        summary="tabs opended from the long press context menu"/>
    <variant name="LongpressIncognito"
        summary="tabs opened from the long press context menu item 'Open in
                 Incognito Tab'"/>
    <variant name="NewIncognitoTab"
        summary="tabs opened by an external application launching a new
                 Chrome incognito tab"/>
    <variant name="ReadingList" summary="tabs opened from the reading list"/>
    <variant name="RecentTabs"
        summary="tabs opened in backrgound from recent tabs"/>
    <variant name="Reparenting" summary="tabs opened from changing windows"/>
    <variant name="Restore" summary="tabs opened from restores"/>
    <variant name="SpeculativeBackgroundCreation"
        summary="tabs opened from CCT in the background"/>
    <variant name="StartSurface" summary="tabs opened from the start surface"/>
    <variant name="Startup" summary="tabs opened during the startup process"/>
    <variant name="TabGroupUI" summary="tabs opened from Tab group UI"/>
    <variant name="TypeUnknown"
        summary="tabs opened from a different case than one's listed"/>
  </token>
</histogram>

<histogram name="Android.TabMultiSelectV2.BookmarkTabsCount" units="count"
    expires_after="2023-11-23">
  <owner>ckitagawa@chromium.org</owner>
  <owner>bjfong@google.com</owner>
  <owner>fredmello@chromium.org</owner>
  <summary>
    Reports the number of tabs that are bookmarked using the TabSelectionEditor
    bookmark action. Recorded once per user attempt to bookmark tabs in the Tab
    Selection Editor.
  </summary>
</histogram>

<histogram name="Android.TabMultiSelectV2.SharingState"
    enum="TabSelectionEditorShareActionState" expires_after="2023-10-14">
  <owner>ckitagawa@chromium.org</owner>
  <owner>bjfong@google.com</owner>
  <owner>fredmello@chromium.org</owner>
  <summary>
    The result of the share action taken from the TabSelectionEditor. Record
    once per user attempt to share tabs in the Tab Selection Editor.
  </summary>
</histogram>

<histogram name="Android.TabMultiSelectV2.TimeSinceLastShown" units="ms"
    expires_after="2023-10-14">
  <owner>ckitagawa@chromium.org</owner>
  <owner>fredmello@chromium.org</owner>
  <summary>
    Measures the time between opening the TabSelectionEditor in milliseconds
    within a given browser activity lifespan. This is recorded when the
    TabSelectionEditor is shown with the exception of the first time it is shown
    within an activity lifespan.
  </summary>
</histogram>

<histogram name="Android.TabNavigationIntercept.Scheme"
    enum="NavigationInterceptScheme" expires_after="2023-08-27">
  <owner>rbyers@chromium.org</owner>
  <owner>mthiesse@chromium.org</owner>
  <summary>
    When a navigation is intercepted, the scheme of the URL being intercepted.
  </summary>
</histogram>

<histogram name="Android.TabNavigationInterceptResult.For{ProtocolType}"
    enum="NavigationInterceptResult" expires_after="2024-03-24">
  <owner>blundell@chromium.org</owner>
  <owner>mthiesse@chromium.org</owner>
  <owner>tedchoc@chromium.org</owner>
  <summary>
    The distribution of results when running ExternalNavigationHandler for
    navigations that have an {ProtocolType}. This shows how often we send
    intents to be handled by other applications.
  </summary>
  <token key="ProtocolType">
    <variant name="ExternalProtocol" summary="external protocol"/>
    <variant name="InternalProtocol" summary="internal protocol"/>
  </token>
</histogram>

<histogram name="Android.TabStrip.TimeToSwitchTab" units="ms"
    expires_after="2023-10-22">
  <owner>gauravjj@google.com</owner>
  <owner>twellington@chromium.org</owner>
  <owner>clank-large-form-factors@google.com</owner>
  <summary>
    This captures the time taken for a user to select a tab after scrolling the
    tab strip as one measure of tab strip switching efficiency. This is recorded
    only when a tab switch event occurs within 60 seconds of the most recent tab
    strip scroll. In the event of multiple back-to-back scrolls, this metric is
    recorded so long as the sequence of scrolls occur within 60 seconds of each
    other and is capped at 3 minutes.
  </summary>
</histogram>

<histogram name="Android.TabSwitcher.CreationTime" units="ms"
    expires_after="2023-10-08">
  <owner>skavuluru@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <owner>clank-large-form-factors@google.com</owner>
  <summary>
    Records the time taken to create the StartSurfaceCoordinator and grid tab
    switcher views. Only recorded for tablets.
  </summary>
</histogram>

<histogram name="Android.TabSwitcher.IncognitoClickedIsEmpty" enum="Boolean"
    expires_after="2023-09-10">
  <owner>roagarwal@chromium.org</owner>
  <owner>chrome-incognito@google.com</owner>
  <summary>
    Emitted every time a user uses Incognito button on Tab Switcher. Records
    whether or not there is any Incognito tab when Incognito button is clicked.
  </summary>
</histogram>

<histogram name="Android.TabSwitcher.SetupRecyclerView.Time" units="ms"
    expires_after="2023-09-17">
  <owner>skavuluru@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <owner>clank-large-form-factors@google.com</owner>
  <summary>
    Records the time taken to create TabListCoordinator, which inflates the
    RecyclerView for the grid tab switcher, and bind views.
  </summary>
</histogram>

<histogram name="Android.ThumbnailCache.InMemoryApproximationCacheEntries"
    units="thumbnails" expires_after="2023-09-25">
  <owner>ckitagawa@chromium.org</owner>
  <owner>dtrainor@chromium.com</owner>
  <summary>
    Records the number of entries for the in-memory approximation bitmap
    thumbnail cache. Recorded on a Poisson distributed frequency with a mean of
    5 minutes starting 1 minute after TabContentManager native initialization.
  </summary>
</histogram>

<histogram name="Android.ThumbnailCache.InMemoryApproximationCacheSize"
    units="KiB" expires_after="2023-09-25">
  <owner>ckitagawa@chromium.org</owner>
  <owner>dtrainor@chromium.com</owner>
  <summary>
    Records the in-memory approximation bitmap thumbnail cache size in KiB.
    Recorded on a Poisson distributed frequency with a mean of 5 minutes
    starting 1 minute after TabContentManager native initialization. Note that
    this memory may be distributed across the GPU process and Browser process.
  </summary>
</histogram>

<histogram name="Android.ThumbnailCache.InMemoryCacheEntries"
    units="thumbnails" expires_after="2023-09-25">
  <owner>ckitagawa@chromium.org</owner>
  <owner>dtrainor@chromium.com</owner>
  <summary>
    Records the number of entries for the in-memory ETC1 and bitmap thumbnail
    cache. Recorded on a Poisson distributed frequency with a mean of 5 minutes
    starting 1 minute after TabContentManager native initialization.
  </summary>
</histogram>

<histogram name="Android.ThumbnailCache.InMemoryCacheSize" units="KiB"
    expires_after="2023-09-25">
  <owner>ckitagawa@chromium.org</owner>
  <owner>dtrainor@chromium.com</owner>
  <summary>
    Records the in-memory ETC1 and bitmap thumbnail cache size in KiB. Recorded
    on a Poisson distributed frequency with a mean of 5 minutes starting 1
    minute after TabContentManager native initialization. Note that this memory
    may be distributed across the GPU process and Browser process.
  </summary>
</histogram>

<histogram
    name="Android.ThumbnailProvider.BitmapCache.Size{ThumbnailProvider_ClientType}"
    units="KB" expires_after="2021-01-30">
<!-- Name completed by histogram_suffixes
     name="ThumbnailProvider.ClientType" -->

  <owner>shaktisahu@chromium.org</owner>
  <owner>clank-downloads@google.com</owner>
  <summary>
    Measures the size of the bitmap cache used. Recorded whenever a bitmap is
    added to the cache. {ThumbnailProvider_ClientType}
  </summary>
  <token key="ThumbnailProvider_ClientType"
      variants="ThumbnailProvider_ClientType"/>
</histogram>

<histogram
    name="Android.ThumbnailProvider.CachedBitmap.Found{ThumbnailProvider_ClientType}"
    enum="BooleanFound" expires_after="2021-01-30">
<!-- Name completed by histogram_suffixes
     name="ThumbnailProvider.ClientType" -->

  <owner>shaktisahu@chromium.org</owner>
  <owner>clank-downloads@google.com</owner>
  <summary>
    Records the status of a thumbnail query from the thumbnail provider
    in-memory cache. {ThumbnailProvider_ClientType}
  </summary>
  <token key="ThumbnailProvider_ClientType"
      variants="ThumbnailProvider_ClientType"/>
</histogram>

<histogram name="Android.Toolbar.BitmapCapture" enum="ToolbarCaptureType"
    expires_after="2023-09-17">
  <owner>skym@chromium.org</owner>
  <owner>seacow@google.com</owner>
  <summary>
    Recorded when a toolbar view draws itself to a bitmap such that it can be
    passed to the compositor and drawn by native. Performing a bitmap capture is
    somewhat expensive opperation that must be done on the UI thread. It is
    possible that high capture counts are correlated with scroll jank.
  </summary>
</histogram>

<histogram name="Android.TopToolbar.AllowCaptureReason"
    enum="TopToolbarAllowCaptureReason" expires_after="2023-09-10">
  <owner>skym@chromium.org</owner>
  <owner>seacow@google.com</owner>
  <summary>
    Recorded on #isDirty calls that return true. Because #isDirty() is used to
    control when bitmap captures happen, this histogram holds the reason that
    the capture was allowed. Note that there there's an assert that calls into
    #isDirty() from #getBitmap(), which can cause these to be double counted. If
    Canary starts running assert code, this will cause this metric to double in
    report volume.
  </summary>
</histogram>

<histogram name="Android.TopToolbar.BlockCaptureReason"
    enum="TopToolbarBlockCaptureReason" expires_after="2023-09-10">
  <owner>skym@chromium.org</owner>
  <owner>seacow@google.com</owner>
  <summary>
    Recorded on #isDirty calls that return false. Because #isDirty() is used to
    control when bitmap captures happen, this histogram holds the reason that
    the capture was not allowed.
  </summary>
</histogram>

<histogram name="Android.TopToolbar.InMotionStage" enum="ToolbarInMotionStage"
    expires_after="2023-12-31">
  <owner>skym@chromium.org</owner>
  <owner>seacow@google.com</owner>
  <summary>
    Captures the stages reached in the Toolbar's in motion handling. Recorded
    every time the in motion state of the compositor changes, before the event
    is routed to the renderer process. Motion states include: flinging, swiping,
    and any gesture that the CompositorViewHolder is processing. This metric
    shows how often the in motion handling had to request the toolbar's capture
    readiness state, which is a computationally expensive operation, and could
    slow down input handling.
  </summary>
</histogram>

<histogram name="Android.TopToolbar.SnapshotDifference"
    enum="ToolbarSnapshotDifference" expires_after="2023-05-16">
  <owner>skym@chromium.org</owner>
  <owner>seacow@google.com</owner>
  <summary>
    When the allow reason for a bitmap capture was that the snapshots were
    different, then this histogram is recorded with the reason that the
    snapshots were different. Often there may be multiple differences but one is
    arbitrarily and consistently picked.
  </summary>
</histogram>

<histogram name="Android.View.onDraw.30Seconds" units="count"
    expires_after="2023-05-07">
  <owner>nuskos@chromium.org</owner>
  <owner>chrometto-team@google.com</owner>
  <summary>
    Keeps a counter of each onDraw invoked on the root view and emits the count
    once every 30 seconds. Thus this is the amount of times android attempted to
    draw/update a java view in the last 30 seconds.

    NOTE: 30 second intervals with 0 draws are not reported.
  </summary>
</histogram>

<histogram name="Android.WebView.AndroidX.ApiCall" enum="AndroidXWebkitApiCall"
    expires_after="2023-10-31">
  <owner>ntfschr@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records calls to WebView APIs from AndroidX. Some AndroidX-originating calls
    may plumb through the corresponding platform (framework) API if the device
    OS version supports the platform API. In this case the API call will be
    logged by the &quot;Android.WebView.ApiCall&quot; histogram instead. This is
    logged each time an AndroidX API is called through the &quot;boundary
    interface&quot; code path (see //android_webview/support_library/README.md
    for more details).
  </summary>
</histogram>

<histogram name="Android.WebView.ApiCall" enum="WebViewApiCall"
    expires_after="2023-10-31">
  <owner>ntfschr@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records calls to WebView APIs through the platform (framework) APIs. This
    may include AndroidX API calls on OS versions where the AndroidX library
    just calls through the platform API (see
    &quot;Android.WebView.AndroidX.ApiCall&quot; for details). This is logged
    each time an API is called.

    For historical data (before M99), see &quot;WebView.ApiCall&quot;.
  </summary>
</histogram>

<histogram name="Android.WebView.AppDataDirectory.Size" units="KiB"
    expires_after="2023-06-01">
  <owner>xiaq@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Size on disk taken by the embedding app's data directory, recorded once per
    WebView startup after a small delay.
  </summary>
</histogram>

<histogram name="Android.WebView.AppDataDirectory.TimeToComputeSize" units="ms"
    expires_after="2023-06-01">
  <owner>xiaq@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Time to compute the size on disk taken by the embedding app's data
    directory, recorded once per WebView startup after a small delay.
  </summary>
</histogram>

<histogram name="Android.WebView.Callback.Counts" enum="WebViewCallbackType"
    expires_after="2023-10-01">
  <owner>ntfschr@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>Records the invocation count of WebView callbacks.</summary>
</histogram>

<histogram name="Android.WebView.ComponentUpdater.CPSDirectorySize" units="KB"
    expires_after="2023-12-01">
  <owner>hazems@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Size on disk taken by the ComponentsProviderService serving directory. This
    is logged once per run of the update job in AwComponentUpdateService.
  </summary>
</histogram>

<histogram name="Android.WebView.ComponentUpdater.CUSDirectorySize" units="KB"
    expires_after="2023-12-01">
  <owner>hazems@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Size on disk taken by the AwComponentUpdateService directory. This is logged
    once per update job in AwComponentUpdateService.
  </summary>
</histogram>

<histogram name="Android.WebView.ComponentUpdater.GetFilesDuration" units="ms"
    expires_after="2023-12-01">
  <owner>hazems@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Duration of ComponentsProviderService getFilesForComponent request. This
    method retrieves FileDescriptors for an installed component. This is logged
    at the end of every request the service receives.
  </summary>
</histogram>

<histogram name="Android.WebView.ComponentUpdater.GetFilesResult"
    enum="WebViewComponentUpdaterGetFilesResult" expires_after="2023-12-01">
  <owner>hazems@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Logs the result of ComponentsProviderService getFilesForComponent request.
    This method retrieves FileDescriptors for an installed component. This is
    logged once for every request the service receives.
  </summary>
</histogram>

<histogram name="Android.WebView.ComponentUpdater.SafeModeActionExecuted"
    enum="Boolean" expires_after="2023-12-01">
  <owner>hazems@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Whether a SafeMode action was executed by Component Updater services. This
    is logged whenever a nonembedded Component Updater service checks whether
    SafeMode is enabled.
  </summary>
</histogram>

<histogram name="Android.WebView.ComponentUpdater.UnexpectedExit"
    enum="Boolean" expires_after="2023-12-01">
  <owner>hazems@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Whether AwComponentUpdateService quit unexpectedly on the previous run. This
    might indicate a crash occurred during the previous job. This is logged once
    per run of AwComponentUpdateService.
  </summary>
</histogram>

<histogram name="Android.WebView.ComponentUpdater.UpdateJobDuration" units="ms"
    expires_after="2023-12-01">
  <owner>hazems@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Duration of AwComponentUpdateService update job. This job is responsible for
    updating and installing components. This is logged once per run of the job.
  </summary>
</histogram>

<histogram name="Android.WebView.ComponentUpdater.UpdateJobFilesChanged"
    units="count" expires_after="2023-12-01">
  <owner>hazems@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    How many components were updated by AwComponentUpdateService update job.
    This is logged once per run of the job, and is capped at 1000.
  </summary>
</histogram>

<histogram name="Android.WebView.DarkMode.ForceDarkBehavior"
    enum="WebViewForceDarkBehavior" expires_after="2023-06-01">
  <owner>michaelbai@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records WebView force dark behavior settings on each main frame navigation
    entry committed.
  </summary>
</histogram>

<histogram name="Android.WebView.DarkMode.ForceDarkMode"
    enum="WebViewForceDarkMode2" expires_after="2023-06-01">
  <owner>michaelbai@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records WebView force dark mode settings on each main frame navigation entry
    committed.
  </summary>
</histogram>

<histogram name="Android.WebView.DarkMode.InDarkMode" enum="Boolean"
    expires_after="2023-06-01">
  <owner>michaelbai@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records if WebView applies the algorithmic darkening on each main frame
    navigation entry committed.
  </summary>
</histogram>

<histogram name="Android.WebView.DarkMode.InDarkModeVsLightTheme"
    enum="WebViewInDarkModeVsLightTheme" expires_after="2023-06-01">
  <owner>michaelbai@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records if the application has light theme and if WebView applies the
    algorithmic darkening on each main frame navigation entry committed.
  </summary>
</histogram>

<histogram name="Android.WebView.DarkMode.InDarkModeVsNightMode"
    enum="WebViewInDarkModeVsNightMode" expires_after="2023-06-01">
  <owner>michaelbai@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records if the application is in the night mode and if WebView applies the
    algorithmic darkening on each main frame navigation entry committed.
  </summary>
</histogram>

<histogram name="Android.WebView.DarkMode.LightTheme" enum="LightTheme"
    expires_after="2023-06-01">
  <owner>michaelbai@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records if the application has light theme on each main frame navigation
    entry committed.
  </summary>
</histogram>

<histogram name="Android.WebView.DarkMode.NightMode" enum="NightMode"
    expires_after="2023-06-01">
  <owner>michaelbai@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records application's night mode bit related to
    android.content.res.Configuration.UI_MODE_NIGHT_MASK on each main frame
    navigation entry committed.
  </summary>
</histogram>

<histogram name="Android.WebView.DarkMode.NightModeVsLightTheme"
    enum="WebViewNightModeVsLightTheme" expires_after="2023-06-01">
  <owner>michaelbai@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records if application is in night mode and if it has light theme on each
    main frame navigation entry committed.
  </summary>
</histogram>

<histogram name="Android.WebView.DarkMode.PageDarkenedAccordingToAppTheme"
    enum="Boolean" expires_after="2023-06-01">
  <owner>michaelbai@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records WebView is darkened or not when the prefers-color-scheme is set to
    dark according to the app theme not FORCE_DARK_AUTO setting. This histogram
    is recorded on main frame's color scheme inferred for every committed
    navigation.
  </summary>
</histogram>

<histogram name="Android.WebView.DarkMode.PrefersDarkFromTheme"
    enum="BooleanYesNo" expires_after="2023-06-01">
  <owner>michaelbai@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records if WebView shall set prefers-color-scheme to dark according to app's
    theme after FORCE_DARK_AUTO fails. It is recorded on each main frame
    navigation entry committed.
  </summary>
</histogram>

<histogram name="Android.WebView.DarkMode.PrimaryTextLuminanceVsLightTheme"
    enum="WebViewPrimaryTextLuminanceVsLightTheme" expires_after="2023-06-01">
  <owner>michaelbai@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records if the application has light theme and if its theme's
    textColorPrimary attribute is light on each main frame navigation entry
    committed.
  </summary>
</histogram>

<histogram name="Android.WebView.DarkMode.PrimaryTextLuminanceVsNightMode"
    enum="WebViewPrimaryTextLuminanceVsNightMode" expires_after="2023-06-01">
  <owner>michaelbai@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records if the application is in night mode and if its theme's
    textColorPrimary attribute is light on each main frame navigation entry
    committed.
  </summary>
</histogram>

<histogram name="Android.WebView.DevUi.AppLaunch" enum="Boolean"
    expires_after="2024-01-14">
  <owner>ntfschr@chromium.org</owner>
  <owner>hazems@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the number of times the developer UI app was launched. This only
    ever logs the value &quot;true&quot; because we only care about the total
    count. This is logged in the developer UI app during Activity#onCreate.
  </summary>
</histogram>

<histogram name="Android.WebView.DevUi.CrashList.CollectionState"
    enum="AndroidWebViewCrashCollectionState" expires_after="2024-01-14">
  <owner>ntfschr@chromium.org</owner>
  <owner>hazems@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the state of crash collection, as seen by the developer UI. This is
    recorded when launching the crash UI, but only if the UI is not already
    showing an error message for another problem (ex. WebView package error).
    This only logs the first state we detect: ex. if the user has enabled crash
    reporting by opting in and also with the flag UI, this only logs the flag UI
    case.
  </summary>
</histogram>

<histogram name="Android.WebView.DevUi.CrashList.CrashInteraction"
    enum="AndroidWebViewCrashInteraction" expires_after="2024-01-14">
  <owner>ntfschr@chromium.org</owner>
  <owner>hazems@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the user's interaction with crashes in the developer UI's crash
    list. Specifically, this tracks how the user interacts with the &quot;hide
    crash&quot;, &quot;upload this crash report&quot; or the &quot;file bug
    report&quot; buttons and possible subsequent dialogs. Since the latter two
    buttons are connected (the user must upload a crash before they can file a
    bug report), we track interaction with both in the same histogram. This is
    recorded for each button press in the crash list and is not recorded if the
    user does not interact with any crashes.
  </summary>
</histogram>

<histogram name="Android.WebView.DevUi.CrashList.NumberShown"
    units="crash reports" expires_after="2024-01-14">
  <owner>ntfschr@chromium.org</owner>
  <owner>hazems@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the number of crashes shown in the developer UI. This is logged each
    time the crash UI is launched and each time its list is refreshed. The UI
    currently limits the number of crashes at 20, so clients logging the maximum
    may have more logs sitting on disk.
  </summary>
</histogram>

<histogram name="Android.WebView.DevUi.DeveloperModeBlockingTime" units="ms"
    expires_after="2024-01-14">
  <owner>ntfschr@chromium.org</owner>
  <owner>hazems@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the time spent blocking WebView startup to check for developer mode
    (see &quot;Android.WebView.DevUi.DeveloperModeEnabled&quot;). This is
    recorded once during WebView startup, regardless of whether developer mode
    is enabled.
  </summary>
</histogram>

<histogram name="Android.WebView.DevUi.DeveloperModeEnabled"
    enum="BooleanEnabled" expires_after="2024-01-14">
  <owner>ntfschr@chromium.org</owner>
  <owner>hazems@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records whether or not WebView is starting up in &quot;developer mode.&quot;
    This is a mode where the user has enabled debugging features through the
    WebView developer UI. This is recorded once during startup.
  </summary>
</histogram>

<histogram name="Android.WebView.DevUi.FlagLoadingBlockingTime" units="ms"
    expires_after="2024-01-14">
  <owner>ntfschr@chromium.org</owner>
  <owner>hazems@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the time spent blocking WebView startup to load flags from the
    developer UI. This is recorded only once during WebView startup, and only if
    we've already detected developer mode is enabled (see
    &quot;Android.WebView.DevUi.DeveloperModeEnabled&quot;).
  </summary>
</histogram>

<histogram name="Android.WebView.DevUi.FlagsUi.ToggledFromSearch"
    enum="Boolean" expires_after="2024-01-14">
  <owner>ntfschr@chromium.org</owner>
  <owner>hazems@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    This is recorded each time a user toggles a flag in the developer UI
    (changing a flag's state), and logs whether the user found this flag with
    the search bar (&quot;true&quot; means there was a non-empty search query).
    This is only recorded when the user toggles an individual flag through the
    Spinner dialog, not when they press the &quot;reset all flags&quot; button.
  </summary>
</histogram>

<histogram
    name="Android.WebView.DevUi.FragmentNavigation{Android_WebView_DevUi_NavType}"
    enum="AndroidWebViewDevUiFragments" expires_after="2024-01-14">
<!-- Name completed by histogram_suffixes
     name="Android.WebView.DevUi.NavType" -->

  <owner>ntfschr@chromium.org</owner>
  <owner>hazems@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the user's navigation to a Fragment. &quot;FromIntent&quot; tracks
    navigations triggered by an Intent (ex. navigating to HomeFragment on
    launch) and &quot;NavBar&quot; tracks user interaction with the bottom
    navigation bar. &quot;AnyMethod&quot; should be the sum of the other two.
    {Android_WebView_DevUi_NavType}
  </summary>
  <token key="Android_WebView_DevUi_NavType">
    <variant name=".AnyMethod" summary="User navigation through any means"/>
    <variant name=".FromIntent"
        summary="User navigation through the bottom navigation bar"/>
    <variant name=".NavBar" summary="User navigation in response to an Intent"/>
  </token>
</histogram>

<histogram name="Android.WebView.DevUi.MenuSelection"
    enum="AndroidWebViewDevUiMenu" expires_after="2024-01-14">
  <owner>ntfschr@chromium.org</owner>
  <owner>hazems@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the user's selection in the developer UI overflow menu or action
    bar, recorded after each selection.
  </summary>
</histogram>

<histogram name="Android.WebView.DevUi.MonochromeIconStateToggled"
    enum="BooleanEnabled" expires_after="2024-01-14">
  <owner>ntfschr@chromium.org</owner>
  <owner>hazems@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records how the developer UI launcher icon for Monochrome was toggled: was
    it enabled or disabled? This can be recorded either from WebView's
    non-embedded processes or Chrome's browser process whenever either changes
    the icon state (nothing is logged if we don't need to change the icon
    state). This is only recorded in Monochrome (Android Nougat, Oreo, and Pie),
    since this logic is only relevant in that case.
  </summary>
</histogram>

<histogram base="true" name="Android.WebView.DevUi.SessionDuration2" units="ms"
    expires_after="2024-01-14">
<!-- Name completed by histogram_suffixes
     name="AndroidWebViewFragments" -->

  <owner>ntfschr@chromium.org</owner>
  <owner>hazems@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the time spent using a specific tool, from creation to destruction.
  </summary>
</histogram>

<histogram name="Android.WebView.DevUi.ToggledFlagCount" units="flags"
    expires_after="2024-01-14">
  <owner>ntfschr@chromium.org</owner>
  <owner>hazems@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the number of flags we will toggle for this run of WebView. This is
    recorded only once during WebView startup, and only if we've already
    detected developer mode is enabled (see
    &quot;Android.WebView.DevUi.DeveloperModeEnabled&quot;). If developer mode
    is disabled, we will not toggle any flags through this mechanism.
  </summary>
</histogram>

<histogram name="Android.WebView.ForceDarkBehavior"
    enum="WebViewForceDarkBehavior" expires_after="2023-06-01">
  <owner>peter@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records strategy to be used by force dark in WebView when
    setForceDarkBehavior API is called by the embedding application.
  </summary>
</histogram>

<histogram name="Android.WebView.ForceDarkMode" enum="WebViewForceDarkMode"
    expires_after="2023-06-01">
  <owner>peter@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records WebView's force dark setting and the UI's night mode when
    setForceDark API is called by the embedding application.
  </summary>
</histogram>

<histogram name="Android.WebView.Gfx.GLDrawWasToFBO" units="Boolean"
    expires_after="2023-12-01">
  <owner>blundell@chromium.org</owner>
  <owner>vasilyt@chromium.org</owner>
  <summary>
    For each draw in GL that WebView does on request from HWUI, records whether
    the draw was done into the FBO or not.
  </summary>
</histogram>

<histogram name="Android.WebView.Gfx.HardwareDrawType"
    enum="WebViewDrawAndSubmissionType" expires_after="2023-10-01">
  <owner>vasilyt@chromium.org</owner>
  <owner>boliu@chromium.org</owner>
  <summary>
    Tracks invalidate and frame submission status for WebView hardware draw.
    Result is enum that represent three flags: did we called invalidate this
    frame, did renderer submitted compositor frame and whether DrawParams from
    Android HWUI changed. This is logged once per WebView draw functor call.
  </summary>
</histogram>

<histogram name="Android.WebView.Gfx.SaveHWUIStateDuration" units="ms"
    expires_after="2023-12-01">
  <owner>blundell@chromium.org</owner>
  <owner>vasilyt@chromium.org</owner>
  <summary>
    Tracks the amount of time that it took for WebView to save HWUI state.
    Recorded once per saving of HWUI state.
  </summary>
</histogram>

<histogram name="Android.WebView.InputStreamTime" units="ms"
    expires_after="2023-10-01">
  <owner>jam@chromium.org</owner>
  <owner>cduvall@chromium.org</owner>
  <summary>
    Measures how long InputStreams take from creation to completion. This is
    emitted for all streams whether they succeed or fail.
  </summary>
</histogram>

<histogram name="Android.WebView.JavaBridge.InvocationIsInPrimaryMainFrame"
    enum="BooleanMainFrame" expires_after="2023-04-19">
  <owner>peter@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records whether an invocation of a JavaScript method exposed through
    WebView's Java Bridge happened on a page's main frame or one of its sub
    frames. Recorded for each invocation of such methods.
  </summary>
</histogram>

<histogram name="Android.WebView.LoadUrl.UrlScheme" enum="WebViewUrlScheme"
    expires_after="2023-04-19">
  <owner>ntfschr@chromium.org</owner>
  <owner>torne@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the scheme for the URL loaded by a browser-initiated navigation.
    Specifically, this is the scheme of the URL passed to loadUrl() (and its
    overloads), postUrl(), and loadData() (this is implicitly
    &quot;data:&quot;). also records if this value is &quot;empty&quot;, which
    means either null or &quot;about:blank&quot;. This intentionally excludes
    loadDataWithBaseURL().
  </summary>
</histogram>

<histogram name="Android.WebView.Metrics.PackagesAllowList.ParseStatus"
    enum="AppPackageNameAllowlistParseStatus" expires_after="2023-07-01">
  <owner>hazems@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the result of parsing the apps package names allowlist used to
    populate the &quot;app_package_name&quot; field in UMA metrics logs. This is
    recorded when the AwAppsPackageNamesAllowlistComponentLoaderPolicy is
    successfully loaded by EmbeddedComponentLoader, i.e when ComponentLoaded is
    called by the loader.
  </summary>
</histogram>

<histogram name="Android.WebView.Metrics.PackagesAllowList.RecordStatus"
    enum="AppPackageNameLoggingRuleStatus" expires_after="2023-09-10">
  <owner>hazems@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the status of the apps package names allowlist used to populate the
    &quot;app_package_name&quot; field in UMA metrics log. The status tracks if
    a new version is loaded, a cached one is used or if loading the allowlist
    has failed. It's recorded everytime the app package name is queried when a
    new metrics log is created.
  </summary>
</histogram>

<histogram
    name="Android.WebView.Metrics.PackagesAllowList.ResultReceivingDelay"
    units="ms" expires_after="2023-07-01">
  <owner>hazems@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the time delta between creating a AwMetricsServiceClient instance
    during WebView startup and the time when the app package names allowlist is
    loaded and looked up. This only records when a new version of the allowlist
    is loaded successfully. i.e it's not recorded if the loading the allowlist
    fails or if a cached version is used.
  </summary>
</histogram>

<histogram name="Android.WebView.Metrics.PackagesAllowList.ThrottleStatus"
    enum="Boolean" expires_after="2023-07-01">
  <owner>hazems@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Whether requests to query the app package names allowlist component is
    throttled or not.
  </summary>
</histogram>

<histogram name="Android.WebView.Metrics.PackagesAllowList.TimeToExpire"
    units="hours" expires_after="2023-07-01">
  <owner>hazems@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    How long before the app package names allowlist record cached in the client
    expires. This is only recorded from Apps that are in the app package names
    allowlist. Recorded every time a metrics log is being created.
  </summary>
</histogram>

<histogram name="Android.WebView.MixedContent.Mode"
    enum="WebViewMixedContentMode" expires_after="2023-08-25">
  <owner>ntfschr@chromium.org</owner>
  <owner>carlosil@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the mixed content mode set when an app uses the
    WebSettings.setMixedContentMode API.
  </summary>
</histogram>

<histogram name="Android.WebView.Nonembedded.FirstServiceInProcess"
    enum="WebViewNonembeddedService" expires_after="2022-12-11">
  <obsolete>
    We collected the data we need about this, these histograms are no longer
    needed, see https://crbug.com/1266439#c8. Removed in December 2022.
  </obsolete>
  <owner>hazems@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the first nonembedded WebView Service to run in the nonembedded
    &quot;:webview_service&quot; process. This excludes ContentProviders because
    they are always created during the process startup. This is recorded when
    the service is created (when `onCreate` is called). Also see
    &quot;Android.WebView.Nonembedded.IsFreshServiceProcessLaunched&quot;.
  </summary>
</histogram>

<histogram name="Android.WebView.Nonembedded.IsFreshServiceProcessLaunched"
    enum="Boolean" expires_after="2022-12-11">
  <obsolete>
    We collected the data we need about this, these histograms are no longer
    needed, see https://crbug.com/1266439#c8. Removed in December 2022.
  </obsolete>
  <owner>hazems@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Captures if the service is the first service to be created in the process or
    not. It helps to see how often the nonembedded &quot;:webview_service&quot;
    process is reused for multiple services. This excludes ContentProviders
    because they are always created during the process startup. This is recorded
    when any nonembedded service is created (when `onCreate` is called). Also
    see &quot;Android.WebView.Nonembedded.FirstServiceInProcess&quot;.
  </summary>
</histogram>

<histogram name="Android.WebView.NonEmbeddedMetrics.HistogramRecordAge"
    units="minutes" expires_after="2023-10-22">
  <owner>hazems@chromium.org</owner>
  <owner>ntfschr@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the time interval between when a histogram is recorded in a
    non-embedded WebView process and when it's actually sent to the UMA API in
    an embedded WebView. This is recorded during WebView startup for each
    histogram retrieved and replayed successfully from WebView non-embedded
    metrics service.
  </summary>
</histogram>

<histogram name="Android.WebView.NonEmbeddedMetrics.NumHistograms"
    units="histograms" expires_after="2023-10-22">
  <owner>ntfschr@chromium.org</owner>
  <owner>hazems@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the number of histograms received from WebView's non-embedded
    histogram service. This is recorded once during WebView startup, after
    retrieving histograms from the service (if the proto can be parsed).
  </summary>
</histogram>

<histogram name="Android.WebView.NonEmbeddedMetrics.ParsingLogResult"
    enum="AndroidWebViewNonEmbeddedMetricsParsingLogResult"
    expires_after="2023-10-22">
  <owner>hazems@chromium.org</owner>
  <owner>ntfschr@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records whether metrics parsing from file in non-embedded histogram service
    was successful. It's recorded during service startup by adding it to records
    list. It captures the most recent file parsing result for the last service
    launch before the client connects to the service.
  </summary>
</histogram>

<histogram name="Android.WebView.NonEmbeddedMetrics.RetrieveMetricsTaskStatus"
    enum="AndroidWebViewNonEmbeddedMetricsRetrieveMetricsTaskStatus"
    expires_after="2023-07-01">
  <owner>hazems@chromium.org</owner>
  <owner>ntfschr@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Recorded by the non-embedded histogram service if it's unable to return
    histograms. This is always recorded when a client connects to retrieve
    histograms.
  </summary>
</histogram>

<histogram name="Android.WebView.NonEmbeddedMetrics.TransmissionResult"
    enum="AndroidWebViewDevUiMetricsTransmission" expires_after="2023-09-10">
  <owner>ntfschr@chromium.org</owner>
  <owner>hazems@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records whether metrics transmission from the non-embedded histogram service
    was successful. This is recorded once during WebView startup, after
    retrieving histograms from the service.
  </summary>
</histogram>

<histogram name="Android.WebView.onReceivedError.ErrorCode"
    enum="WebViewClientErrorCode" expires_after="2022-05-10">
  <obsolete>
    Deprecated in April 2022 (milestone M103).
  </obsolete>
  <owner>ntfschr@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    The WebViewClient error code as returned by the onReceivedError callback
    This is recorded regardless of whether the network service is enabled or
    disabled.
  </summary>
</histogram>

<histogram name="Android.WebView.onReceivedHttpError.StatusCode"
    enum="HttpResponseCode" expires_after="2023-04-19">
  <owner>ntfschr@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    The WebViewClient HTTP response status code as returned by the
    onReceivedHttpError callback. This callback is only called for HTTP errors,
    so this does not include any successful HTTP responses (code 200).
  </summary>
</histogram>

<histogram name="Android.WebView.OnRenderProcessGoneResult"
    enum="AndroidWebViewRenderProcessGoneResult" expires_after="2023-06-30">
  <owner>ntfschr@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    This captures two pieces of information about renderer crashes: did the app
    developer handle the renderer crash to recover and what type of crash was
    this? This is recorded once each time the renderer process dies
    unexpectedly, and is logged after we have notified the app via the
    onRenderProcessGone() callback.

    Prior to M99, this histogram did not distinguish between crashes vs. kills
    if the renderer crash was handled by the app.
  </summary>
</histogram>

<histogram name="Android.WebView.OptionallyBlockableMixedContentLoaded.Mode"
    enum="WebViewMixedContentMode" expires_after="2023-08-25">
  <owner>ntfschr@chromium.org</owner>
  <owner>carlosil@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the mixed content mode set when an app loads optionally blockable
    mixed content (images, audio, or video). This histogram is logged on page
    load, once per subresource (i.e. a single page load can cause multiple
    records if the page contains multiple mixed content subresources).
  </summary>
</histogram>

<histogram name="Android.WebView.OriginsVisited" units="origins"
    expires_after="2023-12-15">
  <owner>mvanouwerkerk@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Measures the count of distinct http and https origins visited per day in
    WebView. The purpose of this metric is to slice it by package name to help
    characterize the usage of that package.
  </summary>
</histogram>

<histogram name="Android.WebView.PageTimeSpent2.{Scheme}{Party}" units="ms"
    expires_after="2022-07-01">
  <obsolete>
    Deprecated in March 2022.
  </obsolete>
  <owner>mvanouwerkerk@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Time spent on a page with a {Scheme} scheme. This is measured from
    navigation commit to the start of the next navigation. For http and https
    schemes it is additionally recorded whether it is a first or third party
    page. This uses an optional key, in this case the value is
    &quot;{Party}&quot;.
  </summary>
  <token key="Scheme">
    <variant name="App"/>
    <variant name="Blob"/>
    <variant name="Chrome"/>
    <variant name="ChromeNative"/>
    <variant name="Content"/>
    <variant name="CustomTab"/>
    <variant name="Data"/>
    <variant name="Devtools"/>
    <variant name="Document"/>
    <variant name="File"/>
    <variant name="Filesystem"/>
    <variant name="Ftp"/>
    <variant name="Http"/>
    <variant name="Https"/>
    <variant name="Inline"/>
    <variant name="Intent"/>
    <variant name="Jar"/>
    <variant name="JavaScript"/>
    <variant name="Other"/>
    <variant name="Sms"/>
    <variant name="Tel"/>
  </token>
  <token key="Party">
    <variant name=""/>
    <variant name=".FirstParty"/>
    <variant name=".ThirdParty"/>
  </token>
</histogram>

<histogram name="Android.WebView.RequestedWithHeader.CommittedHeaderMode"
    enum="CommittedRequestedWithHeaderMode" expires_after="2023-07-01">
  <owner>pbirk@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the type of X-Requested-With HTTP header that is set on request from
    WebView. This enum is recorded by
    |InterceptedRequest::InterceptResponseReceived| for all requests. It may
    differ from the user settings, as it also captures if the header has been
    set explicitly on the request by other means, such as javascript or
    embedding code.
  </summary>
</histogram>

<histogram
    name="Android.WebView.RequestedWithHeader.HadWebContentsForPartitionOrigin"
    enum="BooleanAvailable" expires_after="2023-07-01">
  <owner>pbirk@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records whether a suitable WebContents was available for use to look up the
    partition origin for the XRequestedWith deprecation origin trial. This
    histogram is recorded when the AwProxyingUrlLoader attemps to get the last
    committed origin of the top frame for partitioning use, which is on all
    requests that are not top frame navigation requests. If the WebContents is
    not available, an opaque origin will be used for partitioning, which will
    result in a failed lookup.
  </summary>
</histogram>

<histogram name="Android.WebView.RequestedWithHeader.OnNavigationHeaderMode"
    enum="WebViewRequestedWithHeaderMode" expires_after="2023-01-01">
  <obsolete>
    Replaced before launch by
    Android.WebView.RequestedWithHeader.OnNavigationRequestedWithHeaderAllowListSize
  </obsolete>
  <owner>pbirk@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the XRequestedWithHeaderMode that was configured to be used on page
    navigation to decide how to set the X-Requested-With HTTP header. This is
    recorded on navigation committed, and records the configured setting. It may
    be the case that javascript or the embedder has overwritten the header,
    which will not be reflected by this histogram.
  </summary>
</histogram>

<histogram
    name="Android.WebView.RequestedWithHeader.OnNavigationRequestedWithHeaderAllowListSize"
    units="entries" expires_after="2023-07-01">
  <owner>pbirk@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the size of the XRequestedWithHeaderAllowList that was used on page
    navigation. This is recorded to gain insight into the distribution of size
    when used, which will give an idea of the impact to the ecosystem.
  </summary>
</histogram>

<histogram name="Android.WebView.RequestedWithHeader.OriginTrialEnabled"
    enum="BooleanEnabled" expires_after="2023-07-01">
  <owner>pbirk@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records if the WebViewXRequestedWithDeprecation Origin Trial was enabled on
    a resource request. This histogram is recorded on every request sent by
    WebView if Persistent Origin Trials are enabled.
  </summary>
</histogram>

<histogram name="Android.WebView.RequestedWithHeader.PageSchemeIsCryptographic"
    enum="BooleanSecure" expires_after="2023-07-01">
  <owner>pbirk@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records if the WebViewXRequestedWithDeprecation Origin Trial was enabled on
    a resource request with a scheme that uses cryptography, i.e. HTTPS or WSS.
    This histogram is recorded on every request sent by WebView if the
    WebViewXRequestedWithDeprecation trial is enabled and the scheme is either
    HTTP/HTTPS or WS/WSS.
  </summary>
</histogram>

<histogram
    name="Android.WebView.RequestedWithHeader.SetRequestedWithHeaderMode"
    enum="WebViewRequestedWithHeaderMode" expires_after="2023-01-01">
  <obsolete>
    Replaced before launch by
    Android.WebView.RequestedWithHeader.SetRequestedWithHeaderModeAllowListSize
  </obsolete>
  <owner>pbirk@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the parameter passed to WebSettingsCompat#setRequestedWithHeaderMode
    when called by the embedding app. This reflects explict configuration of the
    X-Requested-With HTTP header by the app for WebViews.
  </summary>
</histogram>

<histogram
    name="Android.WebView.RequestedWithHeader.SetRequestedWithHeaderModeAllowListSize"
    units="entries" expires_after="2023-07-01">
  <owner>pbirk@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the size of the allow-list passed to
    WebSettingsCompat#setRequestedWithHeaderOriginAllowList when called by the
    embedding app.
  </summary>
</histogram>

<histogram
    name="Android.WebView.RequestedWithHeader.SetServiceWorkerRequestedWithHeaderMode"
    enum="WebViewRequestedWithHeaderMode" expires_after="2023-01-01">
  <obsolete>
    Replaced before launch by
    Android.WebView.RequestedWithHeader.SetServiceWorkerRequestedWithHeaderModeAllowListSize
  </obsolete>
  <owner>pbirk@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the parameter passed to
    ServiceWorkerWebSettingsCompat#setRequestedWithHeaderMode when called by the
    embedding app. This reflects explict configuration of the X-Requested-With
    HTTP header by the app for WebView service workers.
  </summary>
</histogram>

<histogram
    name="Android.WebView.RequestedWithHeader.SetServiceWorkerRequestedWithHeaderModeAllowListSize"
    units="entries" expires_after="2023-07-01">
  <owner>pbirk@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the size of the allow-list passed to
    ServiceWorkerWebSettingsCompat#setRequestedWithHeaderOriginAllowList when
    called by the embedding app.
  </summary>
</histogram>

<histogram name="Android.WebView.SafeMode.CheckStateBlockingTime" units="ms"
    expires_after="2023-04-28">
  <owner>ntfschr@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the time spent blocking WebView startup to check for SafeMode (see
    &quot;Android.WebView.SafeMode.SafeModeEnabled&quot;). This is recorded once
    during WebView startup, regardless of whether SafeMode is enabled.
  </summary>
</histogram>

<histogram name="Android.WebView.SafeMode.ExecutionResult"
    enum="AndroidWebViewSafeModeResult" expires_after="2024-01-28">
  <owner>ntfschr@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records whether SafeMode was able to execute all the specified SafeMode
    actions or if it encountered an error. This is recorded once during WebView
    startup and only if SafeMode is enabled (see
    &quot;Android.WebView.SafeMode.SafeModeEnabled&quot;). If multiple fixes
    have different statuses, then this will log a single status in the following
    precedence: a. Unknown error b. Action failed c. Unrecognized action d.
    Success (If all actions were successful).
  </summary>
</histogram>

<histogram name="Android.WebView.SafeMode.QueryAndExecuteBlockingTime"
    units="ms" expires_after="2024-01-28">
  <owner>ntfschr@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the time spent blocking WebView startup to both retrieve the list of
    SafeMode actions from the SafeModeService and to execute those actions. This
    is recorded once during startup only if SafeMode is enabled (see
    &quot;Android.WebView.SafeMode.SafeModeEnabled&quot;). This can be
    interpreted as the additional startup cost caused by enabling SafeMode.
  </summary>
</histogram>

<histogram name="Android.WebView.SafeMode.SafeModeEnabled"
    enum="BooleanEnabled" expires_after="2024-01-28">
  <owner>ntfschr@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records whether or not WebView is starting up in SafeMode. This is a mode
    where WebView takes extra steps during startup to reduce the risk of
    starting in a bad state. This is recorded once during WebView startup,
    regardless of whether SafeMode is enabled.
  </summary>
</histogram>

<histogram name="Android.WebView.SecureCookieAction" enum="SecureCookieAction"
    expires_after="2023-10-01">
  <owner>ntfschr@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the action WebView took (if any) to &quot;fix up&quot; secure
    cookies for backwards compatibility.
  </summary>
</histogram>

<histogram name="Android.WebView.ShouldInterceptRequest.InterceptionType"
    enum="InterceptionType" expires_after="2022-05-10">
  <obsolete>
    Deprecated in M102. This histogram had a bug which caused it to under-count
    when the request was not intercepted. This has been fixed in the
    &quot;Android.WebView.ShouldInterceptRequest.InterceptionType2&quot;
    histogram.
  </obsolete>
  <owner>ntfschr@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Whether the request was intercepted by the embedder of Android WebView, and
    if so which url scheme was used. Intercepted request are requests for which
    the shouldInterceptRequest() callback returned a non-null response.
  </summary>
</histogram>

<histogram name="Android.WebView.ShouldInterceptRequest.InterceptionType2"
    enum="InterceptionType" expires_after="2023-03-29">
  <owner>ntfschr@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Whether the network request was intercepted by the embedder of Android
    WebView, and if so which URL scheme was used for the request. Intercepted
    requests are requests for which the shouldInterceptRequest() callback
    returned a non-null response. This is logged each the
    shouldInterceptRequest() callback API is invoked by WebView, which
    corresponds to every network request.

    This histogram was added in M102. Prior milestones logged
    &quot;Android.WebView.ShouldInterceptRequest.InterceptionType&quot;, however
    that histogram had a bug which caused the &quot;Not intercepted&quot; bucket
    to be under-reported and for all other buckets to be over-reported.
  </summary>
</histogram>

<histogram name="Android.WebView.SingleOrMultiProcess"
    enum="AndroidWebViewSingleOrMultiProcess" expires_after="never">
  <owner>alexmitra@chromium.org</owner>
  <owner>nator@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records whether WebView is being run in a single process or multi-process.
    This is recorded each time logs are uploaded. This is used as a dashboard
    filter.
  </summary>
</histogram>

<histogram name="Android.WebView.SitesVisitedWeekly" units="sites"
    expires_after="2023-12-15">
  <owner>mvanouwerkerk@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Measures the count of distinct sites visited per week in WebView. This is
    recorded at the time of a navigation when stored hashed site navigations are
    older than a week. The purpose of this metric is to slice it by package name
    to help characterize the usage of that package. This histogram uses eTLD+1
    as the definition of a site.
  </summary>
</histogram>

<histogram name="Android.WebView.Startup.CreationTime.Stage1.FactoryInit"
    units="ms" expires_after="2023-12-31">
  <owner>torne@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    How long it takes to initialize a WebViewChromiumFactoryProvider. This is
    the first major phase of the WebViewChromium construction.
  </summary>
</histogram>

<histogram name="Android.WebView.Startup.CreationTime.Stage2.ProviderInit.Cold"
    units="ms" expires_after="2023-12-31">
  <owner>torne@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    How long it takes to initialize a WebViewProvider, the first time that one
    is initialized. WebViewProvider initialization is the second major phase of
    WebViewChromium construction. The first initialization is recorded
    separately because it is usually much slower than subsequent ones.
  </summary>
</histogram>

<histogram name="Android.WebView.Startup.CreationTime.Stage2.ProviderInit.Warm"
    units="ms" expires_after="2023-12-31">
  <owner>torne@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    How long it takes to initialize a WebViewProvider, the first time that one
    is initialized. WebViewProvider initialization is the second major phase of
    WebViewChromium construction. When it is not the first time, it is faster
    and thus recorded separately.
  </summary>
</histogram>

<histogram name="Android.WebView.Startup.CreationTime.StartChromiumLocked"
    units="ms" expires_after="2023-12-31">
  <owner>torne@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>How long it takes to run startChromiumLocked.</summary>
</histogram>

<histogram name="Android.WebView.Startup.CreationTime.TotalFactoryInitTime"
    units="ms" expires_after="2023-12-31">
  <owner>torne@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    The total time to initialize WebViewChromiumFactoryProvider.

    This measurement is different from Stage1.FactoryInit as it takes into
    accout time spent in framework.
  </summary>
</histogram>

<histogram
    name="Android.WebView.Startup.NonblockingServiceConnectionDelay.{ServiceName}"
    units="ms" expires_after="2023-09-01">
  <owner>hazems@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the delay between calling Context#bindService until the
    ServiceConnection#onServiceConnected is called. This should give an idea of
    how long it takes for nonembedded service connections to be established and
    capture any regressions in this. In the case when a service connection is
    dropped and then reconnected by the system, the histogram is only recorded
    for the first connection.
  </summary>
  <token key="ServiceName">
    <variant name="MetricsBridgeService"/>
    <variant name="VariationsSeedServer"/>
  </token>
</histogram>

<histogram name="Android.WebView.SupportLibrary.ClientIsCompat"
    enum="WebViewClientTypeEnum" expires_after="2023-08-23">
  <owner>pbirk@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records whether the WebViewClient provided by the app is an instance of
    WebViewClientCompat (and therefore exposes AndroidX callbacks). This is
    recorded each time the app sets a new WebViewClient via
    WebView#setWebViewClient().
  </summary>
</histogram>

<histogram name="Android.WebView.TargetSdkVersion" enum="AndroidApiLevel"
    expires_after="2023-06-30">
  <owner>ntfschr@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    The version of the target SDK of the app WebView is running in. This is
    recorded once during startup.
  </summary>
</histogram>

<histogram
    name="Android.WebView.UniversalAccess.OriginUrlMismatchInHistoryUtil"
    enum="BooleanAllowed" expires_after="2023-10-08">
  <owner>torne@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records when we allow a cross origin push state from a file URL solely
    because AllowUniversalAccessFromFileURLs is enabled. This is logged from the
    implementation of history.
  </summary>
</histogram>

<histogram
    name="Android.WebView.UniversalAccess.OriginUrlMismatchInRenderFrame"
    enum="BooleanAllowed" expires_after="2023-06-04">
  <owner>torne@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records when we allow a cross origin push state from a file URL solely
    because AllowUniversalAccessFromFileURLs is enabled. This is logged from the
    implementation of the frame renderer.
  </summary>
</histogram>

<histogram name="Android.WebView.VariationsHeaderLength" units="bytes"
    expires_after="2023-07-22">
  <owner>cduvall@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the length of the WebView variations header. Recorded every time
    WebViewCompat.getVariationsHeader() is called.
  </summary>
</histogram>

<histogram name="Android.WebView.Visibility.Global" enum="WebViewVisibility"
    expires_after="2023-12-15">
  <owner>mvanouwerkerk@chromium.org</owner>
  <owner>ntfschr@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the global visibility state of WebView in seconds, updated with
    every Metrics upload. The Visible bucket counts total seconds that any
    WebView was visible (the view itself was visible, and was attached to the
    view hierarchy of a visible window). The NotVisible bucket counts time since
    WebView initialization for which no WebView was considered visible, or no
    WebView existed. The total of these two buckets reflects the amount of time
    covered by metrics collection.
  </summary>
</histogram>

<histogram name="Android.WebView.Visibility.PerWebView"
    enum="WebViewVisibility" expires_after="2023-12-15">
  <owner>mvanouwerkerk@chromium.org</owner>
  <owner>ntfschr@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records per-WebView visibility duration in seconds, updated with every
    Metrics upload. The Visible bucket counts the total time in seconds that
    each WebView was considered visible (the view itself was visible, and was
    attached to the view hierarchy of a visible window). If more than one
    WebView is considered visible, then each WebView contributes independently.
    The NotVisible bucket counts the duration that each WebView exists but not
    in a visible state. As with the Visible bucket, each WebView contributes
    independently, and thus this bucket is not incremented when no WebViews
    exist.
  </summary>
</histogram>

<histogram name="Android.WebView.VisibleScheme.Global" enum="WebViewUrlScheme"
    expires_after="2023-12-15">
  <owner>mvanouwerkerk@chromium.org</owner>
  <owner>ntfschr@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the number of seconds any WebView was visible (the view itself was
    visible, and was attached to the view hierarchy of a visible window) with a
    particular URL scheme in the primary main frame. Updated with every Metrics
    upload. Note that the seconds are logged as the count for the scheme enum
    values.
  </summary>
</histogram>

<histogram name="Android.WebView.VisibleScheme.PerWebView"
    enum="WebViewUrlScheme" expires_after="2023-12-15">
  <owner>mvanouwerkerk@chromium.org</owner>
  <owner>ntfschr@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the number of seconds each WebView was visible (the view itself was
    visible, and was attached to the view hierarchy of a visible window) with a
    particular URL scheme in the primary main frame. Updated with every Metrics
    upload. Note that the seconds are logged as the count for the scheme enum
    values.
  </summary>
</histogram>

<histogram name="Android.WebView.VisibleScreenCoverage.Global" units="%"
    expires_after="2023-12-15">
  <owner>mvanouwerkerk@google.com</owner>
  <owner>ntfschr@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the number of seconds any WebView was visible (the view itself was
    visible, and was attached to the view hierarchy of a visible window) by
    screen coverage percentage. The screen coverage of all WebViews is merged so
    overlaps do not count more than once and do not increase the percentage.
    Updated with every Metrics upload. Not recorded when there is no visible
    WebView. Fractional percentages are rounded down. Note that the seconds are
    logged as the count for the percentages.
  </summary>
</histogram>

<histogram name="Android.WebView.VisibleScreenCoverage.PerWebView" units="%"
    expires_after="2023-12-15">
  <owner>mvanouwerkerk@google.com</owner>
  <owner>ntfschr@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the number of seconds each WebView was visible (the view itself was
    visible, and was attached to the view hierarchy of a visible window) by
    screen coverage percentage. The screen coverage of these WebViews is not
    merged. Updated with every Metrics upload. Not recorded when there is no
    visible WebView. Fractional percentages are rounded down. Note that the
    seconds are logged as the count for the percentages.
  </summary>
</histogram>

<histogram name="Android.WebView.VisibleScreenCoverage.PerWebView.{scheme}"
    units="%" expires_after="2023-12-15">
  <owner>mvanouwerkerk@google.com</owner>
  <owner>ntfschr@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the number of seconds each WebView was visible (the view itself was
    visible, and was attached to the view hierarchy of a visible window) with a
    {scheme} scheme in the primary main frame by screen coverage percentage. The
    screen coverage of these WebViews is not merged. Updated with every Metrics
    upload. Not recorded when there is no visible WebView. Fractional
    percentages are rounded down. Note that the seconds are logged as the count
    for the percentages.
  </summary>
  <token key="scheme">
    <variant name="about"/>
    <variant name="blob"/>
    <variant name="chrome"/>
    <variant name="content"/>
    <variant name="data"/>
    <variant name="empty"/>
    <variant name="file"/>
    <variant name="ftp"/>
    <variant name="http"/>
    <variant name="https"/>
    <variant name="intent"/>
    <variant name="javascript"/>
    <variant name="unknown"/>
  </token>
</histogram>

<histogram name="Android.WebView.WebViewOpenWebVisible.ScreenPortion2"
    enum="WebViewOpenWebScreenPortion" expires_after="2022-08-01">
  <obsolete>
    Deprecated in March 2022.
  </obsolete>
  <owner>idries@google.com</owner>
  <owner>ntfschr@chromium.org</owner>
  <owner>peconn@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the number of seconds that WebView is displaying Open Web Content
    for each bucket of screen proportion, updated with every Metrics upload. For
    the purposes of bucketing this is rounded down. A separate bucket is used
    when the screen coverage is exactly zero.
  </summary>
</histogram>

<histogram name="AndroidSearchEngineLogo.Events"
    enum="AndroidSearchEngineLogoEvents" expires_after="2023-06-01">
  <owner>wylieb@chromium.org</owner>
  <owner>fgorski@chromium.org</owner>
  <summary>
    Counts occurences of various events related to the Search Engine Logo
    feature. When enabled, the feature will show the logo of the default search
    engine in the omnibox. These events record the performance of fetching
    non-Google logos.
  </summary>
</histogram>

<histogram name="SingleWebsitePreferences.NavigatedFromToReset"
    enum="SettingsNavigationSources" expires_after="M114">
  <owner>peconn@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    Logs which way had the user navigated into settings screens when they press
    &quot;Clear and Reset&quot; button in settings of a single website.
  </summary>
</histogram>

</histograms>

</histogram-configuration>
