<!--
Copyright 2024 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 related to
user education along with a detailed description for each histogram.

For best practices on writing histogram descriptions, see
https://chromium.googlesource.com/chromium/src.git/+/HEAD/tools/metrics/histograms/README.md

Please follow the instructions in the OWNERS file in this directory to find a
reviewer. If no OWNERS file exists, please consider signing up at
go/reviewing-metrics (Googlers only), as all subdirectories are expected to
have an OWNERS file. As a last resort you can send the CL to
chromium-metrics-reviews@google.com.
-->

<histogram-configuration>

<histograms>

<variants name="NewBadgeFeature">
  <variant name="AutofillForUnclassifiedFieldsAvailable"
      summary="For address and card field-by-field filling; shown in the
               autofill section of the context menu."/>
  <variant name="Compose"
      summary="For Compose feature; shown in web context menu."/>
  <variant name="ComposeNudge"
      summary="For Compose feature; shown on autofill popup when there is
               saved state to resume.."/>
  <variant name="ComposeProactiveNudge"
      summary="For Compose feature; shown on autofill popup."/>
  <variant name="CrossDeviceSigninFromDesktop"
      summary="Shown on the sign-in with your phone profile menu item."/>
  <variant name="Dictation"
      summary="Dictation entry point in the context menu."/>
  <variant name="Glic" summary="Glic toggle on settings page."/>
  <variant name="GlicAppMenuNewBadge"
      summary="Glic menu item in the three dot menu."/>
  <variant name="GlicContextMenu"
      summary="Promotion for Glic in the context menu."/>
  <variant name="GlicKeyboardShortcutNewBadge"
      summary="Glic keyboard shortcut input on settings page."/>
  <variant name="LensOverlay"
      summary="Lens Overlay entry points in app and web context menus."/>
  <variant name="NewBadgeTestFeature"
      summary="Used for testing purposes only."/>
  <variant name="PasswordManualFallbackAvailable"
      summary="For passwords manual fallback; shown in the context menu."/>
  <variant name="PlusAddressesEnabled"
      summary="For plus address creation; shown in the autofill popup."/>
  <variant name="PlusAddressFallbackFromContextMenu"
      summary="Plus address manual fallback entry point in the context menu."/>
  <variant name="ReadAnythingLineFocus"
      summary="Shown on the Line Focus menu item in Reading Mode settings
               menu."/>
  <variant name="SendTabToSelfEnhancedDesktopUI"
      summary="Promotion for Send to your device in the tab and webpage
               context menus."/>
  <variant name="SendTabToSelfEnhancedDesktopUIv2"
      summary="Promotion for Send to your device in the tab and webpage
               context menus."/>
  <variant name="SideBySide"
      summary="Promotion for Split View in the tab context menu"/>
  <variant name="SideBySideLinkMenuNewBadge"
      summary="Promotion for Split View in the render view context menu when
               right clicking a link."/>
  <variant name="TabstripDeclutter"
      summary="Promotion for Close Unused Tabs in the app menu."/>
  <variant name="VerticalTabsNewBadge"
      summary="Promotion for toggling to the vertical tab strip in the system
               context menu."/>
</variants>

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

<variants name="NtpPromoAction">
  <variant name="Clicked" summary="Promo was clicked"/>
  <variant name="Completed" summary="Promo was completed"/>
  <variant name="Dismissed" summary="Promo was dismissed"/>
  <variant name="Shown" summary="Promo was shown"/>
  <variant name="ShownTopSpot" summary="Promo was shown in the top spot"/>
</variants>

<!-- LINT.ThenChange(//components/user_education/common/ntp_promo/ntp_promo_controller.cc:NtpPromoActions) -->

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

<variants name="NtpPromoIdentifier">
  <variant name="Customization" summary="Customize Chrome promo"/>
  <variant name="Extensions" summary="Extensions promo"/>
</variants>

<!-- LINT.ThenChange(//chrome/browser/user_education/ntp_promo_identifiers.h:NtpPromoIdentifiers) -->

<variants name="TutorialID">
  <variant name="" summary="any tutorial"/>
  <variant name="ContextualTasks"
      summary="the tutorial for the contextual tasks feature"/>
  <variant name="CustomizeChromeSidePanel"
      summary="the tutorial for the customize chrome side panel"/>
  <variant name="LensOverlay" summary="the tutorial for the Lens Overlay"/>
  <variant name="PasswordManager"
      summary="the tutorial for the password manager"/>
  <variant name="SavedTabGroup" summary="the tutorial for the saved tab group"/>
  <variant name="SidePanelReadingList"
      summary="the tutorial for the side panel reading list"/>
  <variant name="SplitView" summary="the tutorial for the split view feature"/>
  <variant name="TabGroup" summary="the tutorial for tab groups"/>
  <variant name="Test" summary="the tutorial used for testing only"/>
  <variant name="VerticalTabs"
      summary="the tutorial for the vertical tabs feature"/>
</variants>

<variants name="WhatsNewModule">
  <variant name="archive"
      summary="the permanent module for What's New archive"/>
  <variant name="ContextualTasks" summary="the module for contextual tasks"/>
  <variant name="FamilyLink" summary="the module for Family Link"/>
  <variant name="GANslate" summary="the module for GANslate"/>
  <variant name="GeminiShortcut" summary="the module for Gemini Shortcut"/>
  <variant name="GeminiSiteSearchShortcut"
      summary="the module for Gemini Site Search Shortcut"/>
  <variant name="GenerativeThemes" summary="the module for Generative Themes"/>
  <variant name="GenerativeTheming"
      summary="the module for Generative Theming"/>
  <variant name="GlitterAIFeaturesVideo"
      summary="the module for Glitter AI Features Video"/>
  <variant name="GlitterAIMode" summary="the module for Glitter AI Mode"/>
  <variant name="GlitterPermissionsAI"
      summary="the module for Glitter Permissions AI"/>
  <variant name="GoogleLens" summary="the module for Google Lens"/>
  <variant name="Googlepayreauth" summary="the module for Google Pay Re-auth"/>
  <variant name="HelpMeWrite" summary="the module for Help Me Write"/>
  <variant name="HistoryEmbeddings"
      summary="the module for History Embeddings Search"/>
  <variant name="iOSLensSWYS"
      summary="the module for iOS Lens Search What You See"/>
  <variant name="LensOverlayTranslateButton"
      summary="the module for Lens Overlay Full Page Translate"/>
  <variant name="LightningVideo" summary="the module for the Lightning Video"/>
  <variant name="Mobilepasswords"
      summary="the module for getting passwords on mobile"/>
  <variant name="PdfInk2"
      summary="the module for PDF Ink Signatures (obsolete)"/>
  <variant name="PdfSaveToDrive" summary="the module for PDF Save to Drive"/>
  <variant name="PerformanceInterventionUI"
      summary="the module for Performance Intervention"/>
  <variant name="ReadAnythingReadAloud" summary="Read Anything Read Aloud"/>
  <variant name="SafetyEnhancedprotection"
      summary="the module for Enhanced Protection"/>
  <variant name="SafetyPasskeys" summary="the module for SafetyPasskeys"/>
  <variant name="SafetySafetycheck" summary="the module for Safety Check"/>
  <variant name="SaveTabGroups" summary="the module for Saved Tab Groups"/>
  <variant name="SearchBoxSuggestions"
      summary="the module for Search Box Suggestions"/>
  <variant name="SideBySide" summary="the module for Split View"/>
  <variant name="SidePanelPinning" summary="the module for Side Panel Pinning"/>
  <variant name="SyncAccountSettings"
      summary="the module for Wallet integration in Autofill (obsolete)"/>
  <variant name="TabGroupsSync"
      summary="the module for Tab Groups that Sync (obsolete)"/>
  <variant name="TabOrganizer"
      summary="the module for Tab Organizer (obsolete)"/>
  <variant name="TestDefaultModule"
      summary="the default module used for testing only"/>
  <variant name="TestModule" summary="the module used for testing only"/>
  <variant name="ToolbarPinning" summary="the module for toolbar pinning"/>
  <variant name="TranslationSettings"
      summary="the module for Translation Settings"/>
  <variant name="VerticalTabsLaunch" summary="the module for Vertical Tabs"/>
  <variant name="WebUIOmniboxAimPopup"
      summary="the module for WebUI Aim Omnibox"/>
</variants>

<histogram name="Tutorial.TabGroup.EditedTitle" enum="BooleanSuccess"
    expires_after="never">
  <owner>dpenning@chromium.org</owner>
  <owner>dfried@chromium.org</owner>
  <summary>
    Records whether the user edited the tab group title during the Tab Groups
    tutorial. During one of the steps, the tutorial asks the user to name the
    new group, but the tutorial will continue if they dismiss the bubble without
    adding a name. We want to know if people follow the instruction or not.
  </summary>
</histogram>

<!-- expires-never: this is a meta-histogram for tracking the performance of
     individual tutorials. Since tutorials are periodically added, this cannot
     be allowed to expire. -->

<histogram name="Tutorial.{TutorialID}.AbortStep" units="int"
    expires_after="never">
  <owner>dpenning@chromium.org</owner>
  <owner>dfried@chromium.org</owner>
  <summary>
    When {TutorialID} is aborted, the step at which the tutorial was aborted.
    Only logged on desktop platforms. Logged each time a tutorial is aborted.
  </summary>
  <token key="TutorialID" variants="TutorialID"/>
</histogram>

<!-- expires-never: this is a meta-histogram for tracking the performance of
     individual tutorials. Since tutorials are periodically added, this cannot
     be allowed to expire. -->

<histogram name="Tutorial.{TutorialID}.Completion" enum="BooleanSuccess"
    expires_after="never">
  <owner>dpenning@chromium.org</owner>
  <owner>dfried@chromium.org</owner>
  <summary>
    When {TutorialID} is ended, whether the tutorial was completed or aborted.
    Only logged on desktop platforms. Logged each time a tutorial is ended.
  </summary>
  <token key="TutorialID" variants="TutorialID"/>
</histogram>

<!-- expires-never: this is a meta-histogram for tracking the performance of
     individual tutorials. Since tutorials are periodically added, this cannot
     be allowed to expire. -->

<histogram name="Tutorial.{TutorialID}.IPHLinkClicked" enum="BooleanSuccess"
    expires_after="never">
  <owner>dpenning@chromium.org</owner>
  <owner>dfried@chromium.org</owner>
  <summary>
    When {TutorialID} button is shown from an IPHLink, whether the user clicks
    to start the tutorial. Only logged on desktop platforms when the user either
    clicks or dismisses the FeaturePromo.
  </summary>
  <token key="TutorialID" variants="TutorialID"/>
</histogram>

<!-- expires-never: this is a meta-histogram for tracking the performance of
     individual tutorials. Since tutorials are periodically added, this cannot
     be allowed to expire. -->

<histogram name="Tutorial.{TutorialID}.StartedFromWhatsNewPage"
    enum="BooleanSuccess" expires_after="never">
  <owner>dpenning@chromium.org</owner>
  <owner>dfried@chromium.org</owner>
  <summary>
    The count of successful starts of the tutorial when {TutorialID} button is
    clicked on the whats new page (called by the Tutorial BrowserCommand). A
    false value correlates to a failure to start the tutorial.
  </summary>
  <token key="TutorialID" variants="TutorialID"/>
</histogram>

<histogram
    name="UserEducation.DesktopToIOSPromo.{PromoType}.BubbleView.Created"
    enum="DesktopToIOSPromoBubbleType" expires_after="2027-02-07">
  <owner>hiramahmood@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    The type of Desktop-to-iOS Promo Bubble that was created (shown) to the
    user.
  </summary>
  <token key="PromoType">
    <variant name="Address" summary="Address"/>
    <variant name="EnhancedBrowsing" summary="Enhanced Browsing"/>
    <variant name="Lens" summary="Lens"/>
    <variant name="Password" summary="Password"/>
    <variant name="Payment" summary="Payment"/>
  </token>
</histogram>

<histogram
    name="UserEducation.DesktopToIOSPromo.{PromoType}.{BubbleType}.Action"
    enum="DesktopToIOSPromoActionType" expires_after="2027-02-07">
  <owner>hiramahmood@google.com</owner>
  <owner>bling-pandamonium@google.com</owner>
  <summary>
    The action taken by the user on the Desktop-to-iOS Promo Bubble.
  </summary>
  <token key="PromoType">
    <variant name="Address" summary="Address"/>
    <variant name="EnhancedBrowsing" summary="Enhanced Browsing"/>
    <variant name="Lens" summary="Lens"/>
    <variant name="Password" summary="Password"/>
    <variant name="Payment" summary="Payment"/>
  </token>
  <token key="BubbleType">
    <variant name="QRCode" summary="QR Code Bubble"/>
    <variant name="Reminder" summary="Reminder Bubble"/>
    <variant name="ReminderConfirmation"
        summary="Reminder Confirmation Bubble"/>
  </token>
</histogram>

<histogram name="UserEducation.MessageNotShown" enum="PromoFailure"
    expires_after="2027-01-17">
  <owner>mickeyburks@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    Records what failure prevented an In-Product Help from being shown to the
    user. The failure defines the state of the User Education system, which can
    be many varieties (e.g. snoozed, disabled blocked by another promo, etc.).
  </summary>
</histogram>

<histogram name="UserEducation.MessageNotShown.DesktopReEngagement.NoBrowser"
    units="tries" expires_after="2025-02-21">
  <owner>dfried@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    Deprecated. Records when the re-engagement promo is not shown because there
    is no eligible browser. This is recorded on a new User Education session.
    The value is the number of times the promo had attempted to show; typical
    values are low (1-2) as the number of retries is limited.
  </summary>
</histogram>

<histogram name="UserEducation.MessageNotShown.TimeInQueue" units="ms"
    expires_after="2026-12-27">
  <owner>dfried@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    Records the amount of time an IPH promo spends in queue before not being
    shown. Is not recorded for promos that are immediately rejected due to
    failed requirements, promos which are explicitly canceled, or promos which
    are actually shown (see UserEducation.MessageShown.TimeInQueue).
  </summary>
</histogram>

<!-- expires-never: this histogram provides general telemetry about the
     performance of active promos in the User Education system. Because the
     roster of promos changes from release to release this metric must be
     tracked as a measure of the current health of the promo ecosystem. -->

<histogram name="UserEducation.MessageShown.Subtype" enum="PromoSubtype"
    expires_after="never">
  <owner>mickeyburks@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    Records what subtype of In-Product Help was shown to the user. The subtype
    dictates special rules for when it can be shown. It can be normal, per-app
    (shown once each in multiple applications), or a legal notice (must be shown
    until explicitly acknowledged by the user).
  </summary>
</histogram>

<histogram name="UserEducation.MessageShown.TimeInQueue" units="ms"
    expires_after="2027-01-24">
  <owner>dfried@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    Records the amount of time an IPH promo spends in queue before being shown.
    Is not recorded if the promo is not shown (see
    UserEducation.MessageNotShown.TimeInQueue).
  </summary>
</histogram>

<!-- expires-never: this histogram provides general telemetry about the
     performance of active promos in the User Education system. Because the
     roster of promos changes from release to release this metric must be
     tracked as a measure of the current health of the promo ecosystem. -->

<histogram name="UserEducation.MessageShown.Type" enum="PromoType"
    expires_after="never">
  <owner>mickeyburks@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    Records what type of In-Product Help was shown to the user. The type defines
    the behavior of the IPH, which can be many varieties (e.g. toast, snooze,
    custom action, etc.).
  </summary>
</histogram>

<!-- expires-never: this is a meta-histogram providing telemetry for "New"
     Badges, which are periodically added and removed as new features are added
     to the browser. If it expires, telemetry for new "New" Badges will no
     longer be collected. -->

<histogram name="UserEducation.NewBadge.{NewBadgeFeature}.MaxShownReached"
    enum="BooleanCompleted" expires_after="never">
  <owner>dfried@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    Recorded when a &quot;New&quot; Badge is shown. Recorded as
    &quot;Completed&quot; if the maximum number of shows has been reached and
    the badge will not show again for this user, otherwise recorded as &quot;Not
    Completed&quot;.
  </summary>
  <token key="NewBadgeFeature" variants="NewBadgeFeature"/>
</histogram>

<!-- expires-never: this is a meta-histogram providing telemetry for "New"
     Badges, which are periodically added and removed as new features are added
     to the browser. If it expires, telemetry for new "New" Badges will no
     longer be collected. -->

<histogram name="UserEducation.NewBadge.{NewBadgeFeature}.MaxUsedReached"
    enum="BooleanCompleted" expires_after="never">
  <owner>dfried@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    Recorded when the feature promoted by a &quot;New&quot; Badge is used,
    typically via entry point promoted by the badge. Recorded as
    &quot;Completed&quot; if the maximum number of uses has been reached and the
    badge will not show again for this user, otherwise recorded as &quot;Not
    Completed&quot;.
  </summary>
  <token key="NewBadgeFeature" variants="NewBadgeFeature"/>
</histogram>

<histogram
    name="UserEducation.NtpPromos.Promos.{NtpPromoIdentifier}.{NtpPromoAction}"
    units="int" expires_after="2027-02-07">
  <owner>cjgrant@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    Records when the NTP {NtpPromoIdentifier} promo sees a {NtpPromoAction}
    event. Logged on desktop platforms.
  </summary>
  <token key="NtpPromoIdentifier" variants="NtpPromoIdentifier"/>
  <token key="NtpPromoAction" variants="NtpPromoAction"/>
</histogram>

<histogram name="UserEducation.NtpPromos.ShowResult" enum="ShowNtpPromosResult"
    expires_after="2027-01-03">
  <owner>dfried@chromium.org</owner>
  <owner>cjgrant@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    Recorded when the NTP decides whether or not to show NTP promos, and why.
    Recorded every time a fresh NTP is loaded. This is intended as a health
    check for the NTP promo system, to better understand why promos do not show.
  </summary>
</histogram>

<!-- expires-never: this is a histogram that provides user activity metrics and
     is useful when correlated with many other histograms, including non-user
     education histograms. -->

<histogram name="UserEducation.Session.ActivePeriodDuration.Min.Under1Hour"
    units="minutes" expires_after="never">
  <owner>mickeyburks@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    Records the time duration of the Active Period of a User Education Session.
    The timer starts when a session starts. The timer is stopped and recorded
    when the current session is ended. Resolution is in minutes and the maximum
    time recorded in this metric is 1 hour.
  </summary>
</histogram>

<!-- expires-never: this is a histogram that provides user activity metrics and
     is useful when correlated with many other histograms, including non-user
     education histograms. -->

<histogram name="UserEducation.Session.ActivePeriodDuration.Min.Under24Hours"
    units="minutes" expires_after="never">
  <owner>mickeyburks@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    Records the time duration of the Active Period of a User Education Session.
    The timer starts when a session starts. The timer is stopped and recorded
    when the current session is ended. Resolution is in minutes and the maximum
    time recorded in this metric is 24 hours.
  </summary>
</histogram>

<!-- expires-never: this is a histogram that provides user activity metrics and
     is useful when correlated with many other histograms, including non-user
     education histograms. -->

<histogram name="UserEducation.Session.IdlePeriodDuration.Hr.Under28Days"
    units="hours" expires_after="never">
  <owner>mickeyburks@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    Records the time duration of the Idle Period of a User Education Session.
    The timer starts when a session ends. The timer is stopped and recorded when
    a new session is started. Resolution in in hours and the maximum time
    recorded in this metric is 28 days.
  </summary>
</histogram>

<!-- expires-never: this is a histogram that provides user activity metrics and
     is useful when correlated with many other histograms, including non-user
     education histograms. -->

<histogram name="UserEducation.Session.IdlePeriodDuration.Min.Under24Hours"
    units="minutes" expires_after="never">
  <owner>mickeyburks@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    Records the time duration of the Idle Period of a User Education Session.
    The timer starts when a session ends. The timer is stopped and recorded when
    a new session is started. Resolution is in minutes and the maximum time
    recorded in this metric is 24 hours.
  </summary>
</histogram>

<!-- expires-never: this is a histogram that provides user activity metrics and
     is useful when correlated with many other histograms, including non-user
     education histograms. -->

<histogram name="UserEducation.Session.LongTermCount" units="count"
    expires_after="never">
  <owner>dfried@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    When a new User Education session starts, records the number of recent
    sessions in the &quot;long-term&quot; window, which is 28 days. This helps
    us understand how frequently new sessions are triggered.
  </summary>
</histogram>

<!-- expires-never: this is a histogram that provides user activity metrics and
     is useful when correlated with many other histograms, including non-user
     education histograms. -->

<histogram name="UserEducation.Session.MonthlyActiveDays" units="count"
    expires_after="never">
  <owner>dfried@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    When a new User Education session starts, records the number of days with at
    least one session in the past month. This helps us understand how frequently
    our product is being used in alignment with standard Google user
    segmentation metrics.
  </summary>
</histogram>

<!-- expires-never: this is a histogram that provides user activity metrics and
     is useful when correlated with many other histograms, including non-user
     education histograms. -->

<histogram name="UserEducation.Session.RecentActiveDays" units="count"
    expires_after="never">
  <owner>dfried@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    When a new User Education session starts, records the number of days with at
    least one session in the past week. This helps us understand how frequently
    our product is being used in alignment with standard Google user
    segmentation metrics.
  </summary>
</histogram>

<!-- expires-never: this is a histogram that provides user activity metrics and
     is useful when correlated with many other histograms, including non-user
     education histograms. -->

<histogram name="UserEducation.Session.RecentActiveWeeks" units="count"
    expires_after="never">
  <owner>dfried@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    When a new User Education session starts, records the number of weeks with
    at least one session in the past month. This helps us understand how
    frequently our product is being used in alignment with standard Google user
    segmentation metrics.
  </summary>
</histogram>

<!-- expires-never: this is a histogram that provides user activity metrics and
     is useful when correlated with many other histograms, including non-user
     education histograms. -->

<histogram name="UserEducation.Session.RecentSuperActiveWeeks" units="count"
    expires_after="never">
  <owner>dfried@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    When a new User Education session starts, records the number of weeks with
    at least four active days in the past month. This helps us understand how
    frequently our product is being used in alignment with standard Google user
    segmentation metrics.
  </summary>
</histogram>

<!-- expires-never: this is a histogram that provides user activity metrics and
     is useful when correlated with many other histograms, including non-user
     education histograms. -->

<histogram name="UserEducation.Session.ShortTermCount" units="count"
    expires_after="never">
  <owner>dfried@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    When a new User Education session starts, records the number of recent
    sessions in the &quot;short-term&quot; window, which is 7 days. This helps
    us understand how frequently new sessions are triggered.
  </summary>
</histogram>

<!-- expires-never: this is a meta-histogram that provides performance data for
     "What's New" page modules. Since the modules change every release, this
     cannot be allowed to expire or no telemetry would be returned for new
     modules. -->

<histogram name="UserEducation.WhatsNew.ExpandMedia.{ModuleName}"
    enum="BooleanYesNo" expires_after="never">
  <owner>mickeyburks@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    Records that the media in the {ModuleName} module on the What's New page was
    expanded/collapsed.
  </summary>
  <token key="ModuleName" variants="WhatsNewModule"/>
</histogram>

<!-- expires-never: since the content of the "What's New" page changes from
     release to release, this is an important health metric for the performance
     of any particular release. It should not be allowed to expire. -->

<histogram name="UserEducation.WhatsNew.ExploreMoreExpanded"
    enum="BooleanYesNo" expires_after="never">
  <owner>mickeyburks@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    Records when the user expands or collapses the &quot;Explore More&quot;
    section of the What's New page.
  </summary>
</histogram>

<!-- expires-never: this is a meta-histogram that provides performance data for
     "What's New" page modules. Since the modules change every release, this
     cannot be allowed to expire or no telemetry would be returned for new
     modules. -->

<histogram name="UserEducation.WhatsNew.ModuleLinkClicked.{ModuleName}"
    enum="WhatsNewModulePosition" expires_after="never">
  <owner>mickeyburks@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    Records that a link or button in the {ModuleName} module on the What's New
    page was clicked. The value indicates the module's position in its section.
  </summary>
  <token key="ModuleName" variants="WhatsNewModule"/>
</histogram>

<!-- expires-never: this is a meta-histogram that provides performance data for
     "What's New" page modules. Since the modules change every release, this
     cannot be allowed to expire or no telemetry would be returned for new
     modules. -->

<histogram name="UserEducation.WhatsNew.ModuleShown.{ModuleName}"
    enum="WhatsNewModulePosition" expires_after="never">
  <owner>mickeyburks@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    Records that the {ModuleName} module on the What's New page was visible to
    the user. The value indicates the module's position in its section.
  </summary>
  <token key="ModuleName" variants="WhatsNewModule"/>
</histogram>

<!-- expires-never: this is a meta-histogram that provides performance data for
     "What's New" page modules. Since the modules change every release, this
     cannot be allowed to expire or no telemetry would be returned for new
     modules. -->

<histogram name="UserEducation.WhatsNew.PauseClicked.{ModuleName}"
    enum="WhatsNewModulePosition" expires_after="never">
  <owner>mickeyburks@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    Records that the user clicked pause on a video in the {ModuleName} module on
    the What's New page. The value indicates the module's position in its
    section.
  </summary>
  <token key="ModuleName" variants="WhatsNewModule"/>
</histogram>

<!-- expires-never: this is a meta-histogram that provides performance data for
     "What's New" page modules. Since the modules change every release, this
     cannot be allowed to expire or no telemetry would be returned for new
     modules. -->

<histogram name="UserEducation.WhatsNew.PlayClicked.{ModuleName}"
    enum="WhatsNewModulePosition" expires_after="never">
  <owner>mickeyburks@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    Records that the user clicked play on a video in the {ModuleName} module on
    the What's New page. The value indicates the module's position in its
    section.
  </summary>
  <token key="ModuleName" variants="WhatsNewModule"/>
</histogram>

<!-- expires-never: since the content of the "What's New" page changes from
     release to release, this is an important health metric for the performance
     of any particular release. It should not be allowed to expire. -->

<histogram name="UserEducation.WhatsNew.QrCodeExpanded" enum="BooleanYesNo"
    expires_after="never">
  <owner>mickeyburks@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    Records when the user expands or collapses the QR code section of the What's
    New page.
  </summary>
</histogram>

<!-- expires-never: this is a meta-histogram that provides performance data for
     "What's New" page modules. Since the modules change every release, this
     cannot be allowed to expire or no telemetry would be returned for new
     modules. -->

<histogram name="UserEducation.WhatsNew.RestartClicked.{ModuleName}"
    enum="WhatsNewModulePosition" expires_after="never">
  <owner>mickeyburks@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    Records that the user clicked restart on a video in the {ModuleName} module
    on the What's New page. The value indicates the module's position in its
    section.
  </summary>
  <token key="ModuleName" variants="WhatsNewModule"/>
</histogram>

<!-- expires-never: this provides usage information about a specific edition of
     the "What's New" page. However, since the content on the page changes every
     edition, this histogram cannot be allowed to expire. -->

<histogram name="UserEducation.WhatsNew.ScrollDepth" enum="ScrollDepthQuartile"
    expires_after="never">
  <owner>mickeyburks@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    Records when the user scrolls past a quartile threshold of the What's New
    page.
  </summary>
</histogram>

<!-- expires-never: this provides usage information about a specific edition of
     the "What's New" page. However, since the content on the page changes every
     edition, this histogram cannot be allowed to expire. -->

<histogram name="UserEducation.WhatsNew.TimeOnPage" units="ms"
    expires_after="never">
  <owner>mickeyburks@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    Records the total amount of time the user spent on the What's New page
    before navigating away.
  </summary>
</histogram>

<!-- expires-never: this provides usage information about a specific edition of
     the "What's New" page. However, since the content on the page changes every
     edition, this histogram cannot be allowed to expire. -->

<histogram name="UserEducation.WhatsNew.TimeOnPageHeartbeat"
    enum="BooleanYesNo" expires_after="never">
  <owner>mickeyburks@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    Records whether the TimeOnPage metric came from the new heartbeat mechanism
    or the legacy system.
  </summary>
</histogram>

<!-- expires-never: this provides performance information about a specific
     edition of the "What's New" page. However, since the content on the page
     changes every edition, this histogram cannot be allowed to expire. -->

<histogram name="UserEducation.WhatsNew.TimeToLoadContent" units="ms"
    expires_after="never">
  <owner>mickeyburks@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    Records the time it took in milliseconds for the embedded What's New page to
    load after the WebUI was created.
  </summary>
</histogram>

<!-- expires-never: this is a meta-histogram that provides performance data for
     "What's New" page modules. Since the modules change every release, this
     cannot be allowed to expire or no telemetry would be returned for new
     modules. -->

<histogram name="UserEducation.WhatsNew.VideoEnded.{ModuleName}"
    enum="WhatsNewModulePosition" expires_after="never">
  <owner>mickeyburks@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    Records that a video in the {ModuleName} module on the What's New page
    ended. The value indicates the module's position in its section.
  </summary>
  <token key="ModuleName" variants="WhatsNewModule"/>
</histogram>

<!-- expires-never: this is a meta-histogram that provides performance data for
     "What's New" page modules. Since the modules change every release, this
     cannot be allowed to expire or no telemetry would be returned for new
     modules. -->

<histogram name="UserEducation.WhatsNew.VideoStarted.{ModuleName}"
    enum="WhatsNewModulePosition" expires_after="never">
  <owner>mickeyburks@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    Records that a video in the {ModuleName} module on the What's New page
    started. The value indicates the module's position in its section.
  </summary>
  <token key="ModuleName" variants="WhatsNewModule"/>
</histogram>

<histogram name="WhatsNew.LoadEvent" enum="WhatsNewLoadEvent"
    expires_after="2027-01-17">
  <owner>mickeyburks@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    Records load events for the What's New page when a load event occurs. This
    tracks how many times loading remote content is attempted, and whether it
    succeeds, fails and results in an error page, fails and redirects to the New
    Tab Page, fails and doesn't open the tab (for preloading), or fails and
    closes the tab. Load is attempted when the page is first opened or on first
    startup after updating to a new milestone. Success or failure will occur
    when the network request completes. Desktop only.
  </summary>
</histogram>

<histogram name="WhatsNew.LoadResponseCode"
    enum="CombinedHttpResponseAndNetErrorCode" expires_after="2027-01-17">
  <owner>mickeyburks@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    Records the net error or HTTP response code of the network request for the
    remote content for the iframe in the What's New page. This request is
    triggered when the What's New page is opened. Desktop only.
  </summary>
</histogram>

<histogram name="WhatsNew.StartupType" enum="WhatsNewStartupType"
    expires_after="2027-01-17">
  <owner>mickeyburks@chromium.org</owner>
  <owner>frizzle-team@google.com</owner>
  <summary>
    Records whether the What's New page should try to show, whether it is
    overridden (e.g. by welcome) and whether the user is ineligible (e.g. due to
    being in incognito mode). Recorded when startup tabs are being determined at
    initialization. Desktop only.
  </summary>
</histogram>

</histograms>

</histogram-configuration>
