<!--
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 NewTabPage histograms
along with a detailed description for each histogram.

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

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

<histogram-configuration>

<histograms>

<variants name="ContentSuggestionCategory">
  <variant name=".Articles" summary="Articles for you"/>
  <variant name=".Bookmarks" summary="Bookmarks"/>
  <variant name=".Contextual" summary="Contextual suggestions"/>
  <variant name=".Downloads" summary="Downloads"/>
  <variant name=".Experimental" summary="Experimental"/>
  <variant name=".ForeignTabs" summary="Open tabs on other devices"/>
  <variant name=".PhysicalWeb" summary="Physical Web pages"/>
  <variant name=".ReadingList" summary="Reading List entries"/>
  <variant name=".RecentTabs" summary="Recent (offline) tabs"/>
</variants>

<variants name="InputComponentType">
  <variant name="Composebox"/>
  <variant name="Realbox"/>
</variants>

<variants name="ModuleToggleState">
  <variant name="TurnOffModule"/>
  <variant name="TurnOnModule"/>
</variants>

<variants name="MostVisitedSurface">
  <variant name="NewTabPage" summary="New Tab Page"/>
  <variant name="Omnibox" summary="Omnibox Everywhere"/>
</variants>

<variants name="NewTabPage_BackgroundService_RequestLatency">
  <variant name=".Failure"
      summary="Failed to fetch data from background service"/>
  <variant name=".Success"
      summary="Successfully fetched from background service"/>
</variants>

<variants name="NewTabPageIconTypes">
  <variant name=".IconsColor"
      summary="Icons using a fallback color (favicon resolution too low)."/>
  <variant name=".IconsGray"
      summary="Icons using a gray color (no favicon available)."/>
  <variant name=".IconsReal"
      summary="Icons using an actual icon published by the site."/>
  <variant name=".Thumbnail"
      summary="Not an icon but a thumbnail/screenshot of the page."/>
  <variant name=".ThumbnailFailed"
      summary="Default gray box in place of a thumbnail/screenshot."/>
</variants>

<variants name="NewTabPageModules">
  <variant name=".chrome_cart" summary="Module ID for Chrome Cart"/>
  <variant name=".drive" summary="Module ID for Google Drive module"/>
  <variant name=".dummy" summary="Module ID for a dummy module"/>
  <variant name=".dummy2" summary="Module ID for another dummy module"/>
  <variant name=".google_calendar" summary="Module ID for Google Calendar"/>
  <variant name=".history_clusters"
      summary="Module ID for History Clusters module"/>
  <variant name=".microsoft_authentication"
      summary="Module ID for Microsoft Authentication"/>
  <variant name=".microsoft_files" summary="Module ID for Microsoft Files"/>
  <variant name=".outlook_calendar" summary="Module ID for Outlook Calendar"/>
  <variant name=".shopping_tasks" summary="Module ID for Shopping Tasks"/>
  <variant name=".tab_groups" summary="Module ID for Tab Group"/>
  <variant name=".tab_resumption" summary="Module ID for Tab Resumption"/>
</variants>

<variants name="NewTabPageProviders">
  <variant name=".allowlist"
      summary="Installed allowlist entry point suggestions."/>
  <variant name=".client" summary="Suggestions coming from the client."/>
  <variant name=".custom_links" summary="User customized links."/>
  <variant name=".enterprise_shortcuts"
      summary="Enterprise-managed shortcuts."/>
  <variant name=".explore" summary="Explore sites related entry points."/>
  <variant name=".homepage" summary="The currently set home page."/>
  <variant name=".popular_baked_in" summary="Baked-in, popular suggestions."/>
  <variant name=".popular_fetched"
      summary="Non-personalized, popular suggestions (fetched from the
               server)."/>
  <variant name=".server" summary="Suggestions coming from the server."/>
</variants>

<histogram name="NewTabPage.ActionAndroid2" enum="NewTabPageActionAndroid2"
    expires_after="2027-02-07">
  <owner>twellington@chromium.org</owner>
  <owner>finkm@chromium.org</owner>
  <summary>
    Actions taken from the new tab page on Android. These actions may navigate
    away from the NTP (e.g. searching in the omnibox or opening a bookmark), but
    can also happen without navigating away from the NTP (e.g. opening a content
    suggestion in a new tab).
  </summary>
</histogram>

<histogram name="NewTabPage.ActionChips.AnyShown" enum="Boolean"
    expires_after="2027-01-17">
  <owner>shomizoe@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logged on the Desktop New Tab Page load. Records true if any Action Chips
    are shown, and false otherwise. In particular, this is incremented in the
    following way: - when the user is not eligible for action chips or has
    disabled them, this is incremented with false. - when the user is eligible
    for action chips, this is incremented if more than 0 action chips are shown.
  </summary>
</histogram>

<histogram name="NewTabPage.ActionChips.Click2" enum="ActionChipIconType"
    expires_after="2027-01-17">
  <owner>giannich@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>Logged when any Action Chips was clicked by the user.</summary>
</histogram>

<histogram name="NewTabPage.ActionChips.Handler.ActionChipsRetrievalLatency"
    units="ms" expires_after="2027-01-03">
  <owner>giannich@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    The time it took for the handler to generate the Action Chips in
    milliseconds. This measurement is taken whenever there is a call to build
    and return the Action Chips, whether due to loading the NTP for the first
    time or due to subsequent user browsing and navigation.
  </summary>
</histogram>

<histogram name="NewTabPage.ActionChips.RequestStatus"
    enum="ActionChipsRequestStatus" expires_after="2027-01-17">
  <owner>shomizoe@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    The high-level status of the request to the action chips suggestions
    service. Logged every time a request is made. This feature is currently
    available only in 1P NTP. A request is sent when the follownig occurs:. -
    NTP is visited/refreshed. - An action chip/row is dismissed. This causes all
    the chips to be reloaded.
  </summary>
</histogram>

<histogram name="NewTabPage.ActionChips.RequestStatus.NetworkError"
    enum="NetErrorCodes" expires_after="2026-07-05">
  <owner>shomizoe@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    The network error code encountered when making a request to the action chips
    suggestions service. Logged when the request status is kNetworkError or
    kHttpError.
  </summary>
</histogram>

<histogram name="NewTabPage.ActionChips.RequestStatus.ParseError"
    enum="ActionChipsParseError" expires_after="2026-07-05">
  <owner>shomizoe@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    The detailed parse failure reason when processing the response from the
    action chips suggestions service. Logged when the request status is
    kParseError.
  </summary>
</histogram>

<histogram name="NewTabPage.ActionChips.Shown2" enum="ActionChipIconType"
    expires_after="2026-12-27">
  <owner>giannich@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>Logged when any Action Chips was shown to the user.</summary>
</histogram>

<histogram name="NewTabPage.ActionChips.SuggestionCount" units="count"
    expires_after="2027-01-17">
  <owner>shomizoe@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    The number of action chips returned by the suggestions service. Logged when
    a request successfully returns suggestions. This feature (action chips) is
    currently available only in 1P NTP. A request is sent when the follownig
    occurs: - NTP is visited/refreshed. - An action chip/row is dismissed. This
    causes all the chips to be reloaded.
  </summary>
</histogram>

<histogram name="NewTabPage.ActionChips.ToggledVisibility"
    enum="BooleanVisible" expires_after="2026-10-25">
  <owner>rtatum@google.com</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logged when New Tab Page Action Chips visibility is toggled via Customize
    Chrome. This toggle is only available in the Customize Chrome Side Panel
    when the user is currently viewing a 1P NTP, is signed in, and is eligible
    for AIM features.
  </summary>
</histogram>

<histogram name="NewTabPage.ActionChips.WebUI.InitialLoadLatency" units="ms"
    expires_after="2027-02-07">
  <owner>giannich@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    The time it took for the Action Chips to initially load on the WebUI in
    milliseconds, from the start of the NTP load until they are fully rendered.
    This measurement is only taken during the first time the Action Chips are
    rendered on the NTP; any subsequent updates to the Action Chips on the same
    NTP due to user navigation are not measured.
  </summary>
</histogram>

<histogram name="NewTabPage.ActioniOS" enum="NewTabPageActioniOS"
    expires_after="2027-02-01">
  <owner>justincohen@chromium.org</owner>
  <owner>gambard@chromium.org</owner>
  <summary>
    Actions taken by users from the new tab page on iOS. These actions may
    navigate away from the NTP (e.g. searching in the omnibox or opening a
    bookmark), but can also happen without navigating away from the NTP (e.g.
    opening a bookmark in a new tab).
  </summary>
</histogram>

<histogram name="NewTabPage.AsHomeSurface" enum="Boolean"
    expires_after="2027-01-24">
  <owner>hanxi@chromium.org</owner>
  <owner>xinyiji@chromium.org</owner>
  <summary>
    Records total impressions of a NTP showing as the home surface, including at
    startup when users haven't used Chrome for 8 hours and via back operations.
    Only records true if shows. This histogram is recorded on tablets only.
  </summary>
</histogram>

<histogram name="NewTabPage.AsHomeSurface.ShownAtStartup" enum="Boolean"
    expires_after="2027-01-24">
  <owner>hanxi@chromium.org</owner>
  <owner>xinyiji@chromium.org</owner>
  <summary>
    Records impressions of a NTP is showing as the home surface at a cold or
    warm startup when users haven't used Chrome for 8 hours, and only records
    true if shows. This histogram is recorded on tablets only.
  </summary>
</histogram>

<histogram name="NewTabPage.BackgroundImageSource"
    enum="NTPBackgroundImageSource" expires_after="2027-01-31">
  <owner>pauladedeji@google.com</owner>
  <owner>danpeng@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Records the type of background image that is set. Only recorded once per
    NTP.
  </summary>
</histogram>

<histogram
    name="NewTabPage.BackgroundService.Collections.RequestLatency{NewTabPage_BackgroundService_RequestLatency}"
    units="ms" expires_after="2026-01-18">
  <owner>pauladedeji@google.com</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    The time it took until a request from the New Tab Page for Backdrop
    Collections was served. {NewTabPage_BackgroundService_RequestLatency}
  </summary>
  <token key="NewTabPage_BackgroundService_RequestLatency"
      variants="NewTabPage_BackgroundService_RequestLatency">
    <variant name=""/>
  </token>
</histogram>

<histogram name="NewTabPage.BackgroundService.Images.Headers.ErrorDetected"
    enum="NTPImageType" expires_after="2026-02-01">
  <owner>pauladedeji@google.com</owner>
  <owner>danpeng@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Records image's type when an error is detected via its URL headers.

    Logged every time Chrome encounters an error when verifying background
    images.
  </summary>
</histogram>

<histogram name="NewTabPage.BackgroundService.Images.Headers.RequestLatency"
    units="ms" expires_after="2025-10-26">
  <owner>pauladedeji@google.com</owner>
  <owner>danpeng@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    The time it takes to download an image's URL headers.

    Logged every time Chrome encounters an error when verifying background
    images.
  </summary>
</histogram>

<histogram name="NewTabPage.BackgroundService.Images.Headers.StatusCode"
    units="HttpResponseCode" expires_after="2025-12-14">
  <owner>pauladedeji@google.com</owner>
  <owner>danpeng@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Records the HTTP response status code of New Tab Page image URL header
    requests.

    Logged every time Chrome encounters an error when verifying background
    images.
  </summary>
</histogram>

<histogram
    name="NewTabPage.BackgroundService.Images.RequestLatency{NewTabPage_BackgroundService_RequestLatency}"
    units="ms" expires_after="2025-11-03">
  <owner>pauladedeji@google.com</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    The time it took until a request from the New Tab Page for Backdrop Images
    was served. {NewTabPage_BackgroundService_RequestLatency}
  </summary>
  <token key="NewTabPage_BackgroundService_RequestLatency"
      variants="NewTabPage_BackgroundService_RequestLatency">
    <variant name=""/>
  </token>
</histogram>

<histogram name="NewTabPage.ChromeWebStoreOpen" enum="NTPChromeWebStoreOpen"
    expires_after="2023-11-18">
  <owner>pauladedeji@google.com</owner>
  <owner>danpeng@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logs where a user opened the Chrome Web Store link from in Customize Chrome.
    Only logged on the 1P NTP. Note that even if the user has Google as their
    default search engine, Incognito and Guest mode NTPs are not considered 1P
    and don't log this histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.Click" enum="NTPElement" expires_after="2027-01-17">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logged when the NTP was clicked. Only logged on the 1P NTP. Be aware that
    this may undercount clicks on nested OGB iframes. Note that even if the user
    has Google as their default search engine, Incognito and Guest mode NTPs are
    not considered 1P and don't log this histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.Collections.IdOnLoad" enum="NTPCollectionId"
    expires_after="2026-11-29">
  <owner>pauladedeji@google.com</owner>
  <owner>danpeng@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    The collection id of user's background image on the NTP. Only recorded once
    per NTP. Note that even if the user has Google as their default search
    engine, Incognito and Guest mode NTPs are not considered 1P and don't log
    this histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.Composebox.FromNTPLoadToSessionStart" units="ms"
    expires_after="2026-12-20">
  <owner>niharm@google.com</owner>
  <owner>rtatum@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Histogram of the time, in milliseconds since navigation start, it took a
    Compose Plate session to start. Recorded when the user clicks on the compose
    entrypoint on desktop. This only gets recorded if the compose button leads
    to a compose session starting (i.e. the composebox opening).
  </summary>
</histogram>

<histogram name="NewTabPage.ComposeEntrypoint.Click.UserTextPresent"
    enum="Boolean" expires_after="2027-02-14">
  <owner>niharm@google.com</owner>
  <owner>ananyaseelam@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Recorded when the user clicks on the compose entrypoint in the desktop NTP
    realbox. Records whether the user had text in the realbox at the time they
    clicked the compose entrypoint. This metric is only recorded when the entry
    point is used to navigate rather than open the compose box.
  </summary>
</histogram>

<histogram name="NewTabPage.ComposeEntrypoint.Shown" enum="BooleanShown"
    expires_after="2027-02-14">
  <owner>niharm@google.com</owner>
  <owner>ananyaseelam@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Recorded when the compose entrypoint is shown in the desktop NTP realbox.
    This is recorded once when the NTP is attached to DOM. It is not shown for
    enterprise if the enterprise policies don't allow AIMode settings.
  </summary>
</histogram>

<histogram name="NewTabPage.Composeplate.Impression" enum="BooleanVisible"
    expires_after="2027-02-14">
  <owner>hanxi@chromium.org</owner>
  <owner>xinyiji@chromium.org</owner>
  <summary>
    Record whether the composeplate row is displayed on the New Tab Page. The
    histogram is logged on New tab page and is Android-only.
  </summary>
</histogram>

<histogram name="NewTabPage.ConcretePage" enum="NewTabPageConcretePage"
    expires_after="2027-02-07">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Records the concrete page loaded when navigating to chrome://newtab.
    Recorded on every NTP load.
  </summary>
</histogram>

<histogram name="NewTabPage.ContentSuggestions.ArticlesListVisible"
    enum="BooleanVisible" expires_after="2027-02-07">
  <owner>freedjm@chromium.org</owner>
  <owner>feed@chromium.org</owner>
  <summary>
    Android: Whether article suggestions on New Tab Page are set visible by user
    on startup and when the visibility is changed.
  </summary>
</histogram>

<histogram
    name="NewTabPage.ContentSuggestions.Opened{ContentSuggestionCategory}"
    units="index" expires_after="never">
<!-- expires-never: key feature metric.  We will need the Opened
     metric as long as we have a feed, and it will be removed with the
     feed code if the feed is ever removed. -->

  <owner>freedjm@chromium.org</owner>
  <owner>feed@chromium.org</owner>
  <summary>
    Android / iOS (M128+): The position of the For-You card on the NTP, that is
    clicked through to the host website of the content. We track the position
    the card had in the list when it was first seen by the user. This tracked
    position can be different from the position observed by the user, e.g. when
    the user dismissed some suggestions from the list or requested more that got
    inserted in the middle of the feed.

    iOS (Pre M128): Reported per click on card in the feed. Does not include
    position information and thus can only be used as a total count of clicks.
    {ContentSuggestionCategory}
  </summary>
  <token key="ContentSuggestionCategory" variants="ContentSuggestionCategory">
    <variant name=""/>
  </token>
</histogram>

<histogram
    name="NewTabPage.ContentSuggestions.Shown{ContentSuggestionCategory}"
    units="index" expires_after="never">
<!-- expires-never: key feature metric.  We will need the Shown
       metric as long as we have a feed, and it will be removed with
       the feed code if the feed is ever removed. -->

  <owner>freedjm@chromium.org</owner>
  <owner>feed@chromium.org</owner>
  <summary>
    Android: The position of a For-You card that was shown on the NTP. A card is
    considered shown when at least 2/3 of its height is visible on the screen.
    For each card, at most one impression is recorded per NTP instance. We track
    the position the card had in the list when it was first seen by the user.
    This tracked position can be different from the position observed by the
    user, e.g. when the user dismissed some suggestions from the list or
    requested more that got inserted in the middle of the feed.
    {ContentSuggestionCategory}
  </summary>
  <token key="ContentSuggestionCategory" variants="ContentSuggestionCategory">
    <variant name=""/>
  </token>
</histogram>

<histogram name="NewTabPage.Count" units="count" expires_after="2027-01-03">
  <owner>kawasin@google.com</owner>
  <owner>clank-performance-team@google.com</owner>
  <summary>
    Count the simultaneous New Tab Page. This is recorded when a new tab page is
    created. The count contains the created page.
  </summary>
</histogram>

<histogram name="NewTabPage.Customization.AllCardsEnabled"
    enum="BooleanEnabled" expires_after="2027-02-07">
  <owner>jhimawan@google.com</owner>
  <owner>clank-app-team@google.com</owner>
  <owner>clank-start@google.com</owner>
  <summary>
    Android: Records when the all cards switch is toggled on or off. The
    histogram is logged each time a user clicks the toggle switch in the NTP
    customization bottom sheet. Each press of the toggle switch is counted as a
    separate count.
  </summary>
</histogram>

<histogram name="NewTabPage.Customization.BottomSheet.Shown"
    enum="NtpCustomizationBottomSheetType" expires_after="2027-01-03">
  <owner>hanxi@chromium.org</owner>
  <owner>yanlinghu@google.com</owner>
  <owner>clank-start@google.com</owner>
  <summary>
    Android: Records the type of bottom sheet each time the customization bottom
    sheet is shown. The histogram is logged when the user opens a NTP
    customization bottom sheet, regardless of whether the bottom sheet has been
    opened before.
  </summary>
</histogram>

<histogram name="NewTabPage.Customization.MvtEnabled" enum="BooleanEnabled"
    expires_after="2027-01-03">
  <owner>hanxi@chromium.org</owner>
  <owner>yanlinghu@google.com</owner>
  <owner>clank-start@google.com</owner>
  <summary>
    Android: Records when the Most Visited Tiles section on the New Tab Page is
    toggled to be visible or invisible. The histogram is logged each time a user
    clicks the toggle switch in the my shortcuts bottom sheet. Each press of the
    toggle switch is counted as a separate count.
  </summary>
</histogram>

<histogram name="NewTabPage.Customization.OpenBottomSheetEntry"
    enum="NtpCustomizationEntryPoint" expires_after="2026-11-01">
  <owner>hanxi@chromium.org</owner>
  <owner>xinyiji@chromium.org</owner>
  <owner>yanlinghu@google.com</owner>
  <owner>clank-start@google.com</owner>
  <summary>
    Android: Records the number of times the initial NTP customization bottom
    sheet is opened by the user, categorized by the specific source of the
    opening action. This initial bottom sheet is the entry point to the NTP
    customization flow. The histogram is logged in response to user clicking on
    the main menu or on the toolbar to open the initial NTP customization bottom
    sheet.
  </summary>
</histogram>

<histogram name="NewTabPage.Customization.Theme.ChromeColor.Click"
    enum="NtpThemeColorId" expires_after="2027-02-07">
  <owner>hanxi@chromium.org</owner>
  <owner>yyanting@google.com</owner>
  <owner>clank-start@google.com</owner>
  <summary>
    Records the last color ID of the Chrome theme colors that was selected by
    the user from the Chrome Colors bottom sheet. This metric is logged when the
    bottom sheet is closed. This metric is logged on Android only.
  </summary>
</histogram>

<histogram name="NewTabPage.Customization.Theme.ChromeColor.TurnOnDailyRefresh"
    enum="BooleanEnabled" expires_after="2027-02-07">
  <owner>hanxi@chromium.org</owner>
  <owner>yyanting@google.com</owner>
  <owner>clank-start@google.com</owner>
  <summary>
    Records whether the user toggles on or off daily refresh for Chrome Colors.
    This metric is logged when the Chrome Colors bottom sheet is closed. This
    metric is logged on Android only.
  </summary>
</histogram>

<histogram
    name="NewTabPage.Customization.Theme.ThemeCollection.CollectionSelected"
    enum="NTPCollectionId" expires_after="2027-02-07">
  <owner>hanxi@chromium.org</owner>
  <owner>yyanting@google.com</owner>
  <owner>clank-start@google.com</owner>
  <summary>
    Records the total number of selections of the theme inside collection sub
    category. This is logged only for the first selection within a specific
    theme collection's view. Navigating to a different collection and making a
    selection will trigger a new record, but multiple selections within the same
    collection view will not. This metric is logged on Android only.
  </summary>
</histogram>

<histogram name="NewTabPage.Customization.Theme.ThemeCollection.CollectionShow"
    enum="NTPCollectionId" expires_after="2027-02-07">
  <owner>hanxi@chromium.org</owner>
  <owner>yyanting@google.com</owner>
  <owner>clank-start@google.com</owner>
  <summary>
    Records the total number of impressions of the theme collection sub
    categories shown in the New Tab Page customization. This histogram is logged
    every time when the theme collection sub category is shown, regardless of
    whether it has been shown before. This metric is logged on Android only.
  </summary>
</histogram>

<histogram
    name="NewTabPage.Customization.Theme.ThemeCollection.DailyRefresh.TurnOff"
    enum="NTPCollectionId" expires_after="2026-12-20">
  <owner>hanxi@chromium.org</owner>
  <owner>yyanting@google.com</owner>
  <owner>clank-start@google.com</owner>
  <summary>
    Records the number of times daily refresh is toggled off for a set of theme
    collection categories. This metric is logged when the single theme
    collection bottom sheet is closed. This metric is logged on Android only.
  </summary>
</histogram>

<histogram
    name="NewTabPage.Customization.Theme.ThemeCollection.DailyRefresh.TurnOn"
    enum="NTPCollectionId" expires_after="2026-12-20">
  <owner>hanxi@chromium.org</owner>
  <owner>yyanting@google.com</owner>
  <owner>clank-start@google.com</owner>
  <summary>
    Records the number of times daily refresh is toggled on for a set of theme
    collection categories. This metric is logged when the single theme
    collection bottom sheet is closed. This metric is logged on Android only.
  </summary>
</histogram>

<histogram name="NewTabPage.Customization.Theme.Type" enum="NtpBackgroundType"
    expires_after="2027-05-10">
  <owner>hanxi@chromium.org</owner>
  <owner>yyanting@google.com</owner>
  <owner>clank-start@google.com</owner>
  <summary>
    Records the type of theme selected for the New Tab Page background. This is
    logged once per cold startup. This metric is logged on Android only.
  </summary>
</histogram>

<histogram
    name="NewTabPage.Customization.Theme.UploadImage.PreviewInteractions"
    enum="NtpCustomizationThemeUploadImagePreviewInteractions"
    expires_after="2027-01-03">
  <owner>hanxi@chromium.org</owner>
  <owner>yyanting@google.com</owner>
  <owner>clank-start@google.com</owner>
  <summary>
    Records the type of user interactions with the theme upload image preview
    dialog. The histogram is logged every time when the user interacts with the
    theme upload image preview dialog. This metric is logged on Android only.
  </summary>
</histogram>

<histogram name="NewTabPage.Customization.Theme.UploadImage.PreviewShow"
    enum="BooleanVisible" expires_after="2027-01-03">
  <owner>hanxi@chromium.org</owner>
  <owner>yyanting@google.com</owner>
  <owner>clank-start@google.com</owner>
  <summary>
    Records the total number of impressions of the theme upload image preview
    dialog. The histogram is logged every time when the theme upload image
    preview dialog is shown, regardless of whether the preview dialog has been
    shown before. This metric is logged on Android only.
  </summary>
</histogram>

<histogram name="NewTabPage.Customization.ThemeTip.BottomSheet.Click"
    enum="NtpCustomizationThemeTipButtonType" expires_after="2027-05-10">
  <owner>yanlinghu@google.com</owner>
  <owner>hanxi@chromium.org</owner>
  <owner>clank-start@google.com</owner>
  <summary>
    Records the user click action (Customize or Cancel) in the NTP theme tip
    bottom sheet. Logged when either button is clicked. This metric is logged on
    Android only.
  </summary>
</histogram>

<histogram
    name="NewTabPage.Customization.UserEngagement.MostVisitedSitesEnabled"
    enum="BooleanVisible" expires_after="2027-01-03">
  <owner>hanxi@chromium.org</owner>
  <owner>yanlinghu@google.com</owner>
  <owner>clank-start@google.com</owner>
  <summary>
    Records the visibility state of the Most Visited Tiles section on the New
    Tab Page. The histogram is logged when Chrome is launched in cold startup.
    This metric is logged on Android only.
  </summary>
</histogram>

<histogram name="NewTabPage.Customization.{ModuleToggleState}"
    enum="ModuleType" expires_after="2027-02-07">
  <owner>hanxi@chromium.org</owner>
  <owner>yanlinghu@google.com</owner>
  <owner>clank-start@google.com</owner>
  <summary>
    Android: Records when a module is activated or deactivated in the NTP Cards
    bottom sheet. The histogram is logged in response to a user clicking on the
    toggle switch on the NTP Cards bottom sheet. Each press of the toggle switch
    is counted as a separate count.
  </summary>
</histogram>

<histogram name="NewTabPage.CustomizeChromeBackgroundAction"
    enum="NTPCustomizeChromeBackgroundAction" expires_after="2026-01-31">
  <owner>pauladedeji@google.com</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Captures the actions performed when configuring a 'Chrome background' image
    on the New Tab Page. Since most actions are sequential, this may indicate
    steps in the configuration process where users drop off.
  </summary>
</histogram>

<histogram name="NewTabPage.CustomizeChromeOpened"
    enum="NTPCustomizeChromeEntryPoint" expires_after="2027-02-07">
  <owner>pauladedeji@google.com</owner>
  <owner>danpeng@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Captures calls to open Customize Chrome on the NTP. Calls can be made to
    open Customize Chrome while it is already open. Opening Customize Chrome
    from inside the side panel is tracked by
    &quot;SidePanel.CustomizeChrome.ShowTriggered&quot;.
  </summary>
</histogram>

<histogram name="NewTabPage.CustomizeChromePromoEligibility"
    enum="NTPCustomizeChromePromoEligibility" expires_after="2027-01-17">
  <owner>kbajkiewicz@google.com</owner>
  <owner>rsult@google.com</owner>
  <owner>chrome-signin-desktop-team@google.com</owner>
  <summary>
    Captures the eligibility for Customize Chrome Promo. Recorded every time the
    1P NTP opens.
  </summary>
</histogram>

<histogram name="NewTabPage.CustomizeChromeSidePanelAction"
    enum="NTPCustomizeChromeSidePanelAction" expires_after="2027-01-03">
  <owner>pauladedeji@google.com</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>rtatum@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Captures the actions performed for customizing Chrome within the Customize
    Chrome Side Panel on the New Tab Page. Since most actions are sequential,
    this may indicate steps in the configuration process where users drop off.
  </summary>
</histogram>

<histogram name="NewTabPage.Customized" enum="NTPCustomizedFeatures"
    expires_after="2027-02-07">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    The New Tab Page features that have been customized by the user; logged per
    NTP load.
  </summary>
</histogram>

<histogram name="NewTabPage.CustomizedShortcuts"
    enum="NTPCustomizedShortcutSettings" expires_after="2027-02-07">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    The New Tab Page shortcut settings that can be customized by the user,
    including shortcut type (i.e. most visited vs custom links) and visibility;
    logged per NTP load.
  </summary>
</histogram>

<histogram name="NewTabPage.CustomizeLocalImageBackgroundAction"
    enum="NTPCustomizeLocalImageBackgroundAction" expires_after="2026-01-31">
  <owner>pauladedeji@google.com</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Captures the actions performed when uploading a local image as the
    background on the New Tab Page. Since most actions are sequential, this may
    indicate steps in the configuration process where users drop off.
  </summary>
</histogram>

<histogram name="NewTabPage.CustomizeShortcutAction"
    enum="NTPCustomizeShortcutAction" expires_after="2027-01-17">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Captures the actions performed when configuring shortcuts on the New Tab
    Page.
  </summary>
</histogram>

<histogram name="NewTabPage.Drive.FileClick" units="index"
    expires_after="2027-01-24">
  <owner>rtatum@google.com</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logged when a user clicks on a file within the Drive Module. The index is
    equal to the index of the file.
  </summary>
</histogram>

<histogram name="NewTabPage.Drive.FileCount" units="count"
    expires_after="never">
<!-- expires-never: Used for Chirp monitoring. -->

  <owner>rtatum@google.com</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logs the number of files returned by ItemSuggest. Logged every time the
    Drive module successfully processed an ItemSuggest response.
  </summary>
</histogram>

<histogram name="NewTabPage.Drive.ItemSuggestRequestResult"
    enum="ItemSuggestRequestResult" expires_after="never">
<!-- expires-never: Used for Chirp monitoring. -->

  <owner>rtatum@google.com</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logs the result of a request to the ItemSuggest API. Logged every time the
    Drive module makes an ItemSuggest request.
  </summary>
</histogram>

<histogram name="NewTabPage.FailToShowHomeSurfaceUI"
    enum="FailToShowHomeSurfaceReason" expires_after="2027-01-24">
  <owner>hanxi@chromium.org</owner>
  <owner>xinyiji@chromium.org</owner>
  <summary>
    Records the reason of why failed to show a home surface UI on the chosen
    NTP. Logged in cold or warm startup when failed to show the home surface UI.
    This histogram is recorded on tablets only.
  </summary>
</histogram>

<histogram name="NewTabPage.FakeSearchBox.ComposeplateButton.Impression2"
    enum="BooleanVisible" expires_after="2027-02-14">
  <owner>hanxi@chromium.org</owner>
  <owner>xinyiji@chromium.org</owner>
  <summary>
    Record the total number of impressions of the fake search box composeplate
    view on the New Tab Page. The histogram is logged on New tab page and is
    Android-only.
  </summary>
</histogram>

<histogram name="NewTabPage.FakeSearchBox.Impression2" enum="BooleanVisible"
    expires_after="2027-02-14">
  <owner>hanxi@chromium.org</owner>
  <owner>xinyiji@chromium.org</owner>
  <summary>
    Record the total number of impressions of the fake search box on the New Tab
    Page. This logs a baseline impression count for the button in the fake
    search box. The event is triggered each time the New Tab Page is shown or
    the button's visibility is updated.The histogram is Android-only.
  </summary>
</histogram>

<histogram name="NewTabPage.Footer.Click" enum="FooterElement"
    expires_after="2026-12-06">
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>Logged when the Footer was clicked.</summary>
</histogram>

<histogram name="NewTabPage.Footer.ContextMenuClicked"
    enum="FooterContextMenuItem" expires_after="2026-01-23">
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>Logged when item in footer's context menu is clicked.</summary>
</histogram>

<histogram name="NewTabPage.Footer.CustomizeChromeOpened"
    enum="FooterCustomizeChromeEntryPoint" expires_after="2026-12-06">
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Captures calls to open Customize Chrome on the Footer. Calls can be made to
    open Customize Chrome while it is already open. Opening Customize Chrome
    from inside the side panel is tracked by
    &quot;SidePanel.CustomizeChrome.ShowTriggered&quot;.
  </summary>
</histogram>

<histogram name="NewTabPage.Footer.NoticeItem" enum="FooterNoticeItem"
    expires_after="2026-11-15">
  <owner>pauladedeji@google.com</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>esalma@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logs type of footer notice shown in New Tab Footer when a new tab page is
    opened.
  </summary>
</histogram>

<histogram name="NewTabPage.Footer.ShownTime" units="ms"
    expires_after="2026-12-13">
  <owner>pauladedeji@google.com</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Histogram of the time, in milliseconds, between when the New Tab Footer was
    triggered to be shown and when it was shown.
  </summary>
</histogram>

<histogram name="NewTabPage.Footer.ToggledVisibility{FooterToggleSource}"
    enum="BooleanVisible" expires_after="2026-12-16">
  <owner>pauladedeji@google.com</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logged when New Tab Footer visibility is toggled via Customize Chrome.
  </summary>
  <token key="FooterToggleSource">
    <variant name=""/>
    <variant name=".Consumer"
        summary="footer visibility is toggled on an unmanaged browser."/>
    <variant name=".Enterprise"
        summary="footer visibility is toggled on a managed browser."/>
  </token>
</histogram>

<histogram name="NewTabPage.Footer.VisibleOnLoad" enum="BooleanVisible"
    expires_after="2027-02-14">
  <owner>pauladedeji@google.com</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Whether New Tab Footer is visible when a new tab page is opened.
  </summary>
</histogram>

<histogram name="NewTabPage.Footer.WebUI.LoadCompletedTime" units="ms"
    expires_after="2027-02-14">
  <owner>pauladedeji@google.com</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    The amount of time between the RenderFrameHost StartProvisionalLoad event
    and the RenderFrameHost DocumentOnLoadCompleted event for the New Tab
    Footer's WebUI.
  </summary>
</histogram>

<histogram name="NewTabPage.Footer.WebUI.LoadDocumentTime" units="ms"
    expires_after="2026-12-13">
  <owner>pauladedeji@google.com</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    The amount of time between the RenderFrameHost StartProvisionalLoad and
    DidFinishDocumentLoad events for the New Tab Footer's WebUI.
  </summary>
</histogram>

<histogram name="NewTabPage.GoogleCalendar.EventClickIndex" units="count"
    expires_after="2025-10-05">
  <owner>rtatum@google.com</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logs the index of a clicked calendar event, with the first event at 0.
    Recorded when the header of an event is clicked, but not when other aspects
    are clicked for an expanded event.
  </summary>
</histogram>

<histogram name="NewTabPage.GoogleCalendar.RequestResult" units="count"
    expires_after="2025-08-06">
  <owner>rtatum@google.com</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logs the total number of events returned by the Google Calendar API. This
    will include events that are filtered out in the client, but not events that
    are filtered out using the request query. Recorded when a response is
    received from the API, which will also include empty successful responses.
  </summary>
</histogram>

<histogram name="NewTabPage.GoogleCalendar.ShownEvents" units="count"
    expires_after="2025-12-07">
  <owner>rtatum@google.com</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logs the number of events shown on the Google Calendar Card after filtering
    the response from the API. This will never be more than the number of events
    the UI supports. Recorded when the events are first populated so it will not
    log when there are 0 results, since the module would not show.
  </summary>
</histogram>

<histogram name="NewTabPage.GoogleCalendar.UserAction" enum="NTPCalendarAction"
    expires_after="2025-10-05">
  <owner>rtatum@google.com</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logs count of each type of user action within the NTP Google Calendar module
    depending on which part of the card was interacted with (event title,
    attachment, etc).
  </summary>
</histogram>

<histogram name="NewTabPage.HasCredentials" enum="BooleanYesNo"
    expires_after="2025-01-31">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logs whether Chrome has valid user credentials for the profile the NTP is
    loading in. Logged when the NTP starts loading. Only logged on the 1P NTP.
    Note that even if the user has Google as their default search engine,
    Incognito and Guest mode NTPs are not considered 1P and don't log this
    histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.Height" units="pixels" expires_after="2027-02-07">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Height of the NTP viewport in CSS pixels. Logged when the NTP loads. Only
    logged on the 1P NTP. Note that even if the user has Google as their default
    search engine, Incognito and Guest mode NTPs are not considered 1P and don't
    log this histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.Images.ShownTime{ImageType}" units="ms"
    expires_after="2026-09-27">
  <owner>pauladedeji@google.com</owner>
  <owner>danpeng@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    The elapsed time between when {ImageType} is requested by the NTP frontend
    and when it is loaded.

    NewTabPage.Images.ShownTime.BackgroundImage is only logged when the NTP
    loads with a background image. It is recorded once per NTP.

    Other {ImageType} metrics are logged every time that {ImageType} is shown.
  </summary>
  <token key="ImageType">
    <variant name=".BackgroundImage"
        summary="background image set when user opens NTP"/>
    <variant name=".CollectionPreviewImage"
        summary="collection preview image in Customize Chrome"/>
    <variant name=".ThemePreviewImage"
        summary="theme preview image in Customize Chrome"/>
  </token>
</histogram>

<histogram name="NewTabPage.Lens.UploadDialog.DialogAction"
    enum="NewTabPageLensUploadDialogActions" expires_after="never">
<!-- expires-never: part of vital metric ChromeSearch.Actions -->

  <owner>nguyenbryan@google.com</owner>
  <owner>yowakita@google.com</owner>
  <owner>bbonnet@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Actions that take place on the Lens upload dialog on the new tab page. These
    may indicate user actions (interactions with the form) or the results of
    user actions (e.g. successful submission or showing an error message). Only
    logged on the 1P NTP. Note that even if the user has Google as their default
    search engine, Incognito and Guest mode NTPs are not considered 1P and don't
    log this histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.Lens.UploadDialog.DialogError"
    enum="NewTabPageLensUploadDialogErrors" expires_after="2023-11-19">
  <owner>nguyenbryan@google.com</owner>
  <owner>yowakita@google.com</owner>
  <owner>bbonnet@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Errors that occur during use of the Lens upload dialog on the new tab
    page.These may indicate user error (e.g. an unusable file or URL) or
    external errors (e.g. a network error). Only logged on the 1P NTP. Note that
    even if the user has Google as their default search engine, Incognito and
    Guest mode NTPs are not considered 1P and don't log this histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.LoadTime{NewTabPageTimings}" units="ms"
    expires_after="2027-01-31">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <improvement direction="LOWER_IS_BETTER"/>
  <summary>
    Histogram of the time, in milliseconds, it took for the NTP to load all of
    its tiles since navigation start. {NewTabPageTimings}
  </summary>
  <token key="NewTabPageTimings">
    <variant name=""/>
    <variant name=".FirstContentfulPaint"
        summary="First contentful paint. Android desktop only. Its
                 functionality is already covered by
                 NewTabPage.LoadTime.FirstContentfulPaint2."/>
    <variant name=".FirstContentfulPaint2" summary="First contentful paint."/>
    <variant name=".LargestContentfulPaint"
        summary="Largest contentful paint."/>
    <variant name=".MostVisited" summary="Loaded client-side suggestions."/>
    <variant name=".NewTab" summary="NTP loaded on a new tab."/>
    <variant name=".Startup" summary="NTP loaded during browser startup."/>
    <variant name=".WebUI3PNTP" summary="Loaded 3P WebUI NTP."/>
    <variant name=".WebUINTP" summary="Loaded WebUI NTP."/>
  </token>
</histogram>

<histogram name="NewTabPage.LogoClick" enum="NewTabPageLogoClick"
    expires_after="never">
<!-- expires-never: part of top-line metric (internal: go/chrome-browser-nsm) -->

  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-analysis-team@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    The number of clicks on the static/call-to-action/animated logo on the NTP.

    This histogram is of special interest to the chrome-analysis-team@. Do not
    change its semantics or retire it without talking to them first.
  </summary>
</histogram>

<histogram name="NewTabPage.LogoDownloadOutcome"
    enum="NewTabPageLogoDownloadOutcome" expires_after="2026-11-15">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Outcome of downloading search provider's logos. It measures whether
    download/parsing is successful, revalidation and parsing work properly, etc.
  </summary>
</histogram>

<histogram name="NewTabPage.LogoDownloadTime" units="ms"
    expires_after="2025-01-31">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    The amount of time it took to download the static logo. This includes
    requests where there was no logo, or where an existing logo was revalidated
    (so no new image data was downloaded), but it does not include failed
    requests.
  </summary>
</histogram>

<histogram name="NewTabPage.LogoImageDownloaded" enum="BooleanFromHTTPCache"
    expires_after="2026-06-01">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    A logo image (static or CTA) was downloaded. Recorded only when the image
    was downloaded and decoded without errors.
  </summary>
</histogram>

<histogram name="NewTabPage.LogoShowniOS.GoogleDSE"
    enum="NewTabPageLogoShowniOSGoogleDSEEnum" expires_after="2027-04-01">
  <owner>jlebel@chromium.org</owner>
  <owner>chrome-mobile-search@google.com</owner>
  <summary>
    Records whenever the Google default search engine logo is displayed in the
    NTP. This metric is recorded only when a NTP is created and it is the only
    NTP open at that moment. If any other NTPs are already open, the metric is
    not recorded. Only measured on iOS.
  </summary>
</histogram>

<histogram name="NewTabPage.LogoShowniOS.ThirdPartyDSE"
    enum="NewTabPageLogoShowniOSThirdPartyDSEEnum" expires_after="2027-04-01">
  <owner>jlebel@chromium.org</owner>
  <owner>chrome-mobile-search@google.com</owner>
  <summary>
    Records whenever the 3rd party default search engine logo is displayed in
    the NTP. This metric is recorded only when a NTP is created and it is the
    only NTP open at that moment. If any other NTPs are already open, the metric
    is not recorded. Only measured on iOS.
  </summary>
</histogram>

<histogram name="NewTabPage.LogoShownTime2" units="ms"
    expires_after="2026-06-01">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    The amount of time between opening an NTP and the logo appearing. Only
    recorded when there is a logo, and only recorded once per NTP.
  </summary>
</histogram>

<histogram name="NewTabPage.LogoShown{NewTabPageLogoShownFromCache}"
    enum="NewTabPageLogoShown" expires_after="2027-02-14">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    The number of static logos and animated logos shown to users. Note that the
    base version of this histogram is recorded both for logos from the cache and
    for fresh logos, so it can be recorded twice per NTP impression.
    {NewTabPageLogoShownFromCache}
  </summary>
  <token key="NewTabPageLogoShownFromCache">
    <variant name=""/>
    <variant name=".Fresh" summary="Fresh logo from network."/>
    <variant name=".FromCache" summary="Logo from cache."/>
  </token>
</histogram>

<histogram name="NewTabPage.MainUi.ShownTime" units="ms"
    expires_after="2027-01-17">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Records the time until the top-level ntp-app Custom Element's |ready|
    callback is called. The intention is to measure how quickly the contents of
    new_tab_page.rollup.js (main JS bundle) are rendered.
  </summary>
</histogram>

<histogram name="NewTabPage.MicrosoftAuth.AuthError"
    enum="NTPMicrosoftAuthError" expires_after="2026-08-23">
  <owner>rtatum@google.com</owner>
  <owner>pauladedeji@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Records whenever an error occurs during Microsoft Auth on the 1P NTP. This
    can only occur when Microsoft Authentication module and another Microsoft
    module are enabled. This can be from any type of authentication recorded as
    having begun in NewTabPage.MicrosoftAuth.AuthStarted.
  </summary>
</histogram>

<histogram name="NewTabPage.MicrosoftAuth.AuthStarted"
    enum="NTPMicrosoftAuthType" expires_after="2026-08-23">
  <owner>rtatum@google.com</owner>
  <owner>pauladedeji@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Records the type of Microsoft Auth (Silent or Popup) whenever Microsoft
    authentication is initiated by the NTP. This is only logged on the 1P NTP
    when the Microsoft Authentication module and another Microsoft module are
    enabled. It can be logged because of an initial login or because an access
    token expires.
  </summary>
</histogram>

<histogram name="NewTabPage.MicrosoftFiles.FileClick" units="index"
    expires_after="2026-03-22">
  <owner>jennserrano@google.com</owner>
  <owner>rtatum@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logs the index of a file within the Microsoft files module, with the first
    file index at 0. Recorded when a file is clicked. Only logged on the 1P NTP.
    Note that even if the user has Google as their default search engine,
    Incognito and Guest mode NTPs are not considered 1P and don't log this
    histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.MicrosoftFiles.RecommendationTypeClick"
    enum="MicrosoftFilesRecommendationType" expires_after="2026-03-22">
  <owner>jennserrano@google.com</owner>
  <owner>rtatum@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logs the type of recommendation for Microsoft Sharepoint/OneDrive files that
    was clicked. Only logged on the 1P NTP. Note that even if the user has
    Google as their default search engine, Incognito and Guest mode NTPs are not
    considered 1P and don't log this histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.MicrosoftFiles.RequestResult"
    enum="MicrosoftFilesRequestResult" expires_after="2026-09-27">
  <owner>jennserrano@google.com</owner>
  <owner>rtatum@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    The result from requesting user files from the Microsoft Graph API. Recorded
    after every request. Only logged on the 1P NTP. Note that even if the user
    has Google as their default search engine, Incognito and Guest mode NTPs are
    not considered 1P and don't log this histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.MicrosoftFiles.ResponseResult" units="count"
    expires_after="2026-09-27">
  <owner>jennserrano@google.com</owner>
  <owner>rtatum@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    The response size retrieved from the Microsoft Graph API. Recorded when a
    successful response is retrieved. A response is successful only if the
    response body for each request contains a list with Microsoft drive item
    info, which can be empty. May be more than the amount of files shown. Only
    logged on the 1P NTP. Note that even if the user has Google as their default
    search engine, Incognito and Guest mode NTPs are not considered 1P and don't
    log this histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.MicrosoftFiles.ShownFiles.{RecommendationType}"
    units="count" expires_after="2026-07-26">
  <owner>jennserrano@google.com</owner>
  <owner>rtatum@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Count of {RecommendationType} file recommendations shown in the
    SharePoint/OneDrive card. Recorded after all file suggestions have been
    created. Note that even if the user has Google as their default search
    engine, Incognito and Guest mode NTPs are not considered 1P and don't log
    this histogram.
  </summary>
  <token key="RecommendationType">
    <variant name="Shared"/>
    <variant name="Trending"/>
    <variant name="Used"/>
  </token>
</histogram>

<histogram name="NewTabPage.MicrosoftFiles.SubstitutionType"
    enum="MicrosoftFilesSubstitutionType" expires_after="2026-01-20">
  <owner>jennserrano@google.com</owner>
  <owner>rtatum@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Records the type of substitution that occurred (whether non-insight files
    are subsituted by trending files and vice versa). Recorded after all file
    suggestions have been combined. Should only be recorded for the
    &quot;Combined&quot; variation that shows both non-insight and trending
    files. Only logged on the 1P NTP. Note that even if the user has Google as
    their default search engine, Incognito and Guest mode NTPs are not
    considered 1P and don't log this histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.MicrosoftFiles.ThrottlingWaitTime" units="seconds"
    expires_after="2026-01-20">
  <owner>jennserrano@google.com</owner>
  <owner>rtatum@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Time in seconds that should be waited out before attempting another request
    to the Microosft Graph API because of throttling. Recorded when the response
    is receieved. Only logged on the 1P NTP. Note that even if the user has
    Google as their default search engine, Incognito and Guest mode NTPs are not
    considered 1P and don't log this histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.Module.Click" enum="ModuleTypeOnStartAndNTP"
    expires_after="2027-02-14">
  <owner>hanxi@chromium.org</owner>
  <owner>xinyiji@chromium.org</owner>
  <summary>
    Record the total count of clicks on different modules of the New tab page.
    For most visited tiles: is recorded when 1) user clicks on most visited
    tiles; 2) long press on most visited tiles to open in a new tab or open in a
    new tab in group or a new incognito tab or to download the link. This is
    consistent with MobileNTPMostVisited. For feeds: is recorded when 1) user
    clicks on feeds; 2) long press on feeds to open in a new tab or open in a
    new incognito tab or check about this source and topic; 3) click the learn
    more button on the top of the feeds section. For omnibox: is recorded every
    time when user uses Omnibox or voice search on Omnibox to navigate. This is
    consistent with MobileOmniboxUse. For tab switcher button: is recorded every
    time when user clicks on the tab switcher button. For home button: is
    recorded when user clicks on the home button. For profile button: is
    recorded when user clicks on the profile button. For doodle logo: is
    recorded every time when user clicks on the doodle and navigates to another
    website. For menu button: is recorded when user clicks on the menu button.
    For composeplate button: is recorded when user clicks on the composeplate
    button on the fake search box. For composeplate view incognito: is recorded
    when user clicks on the incognito button in the composeplate view. For
    composeplate view voice search: is recorded when user clicks on the voice
    search button in the composeplate view. For composeplate view lens: is
    recorded when user clicks on the lens button in the composeplate view. The
    histogram is logged on New tab page and is Android-only.
  </summary>
</histogram>

<histogram name="NewTabPage.Module.LongClick" enum="ModuleTypeOnStartAndNTP"
    expires_after="2026-12-27">
  <owner>hanxi@chromium.org</owner>
  <owner>xinyiji@chromium.org</owner>
  <summary>
    Record the total count of long clicks on different modules of the New tab
    page. For home button: is recorded when user long presses on home button to
    edit homepage. The histogram is logged on New tab page and is Android-only.
  </summary>
</histogram>

<histogram name="NewTabPage.Modules.AutoRemoval" units="count"
    expires_after="2027-01-03">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logged total number of times a module auto-removal event occurred,
    regardless of the number of modules that were auto-removed in that event.
    Only logged on the 1P NTP. Note that even if the user has Google as their
    default search engine, Incognito and Guest mode NTPs are not considered 1P
    and don't log this histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.Modules.AutoRemovalModuleId" enum="NtpModules"
    expires_after="2027-01-03">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logged when a module is automatically removed due to inactivity. Records the
    persistent hash of the module ID. Only logged on the 1P NTP. Note that even
    if the user has Google as their default search engine, Incognito and Guest
    mode NTPs are not considered 1P and don't log this histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.Modules.AutoRemovalSkipped{Reason}"
    enum="NtpModules" expires_after="2027-02-07">
  <owner>giannich@google.com</owner>
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logged when the auto-removal logic is skipped for a module. This can happen
    due to a variety of reasons, and it's the default steady state for modules.
    The recorded metric value is the persistent hash of the module ID.

    Only logged on the 1P NTP. Note that even if the user has Google as their
    default search engine, Incognito and Guest mode NTPs are not considered 1P
    and don't log this histogram.
  </summary>
  <token key="Reason">
    <variant name="" summary="any reason"/>
    <variant name=".Disabled"
        summary="auto-removal skipped due to being disabled for the module"/>
    <variant name=".DisabledAllModules"
        summary="auto-removal skipped due to being disabled for all modules"/>
    <variant name=".ManagedPreference"
        summary="auto-removal skipped due to managed preference"/>
    <variant name=".StaleDaysCount"
        summary="auto-removal skipped due to the staleness threshold"/>
  </token>
</histogram>

<histogram name="NewTabPage.Modules.AutoRemovalStaleDays{NewTabPageModules}"
    units="count" expires_after="2027-02-07">
  <owner>giannich@google.com</owner>
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logged when the staleness count is updated for a module. This is logged only
    once per staleness threshold update interval, which is typically once a day.
    Note that the value being logged is the old staleness count.

    Only logged on the 1P NTP. Note that even if the user has Google as their
    default search engine, Incognito and Guest mode NTPs are not considered 1P
    and don't log this histogram.
  </summary>
  <token key="NewTabPageModules" variants="NewTabPageModules">
    <variant name=""/>
  </token>
</histogram>

<histogram name="NewTabPage.Modules.AutoRemovalUndone" units="count"
    expires_after="2027-01-03">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logged total number of times a module auto-removal was undone by the user,
    regardless of the number of modules that were auto-removed in that event.
    Only logged on the 1P NTP. Note that even if the user has Google as their
    default search engine, Incognito and Guest mode NTPs are not considered 1P
    and don't log this histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.Modules.AutoRemovalUndoneModuleId"
    enum="NtpModules" expires_after="2027-01-03">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logged when module auto-removal was undone. Records the persistent hash of
    the module ID. Only logged on the 1P NTP. Note that even if the user has
    Google as their default search engine, Incognito and Guest mode NTPs are not
    considered 1P and don't log this histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.Modules.DataRequest" enum="NtpModules"
    expires_after="2027-01-17">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Records hashes associated with NTP modules. Logged when an NTP module makes
    a data request to a Chrome-external backend. Only logged on the 1P NTP. Note
    that even if the user has Google as their default search engine, Incognito
    and Guest mode NTPs are not considered 1P and don't log this histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.Modules.Disabled{Interaction}" enum="NtpModules"
    expires_after="2027-02-07">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logged when a module was disabled by {Interaction}. Only logged on the 1P
    NTP.

    Note: If the user has Google as their default search engine, Incognito and
    Guest mode NTPs are not considered 1P and don't log this histogram.

    Note: NewTabPage.Modules.Disabled.Customize is not recorded for pre-M116
    users of Panorama.
  </summary>
  <token key="Interaction">
    <variant name="" summary="any interaction"/>
    <variant name=".Customize" summary="the customize dialog"/>
    <variant name=".ModuleRequest"
        summary="a module request (e.g. action menu in header)"/>
  </token>
</histogram>

<histogram name="NewTabPage.Modules.Dismissed{NewTabPageModules}" units="count"
    expires_after="2026-11-29">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Records the dismissed modules. This is recorded when the user explicitly
    dismisses a module via the module remove button on the New Tab Page. Every
    dismissal emits a 1 which has no inherent meaning aside from a dismissal
    occurred. {NewTabPageModules}
  </summary>
  <token key="NewTabPageModules" variants="NewTabPageModules">
    <variant name=""/>
  </token>
</histogram>

<histogram name="NewTabPage.Modules.EnabledOnNTPLoad{NewTabPageModules}"
    enum="BooleanEnabled" expires_after="2027-02-07">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logs for each NTP module whether it was enabled after the NTP has
    instantiated the modules. Only logged on the 1P NTP. Note that even if the
    user has Google as their default search engine, Incognito and Guest mode
    NTPs are not considered 1P and don't log this histogram.

    Note: In M110, the output of the metric was accidentally modified to record
    all modules whose descriptors where loaded. This was subsequently corrected
    in M114. {NewTabPageModules}
  </summary>
</histogram>

<histogram name="NewTabPage.Modules.Enabled{Interaction}" enum="NtpModules"
    expires_after="2026-01-18">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logged when a module was enabled by {Interaction}. Only logged on the 1P
    NTP.

    Note: If the user has Google as their default search engine, Incognito and
    Guest mode NTPs are not considered 1P and don't log this histogram.

    Note: NewTabPage.Modules.Enabled.Customize is not recorded for pre-M116
    users of Panorama.
  </summary>
  <token key="Interaction">
    <variant name="" summary="any interaction"/>
    <variant name=".Customize" summary="the customize dialog"/>
    <variant name=".Toast" summary="clicking undo on the module disable toast"/>
  </token>
</histogram>

<histogram name="NewTabPage.Modules.Hover" enum="NtpModules"
    expires_after="2026-07-13">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logged when the user hovers on a module. Only logged once per NTP and
    module. Only logged on the 1P NTP. Note that even if the user has Google as
    their default search engine, Incognito and Guest mode NTPs are not
    considered 1P and don't log this histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.Modules.ImpressionRatio{NewTabPageModules}"
    units="perdecage" expires_after="2027-01-03">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Records the maximum amount that any (base histogram) or a particular (sub
    histograms) module was visible in the NTP content's area between load and
    unload of an NTP. The amount is recorded as the perdecage (x/10th) of the
    module's total size. Logged when the NTP unloads, such as via navigating
    somewhere else or closing the tab (switching tabs does not cause an unload).
    Logs a value into the base histogram and the corresponding sub histogram for
    each module that is present. Only logged on the 1P NTP. Note that even if
    the user has Google as their default search engine, Incognito and Guest mode
    NTPs are not considered 1P and don't log these histograms. It is possible
    for this histogram to log a value of 0 if, for instance, the module was
    always more than 90% below the fold. {NewTabPageModules}
  </summary>
  <token key="NewTabPageModules" variants="NewTabPageModules">
    <variant name=""/>
  </token>
</histogram>

<histogram name="NewTabPage.Modules.Impression{NewTabPageModules}" units="ms"
    expires_after="2027-02-07">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Histogram of the time, in milliseconds since navigation start, it took until
    an NTP module header is mostly visible in the window's content area
    (viewport). If the module header is mostly below the page fold, the time
    delta will include the time it takes for the user to scroll the module into
    view. {NewTabPageModules}
  </summary>
  <token key="NewTabPageModules" variants="NewTabPageModules">
    <variant name=""/>
  </token>
</histogram>

<histogram name="NewTabPage.Modules.InfoButtonClicked" enum="NtpModules"
    expires_after="2026-09-13">
  <owner>pauladedeji@google.com</owner>
  <owner>danpeng@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Records the module's id when a user clicks the info button in the module's
    header. Only logged on the 1P NTP. Note that even if the user has Google as
    their default search engine, Incognito and Guest mode NTPs are not
    considered 1P and don't log this histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.Modules.InstanceCount" units="count"
    expires_after="2027-01-24">
  <owner>romanarora@chromium.org</owner>
  <owner>danpeng@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    The number of rendered module instances on the NTP. Only logged on the 1P
    NTP. Note that even if the user has Google as their default search engine,
    Incognito and Guest mode NTPs are not considered 1P and don't log this
    histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.Modules.LoadDuration{NewTabPageModules}" units="ms"
    expires_after="2027-02-07">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Histogram of the time in milliseconds it took for an NTP module to load.
    {NewTabPageModules}
  </summary>
  <token key="NewTabPageModules" variants="NewTabPageModules">
    <variant name=""/>
  </token>
</histogram>

<histogram name="NewTabPage.Modules.LoadedAfterNTPLoad" units="ms"
    expires_after="2026-07-13">
  <owner>pauladedeji@google.com</owner>
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Histogram of the time, in milliseconds since navigation start, it took until
    an NTP module loaded.

    Logged for modules that were loaded after the initial NTP load.
  </summary>
</histogram>

<histogram name="NewTabPage.Modules.LoadedModulesCount" units="count"
    expires_after="2027-01-24">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    The number of rendered modules in the NTP. Only logged on the 1P NTP. Note
    that even if the user has Google as their default search engine, Incognito
    and Guest mode NTPs are not considered 1P and don't log this histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.Modules.LoadedOnNTPLoad" units="ms"
    expires_after="2026-07-13">
  <owner>pauladedeji@google.com</owner>
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Histogram of the time, in milliseconds since navigation start, it took until
    an NTP module loaded.

    Logged for modules that were loaded during the initial NTP load.
  </summary>
</histogram>

<histogram name="NewTabPage.Modules.LoadedWith.{NtpModule}" enum="NtpModules"
    expires_after="2026-07-26">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    This records what other modules are loaded with {NtpModule} together. Logged
    when the module is loaded. Only logged on the 1P NTP. Note that even if the
    user has Google as their default search engine, Incognito and Guest mode
    NTPs are not considered 1P and don't log this histogram.
  </summary>
  <token key="NtpModule">
    <variant name="chrome_cart" summary="the Chrome Cart module"/>
    <variant name="drive" summary="the Drive module"/>
    <variant name="microsoft_authentication"
        summary="the Microsoft Authentication module"/>
    <variant name="microsoft_files" summary="the Microsoft Files module"/>
    <variant name="outlook_calendar" summary="the Outlook Calendar module"/>
    <variant name="shopping_tasks" summary="the Shopping Tasks module"/>
    <variant name="tab_resumption" summary="the Tab Resumption module"/>
  </token>
</histogram>

<histogram name="NewTabPage.Modules.Loaded{NewTabPageModules}" units="ms"
    expires_after="2027-02-07">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>yyushkina@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Histogram of the time, in milliseconds since navigation start, it took until
    an NTP module loaded.

    Logged by all modules, regardless of if they loaded at or before NTP load.
    {NewTabPageModules}
  </summary>
  <token key="NewTabPageModules" variants="NewTabPageModules">
    <variant name=""/>
  </token>
</histogram>

<histogram name="NewTabPage.Modules.ReloadedModulesCount" units="count"
    expires_after="2026-07-27">
  <owner>pauladedeji@google.com</owner>
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    The number of rendered modules in the NTP after the modules container has
    reloaded, which usually occurs when a module is enabled after the user has
    previously viewed modules. Only logged on the 1P NTP. Note that even if the
    user has Google as their default search engine, Incognito and Guest mode
    NTPs are not considered 1P and don't log this histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.Modules.ReloadedWith.{NtpModule}" enum="NtpModules"
    expires_after="2026-07-13">
  <owner>pauladedeji@google.com</owner>
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    This records what other modules are loaded with {NtpModule} together. Logged
    when the module container reloads, which usually occurs when a module is
    enabled after the user has previously viewed modules. Only logged on the 1P
    NTP. Note that even if the user has Google as their default search engine,
    Incognito and Guest mode NTPs are not considered 1P and don't log this
    histogram.
  </summary>
  <token key="NtpModule">
    <variant name="chrome_cart" summary="the Chrome Cart module"/>
    <variant name="drive" summary="the Drive module"/>
    <variant name="microsoft_authentication"
        summary="the Microsoft Authentication module"/>
    <variant name="microsoft_files" summary="the Microsoft Files module"/>
    <variant name="outlook_calendar" summary="the Outlook Calendar module"/>
    <variant name="shopping_tasks" summary="the Shopping Tasks module"/>
    <variant name="tab_resumption" summary="the Tab Resumption module"/>
  </token>
</histogram>

<histogram name="NewTabPage.Modules.Restored{NewTabPageModules}" units="count"
    expires_after="2026-05-24">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Records the restord modules. This is recorded when the user explicitly
    restores a previously dismissed module via the toast on the New Tab Page.
    Every restoral emits a 1 which has no inherent meaning aside from a restoral
    occurred. {NewTabPageModules}
  </summary>
  <token key="NewTabPageModules" variants="NewTabPageModules">
    <variant name=""/>
  </token>
</histogram>

<histogram name="NewTabPage.Modules.ShownTime" units="ms"
    expires_after="2026-07-05">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Histogram of the time, in milliseconds since navigation start, it took until
    the modules showed up on the NTP.
  </summary>
</histogram>

<histogram name="NewTabPage.Modules.Usage{NewTabPageModules}" units="count"
    expires_after="never">
<!-- expires-never: part of vital metric ChromeSearch.Actions -->

  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Emitted each time a user action within an NTP module launches a module's
    feature. Every usage emits a 1 which has no inherent meaning aside from a
    usage occurred.

    Note for the Journeys module: Pre-M115, we only considered visit and
    suggestion clicks as usage. Since M115, we consider visit, suggestion,
    &quot;Show all&quot; and &quot;Open all in tab group&quot; as usage.
    {NewTabPageModules}
  </summary>
  <token key="NewTabPageModules" variants="NewTabPageModules">
    <variant name=""/>
  </token>
</histogram>

<histogram name="NewTabPage.Modules.VisibleOnNTPLoad" enum="BooleanVisible"
    expires_after="2027-02-07">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>Logs whether the NTP modules are visible at NTP load.</summary>
</histogram>

<histogram name="NewTabPage.MostVisited.AutoRemovalSkipped"
    enum="NtpShortcutsAutoRemovalReason" expires_after="2027-01-03">
  <owner>giannich@google.com</owner>
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logged when the auto-removal logic is skipped for the most visited tiles.
    This can happen due to a variety of reasons, and it's the default steady
    state for the most visited tiles.

    Only logged on the 1P NTP. Note that even if the user has Google as their
    default search engine, Incognito and Guest mode NTPs are not considered 1P
    and don't log this histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.MostVisited.AutoRemovalStaleDays" units="count"
    expires_after="2027-01-03">
  <owner>giannich@google.com</owner>
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logged when the staleness count is updated for most visited tiles. This is
    logged only once per staleness threshold update interval, which is typically
    once a day. Note that the value being logged is the old staleness count.

    Only logged on the 1P NTP. Note that even if the user has Google as their
    default search engine, Incognito and Guest mode NTPs are not considered 1P
    and don't log this histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.MostVisited.DeciScore.{TileIndex}.Local"
    units="deciscore" expires_after="2025-08-10">
  <owner>fredmello@chromium.org</owner>
  <owner>huangs@chromium.org</owner>
  <summary>
    Histogram for most visited raw scores multiplied by 10 (to capture one
    decimal digit), grouped by tile index. This is logged whenever the NTP
    scores and ranks most visited suggestions. The value is useful for algorithm
    improvements to enhance the relevance of tiles.
  </summary>
  <token key="TileIndex">
    <variant name="0"/>
    <variant name="1"/>
    <variant name="2"/>
    <variant name="3"/>
    <variant name="4"/>
    <variant name="5"/>
    <variant name="6"/>
    <variant name="7"/>
    <variant name="8"/>
    <variant name="9"/>
  </token>
</histogram>

<histogram name="NewTabPage.MostVisited.ReselectMatch.{StrictnessSuffix}"
    enum="MvtReselectUrlMatchResult" expires_after="2025-08-24">
  <owner>fredmello@chromium.org</owner>
  <owner>huangs@chromium.org</owner>
  <summary>
    For each strict / lax match arm, histogram of the best matching result from
    &quot;key&quot; URL (recommended by a Most Visited Tile) to
    &quot;candidate&quot; URLs (from Tabs). Recorded when a MVT is clicked and
    matching is performed. Only measured on Android.
  </summary>
  <token key="StrictnessSuffix">
    <variant name="LaxUpToPath"/>
    <variant name="LaxUpToQuery"/>
    <variant name="LaxUpToRef"/>
    <variant name="Strict"/>
  </token>
</histogram>

<histogram name="NewTabPage.MostVisited.ShowActionsToggleClicked"
    enum="MostVisitedShowActions" expires_after="2027-03-17">
  <owner>adamyao@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logs clicks on the &quot;Show more&quot; and &quot;Show less&quot; buttons
    in the Most Visited component. Logged when the show more or show less action
    chip is clicked.
  </summary>
</histogram>

<histogram name="NewTabPage.MostVisitedMigratedDefaultAppType"
    enum="TypeOfDeletedMostVisitedApp" expires_after="2026-06-02">
  <owner>dibyapal@chromium.org</owner>
  <owner>pwa-team@google.com</owner>
  <summary>
    This records the type of most visited app on the ntp-tile, whether it is
    from a default app or a custom link. Triggered as soon as a migrated default
    app or custom link is deleted. Warning: this histogram was expired from
    2024-06-02 through 2025-05-12, data may be missing.
  </summary>
</histogram>

<histogram name="NewTabPage.NavigationOrActivationToFirstContentfulPaint"
    units="ms" expires_after="2027-01-17">
  <owner>robertlin@chromium.org</owner>
  <owner>chrome-prerendering@google.com</owner>
  <summary>
    Measures the time from navigation start or prerender activation to first
    contentful paint for NTP-initiated navigations. The metrics is recorded when
    painting timing update events are dispatched by
    PageLoadMetricsUpdateDispatcher. Refer to
    NewTabPageInitiatedPageLoadMetricsObserver::OnFirstContentfulPaintInPage()
    for details.
  </summary>
</histogram>

<histogram name="NewTabPage.NavigationOrActivationToFirstMeaningfulPaint"
    units="ms" expires_after="2027-02-07">
  <owner>robertlin@chromium.org</owner>
  <owner>chrome-prerendering@google.com</owner>
  <summary>
    Measures the time from navigation start or prerender activation to first
    meaningful paint for NTP-initiated navigations. The metrics is recorded when
    painting timing update events are dispatched by
    PageLoadMetricsUpdateDispatcher. Refer to
    NewTabPageInitiatedPageLoadMetricsObserver::OnFirstMeaningfulPaintInMainFrameDocument()
    for details.
  </summary>
</histogram>

<histogram name="NewTabPage.NavigationOrActivationToLargestContentfulPaint"
    units="ms" expires_after="2027-01-17">
  <owner>robertlin@chromium.org</owner>
  <owner>chrome-prerendering@google.com</owner>
  <summary>
    Measures the time from navigation start or prerender activation to largest
    contentful paint for NTP-initiated navigations. The metrics is recorded when
    painting timing update events are dispatched by
    PageLoadMetricsUpdateDispatcher. Refer to
    NewTabPageInitiatedPageLoadMetricsObserver::OnComplete() for details.
  </summary>
</histogram>

<histogram
    name="NewTabPage.OneGoogleBar.RequestLatency{NewTabPage_OneGoogleBar_RequestLatency}"
    units="ms" expires_after="2027-01-03">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    The time it took until a request from the New Tab page for the OneGoogleBar
    script was served. Recorded only on the local NTP.
    {NewTabPage_OneGoogleBar_RequestLatency}
  </summary>
  <token key="NewTabPage_OneGoogleBar_RequestLatency">
    <variant name=""/>
    <variant name=".Failure" summary="Failed to fetch OneGoogleBar"/>
    <variant name=".Success" summary="Successfully fetched OneGoogleBar"/>
  </token>
</histogram>

<histogram name="NewTabPage.OneGoogleBar.ShownTime" units="ms"
    expires_after="2027-02-21">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Histogram of the time, in milliseconds since navigation start, it took until
    the OneGoogleBar showed up on the NTP. Recorded only on the local NTP.
  </summary>
</histogram>

<histogram name="NewTabPage.OpenedInNewTab" enum="TabLaunchType"
    expires_after="2027-01-17">
  <owner>eirage@chromium.org</owner>
  <owner>hanxi@chromium.org</owner>
  <summary>
    Records the TabLaunchType enum when a New Tab Page (NTP) is created in a new
    tab. This histogram is logged when a new tab is created, including manually
    created New Tab or the initial tab at Chrome startup. This histogram is
    Android-only.
  </summary>
</histogram>

<histogram name="NewTabPage.OutlookCalendar.EventClickIndex" units="count"
    expires_after="2026-01-20">
  <owner>jennserrano@google.com</owner>
  <owner>rtatum@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logs the index of a clicked calendar event on the Outlook Calendar module,
    with the first event at 0. Recorded when the header of an event is clicked,
    but not when other aspects are clicked for an expanded event. Only logged on
    the 1P NTP. Note that even if the user has Google as their default search
    engine, Incognito and Guest mode NTPs are not considered 1P and don't log
    this histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.OutlookCalendar.RequestResult"
    enum="OutlookCalendarRequestResult" expires_after="2026-08-30">
  <owner>jennserrano@google.com</owner>
  <owner>rtatum@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    The result from requesting calendar events from the Microsoft Graph API.
    Recorded after every request. Only logged on the 1P NTP. Note that even if
    the user has Google as their default search engine, Incognito and Guest mode
    NTPs are not considered 1P and don't log this histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.OutlookCalendar.ResponseResult" units="count"
    expires_after="2026-09-06">
  <owner>jennserrano@google.com</owner>
  <owner>rtatum@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    The number of calendar events retrieved from the Microsoft Graph API.
    Recorded when a successful response is retrieved. A response is successful
    only if it contains a list of events, which can be empty. May be more than
    the amount of events shown. Only logged on the 1P NTP. Note that even if the
    user has Google as their default search engine, Incognito and Guest mode
    NTPs are not considered 1P and don't log this histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.OutlookCalendar.ShownEvents" units="count"
    expires_after="2026-05-24">
  <owner>jennserrano@google.com</owner>
  <owner>rtatum@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logs the number of events shown on the Outlook Calendar module after
    filtering the response from the Microsoft Graph API. This will never be more
    than the number of events the UI supports. Recorded when the events are
    first populated so it will not log when there are 0 results, since the
    module would not show. Only logged on the 1P NTP. Note that even if the user
    has Google as their default search engine, Incognito and Guest mode NTPs are
    not considered 1P and don't log this histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.OutlookCalendar.ThrottlingWaitTime" units="seconds"
    expires_after="2026-01-20">
  <owner>jennserrano@google.com</owner>
  <owner>rtatum@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Time in seconds that should be waited out before attempting another request
    to the Microosft Graph API because of throttling. Recorded when the response
    is receieved. Only logged on the 1P NTP. Note that even if the user has
    Google as their default search engine, Incognito and Guest mode NTPs are not
    considered 1P and don't log this histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.OutlookCalendar.UserAction"
    enum="NTPCalendarAction" expires_after="2026-01-20">
  <owner>jennserrano@google.com</owner>
  <owner>rtatum@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logs count of each type of user action within the Outlook Calendar module,
    depending on which part of the card was interacted with (event title,
    attachment, etc). Only logged on the 1P NTP. Note that even if the user has
    Google as their default search engine, Incognito and Guest mode NTPs are not
    considered 1P and don't log this histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.PrerenderNavigationToActivation" units="ms"
    expires_after="2026-09-24">
  <owner>robertlin@chromium.org</owner>
  <owner>chrome-prerendering@google.com</owner>
  <summary>
    Measures the time from the prerendering navigation starts to prerender
    activation. This metrics is recorded upon prerneder activation. Refer to
    NewTabPageInitiatedPageLoadMetricsObserver::DidActivatePrerenderedPage() for
    details.
  </summary>
</histogram>

<histogram name="NewTabPage.Promos.DismissAction" enum="NtpPromoDismissAction"
    expires_after="2026-07-07">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logs when action is taken on promo e.g. dismissal or restoration. Only
    logged on the 1P NTP. Note that even if the user has Google as their default
    search engine, Incognito and Guest mode NTPs are not considered 1P and don't
    log this histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.Promos.LinkClicked" units="count"
    expires_after="never">
<!-- expires-never: part of top-line metric (internal: go/chrome-browser-nsm) -->

  <owner>dbeam@chromium.org</owner>
  <owner>yyushkina@chromium.org</owner>
  <owner>chrome-analysis-team@google.com</owner>
  <summary>
    Emitted each time a promo linked is clicked on the local NTP.

    This histogram is of special interest to the chrome-analysis-team@. Do not
    change its semantics or retire it without talking to them first.
  </summary>
</histogram>

<histogram name="NewTabPage.Promos.PromoBrowserCommand"
    enum="PromoBrowserCommandEnum" expires_after="2026-09-06">
  <owner>mahmadi@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logs how many times various promo browser commands are executed. Triggered
    when a supported and enabled promo browser commandis executed by the
    BrowserCommandHandler.
  </summary>
</histogram>

<histogram
    name="NewTabPage.Promos.RequestLatency2{NewTabPage_Promos_RequestLatency2}"
    units="ms" expires_after="2025-01-05">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    The time it took until a request from the New Tab page for the middle slot
    promo script was served. Recorded on the local and WebUI NTP.
    {NewTabPage_Promos_RequestLatency2}
  </summary>
  <token key="NewTabPage_Promos_RequestLatency2">
    <variant name=""/>
    <variant name=".Failure" summary="Failed to fetch middle-slot Promo data"/>
    <variant name=".SuccessWithoutPromo"
        summary="Successfully fetched middle-slot Promo data which did not
                 contain a promo"/>
    <variant name=".SuccessWithPromo"
        summary="Successfully fetched middle-slot Promo data which contained
                 a promo"/>
  </token>
</histogram>

<histogram name="NewTabPage.Promos.ShownTime" units="ms"
    expires_after="2026-07-07">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Histogram of the time, in milliseconds since navigation start, it took until
    a middle slot promo showed up on the NTP. Recorded on the local and WebUI
    NTP.
  </summary>
</histogram>

<histogram name="NewTabPage.Realbox.Paste" units="count"
    expires_after="2027-08-01">
  <owner>sophiechang@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Counts the number of paste actions performed in the New Tab Page realbox.
    Recorded every time the user pastes into the realbox.
  </summary>
</histogram>

<histogram name="NewTabPage.SuggestTiles.DeletedTileType"
    enum="SuggestTileType" expires_after="2027-01-03">
  <owner>ender@google.com</owner>
  <owner>mahmadi@chromium.org</owner>
  <owner>chrome-omnibox-team@google.com</owner>
  <summary>
    Records the type of the SuggestTile that the user deleted. Most Visited URLs
    record a URL, and Organic Repeatable Queries record a Search type.

    Recorded every time the user initiates deletion of a suggest tile, that
    results with tile removal. Not recorded if the user chooses to cancel the
    action.
  </summary>
</histogram>

<histogram name="NewTabPage.SuggestTiles.SelectedTileType"
    enum="SuggestTileType" expires_after="2027-01-03">
  <owner>ender@google.com</owner>
  <owner>mahmadi@chromium.org</owner>
  <owner>chrome-omnibox-team@google.com</owner>
  <summary>
    Records the type of the SuggestTile that the user interacted with. Most
    Visited URLs record a URL, and Organic Repeatable Queries record a Search
    type.

    Recorded every time the user selects the tile to initiate navigation, even
    if the navigation could not be completed (eg. target site did not load).
  </summary>
</histogram>

<histogram name="NewTabPage.TabGroups.ClickTabGroupIndex" units="index"
    expires_after="2026-12-31">
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Records the position of the tab group that was clicked on the NTP Tab Groups
    module.
  </summary>
</histogram>

<histogram name="NewTabPage.TabGroups.CreateNewTabGroup{ExperimentalState}"
    units="count" expires_after="2026-12-31">
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Records clicks on the Create New Tab Group button from {ExperimentalState}
    in the Tab Groups module.
  </summary>
  <token key="ExperimentalState">
    <variant name=""/>
    <variant name=".SteadyState"/>
    <variant name=".ZeroState"/>
  </token>
</histogram>

<histogram name="NewTabPage.TabResumption.ClickIndex" units="index"
    expires_after="2027-02-07">
  <owner>mfacey@google.com</owner>
  <owner>romanarora@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Records the position of the tab that was clicked on the NTP Tab Resumption
    module. Only logged on the 1P NTP and when the Tab Resumption module is
    enabled.
  </summary>
</histogram>

<histogram name="NewTabPage.TabResumption.ResultStatus"
    enum="NtpTabResumeResultStatus" expires_after="2026-08-09">
  <owner>mfacey@google.com</owner>
  <owner>romanarora@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Records result status of the fetcher. Only logged on the 1P NTP and when the
    Tab Resumption module is enabled.
  </summary>
</histogram>

<histogram name="NewTabPage.TabResumption.SeeMoreClick" units="count"
    expires_after="2025-03-09">
  <owner>mfacey@google.com</owner>
  <owner>romanarora@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Records the clicks on the See More button in the Tab Resumption module. Only
    logged on the 1P NTP and when the Tab Resumption module is enabled.
  </summary>
</histogram>

<histogram name="NewTabPage.TabResumption.TabCount" units="count"
    expires_after="2025-01-12">
  <owner>mfacey@google.com</owner>
  <owner>romanarora@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Records the number of tabs shown in the Tab Resumption module. Only logged
    on the 1P NTP and when the Tab Resumption module is enabled.
  </summary>
</histogram>

<histogram name="NewTabPage.TabResumption.TimeElapsedSinceLastVisit" units="ms"
    expires_after="2026-05-24">
  <owner>mfacey@google.com</owner>
  <owner>romanarora@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Records the time elapsed since the url visit that was clicked was last
    visited. Only logged on the 1P NTP and when the Tab Resumption module is
    enabled.
  </summary>
</histogram>

<histogram name="NewTabPage.TabResumption.URLVisitAggregateDataTypeDisplayed"
    enum="NtpURLVisitAggregateTypes" expires_after="2026-06-07">
  <owner>mfacey@google.com</owner>
  <owner>romanarora@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Records the data type of each entry shown in the tab resumption module.
    Logged when the module is shown on the NTP. Only logged on the 1P NTP and
    when the Tab Resumption module is enabled.
  </summary>
</histogram>

<histogram name="NewTabPage.TabResumption.Visit.ClickSource"
    enum="NtpURLVisitAggregateTypes" expires_after="2026-08-30">
  <owner>mfacey@google.com</owner>
  <owner>romanarora@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Records the source (history vs. tab) of the URL visit continuation
    suggestion that was clicked on the NTP Tab Resumption module. Only logged on
    the 1P NTP and when the Tab Resumption module is enabled.
  </summary>
</histogram>

<histogram name="NewTabPage.TabResumption.VisitDismissIndex" units="index"
    expires_after="2026-02-22">
  <owner>mfacey@google.com</owner>
  <owner>romanarora@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Records the position of the visit that was dismissed on the NTP Tab
    Resumption module. Only logged on the 1P NTP and when the Tab Resumption
    module is enabled.
  </summary>
</histogram>

<histogram name="NewTabPage.TabResumption.VisitRestoreIndex" units="index"
    expires_after="2025-06-08">
  <owner>mfacey@google.com</owner>
  <owner>romanarora@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Records the position of the visit that was dismissed and then restored on
    the NTP Tab Resumption module. Only logged on the 1P NTP and when the Tab
    Resumption module is enabled.
  </summary>
</histogram>

<histogram name="NewTabPage.ThreadsRail.Action" enum="NTPThreadsRailAction"
    expires_after="2027-01-17">
  <owner>romanarora@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logs count of each type of user action within the threads rail. Only logged
    on the 1P NTP. Note that Incognito and Guest mode NTPs are not considered 1P
    and don't log this histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.ThreadsRail.Shown" enum="BooleanShown"
    expires_after="2027-01-17">
  <owner>romanarora@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Recorded when the threads rail is shown on the New Tab Page. This is
    recorded once when the threads rail is attached to DOM. Only logged on the
    1P NTP. Note that Incognito and Guest mode NTPs are not considered 1P and
    don't log this histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.TimeSinceLastNTP" units="ms"
    expires_after="2026-07-27">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logged when a 1P NTP starts loading. Logs the time since the last time a 1P
    NTP in the same profile started loading. Note the following: (a) The first
    NTP load ever is not counted. (b) This value is computed using a client-side
    clock and stored in prefs. As such, (i) it works across sessions and (ii) it
    can show strange values if a user changes their clock. (c) Even if the user
    has Google as their default search engine, Incognito and Guest mode NTPs are
    not considered 1P and don't log this histogram.
  </summary>
</histogram>

<histogram name="NewTabPage.TimeSpent" units="ms" expires_after="2027-02-07">
  <owner>freedjm@chromium.org</owner>
  <owner>feed@chromium.org</owner>
  <owner>olivierrobin@chromium.org</owner>
  <summary>
    The time spent on the new tab page as measured from when it was loaded or
    last brought to the foreground until it was navigated away from or hidden.
    Only measured on Android and iOS.
  </summary>
</histogram>

<histogram name="NewTabPage.URLState" enum="NewTabURLState"
    expires_after="2025-01-31">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Records the status of the New Tab page URL when an NTP is opened.
  </summary>
</histogram>

<histogram name="NewTabPage.UserClassifier.AverageHoursToUseSuggestions"
    units="hours" expires_after="2022-01-09">
  <owner>freedjm@chromium.org</owner>
  <owner>feed@chromium.org</owner>
  <summary>
    Android: The estimated average number of hours between two successive times
    when the user opens a content suggestion or clicks on the &quot;More&quot;
    button. Recorded after each time a suggestion or a More button is clicked
    (and after updating the model used for the estimate).
  </summary>
</histogram>

<histogram name="NewTabPage.VoiceActions" enum="NewTabPageVoiceAction"
    expires_after="never">
<!-- expires-never: part of vital metric ChromeSearch.Actions -->

  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Actions taken by users of Voice Search on the local New Tab Page on Desktop.
    These actions may navigate away from the NTP (e.g. submitting a speech
    query), but can also happen without navigating away from the NTP (e.g.
    initiating or retrying Voice Search).
  </summary>
</histogram>

<histogram name="NewTabPage.VoiceErrors" enum="NewTabPageVoiceError"
    expires_after="2026-12-31">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Errors that occur during Voice Search use on the local New Tab Page on
    Desktop. These may be user-induced (e.g. the user's utterance could not be
    recognized - no match), or resulting from external circumstances (e.g.
    offline, lack of microphone permission). Warning: this histogram was expired
    from 2025-01-31 to 2026-07-13; data may be missing.
  </summary>
</histogram>

<histogram name="NewTabPage.WallpaperSearch.GetResultProcessingLatency"
    units="ms" expires_after="2025-12-28">
  <owner>pauladedeji@google.com</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>rtatum@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Histogram of the time, in milliseconds, it takes to process the Wallpaper
    Search results after we get the images back from the server. This tracks the
    time from server response until the images are sent to the UI.
  </summary>
</histogram>

<histogram name="NewTabPage.WallpaperSearch.SessionSetTheme"
    enum="NtpWallpaperSearchThemeType" expires_after="2026-08-22">
  <owner>pauladedeji@google.com</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>rtatum@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Histogram that records the type of wallpaper search theme that was kept at
    the end of a wallpaper search session, if any at all. This records the type
    of wallpaper search theme set during a customize chrome side panel session
    if it is still set when the customize chrome side panel is closed.
  </summary>
</histogram>

<histogram
    name="NewTabPage.WallpaperSearch.SetInspirationThemeProcessingLatency"
    units="ms" expires_after="2026-01-18">
  <owner>pauladedeji@google.com</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>rtatum@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Histogram of the time, in milliseconds, it took to set an inspiration
    Wallpaper Search theme as the current theme. This tracks how long the image
    processing takes from the time image processing starts for setting an
    inspiration Wallpaper Search theme to when the profile preference is set to
    change the background image.
  </summary>
</histogram>

<histogram name="NewTabPage.WallpaperSearch.SetRecentThemeProcessingLatency"
    units="ms" expires_after="2025-12-28">
  <owner>pauladedeji@google.com</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>rtatum@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Histogram of the time, in milliseconds, it took to set a recent Wallpaper
    Search theme as the current theme. This tracks how long the image processing
    takes from the time image processing starts for setting a recent Wallpaper
    Search theme to when the profile preference is set to change the background
    image.
  </summary>
</histogram>

<histogram name="NewTabPage.WallpaperSearch.SetResultThemeProcessingLatency"
    units="ms" expires_after="2025-12-28">
  <owner>pauladedeji@google.com</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>rtatum@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Histogram of the time, in milliseconds, it took to set a Wallpaper Search
    result as the current theme. This tracks how long the image processing takes
    from the time image processing starts for setting a Wallpaper Search result
    theme to when the profile preference is set to change the background image.
  </summary>
</histogram>

<histogram name="NewTabPage.WallpaperSearch.Status"
    enum="NtpWallpaperSearchStatus" expires_after="2027-01-03">
  <owner>pauladedeji@google.com</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>rtatum@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Histogram of the statuses shown for Wallpaper Search within the Customize
    Chrome Side Panel. This records the status is of Wallpaper Search's UI
    whenever it loads, a search is triggered, or a search completes.
  </summary>
</histogram>

<histogram name="NewTabPage.Width" units="pixels" expires_after="2027-01-17">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Width of the NTP viewport in CSS pixels. Logged when the NTP loads. Only
    logged on the 1P NTP. Note that even if the user has Google as their default
    search engine, Incognito and Guest mode NTPs are not considered 1P and don't
    log this histogram.
  </summary>
</histogram>

<histogram name="{MostVisitedSurface}.MostVisited.IsExpandedOnLoad"
    enum="Boolean" expires_after="2027-03-17">
  <owner>adamyao@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Logs whether the Most Visited tiles were in the expanded state (showing more
    than the default number of tiles) when {MostVisitedSurface} was loaded.
    Logged when Most Visited tiles are rendered (e.g., on load and refresh).
    True (1) is logged when the Most Visited tiles are expanded, showing more
    than the default number of tiles. False (0) is logged when they are not
    expanded, showing the default number of tiles.
  </summary>
  <token key="MostVisitedSurface" variants="MostVisitedSurface"/>
</histogram>

<histogram
    name="{MostVisitedSurface}.MostVisited.NumberOfCustomTilesOnFirstNtp"
    units="units" expires_after="2027-02-07">
  <owner>fredmello@chromium.org</owner>
  <owner>huangs@chromium.org</owner>
  <owner>ginnyhuang@chromium.org</owner>
  <summary>
    The number of Custom Tiles on {MostVisitedSurface} the first time it opens
    for a profile, assuming Custom Tiles are enabled.
  </summary>
  <token key="MostVisitedSurface" variants="MostVisitedSurface"/>
</histogram>

<histogram name="{MostVisitedSurface}.MostVisited{NewTabPageIconTypes}"
    enum="MostVisitedTileIndex" expires_after="never">
<!-- expires-never: part of top-line metric (internal: go/chrome-browser-nsm) -->

<!-- expires-never: part of vital metric ChromeSearch.Actions -->

  <owner>justincohen@chromium.org</owner>
  <owner>mastiz@chromium.org</owner>
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-analysis-team@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Histogram for user clicks of the most visited tile on {MostVisitedSurface}.
    The value is equal to the index of the tile.

    For special types of results:

    * Clicks on the &quot;Add Shortcut&quot; tile are not counted.

    * Clicks on the Explore Sites tile on Android are counted.

    The user action {MostVisitedSurface}.MostVisited.Clicked is also logged at
    the same time as this histogram.

    This histogram is of special interest to the chrome-analysis-team@. Do not
    change its semantics or retire it without talking to them first.
    {NewTabPageIconTypes}
  </summary>
  <token key="MostVisitedSurface" variants="MostVisitedSurface"/>
  <token key="NewTabPageIconTypes" variants="NewTabPageIconTypes">
    <variant name=""/>
  </token>
</histogram>

<histogram name="{MostVisitedSurface}.MostVisited{NewTabPageProviders}"
    enum="MostVisitedTileIndex" expires_after="2027-08-15">
  <owner>niharm@google.com</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Histogram for user clicks of the most visited tile by suggestion provider on
    {MostVisitedSurface}. The value is equal to the index of the tile.
    {NewTabPageProviders}
  </summary>
  <token key="MostVisitedSurface" variants="MostVisitedSurface"/>
  <token key="NewTabPageProviders" variants="NewTabPageProviders"/>
</histogram>

<histogram name="{MostVisitedSurface}.NumberOfTiles" units="units"
    expires_after="2027-02-14">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    The number of tiles that are on {MostVisitedSurface}, no matter if they are
    thumbnails, gray tiles, or external tiles. Recorded before reloading the
    suggestions, navigating to a URL, switching tabs, changing the active window
    or closing the tab/shutting down Chrome. The sum of this histogram does not
    have to equal to the total count of tile impressions (such as the total
    count in {MostVisitedSurface}.TileType). The reason is that not all tiles
    have to be impressed initially (e.g., the second row of tiles may be
    initially out of sight on iOS).
  </summary>
  <token key="MostVisitedSurface" variants="MostVisitedSurface"/>
</histogram>

<histogram
    name="{MostVisitedSurface}.SuggestionsImpression{NewTabPageIconTypes}"
    enum="MostVisitedTileIndex" expires_after="2027-02-07">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Histogram for impressions on the various most visited tiles on
    {MostVisitedSurface}. The value is equal to the index of the thumbnail.
    {NewTabPageIconTypes}
  </summary>
  <token key="MostVisitedSurface" variants="MostVisitedSurface"/>
  <token key="NewTabPageIconTypes" variants="NewTabPageIconTypes">
    <variant name=""/>
  </token>
</histogram>

<histogram
    name="{MostVisitedSurface}.SuggestionsImpression{NewTabPageProviders}"
    enum="MostVisitedTileIndex" expires_after="2027-01-10">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Histogram for impressions on the various most visited tiles on
    {MostVisitedSurface}. The value is equal to the index of the thumbnail.
    {NewTabPageProviders}
  </summary>
  <token key="MostVisitedSurface" variants="MostVisitedSurface"/>
  <token key="NewTabPageProviders" variants="NewTabPageProviders"/>
</histogram>

<histogram name="{MostVisitedSurface}.TileTitleClicked{NewTabPageProviders}"
    enum="NTPTileTitleSource" expires_after="2027-01-31">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>ginnyhuang@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Records the source for the name a most visited tile showed when the user
    clicked it on {MostVisitedSurface}, e.g. a URL, or the page title.
    {NewTabPageProviders}
  </summary>
  <token key="MostVisitedSurface" variants="MostVisitedSurface"/>
  <token key="NewTabPageProviders" variants="NewTabPageProviders">
    <variant name=""/>
  </token>
</histogram>

<histogram name="{MostVisitedSurface}.TileTitle{NewTabPageProviders}"
    enum="NTPTileTitleSource" expires_after="2027-08-15">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    Records the source of the title for each most visited tiled displayed when
    {MostVisitedSurface} is opened, e.g. a short_name from a manifest, or the
    page title. {NewTabPageProviders}
  </summary>
  <token key="MostVisitedSurface" variants="MostVisitedSurface"/>
  <token key="NewTabPageProviders" variants="NewTabPageProviders">
    <variant name=""/>
  </token>
</histogram>

<histogram name="{MostVisitedSurface}.TileTypeClicked{NewTabPageProviders}"
    enum="NTPTileVisualType" expires_after="2027-08-15">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    The visual type of the most visited item that the user clicked on on
    {MostVisitedSurface}, e.g. actual thumbnail or placeholder thumbnail.
    {NewTabPageProviders}
  </summary>
  <token key="MostVisitedSurface" variants="MostVisitedSurface"/>
  <token key="NewTabPageProviders" variants="NewTabPageProviders">
    <variant name=""/>
  </token>
</histogram>

<histogram name="{MostVisitedSurface}.TileType{NewTabPageProviders}"
    enum="NTPTileVisualType" expires_after="2027-08-15">
  <owner>romanarora@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <owner>chrome-desktop-ntp@google.com</owner>
  <summary>
    The visual type of each most visited tile displayed on {MostVisitedSurface},
    e.g. actual thumbnail or placeholder thumbnail. This is recorded for each
    most visited item when {MostVisitedSurface} is opened. {NewTabPageProviders}
  </summary>
  <token key="MostVisitedSurface" variants="MostVisitedSurface"/>
  <token key="NewTabPageProviders" variants="NewTabPageProviders">
    <variant name=""/>
  </token>
</histogram>

</histograms>

</histogram-configuration>
