chromium/tools/metrics/histograms/metadata/families/histograms.xml

<!--
Copyright 2022 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 histograms owned
by the Family Experiences team 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.
Also see go/famexp-metrics-guide for more specific tips and
documentation on adding new histograms to this file. For histogram
naming, consider
{Platform}.FamilyUser/FamilyLink/FamilyLinkUser prefix for platform
specific metrics and FamilyUser/FamilyLink/FamilyLinkUser prefix for
cross platform metrics.

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
[email protected].
-->

<histogram-configuration>

<histograms>

<variants name="ProtoFetcherRequestType">
  <variant name="FamilyLinkUser.ClassifyUrlRequest"
      summary="Kids Management API::ClassifyUrl"/>
  <variant name="FamilyLinkUser.CreatePermissionRequest"
      summary="Kids Management API::CreatePermissionRequest"/>
  <variant name="Signin.ListFamilyMembersRequest"
      summary="Kids Management API::ListMembers"/>
</variants>

<histogram name="AddSupervisionDialog.Enrollment"
    enum="AddSupervisionEnrollment" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of users who go through the Add Supervision process to
    convert regular accounts to Geller accounts. Initiated count is incremented
    when Add Supervision dialog is opened. Completed count is incremented when
    supervision is successfully enrolled. Signed out count is incremented when
    the user clicks &quot;Sign out&quot; after enrollment at the end of the
    process in the dialog. Closed count is incremented when the Add Supervision
    dialog is closed prior to enrollment, excluding sign out. Switched accounts
    count is incremented when the user clicks &quot;Sign out&quot; within the
    dialog to swich accounts before enrollment completion.
  </summary>
</histogram>

<histogram name="AddSupervisionDialog.EnrollmentCompletedUserTime" units="ms"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the amount of time in milliseconds for users to successfully enroll
    in supervision. Elapsed time is measured starting from when the Add
    Supervision dialog was first opened.
  </summary>
</histogram>

<histogram name="AddSupervisionDialog.EnrollmentNotCompletedUserTime"
    units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the amount of time in milliseconds for users to exit the Add
    Supervision dialog without enrollment. This can happen if the user closes
    the Add Supervision dialog or signs out to switch accounts. Elapsed time is
    measured starting from when the Add Supervision dialog was first opened.
  </summary>
</histogram>

<histogram name="AddSupervisionDialog.SignoutCompletedUserTime" units="ms"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the amount of time in milliseconds for users to sign out after
    enrolling in supervision. Elapsed time is measured starting from when the
    Add Supervision dialog was first opened.
  </summary>
</histogram>

<histogram name="ChildAccountReconcilor.ForcedUserExitOnReconcileError"
    enum="BooleanHit" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Number of forced logouts for child accounts on an account reconciliation
    error. Check `ChromeOSLimitedAccessAccountReconcilorDelegate`.
  </summary>
</histogram>

<histogram name="ChromeOS.FamilyLink.ChildStatusReportRequest.Size" units="KB"
    expires_after="2024-12-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Reports the size of the uploaded ChildStatusReportRequest proto in
    kilobytes. This metric records right before the report uploads. The max
    bucket value is 500MB.
  </summary>
</histogram>

<histogram
    name="ChromeOS.FamilyLink.ChildStatusReportRequest.TimeSinceLastReport"
    units="minutes" expires_after="2024-12-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Reports the time in between ChildStatusReportRequest uploads in minutes. The
    default upload frequency is once every ten minutes. This metric records
    right before the report uploads. The max bucket value is 100,000 minutes
    (1667 hours).
  </summary>
</histogram>

<histogram name="ChromeOS.FamilyLinkUser.FaviconAvailability"
    enum="SupervisedUserFaviconAvailability" expires_after="2024-12-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records whether the favicon is available when it is being requested. The
    favicon is requested for UI related to supervised users, including the local
    web approvals parent access dialog. This metric is only recorded on
    ChromeOS.
  </summary>
</histogram>

<histogram name="ChromeOS.FamilyLinkUser.LogSegment"
    enum="FamilyLinkUserLogSegment" expires_after="never">
<!-- expires-never: used internally for filtering -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Categorizes the current user for the Family Experiences team's metrics.
    WebApprovals metrics are included from M110 onwards. ExtensionApprovals
    metrics are included from M115 onwards.
  </summary>
</histogram>

<histogram name="ChromeOS.FamilyLinkUser.ParentAccess.FlowResult.{FlowType}"
    enum="ParentAccessFlowResult" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the state at which the Parent Access dialog is closed for all parent
    access flows. Allows to track the drop rate by important states during the
    parent access flow. This metric is recorded for ChromeOS only. WebApprovals
    metrics are available from M110 onwards. ExtensionApprovals metrics are
    available from M115 onwards.
  </summary>
  <token key="FlowType">
    <variant name="All"/>
    <variant name="ExtensionApprovals"/>
    <variant name="WebApprovals"/>
  </token>
</histogram>

<histogram name="ChromeOS.FamilyLinkUser.ParentAccessWidgetError.{FlowType}"
    enum="FamilyLinkUserParentAccessWidgetError" expires_after="2024-12-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records an error that occurs in the parent access widget. ChromeOS Only.
    WebApprovals metrics are available from M110 onwards. ExtensionApprovals
    metrics are available from M115 onwards.
  </summary>
  <token key="FlowType">
    <variant name="All"/>
    <variant name="ExtensionApprovals"/>
    <variant name="WebApprovals"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.FamilyLinkUser.ParentAccessWidgetShowDialogError.{FlowType}"
    enum="FamilyLinkUserParentAccessWidgetShowDialogError"
    expires_after="2024-12-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records an error where the parent access widget dialog cannot be shown.
    Reported by the browser when the dialog fails to show. ChromeOS only.
    WebApprovals metrics are available from M110 onwards. ExtensionApprovals
    metrics are available from M115 onwards.
  </summary>
  <token key="FlowType">
    <variant name="All"/>
    <variant name="ExtensionApprovals"/>
    <variant name="WebApprovals"/>
  </token>
</histogram>

<histogram name="ChromeOS.FamilyUser.LogSegment2" enum="FamilyUserLogSegment"
    expires_after="never">
<!-- expires-never: used internally for filtering -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Categorizes the current user for the Family Experiences team's metrics.
    Other is for all other users that do not fall into any of the below
    categories. A Supervised User has a supervised primary account and no
    secondary accounts. A Supervised Student has a supervised primary account
    and one or more EDU secondary accounts, which is the only available option
    for a secondary account in that scenario. A Student at Home has a K-12 EDU
    primary account on an unmanaged ChromeOS device, regardless of the secondary
    account. A Regular User is an unmanaged consumer user on any device. This
    metric is logged with every UMA upload in ProvideCurrentSessionData().
  </summary>
</histogram>

<histogram name="ChromeOS.FamilyUser.NumSecondaryAccounts" units="accounts"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Reports the number of secondary accounts besides the primary user. This
    metric is logged with every UMA upload in ProvideCurrentSessionData(). This
    metric is not reported for guest users.
  </summary>
</histogram>

<histogram name="ChromeOS.LegacySupervisedUsers.HiddenFromLoginScreen"
    enum="LegacySupervisedUserStatus" expires_after="2024-12-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Reports &quot;hidden&quot; when the login screen hides a legacy supervised
    user (LSU). Reports &quot;displayed&quot; when the login screen displays a
    non-LSU Gaia user. Reports &quot;deleted&quot; when the login screen
    attempts to delete a LSU. Recorded whenever the user sees the login screen.
  </summary>
</histogram>

<histogram name="ChromeOS.OnDeviceControls.AppRemoval"
    enum="OnDeviceControlsAppRemoval" expires_after="2024-12-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the success or failure of removing the oldest uninstalled app that
    has been blocked by on-device parental controls. This occurs when the max
    number of uninstalled blocked apps are stored in the blocked app registry.
  </summary>
</histogram>

<histogram name="ChromeOS.OnDeviceControls.BlockAppAction"
    enum="OnDeviceControlsBlockAppAction" expires_after="2024-12-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when the user interacts with apps with respect to on-device
    parental controls. It records actions such as blocking apps, unblocking
    apps, and uninstalling blocked apps. This histogram also records errors,
    such as if an already-blocked app is being blocked again.
  </summary>
</histogram>

<histogram name="ChromeOS.OnDeviceControls.BlockedAppDialogShown"
    enum="OnDeviceControlsBlockedAppDialog" expires_after="2024-12-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when the user attempts to open an app blocked by on-device controls
    and is shown the blocked app system dialog.
  </summary>
</histogram>

<histogram name="ChromeOS.OnDeviceControls.BlockedAppsCount" units="Apps"
    expires_after="2024-12-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of apps blocked by on-device parental controls that a
    user has. Recorded every time an app is blocked or unblocked.
  </summary>
</histogram>

<histogram name="ChromeOS.OnDeviceControls.BlockedAppsEngagement" units="Apps"
    expires_after="2024-12-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of apps blocked with on-device parental controls that a
    user has at the beginning of each user session.
  </summary>
</histogram>

<histogram name="ChromeOS.OnDeviceControls.DialogAction.{DialogType}"
    enum="OnDeviceControlsDialogAction" expires_after="2024-12-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records user interactions with the dialogs in OS settings related to the
    on-device parental controls feature. Records actions such as the user
    opening the dialog and the user completing the dialog flow.
  </summary>
  <token key="DialogType">
    <variant name="SetUpControls"/>
    <variant name="VerifyToDisableControls"/>
    <variant name="VerifyToEnterControlsPage"/>
  </token>
</histogram>

<histogram name="ChromeOS.OnDeviceControls.PinDialogError"
    enum="OnDeviceControlsPinDialogError" expires_after="2024-12-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records if the user encounters an error when verifying or setting up a PIN
    for on-device parental controls.
  </summary>
</histogram>

<histogram name="ChromeOS.OnDeviceControls.PinSetupCompleted" enum="Boolean"
    expires_after="2024-12-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records whether the user has set up a PIN for on-device app parental
    controls. Recorded at the beginning of each user session.
  </summary>
</histogram>

<histogram name="FamilyLinkUser.FamilyInfoLogSource.FetchLatency" units="ms"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time spent waiting for the Kids Management API::ListMembers fetch done
    as part of populating the FamilyInfoLogSource in feedback reports. This is
    recorded for every fetch on either getting a response from the fetcher or
    timing out (whichever happens first).
  </summary>
</histogram>

<histogram name="FamilyLinkUser.FamilyInfoLogSource.FetchStatus"
    enum="FamilyInfoLogSourceFetchStatus" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The result of the Kids Management API::ListMembers fetch done as part of
    populating the FamilyInfoLogSource in feedback reports. This is output for
    every fetch on either getting a response from the fetcher or timing out.
  </summary>
</histogram>

<histogram name="FamilyLinkUser.FamilyInfoLogSource.ImmediatelyAvailable"
    enum="Boolean" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether a fetch to the Kids Management API::ListMembers was necessary as a
    part of populating the FamilyInfoLogSource in feedback reports.
  </summary>
</histogram>

<histogram name="FamilyLinkUser.LocalWebApprovalCompleteRequestTotalDuration"
    units="ms" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The total elapsed time in milliseconds to complete the local web approval
    verification flow, from the time the supervised user requests to the time
    the webpage is approved or rejected by the parent. Available on Android
    (M108+) and ChromeOS (M109+).
  </summary>
</histogram>

<histogram name="FamilyLinkUser.LocalWebApprovalOutcome"
    enum="FamilyLinkUserLocalWebApprovalOutcome" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The different outcomes that a user may come accross the local web approval
    flow. Available on Android only.
  </summary>
</histogram>

<histogram name="FamilyLinkUser.LocalWebApprovalResult"
    enum="FamilyLinkUserLocalWebApprovalResult" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the result of local web approval request on ChromeOS and Android.
    Reported by the browser once platform specific approval flow finishes and
    returns the result.
  </summary>
</histogram>

<histogram name="FamilyLinkUser.LogSegment" enum="FamilyLinkUserLogSegment"
    expires_after="never">
<!-- expires-never: used internally for filtering -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Categorizes the current user based on Family Link user type. Recorded for
    all supervised platforms except ChromeOS which uses
    ChromeOS.FamilyLinkUser.LogSegment.
  </summary>
</histogram>

<histogram name="FamilyUser.ChromeBrowserEngagement.Duration2" units="ms"
    expires_after="2024-12-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the Chrome OS user Chrome browser usage in milliseconds. Reports
    current daily duration at the first session start on next day. Despite daily
    reporting, the uploaded duration can still exceed 24 hours if the user
    continuously stays active for that long. This is only logged for active
    foreground time of Chrome browser. Ignores the time when video or audio is
    playing in the background, or Chrome browser is invisible. Also ignores the
    time when UsageTimeStateNotifier::UsageTimeState is inactive.
  </summary>
</histogram>

<histogram name="FamilyUser.DeviceOwner" enum="Boolean"
    expires_after="2024-12-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records whether the current primary user is the owner of device. Reports at
    the beginning of the first active session daily.
  </summary>
</histogram>

<histogram name="FamilyUser.FamilyLinkUsersCount" units="Number of Users"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of family link users on a Chrome OS device at the
    beginning of the first active session daily.
  </summary>
</histogram>

<histogram name="FamilyUser.GaiaUsersCount" units="Number of Users"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of Gaia users on a Chrome OS device, at the beginning of
    the first active session daily for all user types except incognito session.
    The user count could be 0 if the managed device has ephemeral user policy.
  </summary>
</histogram>

<histogram name="FamilyUser.ManagedSiteList" enum="FamilyLinkManagedSiteList"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records whether managed sites approved list and blocked list are enabled for
    currently active Family Link user. Prior to M93, this metric was recorded at
    the beginning of first active session daily. In M93, this metric is now also
    recorded when manual hosts and manual urls policies are changed. Ignores the
    reports during OOBE and sign out.
  </summary>
</histogram>

<histogram name="FamilyUser.ManagedSiteList.Conflict" enum="BooleanHasConflict"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records whether the given url has a match in both the allowlist and the
    block list which means a conflict. This metric is recorded if the given url
    matches at least one manual rule.
  </summary>
</histogram>

<histogram name="FamilyUser.ManagedSiteList.SubdomainConflictType"
    enum="FamilyLinkFilteringSubdomainConflictType" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the type of the conflict during url filtering when a match exists in
    both the allowlist and the blocklist.
  </summary>
</histogram>

<histogram name="FamilyUser.ManagedSiteListCount.Approved"
    units="Number of approved sites" expires_after="2024-11-03">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records number of approved urls and hosts for currently active Family Link
    user. This metric is recorded at the beginning of first active session daily
    and when manual hosts and manual urls policies are changed. Ignores the
    reports during OOBE and sign out.
  </summary>
</histogram>

<histogram name="FamilyUser.ManagedSiteListCount.Blocked"
    units="Number of blocked sites" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records number of blocked urls and hosts for currently active Family Link
    user. This metric is recorded at the beginning of first active session daily
    and when manual hosts and manual urls policies are changed. Ignores the
    reports during OOBE and sign out.
  </summary>
</histogram>

<histogram name="FamilyUser.NewUserAdded" enum="NewUserAdded"
    expires_after="2024-12-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Reports NewUserAdded enum when a new Family Link user or regular user is
    successfully added to Chrome OS device. Other user types fall into the other
    bucket. Reports when the user session starts.
  </summary>
</histogram>

<histogram name="FamilyUser.SessionEngagement.Duration" units="ms"
    expires_after="2024-12-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the Chrome OS user session duration in milliseconds. Reports current
    daily duration at the first session start on next day. This is only logged
    for active usage time of device, determined by UsageTimeState::ACTIVE.
  </summary>
</histogram>

<histogram name="FamilyUser.SessionEngagement.Total" units="Hour of day"
    expires_after="2024-12-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the Chrome OS user engagement hour within the current day (0-23),
    total of weekday and weekend. Logged on
    UsageTimeStateNotifier::UsageTimeState changes to INACTIVE. Might report the
    same hour multiple times.
  </summary>
</histogram>

<histogram name="FamilyUser.SessionEngagement.Weekday" units="Hour of day"
    expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the Chrome OS user engagement hour of day (0-23) on weekday. Logged
    on UsageTimeStateNotifier::UsageTimeState changes to INACTIVE. Might report
    the same hour multiple times.
  </summary>
</histogram>

<histogram name="FamilyUser.SessionEngagement.Weekend" units="Hour of day"
    expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the Chrome OS user engagement hour of day (0-23) on weekend. Logged
    on UsageTimeStateNotifier::UsageTimeState changes to INACTIVE. Might report
    the same hour multiple times.
  </summary>
</histogram>

<histogram name="FamilyUser.TimeLimitPolicyTypes" enum="TimeLimitPolicyType"
    expires_after="2024-12-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records what time limit policy types are enabled for the currently active
    Family Link user. Enabling multiple policies would report multiple buckets
    to UMA. Prior to M93, this metric was recorded at the beginning of first
    active session daily. In M93, this metric is now also recorded when bed time
    limit, daily limit, override time limit, apps time limit and web time limit
    policies are changed. App time limits does not include blocked apps.
  </summary>
</histogram>

<histogram name="FamilyUser.WebFilterType" enum="FamilyLinkWebFilterType"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the web filter type for currently active Family Link user. Prior to
    M93, this metric was recorded at the beginning of first active session
    daily. In M93, this metric is now also recorded when web filter type policy
    changed. This metric is not emitted during OOBE and sign out.
    FamilyUser.WebFilterType.PerRecord is emitted for every UMA record, in which
    there is an active supervised user, from the current session.
  </summary>
</histogram>

<histogram name="FamilyUser.WebFilterType.PerRecord"
    enum="FamilyLinkWebFilterType" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Categorizes the current user based on parental control web filter setting.
    If there are multiple active supervised accounts on the device, records the
    filter type if they all have the same filter type. If they have different
    filter types, records the 'mixed' filter. Unsupervised users are ignored in
    the process of deciding what to record. FamilyUser.WebFilterType.PerRecord
    is emitted for every UMA record from the current session. In contrast,
    FamilyUser.WebFilterType is recorded less frequently; see its histogram
    description.
  </summary>
</histogram>

<histogram name="FamilyUser.{AppType}AppsCount2" units="Number of Apps"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Around once per day, records the number of recently used {AppType} apps in
    the past day.
  </summary>
  <token key="AppType">
    <variant name="Arc"/>
    <variant name="Borealis"/>
    <variant name="BuiltIn"/>
    <variant name="Crostini"/>
    <variant name="Extension"/>
    <variant name="Lacros"/>
    <variant name="PluginVm"/>
    <variant name="Remote"/>
    <variant name="SystemWeb"/>
    <variant name="Unknown"/>
    <variant name="Web"/>
  </token>
</histogram>

<histogram name="FamilyUser.{ExtensionStatus}ExtensionsCount2"
    units="Number of Extensions" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of non-component {ExtensionStatus} regular browser
    extensions and themes around once per day, regardless of when they were last
    used.
  </summary>
  <token key="ExtensionStatus">
<!-- Note: the Disable variant is not used on ChromeOS. -->

    <variant name="Disabled" summary="disabled"/>
    <variant name="Enabled" summary="enabled"/>
    <variant name="Installed" summary="installed"/>
  </token>
</histogram>

<histogram name="ManagedMode.BlockingInterstitialCommand"
    enum="ManagedModeBlockingCommand" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Which command was selected from the blocking interstitial.</summary>
</histogram>

<histogram name="ManagedUsers.BlockedIframeCount" units="iframes"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The number of blocked iframes per unblocked main frame load. The value is
    recorded when the main frame finishes loading.
  </summary>
</histogram>

<histogram name="ManagedUsers.FilteringResult"
    enum="SupervisedUserSafetyFilterResult" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The counts of results from supervised user URL filtering. Each entry
    includes the outcome of the filter (i.e. allowed, blocked, or unknown) and
    the page transition type (how the user got there, e.g. typed URL, clicked
    link). For a more general metric see ManagedUsers.TopLevelFilteringResult
  </summary>
</histogram>

<histogram name="ManagedUsers.RequestPermissionSource"
    enum="ManagedUserURLRequestPermissionSource" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The counts of request for permission sent from main frame or sub-frame.
  </summary>
</histogram>

<histogram name="ManagedUsers.TopLevelFilteringResult"
    enum="SupervisedUserFilterTopLevelResult" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records counts of results from supervised user URL filtering. Each entry
    includes the outcome of the filter (allowed or blocked). If outcome is
    blocked reason for the block (e.g. SafeSites, Blocklist) is also recorded.
    For more granular information see ManagedUsers.FilteringResult.
  </summary>
</histogram>

<histogram
    name="SupervisedUsers.ClassifyUrlThrottle.EarlierThanContentResponse"
    units="ms" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the time difference between completing the url classification for
    the navigation (including request and possible redirects), and the moment
    where the classification was needed to decide whether or not to proceed with
    navigation.

    Recorded only in the mainline case when the navigation was not blocked.

    Together with the complementary
    SupervisedUsers.ClassifyUrlThrottle.LaterThanContentResponse metric it forms
    a continuum of time, with 0 recorded in either (but only one) metric meaning
    that the classification was ready exactly when it was needed.
  </summary>
</histogram>

<histogram name="SupervisedUsers.ClassifyUrlThrottle.LaterThanContentResponse"
    units="ms" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the time difference between when the navigation needs a url
    classification to proceed, and the time when that classification was
    completed. In other words, it tracks the user-visible delay introduced to
    the navigation by the url classification.

    Recorded only in the mainline case when the navigation was not blocked.

    Together with the complementary
    SupervisedUsers.ClassifyUrlThrottle.EarlierThanContentResponse metric it
    forms a continuum of time, with 0 recorded in either (but only one) metric
    meaning that the classification was ready exactly when it was needed.
  </summary>
</histogram>

<histogram name="SupervisedUsers.ClassifyUrlThrottle.Status"
    enum="ClassifyUrlThrottleStatus" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks the throttle interaction with the navigation flow.

    Typically, unblocked navigation with a single request records one Continue
    status, followed by either Proceed or Defer and then Resume. If there are
    redirects, then more Continue statuses are recorded.

    Blocked navigation records at least one Continue followed by Defer and
    CancelDeferredNavigation when the check was asynchronous, or an immediate
    DeferAndScheduleInterstitial status if the check is synchronouns. When the
    user navigates to a redirect chain, there might be more continue events
    recorded.

    The scenarios above mean that the number of Defer statuses should match the
    number of Resume and CancelDeferredNavigation statuses.

    Cancel is a definitive termination of the navigation without classification,
    due to eg. unsupported type of request.
  </summary>
</histogram>

<histogram name="SupervisedUsers.ExtensionApprovalsCountOnExtensionToggle"
    units="Extensions" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of extensions that will be granted parental approval at
    the time of flipping the Family Link &quot;Extensions&quot; toggle to
    Enabled. When this action happens, all the extensions missing parental
    approval are granted it.
  </summary>
</histogram>

<histogram name="SupervisedUsers.ExtensionEnablement"
    enum="SupervisedUserExtensionEnablement" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records supervised users trying to enable or disable extensions. Enabled
    count increments when the supervised user successfully enables an extension.
    Disabled count increments when the supervised user successfully disables an
    extension. Enable attempt failed count increments when the parent has turned
    off the &quot;Permissions for sites, apps and extensions&quot; toggle and
    the supervised user tries to enable an extension that requires custodian
    approval or has a permissions increase.
  </summary>
</histogram>

<histogram name="SupervisedUsers.ExtensionInstallDialog"
    enum="SupervisedUserExtensionInstallDialog" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the actions of supervised users on the Extension Install Dialog.
    Opened count increments when the supervised user tries to install an
    extension from the Chrome Web Store and launches the Extension Install
    Dialog. Asked Parent count increments when the supervised user clicks
    &quot;Ask a parent&quot;. Child Canceled count increments when the
    supervised user clicks &quot;Cancel&quot;.
  </summary>
</histogram>

<histogram name="SupervisedUsers.ExtensionParentApprovalEntryPoint"
    enum="SupervisedUserExtensionParentApprovalEntryPoint"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the different flows that lead to displaying the Extensions parent
    approval dialog on Windows/Linux/Mac platrforms.
  </summary>
</histogram>

<histogram name="SupervisedUsers.Extensions2" enum="SupervisedUserExtension2"
    expires_after="2024-12-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the progress of supervised users as they try to install Chrome
    extensions. See the descriptions in the individual enum buckets.
  </summary>
</histogram>

<histogram name="SupervisedUsers.ImplicitParentApprovalGrantEntryPoint"
    enum="SupervisedUserImplicitParentApprovalGrantEntryPoint"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the different flows that lead to granting an automatic parent
    approval on an extension (without having to explicitely request the
    approval).
  </summary>
</histogram>

<histogram
    name="SupervisedUsers.InitialLocallyApprovedExtensionsCountOnWinLinuxMac"
    units="Extensions" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of extensions that will be granted local parental
    approval at the release time the feature that introduces the Skip Parent
    Approval mode for extension installations. Applies to Win/Linux/Mac only, so
    on ChromeOS it is always zero.
  </summary>
</histogram>

<histogram name="SupervisedUsers.ParentPermissionDialog"
    enum="SupervisedUserParentPermissionDialog" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the actions of parents on the Parent Permission Dialog. Opened count
    increments when the Parent Permission Dialog first opens. Parent Approved
    count increments when the parent successfully types their password and
    approves the extension. Parent Canceled count increments when the parent
    cancels the dialog, denying the supervised user's attempt to enable the
    extension. Failed count increments when there was some sort of failure in
    the Parent Permission Dialog. No Parent Error count increments when the
    supervised user doesn't have any associated parent email addresses for
    asking approval. Note that this error also increments the Failed count.
  </summary>
</histogram>

<histogram name="SupervisedUsers.PerAppTimeLimits.AppsWithTimeLimit"
    units="Apps" expires_after="2024-12-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The count of applications with time limit set by parents. Recorded once per
    PerAppTimeLimit policy change.
  </summary>
</histogram>

<histogram name="SupervisedUsers.PerAppTimeLimits.BlockedAppsCount"
    units="Apps" expires_after="2024-12-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The count of applications blocked by parents. It only applies to ARC++
    applications. Recorded once per PerAppTimeLimit policy change.
  </summary>
</histogram>

<histogram name="SupervisedUsers.PerAppTimeLimits.Engagement" units="Apps"
    expires_after="2024-12-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Per-App Time Limits feature engagement measured by the number of apps with
    time limits set for child user. Reported at the beginning of each user
    session.
  </summary>
</histogram>

<histogram name="SupervisedUsers.PerAppTimeLimits.PolicyChangeCount"
    units="Changes" expires_after="2024-12-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The total number of PerAppTimeLimits policy changes seen in a session.
    Recorded once at the end of the session.
  </summary>
</histogram>

<histogram name="SupervisedUsers.SitesMayRequestCameraMicLocation.PerRecord"
    enum="SupervisedUserToggleState" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the state of the &quot;Permissions for sites&quot; toggle. When
    parents/custodians have the toggle enabled websites may ask for camera,
    microphone and location permission (and the supervised user can grant
    these). When the toggle is disabled, requests for these permissions are
    blocked. The value is recorded with every UMA record upload from the current
    session. It should therefore be used as a filter, or looking at unique
    client counts (raw counts are not meaningful).
  </summary>
</histogram>

<histogram
    name="SupervisedUsers.SkipParentApprovalToInstallExtensions.PerRecord"
    enum="SupervisedUserToggleState" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the state of the &quot;Extensions&quot; toggle. When
    parents/custodians have the toggle enabled, supervised users may install
    extensions without explicit parent/custodian approval. Any extensions
    installed under this mode receive automatic parent approval. Otherwise,
    supervised users may install extensions upon receiving explicit
    parent/custodian approval on each installation. Unsupervised users are
    ignored in the process of deciding what to record. The value is recorded
    with every UMA record upload from the current session. It should therefore
    be used as a filter, or looking at unique client counts (raw counts are not
    meaningful).
  </summary>
</histogram>

<histogram name="Supervision.ParentAccessCode.Action"
    enum="ParentAccessCodeAction" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Action originated in parent access code dialog. Logged every time the action
    happens.
  </summary>
</histogram>

<histogram name="Supervision.ParentAccessCode.Usage"
    enum="ParentAccessCodeUsage" expires_after="2024-12-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The context in which parent access code was used. Logged every time the new
    parent access dialog is shown.
  </summary>
</histogram>

<histogram name="Supervision.ParentAccessCode.ValidationResult.{Action}"
    enum="ParentAccessCodeValidationResult" expires_after="2024-12-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The result of the parent access code validation for {Action} action. Logged
    every time the code is validated from the parent access dialog.
  </summary>
  <token key="Action">
    <variant name="AddUser"/>
    <variant name="All"/>
    <variant name="ClockChange"/>
    <variant name="Reauth"/>
    <variant name="TimeLimits"/>
    <variant name="TimezoneChange"/>
  </token>
</histogram>

<histogram name="Supervision.StatusReport.Event"
    enum="SupervisionStatusReportEvent" expires_after="2024-12-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The event that triggered status report for supervised account.
  </summary>
</histogram>

<histogram name="{RequestType}.AuthError" enum="GoogleServiceAuthError"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The detailed reason for AuthError failures. Recorded for each request to the
    API where Chrome was unable to get a valid access token (whether or not this
    error was fatal).
  </summary>
  <token key="RequestType" variants="ProtoFetcherRequestType"/>
</histogram>

<histogram name="{RequestType}.HttpStatusOrNetError"
    enum="CombinedHttpResponseAndNetErrorCode" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The status of the net or HTTP communication in calls to {RequestType}. This
    is recorded for each request to the {RequestType}.
  </summary>
  <token key="RequestType" variants="ProtoFetcherRequestType"/>
</histogram>

<histogram name="{RequestType}.Latency" units="ms" expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks the latency in calls to {RequestType}. It includes both the actual
    RPC call and the time spent in requesting access token.

    Googlers only: See go/chrome-kids-backend-monitoring for backend-related
    metrics.
  </summary>
  <token key="RequestType" variants="ProtoFetcherRequestType"/>
</histogram>

<histogram name="{RequestType}.Status" enum="SupervisedUserProtoFetcherStatus"
    expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>The status of the fetch in calls to {RequestType}.</summary>
  <token key="RequestType" variants="ProtoFetcherRequestType"/>
</histogram>

<histogram name="{RequestType}.{AuthErrorState}.AccessTokenLatency" units="ms"
    expires_after="2023-11-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Latency of the access token fetching before calls to {RequestType}.
    Currently only successful authentication is counted.
  </summary>
  <token key="RequestType" variants="ProtoFetcherRequestType"/>
  <token key="AuthErrorState">
    <variant name="NONE"/>
  </token>
</histogram>

<histogram name="{RequestType}.{HttpStatusOrNetError}.ApiLatency" units="ms"
    expires_after="2023-11-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Latency of the calls to {RequestType} that resulted in
    &quot;{HttpStatusOrNetError}&quot; status. Currently only succesful
    communication is recorded.
  </summary>
  <token key="RequestType" variants="ProtoFetcherRequestType"/>
  <token key="HttpStatusOrNetError">
    <variant name="HTTP_OK"/>
  </token>
</histogram>

<histogram name="{RequestType}.{Status}.Latency" units="ms"
    expires_after="2025-02-09">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Latency of the calls to {RequestType} that resulted in &quot;{Status}&quot;
    status. It includes both the actual RPC call and the time spent in
    requesting access token.
  </summary>
  <token key="RequestType" variants="ProtoFetcherRequestType"/>
  <token key="Status">
    <variant name="AuthError"/>
    <variant name="DataError"
        summary="contract error (data in the response missing despite
                 succesful parsing)"/>
    <variant name="HttpStatusOrNetError"/>
    <variant name="NoError"/>
    <variant name="ParseError"/>
  </token>
</histogram>

</histograms>

</histogram-configuration>