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

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

<histogram-configuration>

<histograms>

<variants name="CommonScreenName">
  <variant name="Adb-sideloading"/>
  <variant name="Add-child"/>
  <variant name="Ai-intro"/>
  <variant name="App-downloading"/>
  <variant name="Apply-online-password"/>
  <variant name="Assistant-optin-flow"/>
  <variant name="Autolaunch" summary="(obsolete) Not used since M-129"/>
  <variant name="Categories-selection"/>
  <variant name="Choobe"/>
  <variant name="Consolidated-consent"/>
  <variant name="Cryptohome-recovery"/>
  <variant name="Cryptohome-recovery-setup"/>
  <variant name="Device-disabled"/>
  <variant name="Display-size"/>
  <variant name="Drive-pinning"/>
  <variant name="Edu-coexistence-login"/>
  <variant name="Encryption-migration"/>
  <variant name="Enter-old-password"/>
  <variant name="Factor-setup-success"/>
  <variant name="Family-link-notice"/>
  <variant name="Fingerprint-setup"/>
  <variant name="Gaia-info"/>
  <variant name="Gaia-password-changed"
      summary="(obsolete) Not used since M-122"/>
  <variant name="Gaia-signin"/>
  <variant name="Gemini-intro"/>
  <variant name="Gesture-navigation"/>
  <variant name="Guest-tos"/>
  <variant name="Hw-data-collection"/>
  <variant name="Kiosk-enable" summary="(obsolete) Not used since M-129"/>
  <variant name="Local-data-loss-warning"/>
  <variant name="Local-password-setup"/>
  <variant name="Local-state-error"/>
  <variant name="Locale-switch"/>
  <variant name="Management-transition"/>
  <variant name="Marketing-opt-in"/>
  <variant name="Multidevice-setup-screen"/>
  <variant name="Offline-login"/>
  <variant name="Online-authentication-screen"/>
  <variant name="Os-install"/>
  <variant name="Os-trial"/>
  <variant name="Osauth-error"/>
  <variant name="Parental-handoff"/>
  <variant name="Password-selection"/>
  <variant name="Perks-discovery"/>
  <variant name="Personalized-apps"/>
  <variant name="Pin-setup"/>
  <variant name="Quick-start"/>
  <variant name="Recommend-apps"/>
  <variant name="Recovery-check"/>
  <variant name="Reset"/>
  <variant name="Saml-confirm-password"/>
  <variant name="Signin-fatal-error"/>
  <variant name="Smart-privacy-protection"/>
  <variant name="Sync-consent"/>
  <variant name="Terms-of-service"/>
  <variant name="Theme-selection"/>
  <variant name="Touchpad-scroll"/>
  <variant name="Tpm-error-message"/>
  <variant name="Tuna" summary="(obsolete) Not used since M-128"/>
  <variant name="Update-required"/>
  <variant name="User-allowlist-check-screen"/>
  <variant name="User-creation"/>
  <variant name="Wrong-hwid"/>
</variants>

<variants name="ConsumerUpdateType">
  <variant name="Mandatory"/>
  <variant name="Optional"/>
</variants>

<variants name="OnboardingType">
  <variant name="FirstOnboarding"/>
  <variant name="SubsequentOnboarding"/>
</variants>

<variants name="OOBEGestureNavigationPage">
  <variant name="Back" summary="Gesture Navigation Back Page"/>
  <variant name="Home" summary="Gesture Navigation Home Page"/>
  <variant name="Intro" summary="Gesture Navigation Intro Page"/>
  <variant name="Overview" summary="Gesture Navigation Overview Page"/>
</variants>

<variants name="OOBELegacyScreenName">
  <variant name="Adb-sideloading"/>
  <variant name="Add-child"/>
  <variant name="Ai-intro"/>
  <variant name="App-downloading"/>
  <variant name="Apply-online-password"/>
  <variant name="Assistant-optin-flow"/>
  <variant name="Auto-enrollment-check"/>
  <variant name="Autolaunch" summary="(obsolete) Not used since M-129"/>
  <variant name="Categories-selection"/>
  <variant name="Choobe"/>
  <variant name="Consolidated-consent"/>
  <variant name="Consumer-update"/>
  <variant name="Cryptohome-recovery"/>
  <variant name="Cryptohome-recovery-setup"/>
  <variant name="Debugging"/>
  <variant name="Demo-preferences"/>
  <variant name="Demo-setup"/>
  <variant name="Device-disabled"/>
  <variant name="Display-size"/>
  <variant name="Drive-pinning"/>
  <variant name="Edu-coexistence-login"/>
  <variant name="Encryption-migration"/>
  <variant name="Enroll"/>
  <variant name="Enter-old-password"/>
  <variant name="Factor-setup-success"/>
  <variant name="Family-link-notice"/>
  <variant name="Fingerprint-setup"/>
  <variant name="Gaia-info"/>
  <variant name="Gaia-password-changed"
      summary="(obsolete) Not used since M-122"/>
  <variant name="Gaia-signin"/>
  <variant name="Gemini-intro"/>
  <variant name="Gesture-navigation"/>
  <variant name="Guest-tos"/>
  <variant name="Hid-detection"/>
  <variant name="Hw-data-collection"/>
  <variant name="Kiosk-enable" summary="(obsolete) Not used since M-129"/>
  <variant name="Local-data-loss-warning"/>
  <variant name="Local-password-setup"/>
  <variant name="Local-state-error"/>
  <variant name="Locale-switch"/>
  <variant name="Management-transition"/>
  <variant name="Marketing-opt-in"/>
  <variant name="Multidevice-setup-screen"/>
  <variant name="Network"/>
  <variant name="Network-selection"/>
  <variant name="Offline-login"/>
  <variant name="Online-authentication-screen"/>
  <variant name="Oobe-update"/>
  <variant name="Os-install"/>
  <variant name="Os-trial"/>
  <variant name="Osauth-error"/>
  <variant name="Packaged-license"/>
  <variant name="Parental-handoff"/>
  <variant name="Password-selection"/>
  <variant name="Perks-discovery"/>
  <variant name="Pin-setup"/>
  <variant name="Quick-start"/>
  <variant name="Recommend-apps"/>
  <variant name="Recovery-check"/>
  <variant name="Reset"/>
  <variant name="Saml-confirm-password"/>
  <variant name="Signin-fatal-error"/>
  <variant name="Smart-privacy-protection"/>
  <variant name="Sync-consent"/>
  <variant name="Theme-selection"/>
  <variant name="Tos"/>
  <variant name="Touchpad-scroll"/>
  <variant name="Tpm-error-message"/>
  <variant name="Tuna" summary="(obsolete) Not used since M-128"/>
  <variant name="Update-required"/>
  <variant name="User-allowlist-check-screen"/>
  <variant name="User-creation"/>
  <variant name="Wrong-hwid"/>
</variants>

<variants name="OOBEMarketingCountry">
  <variant name="" summary="all countries"/>
  <variant name="au" summary="Australia"/>
  <variant name="ca" summary="Canada"/>
  <variant name="de" summary="Germany"/>
  <variant name="dk" summary="Denmark"/>
  <variant name="es" summary="Spain"/>
  <variant name="fi" summary="Finland"/>
  <variant name="fr" summary="France"/>
  <variant name="gb" summary="United Kingdom"/>
  <variant name="it" summary="Italy"/>
  <variant name="jp" summary="Japan"/>
  <variant name="nl" summary="Netherlands"/>
  <variant name="no" summary="Norway"/>
  <variant name="se" summary="Sweden"/>
  <variant name="us" summary="United States"/>
</variants>

<variants name="OOBENetworkError">
  <variant name="LoadingTimeout"/>
  <variant name="None"/>
  <variant name="Offline"/>
  <variant name="Portal"/>
  <variant name="Proxy"/>
</variants>

<!-- OOBEOnlyScreenName variants must be kept in sync with the list of OOBEOnlyScreenNames in
    chrome/browser/ash/login/oobe_metrics_helper.h-->

<variants name="OOBEOnlyScreenName">
  <variant name="Auto-enrollment-check"/>
  <variant name="Connect"/>
  <variant name="Consumer-update"/>
  <variant name="Debugging"/>
  <variant name="Demo-preferences"/>
  <variant name="Demo-setup"/>
  <variant name="Enterprise-enrollment"/>
  <variant name="Gaia-info"/>
  <variant name="Hid-detection"/>
  <variant name="Network-selection"/>
  <variant name="Oobe-update"/>
  <variant name="Packaged-license"/>
  <variant name="Quick-start"/>
</variants>

<variants name="OOBEOptionalScreens">
  <variant name="Display-size"/>
  <variant name="Drive-pinning"/>
  <variant name="Theme-selection"/>
  <variant name="Touchpad-scroll"/>
</variants>

<variants name="OOBEScreenName_ExitReason">
  <variant name="Adb-sideloading.Next"/>
  <variant name="Add-child.Back"/>
  <variant name="Add-child.CreateChildAccount"/>
  <variant name="Add-child.EnterpriseEnroll"/>
  <variant name="Add-child.KioskEnterpriseEnroll"/>
  <variant name="Add-child.SignInAsChild"/>
  <variant name="Ai-intro.Next"/>
  <variant name="App-downloading.Next"/>
  <variant name="Apply-online-password.Error"/>
  <variant name="Apply-online-password.Success"/>
  <variant name="Assistant-optin-flow.Next"/>
  <variant name="Auto-enrollment-check.Next"/>
  <variant name="Autolaunch.Canceled"
      summary="(obsolete) Not used since M-129"/>
  <variant name="Autolaunch.Completed"
      summary="(obsolete) Not used since M-129"/>
  <variant name="Categories-selection.DataMalformed"/>
  <variant name="Categories-selection.Error"/>
  <variant name="Categories-selection.Next"/>
  <variant name="Categories-selection.Skip"/>
  <variant name="Categories-selection.Timeout"/>
  <variant name="Choobe.Selected"/>
  <variant name="Choobe.Skipped"/>
  <variant name="Connect.EnableDebugging"/>
  <variant name="Connect.Next"/>
  <variant name="Connect.QuickStart"/>
  <variant name="Connect.SetupDemo"/>
  <variant name="Connect.StartOsInstall"/>
  <variant name="Consolidated-consent.AcceptedDemo"/>
  <variant name="Consolidated-consent.AcceptedRegular"/>
  <variant name="Consolidated-consent.BackDemo"/>
  <variant name="Consumer-update.Back"/>
  <variant name="Consumer-update.UpdateCheckTimeout"/>
  <variant name="Consumer-update.Updated"/>
  <variant name="Consumer-update.UpdateDeclineCellular"/>
  <variant name="Consumer-update.UpdateError"/>
  <variant name="Consumer-update.UpdateNotRequired"/>
  <variant name="Consumer-update.UpdateSkipped"/>
  <variant name="Cryptohome-recovery-setup.Done"/>
  <variant name="Cryptohome-recovery-setup.Skipped"/>
  <variant name="Cryptohome-recovery.Authenticated"/>
  <variant name="Cryptohome-recovery.Error"/>
  <variant name="Cryptohome-recovery.FallbackLocal"/>
  <variant name="Cryptohome-recovery.FallbackOnline"/>
  <variant name="Cryptohome-recovery.GaiaLogin"/>
  <variant name="Cryptohome-recovery.ManualRecovery"
      summary="(obsolete) Not used since M-122"/>
  <variant name="Cryptohome-recovery.NoRecoveryFactor"
      summary="(obsolete) Not used since M-122"/>
  <variant name="Cryptohome-recovery.Retry"
      summary="(obsolete) Not used since M-122"/>
  <variant name="Cryptohome-recovery.Succeeded"
      summary="(obsolete) Not used since M-122"/>
  <variant name="Debugging.Next"/>
  <variant name="Demo-preferences.Canceled"/>
  <variant name="Demo-preferences.Completed"/>
  <variant name="Demo-setup.Canceled"/>
  <variant name="Demo-setup.Completed"/>
  <variant name="Display-size.Next"/>
  <variant name="Drive-pinning.Next"/>
  <variant name="Edu-coexistence-login.Done"/>
  <variant name="Enter-old-password.Authenticated"/>
  <variant name="Enter-old-password.CryptohomeError"/>
  <variant name="Enter-old-password.ForgotOldPassword"/>
  <variant name="Enterprise-enrollment.Back"/>
  <variant name="Enterprise-enrollment.BackToAutoEnrollmentCheck"/>
  <variant name="Enterprise-enrollment.Completed"/>
  <variant name="Enterprise-enrollment.TpmDbusError"/>
  <variant name="Enterprise-enrollment.TpmError"/>
  <variant name="Factor-setup-success.Proceed"/>
  <variant name="Factor-setup-success.TimedOut"/>
  <variant name="Family-link-notice.Done"/>
  <variant name="Fingerprint-setup.Done"/>
  <variant name="Fingerprint-setup.Skipped"/>
  <variant name="Gaia-info.Back"/>
  <variant name="Gaia-info.EnterQuickStart"/>
  <variant name="Gaia-info.Manual"/>
  <variant name="Gaia-password-changed.Cancel"
      summary="(obsolete) Not used since M-122"/>
  <variant name="Gaia-password-changed.ContinueLogin"
      summary="(obsolete) Not used since M-122"/>
  <variant name="Gaia-password-changed.CryptohomeError"
      summary="(obsolete) Not used since M-122"/>
  <variant name="Gaia-password-changed.RecreateUser"
      summary="(obsolete) Not used since M-122"/>
  <variant name="Gaia-signin.Back"/>
  <variant name="Gaia-signin.BackChild"/>
  <variant name="Gaia-signin.Cancel"/>
  <variant name="Gaia-signin.EnterpriseEnroll"/>
  <variant name="Gaia-signin.EnterQuickStart"/>
  <variant name="Gaia-signin.StartConsumerKiosk"
      summary="(obsolete) Not used since M-129"/>
  <variant name="Gemini-intro.Back"/>
  <variant name="Gemini-intro.Next"/>
  <variant name="Gesture-navigation.Next"/>
  <variant name="Gesture-navigation.Skip"/>
  <variant name="Guest-Tos.Accept"/>
  <variant name="Guest-Tos.Back"/>
  <variant name="Guest-Tos.Cancel"/>
  <variant name="Hid-detection.Next"/>
  <variant name="Hw-data-collection.AcceptedWithHWDataUsage"/>
  <variant name="Hw-data-collection.AcceptedWithoutHWDataUsage"/>
  <variant name="Kiosk-enable.Next" summary="(obsolete) Not used since M-129"/>
  <variant name="Local-data-loss-warning.Back"/>
  <variant name="Local-data-loss-warning.Cancel"/>
  <variant name="Local-data-loss-warning.CryptohomeError"/>
  <variant name="Local-data-loss-warning.RemoveUser"/>
  <variant name="Local-password-setup.Back"/>
  <variant name="Local-password-setup.Done"/>
  <variant name="Locale-switch.LocaleFetchFailed"/>
  <variant name="Locale-switch.LocaleFetchTimeout"/>
  <variant name="Locale-switch.NoSwitchNeeded"/>
  <variant name="Locale-switch.SwitchDelegated"/>
  <variant name="Locale-switch.SwitchFailed"/>
  <variant name="Locale-switch.SwitchSucceded"/>
  <variant name="Management-transition.Next"/>
  <variant name="Marketing-opt-in.Next"/>
  <variant name="Multidevice-setup-screen.Next"/>
  <variant name="Network-selection.Back"/>
  <variant name="Network-selection.Connected"/>
  <variant name="Network-selection.QuickStart"/>
  <variant name="Offline-login.Back"/>
  <variant name="Offline-login.ReloadOnlineLogin"/>
  <variant name="Online-authentication-screen.Back"/>
  <variant name="Oobe-update.UpdateCheckTimeout"/>
  <variant name="Oobe-update.UpdateError"/>
  <variant name="Oobe-update.UpdateNotRequired"/>
  <variant name="Oobe-update.UpdateNotRequired_OptOutInfo"/>
  <variant name="Os-trial.Back"/>
  <variant name="Os-trial.NextInstall"/>
  <variant name="Os-trial.NextTry"/>
  <variant name="Osauth-error.AbortSignin"/>
  <variant name="Osauth-error.FallbackLocal"/>
  <variant name="Osauth-error.FallbackOnline"/>
  <variant name="Osauth-error.ProceedAuthenticated"/>
  <variant name="Packaged-license.DontEnroll"/>
  <variant name="Packaged-license.Enroll"/>
  <variant name="Parental-Handoff.Done"/>
  <variant name="Password-selection.Back"/>
  <variant name="Password-selection.GaiaPasswordChoice"/>
  <variant name="Password-selection.GaiaPasswordEnterprise"/>
  <variant name="Password-selection.GaiaPasswordFallback"/>
  <variant name="Password-selection.LocalPasswordChoice"/>
  <variant name="Password-selection.LocalPasswordForced"/>
  <variant name="Perks-discovery.Error"/>
  <variant name="Perks-discovery.Next"/>
  <variant name="Perks-discovery.Timeout"/>
  <variant name="Personalized-apps.Back"/>
  <variant name="Personalized-apps.DataMalformed"/>
  <variant name="Personalized-apps.Error"/>
  <variant name="Personalized-apps.Next"/>
  <variant name="Personalized-apps.Skip"/>
  <variant name="Personalized-apps.Timeout"/>
  <variant name="Pin-setup.Done"/>
  <variant name="Pin-setup.Skipped"/>
  <variant name="Pin-setup.TimedOut"/>
  <variant name="Quick-start.CancelAndReturnToGaiaInfo"/>
  <variant name="Quick-start.CancelAndReturnToNetwork"/>
  <variant name="Quick-start.CancelAndReturnToSignin"/>
  <variant name="Quick-start.CancelAndReturnToWelcome"/>
  <variant name="Quick-start.FallbackUrlOnGaia"/>
  <variant name="Quick-start.SetupCompleteNextButton"/>
  <variant name="Quick-start.WifiCredentialsReceived"/>
  <variant name="Recommend-apps.LoadError"/>
  <variant name="Recommend-apps.Selected"/>
  <variant name="Recommend-apps.Skipped"/>
  <variant name="Recovery-check.Proceed"/>
  <variant name="Reset.Cancel"/>
  <variant name="Saml-confirm-password.Cancel"/>
  <variant name="Saml-confirm-password.TooManyAttempts"/>
  <variant name="Signin-fatal-error.Next"/>
  <variant name="Smart-privacy-protection.ContinueWithFeatureOff"/>
  <variant name="Smart-privacy-protection.ContinueWithFeatureOn"/>
  <variant name="Sync-consent.DeclineOnLacros"/>
  <variant name="Sync-consent.Next"/>
  <variant name="Terms-of-service.Accepted"/>
  <variant name="Terms-of-service.Declined"/>
  <variant name="Theme-selection.Proceed"/>
  <variant name="Touchpad-scroll.Next"/>
  <variant name="Tuna.Back" summary="(obsolete) Not used since M-128"/>
  <variant name="Tuna.Next" summary="(obsolete) Not used since M-128"/>
  <variant name="User-allowlist-check-screen.Retry"/>
  <variant name="User-creation.AddChild"/>
  <variant name="User-creation.Cancel"/>
  <variant name="User-creation.EnterpriseEnrollShortcut"/>
  <variant name="User-creation.EnterpriseEnrollTriage"/>
  <variant name="User-creation.KioskEnterpriseEnroll"/>
  <variant name="User-creation.SignIn"/>
  <variant name="User-creation.SignInSchool"/>
  <variant name="User-creation.SignInTriage"/>
  <variant name="Wrong-hwid.Next"/>
</variants>

<variants name="OOBEScreenShownBeforeNetworkError">
  <variant name="AddChild" summary="Add Child Screen"/>
  <variant name="ConsumerUpdate" summary="Consumer Update Screen"/>
  <variant name="Enrollment" summary="Enrollment or Autoenrollment"/>
  <variant name="Signin" summary="Signin Screen"/>
  <variant name="Update" summary="Update Screen"/>
  <variant name="UpdateRequired" summary="Update Required Screen"/>
  <variant name="UserCreation" summary="User Creation Screen"/>
</variants>

<variants name="PerksID">
  <variant name="G1"/>
</variants>

<variants name="PersonalizedAppsType">
  <variant name="ARC"/>
  <variant name="Web"/>
</variants>

<variants name="UpdateStage">
  <variant name="Check"/>
  <variant name="Download"/>
  <variant name="Finalize"/>
  <variant name="Verify"/>
</variants>

<histogram name="OOBE.BootToOOBECompleted.{CompletedOobeFlowType}" units="ms"
    expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Time from boot until pre-login OOBE is completed. If the device was rebooted
    during OOBE, the time is calculated since the last boot.
  </summary>
  <token key="CompletedOobeFlowType">
    <variant name="AutoEnrollment"/>
    <variant name="Demo"/>
    <variant name="Regular"/>
  </token>
</histogram>

<histogram name="OOBE.BootToSignInCompleted" units="ms"
    expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Time from the login screen start to user session start.

    Warning: this histogram was expired from 2022-04-03 to 2023-04-04; data may
    be missing.
  </summary>
</histogram>

<histogram name="OOBE.CategoriesSelectionScreen.LoadingTime" units="ms"
    expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Amount of time it took for screen to finish the loading UI step. Metric is
    not recorded when screen is skipped due to the loading error. Current
    timeout value is 60 seconds.
  </summary>
</histogram>

<histogram name="OOBE.CategoriesSelectionScreen.SelectedUseCaseIDs"
    units="useCaseID" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Order number that we got from the server-side of a use-case that user
    selected. Temporary solution before we use another approach to emit the
    exact string IDs of the use-cases.
  </summary>
</histogram>

<histogram name="OOBE.CategoriesSelectionScreen.SelectedUseCasesCount"
    units="use-cases" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The number of use-cases user selected on the Device Use-Case screen. This
    histogram is recorded only when at least one use-cases is selected. If user
    pressed skip we will emit &quot;Skip&quot; exit code, so it can be used for
    tracking.
  </summary>
</histogram>

<histogram name="OOBE.CategoriesSelectionScreen.SelectedUseCasesPercentage"
    units="%" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Ratio of selected use-cases to the number of use-cases fetched from the
    server. This histogram is recorded only when at least one use-cases is
    selected.
  </summary>
</histogram>

<histogram name="OOBE.CHOOBE.FlowSkipped" enum="BooleanSkipped"
    expires_after="2024-12-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether the CHOOBE flow was skipped without selecting any screens. Recorded
    after the user completes the CHOOBE flow.
  </summary>
</histogram>

<histogram name="OOBE.CHOOBE.ScreenCompleted.{OOBEOptionalScreens}"
    enum="BooleanSelected" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether the {OOBEOptionalScreens} screen was selected and completed from the
    CHOOBE screen. Recorded after the user completes the CHOOBE flow. If the
    user visits the same screen multiple times, only a single event will be
    recorded.

    The histogram is not recorded if the {OOBEOptionalScreens} screen was shown
    outside of the CHOOBE flow.
  </summary>
  <token key="OOBEOptionalScreens" variants="OOBEOptionalScreens"/>
</histogram>

<histogram name="OOBE.CHOOBE.SettingChanged.{OOBEOptionalScreens}"
    enum="BooleanChanged" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether the setting in {OOBEOptionalScreens} screen was changed when the
    screen was visited. Recorded when the user clicks &quot;next&quot; or
    &quot;return to CHOOBE&quot; button. This metric is recorded regardless of
    whether the CHOOBE screen was shown.

    The histogram is recorded once per visit to the screen.
  </summary>
  <token key="OOBEOptionalScreens" variants="OOBEOptionalScreens"/>
</histogram>

<histogram name="OOBE.ChromeVersionBeforeUpdate" units="custom"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Chrome major version recorded in OOBE before any updates are applied.
  </summary>
</histogram>

<histogram name="OOBE.ConsolidatedConsentScreen.RecoveryOptInResult"
    enum="RecoveryOptInResult" expires_after="2025-04-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks the result of the cryptohome recovery opt-in on the consolidated
    consent screen. Recorded when user exists the consolidated consent screen.
  </summary>
</histogram>

<histogram name="OOBE.ConsolidatedConsentScreen.UserActions"
    enum="ConsolidatedConsentScreenUserAction" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks user actions on the consolidated consent screen. Recorded when user
    clicks on buttons on the consolidated consent screen.
  </summary>
</histogram>

<histogram name="OOBE.ConsumerUpdateScreen.EstimatorErrorExceed" units="ms"
    expires_after="2025-03-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Displays the difference between estimated update time and actual update
    time, specifically highlighting instances where the estimated time was
    exceeding than the real time.
  </summary>
</histogram>

<histogram name="OOBE.ConsumerUpdateScreen.EstimatorErrorShort" units="ms"
    expires_after="2025-03-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Displays the difference between estimated update time and actual update
    time, specifically highlighting instances where the estimated time was
    shorter than the real time.
  </summary>
</histogram>

<histogram name="OOBE.ConsumerUpdateScreen.EstimatorTimeLeft" units="ms"
    expires_after="2025-03-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Time estimated for consumer update completion, calculated by the update
    estimator during the process.
  </summary>
</histogram>

<histogram name="OOBE.ConsumerUpdateScreen.IsMandatory" enum="Boolean"
    expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether the consumer update was mandatory or optional. This is decided based
    on the estimate of time needed for the update to be applied. This is
    recorded when the skip button in the consumer update is decided to be shown
    or stay hidden.
  </summary>
</histogram>

<histogram name="OOBE.ConsumerUpdateScreen.IsOptionalUpdateSkipped"
    enum="Boolean" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether the optional consumer update was skipped. This is recorded when the
    skip button is clicked or when the update is completed. or stay hidden.
  </summary>
</histogram>

<histogram name="OOBE.ConsumerUpdateScreen.SkipReason"
    enum="OobeConsumerUpdateScreenSkippedReason" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The reason for skipping the update. These reasons do not include when the
    user skips the update screen but the update continues in the background.
  </summary>
</histogram>

<histogram name="OOBE.ConsumerUpdateScreen.UpdateAvailable" enum="Boolean"
    expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether an update was avaialble within the consumer update screen.
  </summary>
</histogram>

<histogram name="OOBE.ConsumerUpdateScreen.UpdateTime.{ConsumerUpdateType}"
    units="ms" expires_after="2024-11-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Time spent starting from the update screen is shown until the
    {ConsumerUpdateType} update is completed before rebooting the device.
  </summary>
  <token key="ConsumerUpdateType" variants="ConsumerUpdateType"/>
</histogram>

<histogram name="OOBE.Drive-pinning.Enabled" enum="BooleanEnabled"
    expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether the user has enabled or disabled Drive Pinning. Recorded once with
    the final decision made by the user. The recording is done after onboarding
    is completed and before starting the drive pinning feature.
  </summary>
</histogram>

<histogram name="OOBE.Enrollment.IsUserEnrollingAConsumer" enum="Boolean"
    expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether the enrollment screen is shown for a user that was already
    determined to be a consumer during the consumer update.
  </summary>
</histogram>

<histogram
    name="OOBE.ErrorScreensTime.{OOBEScreenShownBeforeNetworkError}.{OOBENetworkError}"
    units="ms" expires_after="never">
<!-- expires-never: Core metric for monitoring OOBE flow regressions.
    go/oobe-cmp-dd -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Time spent on error screens during {OOBEScreenShownBeforeNetworkError} when
    the last error is {OOBENetworkError} error. Recorded when the host screen is
    destroyed. Note: None error means that the ErrorScreen was finally hidden.
  </summary>
  <token key="OOBEScreenShownBeforeNetworkError"
      variants="OOBEScreenShownBeforeNetworkError"/>
  <token key="OOBENetworkError" variants="OOBENetworkError"/>
</histogram>

<histogram name="OOBE.FingerprintSetupScreen.UserActions"
    enum="FingerprintSetupScreenUserAction" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks all user actions on the fingerprint screen. Recorded when user clicks
    on buttons on the fingerprint screen.
  </summary>
</histogram>

<histogram name="OOBE.GaiaLoginTime" units="ms" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the amount of time spent by user to complete GAIA login during
    first-run OOBE. Recorded after receiving authentication success signal. Not
    recorded for SAML flow.
  </summary>
</histogram>

<histogram name="OOBE.GaiaPasswordChangedScreen.UserActions"
    enum="GaiaPasswordChangedScreenUserAction" expires_after="2025-03-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks all user actions on the GaiaPasswordChanged screen. Recorded when
    user clicks on buttons on the screen.
  </summary>
</histogram>

<histogram name="OOBE.GaiaScreen.LoginRequests" enum="GaiaLoginVariant"
    expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks all user login requests differentiated by flows on the Gaia screen.
    Recorded when password is entered for authentication. Note: this is not
    recorded for SAML flows.

    Warning: this histogram was expired from 2022-04-25 to 2022-08-18; data may
    be missing.
  </summary>
</histogram>

<histogram name="OOBE.GaiaScreen.PasswordIgnoredChars" enum="Boolean"
    expires_after="2025-04-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records whether user password contains characters ignored by Gaia. The
    histogram is recorded after online login and not recorded for SAML users.
  </summary>
</histogram>

<histogram name="OOBE.GaiaScreen.PasswordlessLoginRequests" enum="Boolean"
    expires_after="2025-04-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records whether password or passwordless login is used on the Gaia screen.
    The histogram is recorded when the user is on an unmanaged device and
    passwordless login is allowed. Note that it excludes consumer users on
    managed devices, although passwordless login is allowed.
  </summary>
</histogram>

<histogram name="OOBE.GaiaScreen.SuccessLoginRequests" enum="GaiaLoginVariant"
    expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks all successful user login requests differentiated by flows on the
    Gaia screen. Recorded when authentication is successful. Note: this is not
    recorded for SAML flows.

    Warning: this histogram was expired from 2022-04-25 to 2022-08-18; data may
    be missing.
  </summary>
</histogram>

<histogram
    name="OOBE.GestureNavigationScreen.PageShownTime.{OOBEGestureNavigationPage}"
    units="ms" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the amount of time that each page within the gesture navigation OOBE
    screen is shown. Recorded when the gesture navigation oobe screen is
    exiting.

    Warning: this histogram was expired from 2021-08-09 to 2023-04-04; data may
    be missing.
  </summary>
  <token key="OOBEGestureNavigationPage" variants="OOBEGestureNavigationPage"/>
</histogram>

<histogram
    name="OOBE.HidDetectionScreen.BluetoothPairing.Duration.{PairingResult}"
    units="ms" expires_after="2025-08-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records how long it takes for a pairing attempt, initiated automatically
    during the OOBE HID detection screen, to finish. If the user needed to go
    through an auth process during pairing, the time the user took to confirm
    that is included.
  </summary>
  <token key="PairingResult">
    <variant name="Failure"/>
    <variant name="Success"/>
  </token>
</histogram>

<histogram name="OOBE.HidDetectionScreen.BluetoothPairing.Result"
    enum="HidDetectionBluetoothPairingResult" expires_after="2025-08-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records if a HID pairing attempt (initiated automatically by the OOBE HID
    detection screen) paired successfully via Bluetooth or did not pair
    successfully via Bluetooth. This is expected to fail most of the time
    because of it being initiated in a loop automatically while the OOBE HID
    Detection screen is open.
  </summary>
</histogram>

<histogram name="OOBE.HidDetectionScreen.BluetoothPairing.TimeoutExceeded"
    enum="BooleanSuccess" expires_after="2025-08-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records success each time a pairing session times out while on the OOBE HID
    detection page.
  </summary>
</histogram>

<histogram name="OOBE.HidDetectionScreen.BluetoothPairingAttempts"
    units="attempts" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the total number of pairing attempts with Bluetooth human interface
    devices (HID). This metric is emitted after the HID detection screen exits
    in OOBE. It does not include devices attempted to be paired with before or
    after the HID detection screen.
  </summary>
</histogram>

<histogram name="OOBE.HidDetectionScreen.HidConnected" enum="HidType"
    expires_after="2025-08-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the type of a connected human interface device (HID). This metric is
    emitted each time a HID is connected during the HID detection screen in
    OOBE. It does not include devices connected before the screen is shown or
    after the screen is hidden.
  </summary>
</histogram>

<histogram name="OOBE.HidDetectionScreen.HidDisconnected" enum="HidType"
    expires_after="2025-01-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the type of a connected human interface device (HID) that is
    disconnected. This metric is emitted each time a HID is disconnected during
    the HID detection screen in OOBE. It does not include devices disconnected
    before the screen is shown or after the screen is hidden.
  </summary>
</histogram>

<histogram name="OOBE.HidDetectionScreen.InitialHidsMissing" enum="HidsMissing"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the types of human interface devices (HIDs) that are not connected
    when OOBE starts. This metric is not emitted for Chrome OS devices that have
    the OOBE HID detection screen disabled.
  </summary>
</histogram>

<histogram
    name="OOBE.MarketingOptInScreen.BackendConnector.{OOBEMarketingCountry}"
    enum="MarketingOptInBackendConnectorEvent" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The result of a request performed by the MarketingBackendConnector used in
    the OOBE MarketingOptInScreen when subscribing users in
    {OOBEMarketingCountry} to Chromebook emails. This data is used to determine
    the success rate of the requests being performed.
  </summary>
  <token key="OOBEMarketingCountry" variants="OOBEMarketingCountry"/>
</histogram>

<histogram name="OOBE.MarketingOptInScreen.Event.{OOBEMarketingCountry}"
    enum="MarketingOptInScreenEvent" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the choice users in {OOBEMarketingCountry} takes when prompted with
    a toggle on the OOBE MarketingOptInScreen to subscribe to Chromebook emails.
  </summary>
  <token key="OOBEMarketingCountry" variants="OOBEMarketingCountry"/>
</histogram>

<histogram name="OOBE.MarketingOptInScreen.GeolocationResolve"
    enum="MarketingOptInGeolocationEvent" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records whether the user's geolocation was resolved successfully.
  </summary>
</histogram>

<histogram name="OOBE.MetricsClientIdReset" enum="Boolean"
    expires_after="2025-01-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether the metrics client ID was reset during OOBE. Recorded at the end of
    OOBE flow before the first session starts.

    If the device is unmanaged, this metric should only be reported as false. If
    the device is managed, this should report true in very rare occasions (e.g.
    the admin switched the metrics policy from false to true at the time the
    user was going through OOBE).
  </summary>
</histogram>

<histogram name="OOBE.MetricsClientIdReset2"
    enum="OobeMetricsClientIdResetState" expires_after="2025-08-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    State of the metrics client ID during OOBE. Recorded at the end of OOBE flow
    before the first session starts.

    This histogram should be recorded as `Reset during OOBE` in very rare
    occasions (e.g. the device is managed and the admin switched the metrics
    policy from false to true at the time the user was going through OOBE).

    If the device is unmanaged, then this histogram should never be recorded as
    `Reset during OOBE`.
  </summary>
</histogram>

<histogram name="OOBE.NetworkErrorShown.{OOBEScreenShownBeforeNetworkError}"
    enum="NetworkErrorType" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Number of times error screen has appeared during
    {OOBEScreenShownBeforeNetworkError}
  </summary>
  <token key="OOBEScreenShownBeforeNetworkError"
      variants="OOBEScreenShownBeforeNetworkError"/>
</histogram>

<histogram name="OOBE.OnboardingFlowDuration.{OnboardingType}" units="ms"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the total time it took the user to complete the onboarding flow,
    starting from after the login of the new user (before the first onboarding
    screen is shown). and ending after the completion of the last onboarding
    screen (before the start of the session). The time recorded includes the
    time while the device is turned off.
  </summary>
  <token key="OnboardingType" variants="OnboardingType"/>
</histogram>

<histogram name="OOBE.OnboardingFlowStatus.{OnboardingType}"
    enum="BooleanStartedCompleted" expires_after="never">
<!-- expires-never: Core metric for monitoring OOBE flow regressions.
    go/oobe-cmp-dd -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records &quot;Started&quot; and &quot;Completed&quot; events for the entire
    onboarding flow of a new user. &quot;Started&quot; is recorded after a new
    user logs-in (before the first onboarding screen is shown).
    &quot;Completed&quot; is recorded after the completion of the last screen in
    the onboarding flow (before the start of the session).
  </summary>
  <token key="OnboardingType" variants="OnboardingType"/>
</histogram>

<histogram name="OOBE.OobeConfig.DeleteFlexOobeConfig.DBusResult"
    enum="DeleteFlexOobeConfigDBusResult" expires_after="2025-02-07">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the different possible results when attempting to invoke the
    DeleteFlexOobeConfig DBus method.
  </summary>
</histogram>

<histogram name="OOBE.OobeFlowDuration" units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the total time it took the user to complete OOBE, starting from the
    first start of OOBE (before the first OOBE screen is shown) and ending after
    the completion of the last onboarding screen for the first user (before the
    start of the first session). The time recorded includes the time while the
    device is turned off.
  </summary>
</histogram>

<histogram name="OOBE.OobeFlowStatus" enum="BooleanStartedCompleted"
    expires_after="never">
<!-- expires-never: Core metric for monitoring OOBE flow regressions.
    go/oobe-cmp-dd -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records &quot;Started&quot; and &quot;Completed&quot; events for the entire
    OOBE flow. &quot;Started&quot; is recorded at the first start of OOBE before
    the first OOBE screen is shown. &quot;Completed&quot; is recorded after the
    completion of the last screen in the onboarding flow of the first user and
    before sign-in is completed.
  </summary>
</histogram>

<histogram name="OOBE.OobeStartToOnboardingStartTime" units="ms"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the total time it took the user to complete OOBE, starting from the
    first start of OOBE (before the first OOBE screen is shown) and ending after
    the completion of the last onboarding screen for the first user (before the
    start of the first session). The time recorded includes the time while the
    device is turned off.
  </summary>
</histogram>

<histogram name="OOBE.PerksDiscoveryScreen.ErrorReason"
    enum="PerksDiscoveryErrorReason" expires_after="2025-01-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records different error codes that we could get during data processing on
    the screen. Emits either before we show overview step of the screen or after
    user finished selecting perks.
  </summary>
</histogram>

<histogram name="OOBE.PerksDiscoveryScreen.Selected.{PerksID}" enum="Boolean"
    expires_after="2025-01-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether {PerksID} perk was selected by a user. Recorded when user finished
    traversing through the all avaialble perks.
  </summary>
  <token key="PerksID" variants="PerksID"/>
</histogram>

<histogram name="OOBE.PerksDiscoveryScreen.SelectedPerksCount" units="perks"
    expires_after="2025-01-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The number of perks user selected on the Perks Discovery screen. Recorded
    when user finished traversing through the all avaialble perks.
  </summary>
</histogram>

<histogram name="OOBE.PerksDiscoveryScreen.SelectedPerksPercentage" units="%"
    expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Ratio of selected perks to the number of perks fetched from the server.
    Recorded when user finished traversing through the all avaialble perks.
  </summary>
</histogram>

<histogram name="OOBE.PersonalizedAppsScreen.LoadingTime" units="ms"
    expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Amount of time it took for screen to finish the loading UI step. Metric is
    not recorded when screen is skipped due to the loading error. Current
    timeout value is 60 seconds.
  </summary>
</histogram>

<histogram name="OOBE.PersonalizedAppsScreen.SelectedAppIDs" units="appID"
    expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Ordering number that we got from the server-side of an app that user
    selected to install. Temporary solution before we use another approach to
    emit the exact string IDs of the selected apps.
  </summary>
</histogram>

<histogram
    name="OOBE.PersonalizedAppsScreen.SelectedAppsCount.{PersonalizedAppsType}"
    units="apps" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The number of {PersonalizedAppsType} apps selected to install.
  </summary>
  <token key="PersonalizedAppsType" variants="PersonalizedAppsType"/>
</histogram>

<histogram
    name="OOBE.PersonalizedAppsScreen.SelectedAppsPercentage.{PersonalizedAppsType}"
    units="%" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Ratio of selected apps to install to the number of apps of a type
    {PersonalizedAppsType} fetched for the selected use-cases.
  </summary>
  <token key="PersonalizedAppsType" variants="PersonalizedAppsType"/>
</histogram>

<histogram name="OOBE.PersonalizedAppsScreen.SelectedAppsTotalCount"
    units="apps" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The total number of apps user selected on the Personalized App Recs screen.
  </summary>
</histogram>

<histogram name="OOBE.PersonalizedAppsScreen.SelectedAppsTotalPercentage"
    units="%" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Ratio of total selected apps to install to the number of apps fetched for
    the selected use-cases.
  </summary>
</histogram>

<histogram name="OOBE.PinSetupScreen.UserActions"
    enum="PinSetupScreenUserAction" expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks all user actions on the PinSetup screen. Recorded when user clicks on
    buttons on the PinSetup screen or when screen is automatically skipped.
  </summary>
</histogram>

<histogram name="OOBE.RecommendApps.Fetcher.DownloadTime" units="ms"
    expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>The time it takes to fetch the recommended apps.</summary>
</histogram>

<histogram name="OOBE.RecommendApps.Fetcher.ResponseCode"
    enum="HttpResponseCode" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>The response code of fetching the recommended apps.</summary>
</histogram>

<histogram name="OOBE.RecommendApps.Screen.Action"
    enum="RecommendAppsScreenAction" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>The user action on the recommend apps screen.</summary>
</histogram>

<histogram name="OOBE.RecommendApps.Screen.SelectedAppCount" units="apps"
    expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>The number of apps user selected.</summary>
</histogram>

<histogram name="OOBE.RecommendApps.Screen.SelectedRecommendedPercentage"
    units="%" expires_after="2025-03-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>The ratio of selected and recommended apps.</summary>
</histogram>

<histogram name="OOBE.RecommendApps.Screen.State"
    enum="RecommendAppsScreenState" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Whether the reocmmend apps screen is shown.</summary>
</histogram>

<histogram name="OOBE.StatsReportingControllerReportedReset" enum="Boolean"
    expires_after="2025-01-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether `StatsReportingController::IsEnabled()` returned true then later
    returned false during OOBE. Recorded at the end of OOBE flow before the
    first session starts.

    If the device is unmanaged, this metric should only be reported as false. If
    the device is managed, this should report true in very rare occasions (e.g.
    the admin switched the metrics policy from false to true at the time the
    user was going through OOBE).

    Starting from M-130, this histogram is updated to include all users going
    through OOBE instead of only those who had the client ID available at both
    the start and end of OOBE.
  </summary>
</histogram>

<histogram name="OOBE.StepCompletionTime.{OOBELegacyScreenName}" units="ms"
    expires_after="never">
<!-- expires-never: Core metric for monitoring OOBE flow regressions.
    go/oobe-cmp-dd -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Time spent on {OOBELegacyScreenName} OOBE screen.</summary>
  <token key="OOBELegacyScreenName" variants="OOBELegacyScreenName"/>
</histogram>

<histogram name="OOBE.StepCompletionTime2.{CommonScreenName}.{OnboardingType}"
    units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Time spent on {CommonScreenName} OOBE screen. Recorded only after exiting
    the screen.
  </summary>
  <token key="CommonScreenName" variants="CommonScreenName"/>
  <token key="OnboardingType" variants="OnboardingType"/>
</histogram>

<histogram name="OOBE.StepCompletionTime2.{OOBEOnlyScreenName}" units="ms"
    expires_after="2024-09-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Time spent on {OOBEOnlyScreenName} OOBE screen. Recorded only after exiting
    the screen.
  </summary>
  <token key="OOBEOnlyScreenName" variants="OOBEOnlyScreenName"/>
</histogram>

<histogram
    name="OOBE.StepCompletionTimeByExitReason.{OOBEScreenName_ExitReason}"
    units="ms" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Time spent on specific OOBE screen grouped by exit reason.</summary>
  <token key="OOBEScreenName_ExitReason" variants="OOBEScreenName_ExitReason"/>
</histogram>

<histogram name="OOBE.StepShownStatus.Multidevice-setup-screen.Skipped"
    enum="OobeMultideviceScreenSkippedReason" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The reason why the Multidevice setup screen is skipped in OOBE. Recorded
    when determining that the screen should be skipped. This metric breaks down
    the &quot;Not shown&quot; bucket of
    &quot;OOBE.StepShownStatus.Multidevice-setup-screen&quot;.
  </summary>
</histogram>

<histogram name="OOBE.StepShownStatus.{OOBELegacyScreenName}"
    enum="BooleanShown" expires_after="never">
<!-- expires-never: Core metric for monitoring OOBE flow regressions.
    go/oobe-cmp-dd -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether {OOBELegacyScreenName} screen was shown or not. Recorded before
    showing screen.
  </summary>
  <token key="OOBELegacyScreenName" variants="OOBELegacyScreenName"/>
</histogram>

<histogram name="OOBE.StepShownStatus2.{CommonScreenName}.{OnboardingType}"
    enum="BooleanShown" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether {CommonScreenName} screen was shown or not. Recorded before showing
    screen.

    The &quot;Not Shown&quot; bucket represents instances where the user reached
    the point where the screen is usually shown, but the pre-conditions for
    showing the screen was not met.
  </summary>
  <token key="CommonScreenName" variants="CommonScreenName"/>
  <token key="OnboardingType" variants="OnboardingType"/>
</histogram>

<histogram name="OOBE.StepShownStatus2.{OOBEOnlyScreenName}"
    enum="BooleanShown" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether {OOBEOnlyScreenName} screen was shown or not. Recorded before
    showing screen.

    The &quot;Not Shown&quot; bucket represents instances where the user reached
    the point where the screen is usually shown, but the pre-conditions for
    showing the screen was not met.
  </summary>
  <token key="OOBEOnlyScreenName" variants="OOBEOnlyScreenName"/>
</histogram>

<histogram name="OOBE.SyncConsentScreen.Behavior" enum="SyncConsentBehavior"
    expires_after="2024-09-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether the sync consent screen was shown, skipped with sync disabled, or
    skipped with sync enabled. Recorded when the screen is closed. Metrics
    Sync.InitialState2 and OOBE.SyncConsentScreen.SyncEnabled provide more
    detail on the state of the sync engine.
  </summary>
</histogram>

<histogram name="OOBE.SyncConsentScreen.IsCapabilityKnown" enum="BooleanKnown"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Indicates whether account capability information is fetched for user when
    SyncConsent screen is shown.
  </summary>
</histogram>

<histogram name="OOBE.SyncConsentScreen.IsMinorUser" enum="Boolean"
    expires_after="2025-03-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Indicates whether the current user is a minor user (impacted by AADC
    regulations). We cannot use nudge techniques on UI if the user is a minor
    user.
  </summary>
</histogram>

<histogram name="OOBE.SyncConsentScreen.LacrosSyncOptIns.DataType.{OsDataType}"
    enum="BooleanEnabled" expires_after="2025-03-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the selected data type to sync during the OS Sync consent screen in
    OOBE flow with Lacros enabled.
  </summary>
  <token key="OsDataType">
    <variant name="SyncApps"/>
    <variant name="SyncSettings"/>
    <variant name="SyncWallpaper"/>
    <variant name="SyncWifi"/>
  </token>
</histogram>

<histogram name="OOBE.SyncConsentScreen.LacrosSyncOptIns.SyncEverything"
    enum="BooleanEnabled" expires_after="2025-03-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Indicate if sync all os types is enabled for the sync consent OOBE when
    Lacros enabled.
  </summary>
</histogram>

<histogram name="OOBE.SyncConsentScreen.LoadingTime" units="ms"
    expires_after="2024-09-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the amount of time while waiting for sync engine to be initialized,
    before the SyncConsent screen is shown.
  </summary>
</histogram>

<histogram name="OOBE.SyncConsentScreen.ReviewFollowingSetup"
    enum="BooleanChecked" expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether the review following setup box is checked. Recorded when user leaves
    SyncConsent screen.
  </summary>
</histogram>

<histogram name="OOBE.SyncConsentScreen.SyncEnabled" enum="BooleanEnabled"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Final state of the sync service at the end of the sync consent OOBE step.
    The dialog may have been shown or skipped (e.g. by enterprise policy). See
    OOBE.SyncConsentScreen.Behavior for skip reasons.
  </summary>
</histogram>

<histogram name="OOBE.SyncConsentScreen.UserChoice"
    enum="SyncConsentUserChoice" expires_after="2025-03-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Which button the user clicked on the out-of-box sync consent screen.
    Recorded when the user clicks the button, which also closes the screen.
  </summary>
</histogram>

<histogram name="OOBE.ThemeSelectionScreen.SelectedTheme" enum="SelectedTheme"
    expires_after="2025-03-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Theme selected from OOBE theme selection screen. Recorded after the next
    button is clicked.
  </summary>
</histogram>

<histogram name="OOBE.UpdateScreen.CheckTimeout" enum="Boolean"
    expires_after="2025-03-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Indicate if update screen exit with update check timeout.</summary>
</histogram>

<histogram name="OOBE.UpdateScreen.StageTime.{UpdateStage}" units="ms"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Time spent on {UpdateStage} stage of the ChromeOS update. Recorded when the
    stage is done and the next is about to start.
  </summary>
  <token key="UpdateStage" variants="UpdateStage"/>
</histogram>

<histogram name="OOBE.UpdateScreen.UpdateDownloadingTime" units="ms"
    expires_after="2025-03-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Time spent on downloading ChromeOS update when critical updated is found
    during OOBE. Recorded when update is uploaded and ChromeOS device is about
    to restart to apply the update.
  </summary>
</histogram>

<histogram name="OOBE.VersionUpdater.UpdateCheckDuration" units="ms"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the total time it took the version updater to receive a non idle
    state from the update engine.
  </summary>
</histogram>

<histogram name="OOBE.VersionUpdater.UpdateCheckRetriesCount" units="retries"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the total number of retires attempts with VersionUpdater checking
    for update in OOBE (both ConsumerUpdateScreen and CriticalUpdateScreen).
  </summary>
</histogram>

<histogram
    name="OOBE.VersionUpdater.UpdateEngineOperation.{UpdateEngineOperationType}"
    enum="UpdateEngineOperation" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded the update engine operation received during OOBE when the operation
    type is {UpdateEngineOperationType}.
  </summary>
  <token key="UpdateEngineOperationType">
    <variant name="DLCInstall"/>
    <variant name="Update"/>
  </token>
</histogram>

<histogram name="OOBE.WebUI.LoadTime.FirstRun" units="ms" expires_after="never">
<!-- expires-never: Core metric for monitoring OOBE flow regressions.
    go/oobe-cmp-dd -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Time required for ChromeOS to load the First Run WebUI (i.e. out-of-box
    experience). Recorded at most once per Chrome lifetime (if OOBE is shown).
  </summary>
</histogram>

<histogram name="OOBE.WebViewLoader.FirstLoadResult.{WebViewID}"
    enum="OobeWebViewLoadResult" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the first result of loading the webview {WebViewID} in OOBE flow.
    This metric is emitted every time a webview in OOBE is loaded using OOBE
    WebViewLoader. Only the first load result of each load is emitted, ignoring
    the re-load results.
  </summary>
  <token key="WebViewID">
    <variant name="ArcTosView"/>
    <variant name="ConsolidatedConsentArcTosWebview"/>
    <variant name="ConsolidatedConsentCrosEulaWebview"/>
    <variant name="ConsolidatedConsentGoogleEulaWebview"/>
    <variant name="ConsolidatedConsentPrivacyPolicyWebview"/>
    <variant name="GuestTosCrosEulaWebview"/>
    <variant name="GuestTosGoogleEulaWebview"/>
  </token>
</histogram>

<histogram name="OOBE.WelcomeScreen.A11yUserActions"
    enum="WelcomeScreenA11yUserAction" expires_after="2025-05-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures usage of the accessibility options on the welcome screen during
    OOBE. Recorded when user enables or disables any of the accessibility
    options from accessibility menu on the welcome screen.
  </summary>
</histogram>

<histogram name="OOBE.WelcomeScreen.AcceptChromeVoxHint" enum="BooleanEnabled"
    expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether or not the user accepted the ChromeVox hint. Recorded when the user
    interacts with the ChromeVox hint dialog.
  </summary>
</histogram>

<histogram name="OOBE.WelcomeScreen.ChromeVoxHintSpokenSuccess"
    enum="BooleanEnabled" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether or not the ChromeVox hint was successfully spoken. Recorded when the
    ChromeVox hint dialog is shown.

    Warning: this histogram was expired from 2022-04-25 to 2022-08-18 and from
    2022-10-04 to 2023-04-04; data may be missing.
  </summary>
</histogram>

<histogram name="OOBE.WelcomeScreen.UserChangedLocale" enum="Boolean"
    expires_after="2025-03-03">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether or not the user changed the language on the Welcome Screen. Records
    when the user leaves the Welcome Screen if they have changed the locale in
    the UI.
  </summary>
</histogram>

</histograms>

</histogram-configuration>