<!--
Copyright 2017 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 Chrome UKM metrics
along with a detailed description for each metric.

See the following doc for details on how to add entries to this file:
https://chromium.googlesource.com/chromium/src.git/+/main/services/metrics/ukm_api.md

Events may be marked with the attribute singular="True" to indicate that
the event will only occur once per source, and multiple entries will just
be describing additional metrics about the same event.
-->

<ukm-configuration>

<event name="AboutThisSiteStatus">
  <owner>olesiamarukhnno@google.com</owner>
  <summary>
    Recorded on each page info bubble open when &quot;About this site&quot; data
    is fetched.
  </summary>
  <metric name="Status" enum="AboutThisSiteStatus">
    <summary>
      The status of the &quot;About this site&quot; info, including if the data
      is available and whether the proto is valid. See
      |page_info::about_this_site_validation::AboutThisSiteStatus| for enum
      elements.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="AbusiveExperienceHeuristic">
  <owner>csharrison@chromium.org</owner>
  <owner>yaoxia@chromium.org</owner>
  <summary>
    Obsolete. Various metrics recording experiences which are commonly used for
    abusive purposes.
  </summary>
  <metric name="DidTabUnder">
    <summary>
      True if the page attempted a tab-under navigation.
    </summary>
  </metric>
  <metric name="DidWindowOpenFromAdScript">
    <summary>
      True if the page called window.open with an ad script in the stack.
    </summary>
  </metric>
  <metric name="DidWindowOpenFromAdSubframe">
    <summary>
      True if the page called window.open() from an ad subframe.
    </summary>
  </metric>
</event>

<event name="AbusiveExperienceHeuristic.JavaScriptDialog">
  <owner>yaoxia@chromium.org</owner>
  <metric name="DismissalCause">
    <summary>
      An enum that specifies the dismissal reason for JavaScript popup dialog
      that can be triggered by window.alert(), window.confirm() or
      window.prompt(). See JavaScriptDialogTabHelper::DismissalCause for the
      enum elements.
    </summary>
  </metric>
</event>

<event name="AbusiveExperienceHeuristic.TabUnder">
  <owner>csharrison@chromium.org</owner>
  <metric name="DidTabUnder">
    <summary>
      True if the page attempted a tab-under navigation.
    </summary>
  </metric>
</event>

<event name="AbusiveExperienceHeuristic.WindowOpen">
  <owner>yaoxia@chromium.org</owner>
  <summary>
    Recorded whenever window.open() is called when AdTagging is enabled.
  </summary>
  <metric name="FromAdScript">
    <summary>
      True if the page called window.open() with an ad script in the stack.
    </summary>
  </metric>
  <metric name="FromAdSubframe">
    <summary>
      True if the page called window.open() from an ad subframe.
    </summary>
  </metric>
</event>

<event name="Accessibility.ImageDescriptions">
  <owner>dtseng@chromium.org</owner>
  <owner>nektar@chromium.org</owner>
  <summary>
    Tracks automatic image descriptions provided to blind users.
  </summary>
  <metric name="Description" enum="Boolean">
    <summary>
      Whether the image description included a description.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="ImageAlreadyHasLabel" enum="Boolean">
    <summary>
      Whether the image already had label text before it was augmented with an
      additional description.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="OCR" enum="Boolean">
    <summary>
      Whether the image description included OCR text.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="Accessibility.PageZoom">
  <owner>aldietz@google.com</owner>
  <owner>mschillaci@google.com</owner>
  <owner>chrome-a11y-core@google.com</owner>
  <summary>
    Tracks usage of Page Zoom on Chrome for Android. Recorded each time the
    slider is dismissed if the user changed the zoom level on this page before
    dismissal.
  </summary>
  <metric name="SliderZoomValue">
    <summary>
      For users who changed the individual zoom level on this page, tracks what
      zoom level has been set on the page at slider dismissal. There may be
      multiple instances where the slider is opened on the same page, so there
      may be multiple values logged per page. The value will be an integer
      between 25 and 500, inclusive, bucketed in intervals of 5.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="Accessibility.Renderer">
  <owner>aleventhal@chromium.org</owner>
  <owner>nektar@chromium.org</owner>
  <summary>
    Tracks the amount of time sending accessibility events from web renderers.
  </summary>
  <metric name="CpuTime.SendPendingAccessibilityEvents">
    <summary>
      The amount of time spent in
      RenderAccessibilityImpl.SendPendingAccessibilityEvents
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="Accessibility.ScreenAI">
  <owner>abigailbklein@google.com</owner>
  <owner>rhalavati@google.com</owner>
  <owner>kyungjunlee@google.com</owner>
  <summary>
    Records the time taken to distill a web page.
  </summary>
  <metric name="Screen2xDistillationTime.Failure">
    <summary>
      The amount of time (ms) required to distill a web page if distillation
      failed.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Screen2xDistillationTime.Success">
    <summary>
      The amount of time (ms) required to distill a web page if distillation
      succeeded.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="AccuracyTipDialog">
  <obsolete>
    Deprecated as of 12/2022.
  </obsolete>
  <owner>dullweber@chromium.org</owner>
  <owner>eokoyomon@chromium.org</owner>
  <summary>
    Recorded when an action on the accuracy tip dialog is taken.
  </summary>
  <metric name="Interaction" enum="AccuracyTipInteraction">
    <summary>
      Records an enum value representing which action in the accuracy tip was
      taken.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="TimeSpent">
    <summary>
      The amount of time spent on the dialog until it was closed. In seconds.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="AccuracyTipStatus">
  <obsolete>
    Deprecated as of 12/2022.
  </obsolete>
  <owner>dullweber@chromium.org</owner>
  <owner>eokoyomon@chromium.org</owner>
  <summary>
    Recorded on each page load when the AccuracyService determines whether an
    accuracy tip should be shown or the reason why it was not shown.
  </summary>
  <metric name="Status" enum="AccuracyTipStatus">
    <summary>
      The accuracy tip status that was determined for a pageload.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="AdFrameLoad">
  <owner>johnidel@chromium.org</owner>
  <owner>jkarlin@chromium.org</owner>
  <summary>
    Records metrics associated with a single ad frame for a page load. An ad
    frame includes itself and all of its child frames. Only recorded for frames
    with non-zero bytes. Recorded when a page is destroyed or when the app is
    backgrounded on mobile.
  </summary>
  <metric name="CpuTime.PeakWindowedPercent">
    <summary>
      The peak percentage of CPU utilization attributed to the frame in any 30
      second window prior to user activation. Frames that exist for less than 30
      seconds still use 30 seconds as the denominator for the calculation.
    </summary>
  </metric>
  <metric name="CpuTime.PreActivation">
    <summary>
      Wall time of tasks attributed to the frame after the frame received user
      activation. Measured in millseconds.
    </summary>
  </metric>
  <metric name="CpuTime.Total">
    <summary>
      Total wall time of tasks attributed to the frame. Measured in
      milliseconds.
    </summary>
  </metric>
  <metric name="FrameDepth">
    <summary>
      The depth of this frame's frame tree. There is no set limit on a frame's
      maximum depth.
    </summary>
  </metric>
  <metric name="Loading.CacheBytes">
    <obsolete>
      Deprecated 09/2019. Replaced with Loading.CacheBytes2.
    </obsolete>
    <summary>
      Bytes loaded from the cache for all resources loaded within the frame.
      This is rounded down to the nearest exponential bucket (with a bucket
      ratio of 1.3).
    </summary>
  </metric>
  <metric name="Loading.CacheBytes2">
    <summary>
      Bytes loaded from the cache for all resources loaded within the frame.
      This includes bytes loaded from both the HTTP cache and memory cache. This
      is rounded down to the nearest exponential bucket (with a bucket ratio of
      1.3).
    </summary>
  </metric>
  <metric name="Loading.ImageBytes">
    <summary>
      Network bytes loaded for resources with an image mime type within the
      frame. Includes header bytes. This is rounded down to the nearest
      exponential bucket (with a bucket ratio of 1.3).
    </summary>
  </metric>
  <metric name="Loading.JavascriptBytes">
    <summary>
      Network bytes loaded for resources with a javascript mime type within the
      frame. Includes header bytes. This is rounded down to the nearest
      exponential bucket (with a bucket ratio of 1.3).
    </summary>
  </metric>
  <metric name="Loading.NetworkBytes">
    <summary>
      Network bytes loaded for all resources within the frame. Includes header
      bytes. This is rounded down to the nearest exponential bucket (with a
      bucket ratio of 1.3).
    </summary>
  </metric>
  <metric name="Loading.NumResources">
    <summary>
      Total number of resources loaded by the frame, including incomplete
      resources.
    </summary>
  </metric>
  <metric name="Loading.VideoBytes">
    <summary>
      Network bytes loaded for resources with a video/ mime type within the
      frame. Includes header bytes. This is rounded down to the nearest
      exponential bucket (with a bucket ratio of 1.3).
    </summary>
  </metric>
  <metric name="Status.CrossOrigin">
    <summary>
      An enum representing whether the frame was Cross-Origin or Same-Origin to
      its parent frame. See FrameData::OriginStatus.
    </summary>
  </metric>
  <metric name="Status.Media">
    <summary>
      An enum representing whether media was played in the frame. See
      FrameData::MediaStatus.
    </summary>
  </metric>
  <metric name="Status.UserActivation">
    <summary>
      An enum representing whether the frame received user activation. See
      FrameData::UserActivationStatus.
    </summary>
  </metric>
  <metric name="Timing.FirstContentfulPaint">
    <summary>
      Number of milliseconds before FirstContentfulpaint was reached in the
      frame. This is relative to subframe navigation start.
    </summary>
  </metric>
  <metric name="Timing.Interactive">
    <summary>
      Number of millseconds before Time-To-Interactive was reached in the frame.
      This is relative to subframe navigation start.
    </summary>
  </metric>
  <metric name="Timing.PreActivationForegroundDuration">
    <obsolete>
      Deprecated 07/2020.
    </obsolete>
    <summary>
      Number of millseconds that the current web contents spent in the
      foreground prior to the frame receiving user activation.
    </summary>
  </metric>
  <metric name="Visibility.FrameHeight">
    <summary>
      Last known height of the iframe in pixels. Not reported accurately when
      &quot;Visibility.Hidden&quot; is true. This is rounded down to the nearest
      exponential bucket (with a bucket ratio of 1.15).
    </summary>
  </metric>
  <metric name="Visibility.FrameWidth">
    <summary>
      Last known width of the iframe in pixels. Not reported accurately when
      &quot;Visibility.Hidden&quot; is true. This is rounded down to the nearest
      exponential bucket (with a bucket ratio of 1.15).
    </summary>
  </metric>
  <metric name="Visibility.Hidden">
    <summary>
      A 0 or 1 values representing whether the frame had a display=none styling
      set. Records the last known value.
    </summary>
  </metric>
</event>

<event name="AdPageLoad" singular="True">
  <owner>johnidel@chromium.org</owner>
  <owner>jkarlin@chromium.org</owner>
  <summary>
    Recorded when a page has loaded non-zero ad bytes, and the page is being
    destroyed/navigated.
  </summary>
  <metric name="AdBytes">
    <summary>
      Amount of network bytes used to load ad resource on the page. Includes
      resources that did not finish, and top-level ads. Measured in kilobytes.
    </summary>
  </metric>
  <metric name="AdBytesPerSecond">
    <obsolete>
      Deprecated 01/2020.
    </obsolete>
    <summary>
      Amount of network bytes used to load ad resources on the page, per second
      the page was alive after commit. Measured in kilobytes per second.
    </summary>
  </metric>
  <metric name="AdBytesPerSecondAfterInteractive">
    <obsolete>
      Deprecated 01/2020.
    </obsolete>
    <summary>
      Amount of network bytes used to load ad resources on the page per second
      after the page was interactive. Measured in kilobytes.
    </summary>
  </metric>
  <metric name="AdCpuTime">
    <summary>
      Amount of CPU wall time inside of ad iframes over the duration of a page
      load, while the page is in the foreground. Measured in milliseconds.
    </summary>
  </metric>
  <metric name="AdJavascriptBytes">
    <summary>
      Amount of network bytes used to load ad resources with a supported
      javascript mime type on the page. Measured in kilobytes.
    </summary>
  </metric>
  <metric name="AdVideoBytes">
    <summary>
      Amount of network bytes used to load ad resources with a video mime type
      on the page. Measured in kilobytes.
    </summary>
  </metric>
  <metric name="MainframeAdBytes">
    <summary>
      Amount of network bytes used to load ad resources in the main frame.
      Includes resources that did not finish but does not include resources in
      subframes. Measured in bytes. This is rounded to the nearest exponential
      bucket (with a bucket ratio of 1.3).
    </summary>
  </metric>
  <metric name="MaxAdDensityByArea">
    <summary>
      The estimated maximum density of ads on a page by area. Calculated as the
      area of ads on the page * 100 / page area. This counts each overlapping
      area once, it may be inaccurate due to updates and calculations being
      throttled.
    </summary>
  </metric>
  <metric name="MaxAdDensityByHeight">
    <summary>
      The estimated maximum density of ads on a page by height. Calculated as
      the combined height of ads on the page * 100 / page height. This counts
      each overlapping area once, it may be inaccurate due to updates and
      calculations being throttled.
    </summary>
  </metric>
  <metric name="TotalBytes">
    <summary>
      Amount of network bytes used to load resources on the page. Includes
      resources that did not finish. Measured in kilobytes.
    </summary>
  </metric>
</event>

<event name="AdPageLoadCustomSampling" singular="True">
  <obsolete>
    Removed 2022/10 in favor of AdPageLoadCustomSampling2
  </obsolete>
  <owner>yaoxia@chromium.org</owner>
  <owner>johnidel@chromium.org</owner>
  <owner>jkarlin@chromium.org</owner>
  <summary>
    Recorded when a page has loaded non-zero ad bytes, and the page is being
    destroyed/navigated away or when the app enters the background on mobile.
    This is separate from the `AdPageLoad` event to allow a potentially
    different sampling.
  </summary>
  <metric name="AverageViewportAdDensity">
    <summary>
      The estimated average viewport ad density. Each density value is
      calculated as the area of ads within the viewport * 100 / viewport area,
      where each overlapping area is counted once. And this returns the average
      of the densities accumulated over the page load time rounded to the
      nearest integer.
    </summary>
  </metric>
  <metric name="KurtosisViewportAdDensity">
    <summary>
      The estimated kurtosis of the viewport ad density. Each density value is
      calculated as the area of ads within the viewport * 100 / viewport area,
      where each overlapping area is counted once. And this returns the kurtosis
      of the densities accumulated over the page load time rounded to the
      nearest exponential bucket integer with bucket spacing 1.3. For negative
      values, the bucketing will be taken on its magnitude part.
    </summary>
  </metric>
  <metric name="SkewnessViewportAdDensity">
    <summary>
      The estimated skewness of the viewport ad density. Each density value is
      calculated as the area of ads within the viewport * 100 / viewport area,
      where each overlapping area is counted once. And this returns the skewness
      of the densities accumulated over the page load time rounded to the
      nearest exponential bucket integer with bucket spacing 1.3. For negative
      values, the bucketing will be taken on its magnitude part.
    </summary>
  </metric>
  <metric name="VarianceViewportAdDensity">
    <summary>
      The estimated variance of the viewport ad density. Each density value is
      calculated as the area of ads within the viewport * 100 / viewport area,
      where each overlapping area is counted once. And this returns the variance
      of the densities accumulated over the page load time rounded to the
      nearest exponential bucket integer with bucket spacing 1.3. For negative
      values, the bucketing will be taken on its magnitude part.
    </summary>
  </metric>
</event>

<event name="AdPageLoadCustomSampling2" singular="True">
  <obsolete>
    Removed 2022/12 in favor of AdPageLoadCustomSampling3
  </obsolete>
  <owner>yaoxia@chromium.org</owner>
  <owner>johnidel@chromium.org</owner>
  <owner>jkarlin@chromium.org</owner>
  <summary>
    Recorded when the page is being destroyed/navigated away or when the app
    enters the background on mobile. This is separate from the `AdPageLoad`
    event to allow it to be recorded on all pages (i.e. not only pages that have
    loaded non-zero ad byte), and to allow a potentially different sampling.
  </summary>
  <metric name="AverageViewportAdDensity">
    <summary>
      The estimated average viewport ad density. Each density value is
      calculated as the area of ads within the viewport * 100 / viewport area,
      where each overlapping area is counted once. And this returns the average
      of the densities accumulated over the page load time rounded to the
      nearest integer.
    </summary>
  </metric>
  <metric name="KurtosisViewportAdDensity">
    <summary>
      The estimated kurtosis of the viewport ad density. Each density value is
      calculated as the area of ads within the viewport * 100 / viewport area,
      where each overlapping area is counted once. And this returns the kurtosis
      of the densities accumulated over the page load time rounded to the
      nearest exponential bucket integer with bucket spacing 1.3. For negative
      values, the bucketing will be taken on its magnitude part.
    </summary>
  </metric>
  <metric name="SkewnessViewportAdDensity">
    <summary>
      The estimated skewness of the viewport ad density. Each density value is
      calculated as the area of ads within the viewport * 100 / viewport area,
      where each overlapping area is counted once. And this returns the skewness
      of the densities accumulated over the page load time rounded to the
      nearest exponential bucket integer with bucket spacing 1.3. For negative
      values, the bucketing will be taken on its magnitude part.
    </summary>
  </metric>
  <metric name="VarianceViewportAdDensity">
    <summary>
      The estimated variance of the viewport ad density. Each density value is
      calculated as the area of ads within the viewport * 100 / viewport area,
      where each overlapping area is counted once. And this returns the variance
      of the densities accumulated over the page load time rounded to the
      nearest exponential bucket integer with bucket spacing 1.3. For negative
      values, the bucketing will be taken on its magnitude part.
    </summary>
  </metric>
</event>

<event name="AdPageLoadCustomSampling3" singular="True">
  <owner>yaoxia@chromium.org</owner>
  <owner>johnidel@chromium.org</owner>
  <owner>jkarlin@chromium.org</owner>
  <summary>
    Recorded when the page is being destroyed/navigated away or when the app
    enters the background on mobile. This is separate from the `AdPageLoad`
    event to allow it to be recorded on all pages (i.e. not only pages that have
    loaded non-zero ad byte), and to allow a potentially different sampling.
    Both iframe and img ads are covered.
  </summary>
  <metric name="AverageViewportAdDensity">
    <summary>
      The estimated average viewport ad density. Each density value is
      calculated as the area of (iframe and img) ads within the viewport * 100 /
      viewport area, where each overlapping area is counted once. And this
      returns the average of the densities accumulated over the page load time
      rounded to the nearest integer.
    </summary>
  </metric>
  <metric name="KurtosisViewportAdDensity">
    <summary>
      The estimated kurtosis of the viewport ad density. Each density value is
      calculated as the area of (iframe and img) ads within the viewport * 100 /
      viewport area, where each overlapping area is counted once. And this
      returns the kurtosis of the densities accumulated over the page load time
      rounded to the nearest exponential bucket integer with bucket spacing 1.3.
      For negative values, the bucketing will be taken on its magnitude part.
    </summary>
  </metric>
  <metric name="SkewnessViewportAdDensity">
    <summary>
      The estimated skewness of the viewport ad density. Each density value is
      calculated as the area of (iframe and img) ads within the viewport * 100 /
      viewport area, where each overlapping area is counted once. And this
      returns the skewness of the densities accumulated over the page load time
      rounded to the nearest exponential bucket integer with bucket spacing 1.3.
      For negative values, the bucketing will be taken on its magnitude part.
    </summary>
  </metric>
  <metric name="VarianceViewportAdDensity">
    <summary>
      The estimated variance of the viewport ad density. Each density value is
      calculated as the area of (iframe and img) ads within the viewport * 100 /
      viewport area, where each overlapping area is counted once. And this
      returns the variance of the densities accumulated over the page load time
      rounded to the nearest exponential bucket integer with bucket spacing 1.3.
      For negative values, the bucketing will be taken on its magnitude part.
    </summary>
  </metric>
</event>

<event name="AdsInterestGroup.AuctionLatency">
  <owner>orrb@google.com</owner>
  <owner>chrome-ads-core@google.com</owner>
  <summary>
    Captures latency-relevant metrics associated with a single FLEDGE auction.
    Many of these metrics are latency measurements, aggregated (mean/max) for
    parts of the auction flow that happen multiple times in an auction, e.g.
    calls to GenerateBid. Others are potentially latency-impacting measures of
    the auction, e.g. the number of InterestGroups, buyers, component auctions,
    bids that were scored either together or separately for the enforced and
    non-enforced KAnon modes. Finally, some of these metrics look at points in
    the auction flow where multiple inputs come together to assess which of
    these inputs most frequently appears on the latency critical path.
  </summary>
  <metric name="EndToEndLatencyInMillis">
    <summary>
      Time in ms between AdAuctionServiceImpl::RunAdAuction and
      AdAuctionServiceImpl::OnAuctionComplete. Roughly equivalent to UMA metric,
      Ads.InterestGroup.Auction.AuctionWithWinnerTime.
    </summary>
  </metric>
  <metric name="KAnonymityBidMode" enum="KAnonymityBidMode">
    <summary>
      Indicates the KAnonymityBidMode used for this auction.
    </summary>
  </metric>
  <metric name="LoadInterestGroupPhaseLatencyInMillis">
    <summary>
      The latency in milliseconds between the initial call to
      InterestGroupAuction::StartLoadInterestGroupsPhase (not the recursive
      calls issued for component auctions in a multi-seller auction), and the
      call to AuctionRunner::OnLoadInterestGroupsComplete. This is related to
      UMA metric, Ads.InterestGroup.Auction.LoadGroupsTime, except that, in a
      multi-seller auction, the UMA metric is recorded once per component
      auction and then again for the top-level auction, whereas this metric is
      recorded only once, for the top-level auction. This metric also isn't
      limited to those cases where there were InterestGroups to load, Since we
      can independently filter this based on the value of NumInterestGroups.
    </summary>
  </metric>
  <metric name="MaxBidForOneInterestGroupLatencyInMillis">
    <summary>
      Aggregated across all components for a multi-seller auctions, this records
      the max latency in millis between BuyerHelper::StartGeneratingBids and
      BuyerHelper::OnGenerateBidComplete, counting each BidState once. As such,
      this includes starting the BidderWorklet in that latency. This latency
      window is intentionally terminated in OnGenerateBidComplete, and not in
      OnGenerateBidCompleteInternal, so that this *excludes* bids filtered
      during reprioritization, as well as those that failed because of some
      fatal error, except that we explicitly *include* those that timed out.
    </summary>
  </metric>
  <metric name="MaxComponentAuctionLatencyInMillis">
    <summary>
      Only for multi-seller auctions, this is the highest latency of the bidding
      and scoring phase, observed across all of the component auctions. This
      latency is measured as the time between the call to
      StartBiddingAndScoringPhase and the call to OnComponentAuctionComplete.
      This metric only has a value for entries that represent multi-seller
      auctions, as indicated by a value for the NumSellersWithBidders metric of
      two or greater.
    </summary>
  </metric>
  <metric name="MaxGenerateSingleBidLatencyInMillis">
    <summary>
      Aggregated across all components for a multi-seller auctions, this records
      the max latency in millis of calls to GenerateSingleBid. This is related
      to UMA metric, Ads.InterestGroup.Auction.GenerateBidTime, except that it's
      already aggregated across all GenerateSingleBid calls for this auction.
      Like the UMA metric, this measures each distinct call to
      GenerateSingleBid, for which there could be two for a given InterestGroup,
      one that satisfies the kAnon threshold, and one that doesn't.
    </summary>
  </metric>
  <metric name="MeanBidForOneInterestGroupLatencyInMillis">
    <summary>
      Aggregated across all components for a multi-seller auctions, this records
      the mean latency in millis between BuyerHelper::StartGeneratingBids and
      BuyerHelper::OnGenerateBidComplete, counting each BidState once. As such,
      this includes starting the BidderWorklet in that latency. This latency
      window is intentionally terminated in OnGenerateBidComplete, and not in
      OnGenerateBidCompleteInternal, so that this *excludes* bids filtered
      during reprioritization, as well as those that failed because of some
      fatal error, except that we explicitly *include* those that timed out.
    </summary>
  </metric>
  <metric name="MeanComponentAuctionLatencyInMillis">
    <summary>
      Only for multi-seller auctions, this is the mean latency of the bidding
      and scoring phase, aggregated across each of the component auctions. This
      latency is measured as the time between the call to
      StartBiddingAndScoringPhase and the call to OnComponentAuctionComplete.
      This metric only has a value for entries that represent multi-seller
      auctions, as indicated by a value for the NumSellersWithBidders metric of
      two or greater.
    </summary>
  </metric>
  <metric name="MeanGenerateSingleBidLatencyInMillis">
    <summary>
      Aggregated across all components for a multi-seller auctions, this records
      the mean latency in millis of calls to GenerateSingleBid. This is related
      to UMA metric, Ads.InterestGroup.Auction.GenerateBidTime, except that it's
      already aggregated across all GenerateSingleBid calls for this auction.
      Like the UMA metric, this measures each distinct call to
      GenerateSingleBid, for which there could be two for a given InterestGroup,
      one that satisfies the kAnon threshold, and one that doesn't.
    </summary>
  </metric>
  <metric name="NumBidderWorklets">
    <summary>
      The number of distinct BidderWorklets. Interest groups with the same owner
      can only share worklets if they have the same bidding script URL and KV
      server URL. As such, we might observe a non-standard setup in which, for
      example, a buyer has used a different bidding script URL for each
      InterestGroup, causing performance issues because of the fragmentation of
      BidderWorklets. BidderWorklets are shared across component auctions, and
      this measure counts the number of distinct BidderWorklets used within the
      scope of the scope of an entire auction, either single- or multi-seller.
      This may imply that the number of BidderWorklets created in the context of
      this auction is actually less than this number, because of reuse. However,
      it also means that this metric can be compared against the
      NumDistinctOwnersWithInterestGroups metric, which (unlike
      NumOwnersWithInterestGroups) counts each buyer involved in a multi-seller
      auction once, even if that buyer participates in multiple components.
    </summary>
  </metric>
  <metric name="NumBidsAbortedByBidderWorkletFatalError">
    <summary>
      Total number of bids aborted because the BidderWorklet encountered a fatal
      error, such as a crash, a JS fetch error, or any other fatal error -
      excluding timeouts, which are counted by the metric below - aggregated
      across all Owners and component auctions.
    </summary>
  </metric>
  <metric name="NumBidsAbortedByBuyerCumulativeTimeout">
    <summary>
      Total number of InterestGroups aborted because the per-buyer cumulative
      timeout was reached, aggregated across all Owners and component auctions.
    </summary>
  </metric>
  <metric name="NumBidsFilteredByPerBuyerLimits">
    <summary>
      Total number of InterestGroups filtered as per-buyer limits are applied,
      aggregated across all Owners and component auctions.
    </summary>
  </metric>
  <metric name="NumBidsFilteredDuringInterestGroupLoad">
    <summary>
      Total number of InterestGroups filtered based on priority during the
      loading of InterestGroups, aggregated across all Owners and component
      auctions. This specifically excludes InterestGroups filtered during load
      for other reasons, such as failing to satisfy requested seller
      capabilities.
    </summary>
  </metric>
  <metric name="NumBidsFilteredDuringReprioritization">
    <summary>
      Total number of InterestGroups filtered during bid reprioritization, which
      happens once bidding signals are available, aggregated across all Owners
      and component auctions. Related to UMA metric,
      Ads.InterestGroup.Auction.BidFiltered, except that it's aggregated. To
      determine the fraction of bids filtered, compare this against the
      NumInterestGroups metric.
    </summary>
  </metric>
  <metric name="NumDistinctOwnersWithInterestGroups">
    <summary>
      The number of buyers with InterestGroups participating in an auction,
      aggregated across all component auctions. This number excludes buyers with
      no ads or no script URL, and also those filtered because the priority for
      all InterestGroups calculated in the BuyerHelper constructor was negative.
      Unlike NumOwnersWithInterestGroups, it only counts each buyer once, even
      if it appears in multiple component auctions of a multi-seller auction.
      Also unlike NumOwnersWithInterestGroups, this metric has a value even if
      there are no bidders eligible to participate in this auction, though, in
      this case, that value is likely to be zero.
    </summary>
  </metric>
  <metric name="NumInterestGroups">
    <summary>
      Total number of InterestGroups aggregated across all owners and component
      auctions, equivalent to UMA metric,
      Ads.InterestGroup.Auction.NumInterestGroups. This is the number of
      InterestGroups loaded, before per-buyer limits are applied. Excluded from
      this (and all other metrics counting InterestGroups) are InterestGroups
      that are incapable of participating in an auction, e.g. those with no
      bidding logic URLs, or with no ads. No value is defined for this metric if
      there are no bidders eligible to participate in this auction.
    </summary>
  </metric>
  <metric name="NumInterestGroupsWithNoBids">
    <summary>
      Number of instances in which the BidderWorklet doesn't bid, maybe because
      it failed to load or crashed. Because there's no bid, ScoreAd won't be
      called for these.
    </summary>
  </metric>
  <metric name="NumInterestGroupsWithOnlyNonKAnonBid">
    <summary>
      Number of instances in which the BidderWorklet only generates one bid. If
      the KAnonymityBidMode is Simulate or Enforce, this means that the
      InterestGroup's top generated bid didn't satisfy the kAnonymity threshold,
      and no separate bid could be generated that did satisfy the kAnonymity
      threshold. If the KAnonymityBidMode is None, this just means that a bid
      was successfully generated. For each of these, ScoreAd will be called
      once.
    </summary>
  </metric>
  <metric name="NumInterestGroupsWithSameBidForKAnonAndNonKAnon">
    <summary>
      Number of instances in which an InterestGroup's top generated bid did
      satisfy the kAnonymity threshold, and so no separate bid was needed. For
      each of these, ScoreAd will be called once. If the KAnonymityBidMode is
      None, this metric will be 0, because there won't be a separate kAnon bid.
    </summary>
  </metric>
  <metric name="NumInterestGroupsWithSeparateBidsForKAnonAndNonKAnon">
    <summary>
      Number of instances in which an InterestGroup's top generated bid didn't
      satisfy the kAnonymity threshold, and a separate bid was generated that
      did satisfy the kAnonymity threshold. For each of these, ScoreAd will be
      called twice, once for each of these bids, which has latency and
      performance implications. If the KAnonymityBidMode is None, this metric
      will be 0, because there won't be a separate kAnon bid.
    </summary>
  </metric>
  <metric name="NumOwnersWithInterestGroups">
    <summary>
      The number of buyers with InterestGroups participating in an auction,
      aggregated across all component auctions. Equivalent to UMA metric,
      Ads.InterestGroup.Auction.NumInterestGroups. This number excludes buyers
      with no ads or no script URL, and also those filtered because the priority
      for all InterestGroups calculated in the BuyerHelper constructor was
      negative. However, it counts a buyer repeatedly for each component auction
      that buyer participates in. No value is defined for this metric if there
      are no bidders eligible to participate in this auction.
    </summary>
  </metric>
  <metric name="NumSellersWithBidders">
    <summary>
      This is either the number of component auctions *plus one* for a
      multi-seller auction, or 1 for a single-seller auction. Equivalent to UMA
      metric, Ads.InterestGroup.Auction.NumSellersWithBidders. No value is
      defined for this metric if there are no bidders eligible to participate in
      this auction.
    </summary>
  </metric>
  <metric name="Result" enum="AuctionResult">
    <summary>
      How the auction concluded, whether that's successfully selecting an ad to
      be shown, or finding no InterestGroups to load, or getting no bids that
      outbid the contextual bid, or any other outcome.
    </summary>
  </metric>
</event>

<event name="AdsIntervention.LastIntervention" singular="True">
  <owner>yaoxia@google.com</owner>
  <owner>chrome-ads-core@google.com</owner>
  <summary>
    Recorded after computing the subresource filter activation for a page at
    process response time during navigation. This is only recorded when there
    has previously been an ads intervention triggered on the page within the
    site data's lifetime (currently 7 days). Clearing site data will reset
    intervention information.
  </summary>
  <metric name="InterventionStatus" enum="AdsInterventionStatus">
    <summary>
      Records the status of the ads intervention, whether the intervention lead
      to subresource filter activation, measured during page load.
    </summary>
  </metric>
  <metric name="InterventionType" enum="AdsViolations">
    <summary>
      Records the last measured intervention recorded for the page, measured
      during page load.
    </summary>
  </metric>
</event>

<event name="AmpPageLoad" singular="True">
  <owner>sullivan@chromium.org</owner>
  <metric name="MainFrameAmpPageLoad">
    <summary>
      True if the page loaded in the main frame is an AMP document (has an amp
      attribute in the html element). Will not be recorded for non-AMP frames.
      Note that most AMP documents are loaded in a subframe from a reader like
      Google Search; this metric measures sites that are using AMP as a
      site-wide framework and not a reader experience.
    </summary>
  </metric>
  <metric
      name="SubFrame.InteractiveTiming.AverageUserInteractionLatencyOverBudget.MaxEventDuration2">
    <summary>
      The average value of user interaction latency above budget of a page load
      in AMP subframes, in ms. For this metric, we measure the latency of user
      interactions by Responsiveness.UserInteraction.MaxEventDuration and we
      deduct a budget from the original value. If the latency value is below the
      budget, it will be treated as 0 ms. Each type of interaction has its own
      budget.
    </summary>
  </metric>
  <metric
      name="SubFrame.InteractiveTiming.AverageUserInteractionLatencyOverBudget.TotalEventDuration2">
    <obsolete>
      Removed March 2022 in favor of
      SlowUserInteractionLatency.HighPercentile2.MaxEventDuration
    </obsolete>
    <summary>
      The average value of user interaction latency above budget of a page load
      in AMP subframes, in ms. For this metric, we measure the latency of user
      interactions by Responsiveness.UserInteraction.TotalEventDuration and we
      deduct a budget from the original value. If the latency value is below the
      budget, it will be treated as 0 ms. Each type of interaction has its own
      budget.
    </summary>
  </metric>
  <metric name="SubFrame.InteractiveTiming.FirstInputDelay3">
    <obsolete>
      Removed July 2019 in favor of FirstInputDelay4.
    </obsolete>
    <summary>
      Measures First Input Delay, the duration between the hardware timestamp
      and the start of event processing on the main thread for the first
      meaningful input per navigation, in the AMP subframe. See
      https://goo.gl/tr1oTZ for a detailed explanation. In milliseconds.
    </summary>
  </metric>
  <metric name="SubFrame.InteractiveTiming.FirstInputDelay4">
    <summary>
      Measures First Input Delay, the duration between the hardware timestamp
      and the start of event processing on the main thread for the first
      meaningful input per navigation, in the AMP subframe. See
      https://goo.gl/tr1oTZ for a detailed explanation. In milliseconds.
    </summary>
  </metric>
  <metric name="SubFrame.InteractiveTiming.NumInteractions">
    <summary>
      The number of distinct user interactions in an AMP subframe. See
      definition of user interaction:
      https://web.dev/better-responsiveness-metric/#group-events-into-interactions
    </summary>
  </metric>
  <metric
      name="SubFrame.InteractiveTiming.SlowUserInteractionLatencyOverBudget.HighPercentile.MaxEventDuration2">
    <obsolete>
      Removed March 2022 in favor of
      SlowUserInteractionLatency.HighPercentile2.MaxEventDuration
    </obsolete>
    <summary>
      An approximation of high percentile of user interaction latency above
      budget of a page load in AMP subframes, in ms. For this metric, we measure
      the latency of user interactions by
      Responsiveness.UserInteraction.MaxEventDuration and we deduct a budget
      from the original value. If the latency value is below the budget, it will
      be treated as 0 ms. Each type of interaction has its own budget.
    </summary>
  </metric>
  <metric
      name="SubFrame.InteractiveTiming.SlowUserInteractionLatencyOverBudget.HighPercentile.TotalEventDuration2">
    <obsolete>
      Removed March 2022 in favor of
      SlowUserInteractionLatency.HighPercentile2.MaxEventDuration
    </obsolete>
    <summary>
      An approximation of high percentile of user interaction latency above
      budget of a page load in AMP subframes, in ms. For this metric, we measure
      the latency of user interactions by
      Responsiveness.UserInteraction.TotalEventDuration and we deduct a budget
      from the original value. If the latency value is below the budget, it will
      be treated as 0 ms. Each type of interaction has its own budget.
    </summary>
  </metric>
  <metric
      name="SubFrame.InteractiveTiming.SlowUserInteractionLatencyOverBudget.HighPercentile2.MaxEventDuration2">
    <summary>
      An approximation of high percentile of user interaction latency above
      budget of a page load in AMP subframes, in ms. For this metric, we measure
      the latency of user interactions by
      Responsiveness.UserInteraction.MaxEventDuration and we deduct a budget
      from the original value. If the latency value is below the budget, it will
      be treated as 0 ms. Each type of interaction has its own budget.
    </summary>
  </metric>
  <metric
      name="SubFrame.InteractiveTiming.SlowUserInteractionLatencyOverBudget.HighPercentile2.TotalEventDuration2">
    <obsolete>
      Removed March 2022 in favor of
      SlowUserInteractionLatency.HighPercentile2.MaxEventDuration
    </obsolete>
    <summary>
      An approximation of high percentile of user interaction latency above
      budget of a page load in AMP subframes, in ms. For this metric, we measure
      the latency of user interactions by
      Responsiveness.UserInteraction.TotalEventDuration and we deduct a budget
      from the original value. If the latency value is below the budget, it will
      be treated as 0 ms. Each type of interaction has its own budget.
    </summary>
  </metric>
  <metric
      name="SubFrame.InteractiveTiming.SumOfUserInteractionLatencyOverBudget.MaxEventDuration2">
    <summary>
      The sum of user interaction latency above budget of a page load in AMP
      subframes, in ms. For this metric, we measure the latency of user
      interactions by Responsiveness.UserInteraction.MaxEventDuration and we
      deduct a budget from the original value. If the latency value is below the
      budget, it will be treated as 0 ms. Each type of interaction has its own
      budget.
    </summary>
  </metric>
  <metric
      name="SubFrame.InteractiveTiming.SumOfUserInteractionLatencyOverBudget.TotalEventDuration2">
    <obsolete>
      Removed March 2022 in favor of
      SlowUserInteractionLatency.HighPercentile2.MaxEventDuration
    </obsolete>
    <summary>
      The sum of user interaction latency above budget of a page load in AMP
      subframes, in ms. For this metric, we measure the latency of user
      interactions by Responsiveness.UserInteraction.TotalEventDuration and we
      deduct a budget from the original value. If the latency value is below the
      budget, it will be treated as 0 ms. Each type of interaction has its own
      budget.
    </summary>
  </metric>
  <metric
      name="SubFrame.InteractiveTiming.UserInteractionLatency.HighPercentile2.MaxEventDuration">
    <summary>
      An approximation of a high percentile of user interaction latency of an
      AMP subframe, in ms. For this metric, we measure the latency of user
      interactions by Responsiveness.UserInteraction.MaxEventDuration.
    </summary>
  </metric>
  <metric
      name="SubFrame.InteractiveTiming.WorstUserInteractionLatency.MaxEventDuration2">
    <summary>
      The maximum value of high percentile of user interaction latency above
      budget of a page load in AMP subframes, in ms. For this metric, we measure
      the latency of user interactions by
      Responsiveness.UserInteraction.MaxEventDuration.
    </summary>
  </metric>
  <metric
      name="SubFrame.InteractiveTiming.WorstUserInteractionLatency.TotalEventDuration2">
    <obsolete>
      Removed March 2022 in favor of
      SlowUserInteractionLatency.HighPercentile2.MaxEventDuration
    </obsolete>
    <summary>
      The maximum value of high percentile of user interaction latency above
      budget of a page load in AMP subframes, in ms. For this metric, we measure
      the latency of user interactions by
      Responsiveness.UserInteraction.TotalEventDuration.
    </summary>
  </metric>
  <metric
      name="SubFrame.InteractiveTiming.WorstUserInteractionLatencyOverBudget.MaxEventDuration2">
    <obsolete>
      Removed March 2022 in favor of
      SlowUserInteractionLatency.HighPercentile2.MaxEventDuration
    </obsolete>
    <summary>
      The maximum value of user interaction latency above budget of a page load
      in AMP subframes, in ms. For this metric, we measure the latency of user
      interactions by Responsiveness.UserInteraction.MaxEventDuration and we
      deduct a budget from the original value. If the latency value is below the
      budget, it will be treated as 0 ms. Each type of interaction has its own
      budget.
    </summary>
  </metric>
  <metric
      name="SubFrame.InteractiveTiming.WorstUserInteractionLatencyOverBudget.TotalEventDuration2">
    <obsolete>
      Removed March 2022 in favor of
      SlowUserInteractionLatency.HighPercentile2.MaxEventDuration
    </obsolete>
    <summary>
      The maximum value of user interaction latency above budget of a page load
      in AMP subframes, in ms. For this metric, we measure the latency of user
      interactions by Responsiveness.UserInteraction.TotalEventDuration and we
      deduct a budget from the original value. If the latency value is below the
      budget, it will be treated as 0 ms. Each type of interaction has its own
      budget.
    </summary>
  </metric>
  <metric
      name="SubFrame.LayoutInstability.AverageCumulativeShiftScore.SessionWindow.Gap5000ms">
    <obsolete>
      Deprecated 06/2021.
    </obsolete>
    <summary>
      Measures the average cumulative layout shift (bit.ly/cls-explainer) that
      has occurred in a session window, in the AMP subframe. The gap between two
      consecutive shifts in a window is not bigger than 5000ms. This metric's
      integral value is 100x the fractional cumulative layout shift score
      described in the explainer.
    </summary>
  </metric>
  <metric name="SubFrame.LayoutInstability.CumulativeShiftScore">
    <summary>
      Deprecated as of 04/23. It is still reported, but most users should use
      AmpPageLoad.SubFrame.LayoutInstability.MaxCumulativeShiftScore.SessionWindow.Gap1000ms.Max5000ms.

      Measures the cumulative layout shift (bit.ly/lsm-explainer) that has
      occurred during the session, in the AMP subframe. This metric's integral
      value is 100x the fractional cumulative layout shift score described in
      the explainer.
    </summary>
  </metric>
  <metric
      name="SubFrame.LayoutInstability.CumulativeShiftScore.BeforeInputOrScroll">
    <summary>
      Measures the cumulative layout shift (bit.ly/lsm-explainer) that has
      occurred in the AMP subframe, before any user input or document scroll.
      This metric's integral value is 100x the fractional cumulative layout
      shift score described in the explainer.
    </summary>
  </metric>
  <metric
      name="SubFrame.LayoutInstability.MaxCumulativeShiftScore.SessionWindow.Gap1000ms">
    <obsolete>
      Deprecated 06/2021.
    </obsolete>
    <summary>
      Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that
      has occurred in a session window, in the AMP subframe. The gap between two
      consecutive shifts in a window is not bigger than 1000ms. This metric's
      integral value is 100x the fractional cumulative layout shift score
      described in the explainer.
    </summary>
  </metric>
  <metric
      name="SubFrame.LayoutInstability.MaxCumulativeShiftScore.SessionWindow.Gap1000ms.Max5000ms">
    <summary>
      Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that
      has occurred in a session window, in the AMP subframe. The gap between two
      consecutive shifts in a window is not bigger than 1000ms and the maximum
      window size is 5000ms. This metric's integral value is 100x the fractional
      cumulative layout shift score described in the explainer.
    </summary>
  </metric>
  <metric
      name="SubFrame.LayoutInstability.MaxCumulativeShiftScore.SessionWindowByInputs.Gap1000ms.Max5000ms">
    <obsolete>
      Deprecated 06/2021.
    </obsolete>
    <summary>
      Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that
      has occurred in a session window, in the AMP subframe. The gap between two
      consecutive shifts in a window is not bigger than 1000ms and the maximum
      window size is 5000ms. We start a new window whenever there's a user
      input. This metric's integral value is 100x the fractional cumulative
      layout shift score described in the explainer.
    </summary>
  </metric>
  <metric
      name="SubFrame.LayoutInstability.MaxCumulativeShiftScore.SlidingWindow.Duration1000ms">
    <obsolete>
      Deprecated 06/2021.
    </obsolete>
    <summary>
      Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that
      has occurred in a 1000ms sliding window, in the AMP subframe. This
      metric's integral value is 100x the fractional cumulative layout shift
      score described in the explainer.
    </summary>
  </metric>
  <metric
      name="SubFrame.LayoutInstability.MaxCumulativeShiftScore.SlidingWindow.Duration300ms">
    <obsolete>
      Deprecated 06/2021.
    </obsolete>
    <summary>
      Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that
      has occurred in a 300ms sliding window, in the AMP subframe. This metric's
      integral value is 100x the fractional cumulative layout shift score
      described in the explainer.
    </summary>
  </metric>
  <metric name="SubFrame.LayoutStability.JankScore">
    <obsolete>
      Removed July 2019 in favor of
      SubFrame.LayoutInstability.CumulativeShiftScore.
    </obsolete>
    <summary>
      Measures the amount of layout jank (bit.ly/lsm-explainer) that has
      occurred during the session, in the AMP subframe. This metric's integral
      value is 100x the fractional jank score described in the explainer.
    </summary>
  </metric>
  <metric name="SubFrame.MainFrameToSubFrameNavigationDelta">
    <summary>
      Measures the time in milliseconds from the navigation in the main frame to
      the navigation in the AMP subframe. Will be negative in cases where the
      AMP subframe was prerendered. Will be positive in cases where the main
      frame was a non-same-document navigation. Should be near-zero when the
      main frame navigation is a same-document navigation and the AMP subframe
      was not prerendered.
    </summary>
  </metric>
  <metric name="SubFrame.MobileFriendliness.AllowUserZoom" enum="Boolean">
    <obsolete>
      Deprecated 12/2022.
    </obsolete>
    <summary>
      Whether the page allows the user to zoom in/out, in the AMP subframe.
    </summary>
  </metric>
  <metric name="SubFrame.MobileFriendliness.BadTapTargetsRatio">
    <obsolete>
      Deprecated 12/2022.
    </obsolete>
    <summary>
      Percentage of tap targets whose center position is within another tap
      target (expanded by a margin), in the AMP subframe. The detail of the
      algorithm is go/bad-tap-target-ukm. If evaluation time budget exceeded,
      this will be is -2.
    </summary>
  </metric>
  <metric name="SubFrame.MobileFriendliness.SmallTextRatio">
    <obsolete>
      Deprecated 12/2022.
    </obsolete>
    <summary>
      Percentage of small font text area in total text area, in the AMP
      subframe.
    </summary>
  </metric>
  <metric
      name="SubFrame.MobileFriendliness.TextContentOutsideViewportPercentage">
    <obsolete>
      Deprecated 12/2022.
    </obsolete>
    <summary>
      Percentage of pixels of text and images horizontally outside the viewport,
      relative to the frame width, in the AMP subframe.
    </summary>
  </metric>
  <metric name="SubFrame.MobileFriendliness.ViewportDeviceWidth" enum="Boolean">
    <obsolete>
      Deprecated 12/2022.
    </obsolete>
    <summary>
      Whether the width of the viewport is specified as device-width or not, in
      the AMP subframe.
    </summary>
  </metric>
  <metric name="SubFrame.MobileFriendliness.ViewportHardcodedWidth">
    <obsolete>
      Deprecated 12/2022.
    </obsolete>
    <summary>
      Specified hardcoded viewport width in CSS pixels, in the AMP subframe.
    </summary>
  </metric>
  <metric name="SubFrame.MobileFriendliness.ViewportInitialScaleX10">
    <obsolete>
      Deprecated 12/2022.
    </obsolete>
    <summary>
      Specified initial viewport scaling, in the AMP subframe, multiplied by 10.
      1 means 0.1, 100 means 10. [1-100].
    </summary>
  </metric>
  <metric
      name="SubFrame.PaintTiming.NavigationToExperimentalLargestContentfulPaint">
    <obsolete>
      Replaced by SubFrame.PaintTiming.NavigationToLargestContentfulPaint2 on
      Oct 2020.
    </obsolete>
    <summary>
      Measures the time in milliseconds from navigation timing's navigation
      start to the time when the page first paints the experimental largest
      content (text or image) within viewport, in the AMP subframe. See
      http://bit.ly/largest_contentful_paint_explainer for more details. Differs
      from the non-experimental version in that removed content is still
      considered a valid candidate.
    </summary>
  </metric>
  <metric name="SubFrame.PaintTiming.NavigationToFirstContentfulPaint">
    <summary>
      Measures the time in milliseconds from navigation timing's navigation
      start to the time when the page first paints content, in the AMP subframe.
      A contentful paint includes a paint of text, image, SVG, or canvas.
    </summary>
  </metric>
  <metric name="SubFrame.PaintTiming.NavigationToFirstPaint">
    <summary>
      Measures the time in milliseconds from navigation timing's navigation
      start to the time the first paint is performed, in the AMP subframe.
    </summary>
  </metric>
  <metric name="SubFrame.PaintTiming.NavigationToLargestContentfulPaint">
    <obsolete>
      Replaced by SubFrame.PaintTiming.NavigationToLargestContentfulPaint2. No
      longer reported from Nov 2021.
    </obsolete>
    <summary>
      Measures the time in milliseconds from navigation timing's navigation
      start to the time when the page first paints the largest content (text or
      image) within viewport, in the AMP subframe. See
      http://bit.ly/largest_contentful_paint_explainer for more details. Note:
      Will be replaced by
      SubFrame.PaintTiming.NavigationToLargestContentfulPaint2.
    </summary>
  </metric>
  <metric name="SubFrame.PaintTiming.NavigationToLargestContentfulPaint2">
    <summary>
      Measures the time in milliseconds from navigation timing's navigation
      start to the time when the page first paints the experimental largest
      content (text or image) within viewport, in the AMP subframe. See
      http://bit.ly/largest_contentful_paint_explainer for more details. Differs
      from SubFrame.PaintTiming.NavigationToLargestContentfulPaint in that
      removed content is still considered a valid candidate.
    </summary>
  </metric>
  <metric name="SubFrame.PaintTiming.NavigationToLargestContentPaint">
    <obsolete>
      Deprecated 7/2019
    </obsolete>
    <summary>
      Measures the time in milliseconds from navigation timing's navigation
      start to the time when the page first paints the largest content (text or
      image) within viewport, in the AMP subframe. See
      http://bit.ly/largest_contentful_paint_explainer for more details.
    </summary>
  </metric>
  <metric name="SubFrameAmpPageLoad">
    <summary>
      True if the page loaded in any subframe is an AMP document (has an amp
      attribute in the html element). Will not be recorded for non-AMP frames.
      Note that most AMP documents are loaded in a subframe from a reader like
      Google Search; this metric measures usage of such readers.
    </summary>
  </metric>
</event>

<event name="Android.DarkTheme.AutoDarkMode">
  <owner>nemco@google.com</owner>
  <owner>wenyufu@chromium.org</owner>
  <summary>
    Recorded when the user changes auto-dark theming for a site through the app
    menu.
  </summary>
  <metric name="DisabledByUser" enum="Boolean">
    <summary>
      A boolean signaling that auto-dark theming has been disabled.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="Android.MultiWindowChangeActivity">
  <owner>gangwu@chromium.org</owner>
  <owner>fgorski@chromium.org</owner>
  <summary>
    Records when the activity enter or exit Android N+ multi-window mode.
  </summary>
  <metric name="ActivityType" enum="AndroidMultiWindowActivityType">
    <summary>
      Enter or exit the multi-window mode.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="Android.MultiWindowState">
  <owner>gangwu@chromium.org</owner>
  <owner>fgorski@chromium.org</owner>
  <summary>
    Records the multi window state when the activity is shown.
  </summary>
  <metric name="WindowState" enum="AndroidMultiWindowState">
    <summary>
      The state of the multi-window mode, single or multi-window.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="Android.NonDefaultRdsPageLoad">
  <owner>shuyng@google.com</owner>
  <owner>twellington@chromium.org</owner>
  <summary>
    Records on each page load when the User Agent is overridden with site
    exception.
  </summary>
  <metric name="UserAgentType" enum="UserAgentRequestType">
    <summary>
      An enum that records the type of user agent.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="Android.ScreenRotation">
  <owner>gangwu@chromium.org</owner>
  <owner>fgorski@chromium.org</owner>
  <summary>
    Records when a user rotates the device triggering a screen orientation
    change.
  </summary>
  <metric name="TargetDeviceOrientation" enum="DeviceOrientation2">
    <summary>
      The orientation of the device rotated to.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="Android.UserRequestedUserAgentChange">
  <owner>gangwu@chromium.org</owner>
  <owner>fgorski@chromium.org</owner>
  <summary>
    Records when a user pressed 'Request Desktop Site' in the app menu.
  </summary>
  <metric name="UserAgentType" enum="UserAgentRequestType">
    <summary>
      An enum that records the type of user agent.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="AppListAppClickData">
  <owner>pdyson@chromium.org</owner>
  <summary>
    AppListAppClickData events contain click history metrics for an app. These
    events are recorded when an app is launched from the launcher on ChromeOS,
    but may be for an app different from the app launched. See event
    AppListAppLaunch for more detail on the keys used.
  </summary>
  <metric name="AppLaunchId">
    <summary>
      The ID of the app launch event.
    </summary>
  </metric>
  <metric name="AppType">
    <summary>
      The type of app. 1: CHROME, 2: PLAY, 3: PWA/Bookmark app.
    </summary>
  </metric>
  <metric name="ClickRank">
    <summary>
      Rank apps by total number of clicks. The app with the most clicks has rank
      1.
    </summary>
  </metric>
  <metric name="ClicksEachHour00">
    <summary>
      The number of clicks on this app in the current session that occurred
      between 12:00am and 1:00am. Bucketing: values above 20 rounded down to the
      nearest 10. Maximum value of 200.
    </summary>
  </metric>
  <metric name="ClicksEachHour01">
    <summary>
      The number of clicks on this app in the current session that occurred
      between 1:00am and 2:00am. Bucketing: values above 20 rounded down to the
      nearest 10. Maximum value of 200.
    </summary>
  </metric>
  <metric name="ClicksEachHour02">
    <summary>
      The number of clicks on this app in the current session that occurred
      between 2:00am and 3:00am. Bucketing: values above 20 rounded down to the
      nearest 10. Maximum value of 200.
    </summary>
  </metric>
  <metric name="ClicksEachHour03">
    <summary>
      The number of clicks on this app in the current session that occurred
      between 3:00am and 4:00am. Bucketing: values above 20 rounded down to the
      nearest 10. Maximum value of 200.
    </summary>
  </metric>
  <metric name="ClicksEachHour04">
    <summary>
      The number of clicks on this app in the current session that occurred
      between 4:00am and 5:00am. Bucketing: values above 20 rounded down to the
      nearest 10. Maximum value of 200.
    </summary>
  </metric>
  <metric name="ClicksEachHour05">
    <summary>
      The number of clicks on this app in the current session that occurred
      between 5:00am and 6:00am. Bucketing: values above 20 rounded down to the
      nearest 10. Maximum value of 200.
    </summary>
  </metric>
  <metric name="ClicksEachHour06">
    <summary>
      The number of clicks on this app in the current session that occurred
      between 6:00am and 7:00am. Bucketing: values above 20 rounded down to the
      nearest 10. Maximum value of 200.
    </summary>
  </metric>
  <metric name="ClicksEachHour07">
    <summary>
      The number of clicks on this app in the current session that occurred
      between 7:00am and 8:00am. Bucketing: values above 20 rounded down to the
      nearest 10. Maximum value of 200.
    </summary>
  </metric>
  <metric name="ClicksEachHour08">
    <summary>
      The number of clicks on this app in the current session that occurred
      between 8:00am and 9:00am. Bucketing: values above 20 rounded down to the
      nearest 10. Maximum value of 200.
    </summary>
  </metric>
  <metric name="ClicksEachHour09">
    <summary>
      The number of clicks on this app in the current session that occurred
      between 9:00am and 10:00am. Bucketing: values above 20 rounded down to the
      nearest 10. Maximum value of 200.
    </summary>
  </metric>
  <metric name="ClicksEachHour10">
    <summary>
      The number of clicks on this app in the current session that occurred
      between 10:00am and 11:00am. Bucketing: values above 20 rounded down to
      the nearest 10. Maximum value of 200.
    </summary>
  </metric>
  <metric name="ClicksEachHour11">
    <summary>
      The number of clicks on this app in the current session that occurred
      between 11:00am and 12:00pm. Bucketing: values above 20 rounded down to
      the nearest 10. Maximum value of 200.
    </summary>
  </metric>
  <metric name="ClicksEachHour12">
    <summary>
      The number of clicks on this app in the current session that occurred
      between 12:00pm and 1:00pm. Bucketing: values above 20 rounded down to the
      nearest 10. Maximum value of 200.
    </summary>
  </metric>
  <metric name="ClicksEachHour13">
    <summary>
      The number of clicks on this app in the current session that occurred
      between 1:00pm and 2:00pm. Bucketing: values above 20 rounded down to the
      nearest 10. Maximum value of 200.
    </summary>
  </metric>
  <metric name="ClicksEachHour14">
    <summary>
      The number of clicks on this app in the current session that occurred
      between 2:00pm and 3:00pm. Bucketing: values above 20 rounded down to the
      nearest 10. Maximum value of 200.
    </summary>
  </metric>
  <metric name="ClicksEachHour15">
    <summary>
      The number of clicks on this app in the current session that occurred
      between 3:00pm and 4:00pm. Bucketing: values above 20 rounded down to the
      nearest 10. Maximum value of 200.
    </summary>
  </metric>
  <metric name="ClicksEachHour16">
    <summary>
      The number of clicks on this app in the current session that occurred
      between 4:00pm and 5:00pm. Bucketing: values above 20 rounded down to the
      nearest 10. Maximum value of 200.
    </summary>
  </metric>
  <metric name="ClicksEachHour17">
    <summary>
      The number of clicks on this app in the current session that occurred
      between 5:00pm and 6:00pm. Bucketing: values above 20 rounded down to the
      nearest 10. Maximum value of 200.
    </summary>
  </metric>
  <metric name="ClicksEachHour18">
    <summary>
      The number of clicks on this app in the current session that occurred
      between 6:00pm and 7:00pm. Bucketing: values above 20 rounded down to the
      nearest 10. Maximum value of 200.
    </summary>
  </metric>
  <metric name="ClicksEachHour19">
    <summary>
      The number of clicks on this app in the current session that occurred
      between 7:00pm and 8:00pm. Bucketing: values above 20 rounded down to the
      nearest 10. Maximum value of 200.
    </summary>
  </metric>
  <metric name="ClicksEachHour20">
    <summary>
      The number of clicks on this app in the current session that occurred
      between 8:00pm and 9:00pm. Bucketing: values above 20 rounded down to the
      nearest 10. Maximum value of 200.
    </summary>
  </metric>
  <metric name="ClicksEachHour21">
    <summary>
      The number of clicks on this app in the current session that occurred
      between 9:00pm and 10:00pm. Bucketing: values above 20 rounded down to the
      nearest 10. Maximum value of 200.
    </summary>
  </metric>
  <metric name="ClicksEachHour22">
    <summary>
      The number of clicks on this app in the current session that occurred
      between 10:00pm and 11:00pm. Bucketing: values above 20 rounded down to
      the nearest 10. Maximum value of 200.
    </summary>
  </metric>
  <metric name="ClicksEachHour23">
    <summary>
      The number of clicks on this app in the current session that occurred
      between 11:00pm and 12:00am. Bucketing: values above 20 rounded down to
      the nearest 10. Maximum value of 200.
    </summary>
  </metric>
  <metric name="ClicksLast24Hours">
    <summary>
      The number of clicks on this app in the last 24 hours. Accurate to 15
      minutes. Bucketing: values above 20 rounded down to the nearest 10.
      Maximum value of 200.
    </summary>
  </metric>
  <metric name="ClicksLastHour">
    <summary>
      The number of clicks on this app in the last hour. Accurate to one minute.
      Bucketing: values above 20 rounded down to the nearest 10. Maximum value
      of 200.
    </summary>
  </metric>
  <metric name="LastLaunchedFrom">
    <summary>
      Where the app was last launched from. 1: GRID, 2: SUGGESTED, 3: SHELF.
    </summary>
  </metric>
  <metric name="MostRecentlyUsedIndex">
    <summary>
      Index recording when in the sequence of app launch clicks the app was last
      clicked on. 0: most recent app clicked on, 1: app clicked immediately
      before the most recent, etc.
    </summary>
  </metric>
  <metric name="SequenceNumber">
    <summary>
      The sequence number of the AppListAppLaunch event that corresponds to this
      AppListAppClickData event. There will be six AppListAppClickData events
      for each sequence number.
    </summary>
  </metric>
  <metric name="TimeSinceLastClick">
    <summary>
      Time since this app was last clicked on to launch. In seconds, bucketed:
      [1, 59] to the nearest second, [60, 599] to the nearest minute, [600,
      1199] to the nearest 5 minutes, [1200, 3599] to the nearest 10 minutes,
      [3600, 17999] to the nearest 30 minutes, [18000, 86400] to the nearest
      hour.
    </summary>
  </metric>
  <metric name="TotalClicks">
    <summary>
      Total number of clicks launching this app in this sesion. Bucketing:
      values above 20 rounded down to the nearest 10. Maximum value of 200.
    </summary>
  </metric>
</event>

<event name="AppListAppLaunch">
  <owner>pdyson@chromium.org</owner>
  <summary>
    Recorded when an app is launched from the launcher on ChromeOS. This can be
    from the suggestion chip, or from the grid of apps. The UKM metrics are not
    keyed by navigational urls. Instead, for Chrome apps the keys are based upon
    the app id, for Play apps the keys are based upon a hash of the package name
    and for PWAs the keys are the urls associated with the PWA.
  </summary>
  <metric name="AllClicksLast24Hours">
    <summary>
      Total number of clicks launching logged apps in the last 24 hours.
      Accurate to the nearest 15 minutes. Bucketing: values above 20 rounded
      down to the nearest 10. Maximum value of 200.
    </summary>
  </metric>
  <metric name="AllClicksLastHour">
    <summary>
      Total number of clicks launching logged apps in the last hour. Accurate to
      the nearest minute. Bucketing: values above 20 rounded down to the nearest
      10. Maximum value of 200.
    </summary>
  </metric>
  <metric name="AppType">
    <summary>
      The type of app. 1: CHROME, 2: PLAY, 3: PWA/Bookmark app.
    </summary>
  </metric>
  <metric name="ClickMethod">
    <summary>
      Click method. 1: MOUSE, 2: TOUCH, 3: SYTLUS, 4: KEYBOARD.
    </summary>
  </metric>
  <metric name="DayOfWeek">
    <summary>
      An enum representing the day of the week that the data was logged in the
      local time zone. Sunday = 0.
    </summary>
  </metric>
  <metric name="DeviceMode">
    <summary>
      The mode of the device. 1: CLOSED_LID (Lid is closed), 2: LAPTOP (Lid is
      open, tablet mode off or unsupported) , 3: TABLET (Lid is open, tablet
      mode on or no lid at all).
    </summary>
  </metric>
  <metric name="DeviceType">
    <summary>
      The type of the device. 1: TABLET, 2: LAPTOP.
    </summary>
  </metric>
  <metric name="HourOfDay">
    <summary>
      The hour of the day when the data is logged. Hours since midnight in the
      local time zone.
    </summary>
  </metric>
  <metric name="LaunchedFrom">
    <summary>
      Where the app was launched from. 1: GRID, 2: SUGGESTED, 3: SHELF.
    </summary>
  </metric>
  <metric name="PositionIndex">
    <summary>
      The position of the app within the grid/suggested apps/shelf. 0 is the
      first position.
    </summary>
  </metric>
  <metric name="TotalHours">
    <summary>
      Number of hours in the current session up to this event. Bucketing:
      exponential buckets, increasing in size by 25%, rounded to the nearest
      integer. i.e. 0, 1, 2, 3, 4, 5, 6, 7, 9, 12, 15, 18, 23, 28, 36, 44...
    </summary>
  </metric>
</event>

<event name="AppListNonAppImpression">
  <obsolete>
    Deprecated March 2021.
  </obsolete>
  <owner>jiameng@chromium.org</owner>
  <owner>thanhdng@chromium.org</owner>
  <owner>tby@chromium.org</owner>
  <summary>
    Records details of impressions and launches of non-apps in the ChromeOS
    launcher, such as files, omnibox results, and answer cards.
  </summary>
  <metric name="Category" enum="AppListNonAppImpressionCategory">
    <summary>
      The kind of launcher item. Corresponds to the value of
      ChromeSearchResult::result_[sub]type.
    </summary>
  </metric>
  <metric name="DayOfWeek">
    <summary>
      The day of the week that the event was logged on, in the local time zone.
      Sunday is 0.
    </summary>
  </metric>
  <metric name="DeviceMode" enum="AppListNonAppImpressionDeviceMode">
    <summary>
      The mode of the device.
    </summary>
  </metric>
  <metric name="EventId">
    <summary>
      An ID linking together events within a single set of launcher search
      results. One of these may be a launch, and the rest impressions.
    </summary>
  </metric>
  <metric name="FileExtension" enum="AppListNonAppImpressionFileExtension">
    <summary>
      An enum representing the file extension if this event represents a local
      or DriveFS file.
    </summary>
  </metric>
  <metric name="HourOfDay">
    <summary>
      The hour of the day that the event was logged in. Hours measured from
      midnight in the local timezone.
    </summary>
  </metric>
  <metric name="IsLaunched" enum="Boolean">
    <summary>
      True if the item represented by this event was launched, false otherwise.
    </summary>
  </metric>
  <metric name="LaunchesAtHour00">
    <summary>
      The number of launches within the last 24 hours at hour 0. Rounded down to
      the nearest exponential bucket, with a bucket ratio of 1.15.
    </summary>
  </metric>
  <metric name="LaunchesAtHour01">
    <summary>
      The number of launches within the last 24 hours at hour 1. Rounded down to
      the nearest exponential bucket, with a bucket ratio of 1.15.
    </summary>
  </metric>
  <metric name="LaunchesAtHour02">
    <summary>
      The number of launches within the last 24 hours at hour 2. Rounded down to
      the nearest exponential bucket, with a bucket ratio of 1.15.
    </summary>
  </metric>
  <metric name="LaunchesAtHour03">
    <summary>
      The number of launches within the last 24 hours at hour 3. Rounded down to
      the nearest exponential bucket, with a bucket ratio of 1.15.
    </summary>
  </metric>
  <metric name="LaunchesAtHour04">
    <summary>
      The number of launches within the last 24 hours at hour 4. Rounded down to
      the nearest exponential bucket, with a bucket ratio of 1.15.
    </summary>
  </metric>
  <metric name="LaunchesAtHour05">
    <summary>
      The number of launches within the last 24 hours at hour 5. Rounded down to
      the nearest exponential bucket, with a bucket ratio of 1.15.
    </summary>
  </metric>
  <metric name="LaunchesAtHour06">
    <summary>
      The number of launches within the last 24 hours at hour 6. Rounded down to
      the nearest exponential bucket, with a bucket ratio of 1.15.
    </summary>
  </metric>
  <metric name="LaunchesAtHour07">
    <summary>
      The number of launches within the last 24 hours at hour 7. Rounded down to
      the nearest exponential bucket, with a bucket ratio of 1.15.
    </summary>
  </metric>
  <metric name="LaunchesAtHour08">
    <summary>
      The number of launches within the last 24 hours at hour 8. Rounded down to
      the nearest exponential bucket, with a bucket ratio of 1.15.
    </summary>
  </metric>
  <metric name="LaunchesAtHour09">
    <summary>
      The number of launches within the last 24 hours at hour 9. Rounded down to
      the nearest exponential bucket, with a bucket ratio of 1.15.
    </summary>
  </metric>
  <metric name="LaunchesAtHour10">
    <summary>
      The number of launches within the last 24 hours at hour 10. Rounded down
      to the nearest exponential bucket, with a bucket ratio of 1.15.
    </summary>
  </metric>
  <metric name="LaunchesAtHour11">
    <summary>
      The number of launches within the last 24 hours at hour 11. Rounded down
      to the nearest exponential bucket, with a bucket ratio of 1.15.
    </summary>
  </metric>
  <metric name="LaunchesAtHour12">
    <summary>
      The number of launches within the last 24 hours at hour 12. Rounded down
      to the nearest exponential bucket, with a bucket ratio of 1.15.
    </summary>
  </metric>
  <metric name="LaunchesAtHour13">
    <summary>
      The number of launches within the last 24 hours at hour 13. Rounded down
      to the nearest exponential bucket, with a bucket ratio of 1.15.
    </summary>
  </metric>
  <metric name="LaunchesAtHour14">
    <summary>
      The number of launches within the last 24 hours at hour 14. Rounded down
      to the nearest exponential bucket, with a bucket ratio of 1.15.
    </summary>
  </metric>
  <metric name="LaunchesAtHour15">
    <summary>
      The number of launches within the last 24 hours at hour 15. Rounded down
      to the nearest exponential bucket, with a bucket ratio of 1.15.
    </summary>
  </metric>
  <metric name="LaunchesAtHour16">
    <summary>
      The number of launches within the last 24 hours at hour 16. Rounded down
      to the nearest exponential bucket, with a bucket ratio of 1.15.
    </summary>
  </metric>
  <metric name="LaunchesAtHour17">
    <summary>
      The number of launches within the last 24 hours at hour 17. Rounded down
      to the nearest exponential bucket, with a bucket ratio of 1.15.
    </summary>
  </metric>
  <metric name="LaunchesAtHour18">
    <summary>
      The number of launches within the last 24 hours at hour 18. Rounded down
      to the nearest exponential bucket, with a bucket ratio of 1.15.
    </summary>
  </metric>
  <metric name="LaunchesAtHour19">
    <summary>
      The number of launches within the last 24 hours at hour 19. Rounded down
      to the nearest exponential bucket, with a bucket ratio of 1.15.
    </summary>
  </metric>
  <metric name="LaunchesAtHour20">
    <summary>
      The number of launches within the last 24 hours at hour 20. Rounded down
      to the nearest exponential bucket, with a bucket ratio of 1.15.
    </summary>
  </metric>
  <metric name="LaunchesAtHour21">
    <summary>
      The number of launches within the last 24 hours at hour 21. Rounded down
      to the nearest exponential bucket, with a bucket ratio of 1.15.
    </summary>
  </metric>
  <metric name="LaunchesAtHour22">
    <summary>
      The number of launches within the last 24 hours at hour 22. Rounded down
      to the nearest exponential bucket, with a bucket ratio of 1.15.
    </summary>
  </metric>
  <metric name="LaunchesAtHour23">
    <summary>
      The number of launches within the last 24 hours at hour 23. Rounded down
      to the nearest exponential bucket, with a bucket ratio of 1.15.
    </summary>
  </metric>
  <metric name="LaunchesThisSession">
    <summary>
      How many times this item has been launched during this session. Rounded
      down to the nearest exponential bucket, with a bucket ratio of 1.15.
    </summary>
  </metric>
  <metric name="Position">
    <summary>
      The index of this item in the search results list. Indices start at 0.
    </summary>
  </metric>
  <metric name="QueryLength">
    <summary>
      The length of the raw search query with whitespace trimmed. Rounded down
      to the nearest exponential bucket, with a bucket ratio of 1.15.
    </summary>
  </metric>
  <metric name="RelevanceScore">
    <summary>
      The raw relevance score returned by the relevant search provider for this
      item.
    </summary>
  </metric>
  <metric name="TimeOfLastLaunch">
    <summary>
      The hour when the previous launch of this item occurred. Hours measured
      from midnight in the local timezone. This can be any value 0-23, as the
      last launch could have been on a previous day.
    </summary>
  </metric>
  <metric name="TimeSinceLastLaunch">
    <summary>
      Seconds since this item was last launched in this session. Rounded down to
      the nearest exponential bucket, with a bucket ratio of 1.045. This makes
      the bucket at 24 hour mark approximately 1 hour long.
    </summary>
  </metric>
</event>

<event name="Autofill.AddressProfileImport">
  <owner>vidhanj@google.com</owner>
  <owner>koerber@google.com</owner>
  <summary>
    Recorded after a form submission that either resulted in a save prompt for
    addresses or in a silent update of an already existing profile.
  </summary>
  <metric name="AutocompleteUnrecognizedImport" enum="Boolean">
    <summary>
      Logs if data was imported from a field that has autocomplete=UNRECOGNIZED.
    </summary>
  </metric>
  <metric name="ImportType" enum="AutofillProfileImportType">
    <summary>
      Logs the import type of the storage prompt. An import type can be either
      the import of a new profile, an update of an existing profile that results
      in a confirmation dialog, or a silent update that only changes the
      structure of an already stored address but does not affect any
      settings-visible stored data.
    </summary>
  </metric>
  <metric name="NumberOfEditedFields">
    <summary>
      Logs the count for the number of fields that have been edited by the user
      in the storage dialog before the storage was confirmed.
    </summary>
  </metric>
  <metric name="PhoneNumberStatus" enum="AutofillPhoneImportValidity">
    <summary>
      Logs the phone number validity status based on whether the phone number
      was imported in the profile or not or removed beforehand.
    </summary>
  </metric>
  <metric name="UserDecision" enum="AutofillProfileImportDecision">
    <summary>
      Logs the user decision based on the storage prompt.
    </summary>
  </metric>
</event>

<event name="Autofill.CardUploadDecision">
  <owner>sebsg@chromium.org</owner>
  <metric name="UploadDecision">
    <summary>
      Whether the upload was proposed to the user or the reasons why it was not.
      The value is a bitmask of |CardUploadDecisionMetric|.
    </summary>
  </metric>
</event>

<event name="Autofill.CreditCardFill">
  <owner>schwering@google.com</owner>
  <summary>
    Recorded when a credit card form is autofilled.
  </summary>
  <metric name="Fillable.AfterSecurity.Bitmask"
      enum="AutofillCreditCardSeamlessnessBitmask">
    <summary>
      Logs the field types which Autofill would have filled if the credit card
      on file was complete.
    </summary>
  </metric>
  <metric name="Fillable.AfterSecurity.Qualitative"
      enum="CreditCardSeamlessFill">
    <summary>
      Logs a qualitative summary of the field types which Autofill would have
      filled if the credit card on file was complete.
    </summary>
  </metric>
  <metric name="Fillable.AfterSecurity.Visible.Bitmask"
      enum="AutofillCreditCardSeamlessnessBitmask">
    <summary>
      Logs the field types which Autofill would have filled into visible fields
      if the credit card on file was complete.
    </summary>
  </metric>
  <metric name="Fillable.AfterSecurity.Visible.Qualitative"
      enum="CreditCardSeamlessFill">
    <summary>
      Logs a qualitative summary of the field types which Autofill would have
      filled into visible fields if the credit card on file was complete.
    </summary>
  </metric>
  <metric name="Fillable.BeforeSecurity.Bitmask"
      enum="AutofillCreditCardSeamlessnessBitmask">
    <summary>
      Logs the field types which Autofill would have filled if the credit card
      on file was complete and there was no security policy.
    </summary>
  </metric>
  <metric name="Fillable.BeforeSecurity.Qualitative"
      enum="CreditCardSeamlessFill">
    <summary>
      Logs a qualitative summary of the field types which Autofill would have
      filled if the credit card on file was complete and there was no security
      policy.
    </summary>
  </metric>
  <metric name="Fillable.BeforeSecurity.Visible.Bitmask"
      enum="AutofillCreditCardSeamlessnessBitmask">
    <summary>
      Logs the field types which Autofill would have filled into visible fields
      if the credit card on file was complete and there was no security policy.
    </summary>
  </metric>
  <metric name="Fillable.BeforeSecurity.Visible.Qualitative"
      enum="CreditCardSeamlessFill">
    <summary>
      Logs a qualitative summary of the field types which Autofill would have
      filled into visible fields if the credit card on file was complete and
      there was no security policy.
    </summary>
  </metric>
  <metric name="Filled.AfterSecurity.Bitmask"
      enum="AutofillCreditCardSeamlessnessBitmask">
    <summary>
      Logs the field types which Autofill actually filled.
    </summary>
  </metric>
  <metric name="Filled.AfterSecurity.Qualitative" enum="CreditCardSeamlessFill">
    <summary>
      Logs a qualitative summary of the field types which Autofill actually
      filled.
    </summary>
  </metric>
  <metric name="Filled.AfterSecurity.Visible.Bitmask"
      enum="AutofillCreditCardSeamlessnessBitmask">
    <summary>
      Logs the field types which Autofill actually filled into visible fields.
    </summary>
  </metric>
  <metric name="Filled.AfterSecurity.Visible.Qualitative"
      enum="CreditCardSeamlessFill">
    <summary>
      Logs a qualitative summary of the field types which Autofill actually
      filled into visible fields.
    </summary>
  </metric>
  <metric name="Filled.BeforeSecurity.Bitmask"
      enum="AutofillCreditCardSeamlessnessBitmask">
    <summary>
      Logs the field types which Autofill would have filled if there was no
      security policy.
    </summary>
  </metric>
  <metric name="Filled.BeforeSecurity.Qualitative"
      enum="CreditCardSeamlessFill">
    <summary>
      Logs a qualitative summary of the field types which Autofill would have
      filled if there was no security policy.
    </summary>
  </metric>
  <metric name="Filled.BeforeSecurity.Visible.Bitmask"
      enum="AutofillCreditCardSeamlessnessBitmask">
    <summary>
      Logs the field types which Autofill would have filled into visible fields
      if there was no security policy.
    </summary>
  </metric>
  <metric name="Filled.BeforeSecurity.Visible.Qualitative"
      enum="CreditCardSeamlessFill">
    <summary>
      Logs a qualitative summary of the field types which Autofill would have
      filled into visible fields if there was no security policy.
    </summary>
  </metric>
  <metric name="FormSignature">
    <summary>
      An approximately 10-bit hash of the form's actual signature.
    </summary>
  </metric>
  <metric name="SharedAutofill" enum="Boolean">
    <summary>
      Missing shared-autofill feature prevented a cross-origin credit-card field
      from being filled. Shared-autofill is a policy-controlled feature by which
      a frame can allow a child-frame to be autofilled across origin.
    </summary>
  </metric>
</event>

<event name="Autofill.DeveloperEngagement">
  <owner>jiahuiguo@google.com</owner>
  <summary>
    Recorded when we parse a form to log whether developer has used autocomplete
    markup or UPI-VPA hints. The value is a bitmask of
    |DeveloperEngagementMetric|.
  </summary>
  <metric name="DeveloperEngagement"/>
  <metric name="FormSignature">
    <summary>
      The signature of the form. This is the hash identifier used to denote this
      form for query and voting purposes. See
      components/autofill/core/common/signatures_util.cc for more details.
    </summary>
  </metric>
  <metric name="FormTypes">
    <summary>
      Type of form. Stored as bitvector. A set ith bit implies enum FormType's
      ith type was detected. Multiple types are possible.
    </summary>
  </metric>
  <metric name="IsForCreditCard">
    <summary>
      True for credit card forms, false for address/profile forms. See
      |FormStructure::IsCompleteCreditCardForm()|.
    </summary>
  </metric>
</event>

<event name="Autofill.EditedAutofilledFieldAtSubmission">
  <owner>koerber@google.com</owner>
  <owner>battre@google.com</owner>
  <summary>
    Records when a user edits a value that was filled by autofill.
  </summary>
  <metric name="FieldSignature">
    <summary>
      The signature of the field. This is the hash identifier used to denote
      this field for query and voting purposes. See
      components/autofill/core/common/signatures_util.cc for more details.
    </summary>
  </metric>
  <metric name="FormSignature">
    <summary>
      The signature of the form. This is the hash identifier used to denote this
      form for query and voting purposes. See
      components/autofill/core/common/signatures_util.cc for more details.
    </summary>
  </metric>
  <metric name="OverallType" enum="AutofillServerFieldType">
    <summary>
      Field's overall |ServerFieldType|. See: autofill::ServerFieldType
    </summary>
  </metric>
</event>

<event name="Autofill.FastCheckoutFormStatus">
  <owner>bwolfgang@google.com</owner>
  <owner>jkeitel@google.com</owner>
  <owner>vizcay@google.com</owner>
  <summary>
    Recorded at the end of a Fast Checkout run.
  </summary>
  <metric name="Filled" enum="Boolean">
    <summary>
      1 if the form was filled by Fast Checkout, 0 otherwise.
    </summary>
  </metric>
  <metric name="FormSignature">
    <summary>
      An approximately 10-bit hash of the form's actual signature.
    </summary>
  </metric>
  <metric name="FormTypes">
    <summary>
      Type of form. Stored as bitvector. A set i-th bit implies enum FormType's
      i-th type was detected. Multiple types are possible.
    </summary>
  </metric>
  <metric name="RunId">
    <summary>
      Unique run ID for linking to other UKM events.
    </summary>
  </metric>
</event>

<event name="Autofill.FastCheckoutRunOutcome">
  <owner>bwolfgang@google.com</owner>
  <owner>jkeitel@google.com</owner>
  <owner>vizcay@google.com</owner>
  <summary>
    Recorded at the end of a Fast Checkout run.
  </summary>
  <metric name="RunId">
    <summary>
      Unique run ID for linking to other UKM events.
    </summary>
  </metric>
  <metric name="RunOutcome" enum="FastCheckoutRunOutcome">
    <summary>
      States if the run was successful or why it was not.
    </summary>
  </metric>
</event>

<event name="Autofill.FieldFillStatus">
  <owner>rogerm@chromium.org</owner>
  <summary>
    Recorded when Chrome validates field type predictions (on submit, on leaving
    a form, on receiving a form with autocomplete attributes).
  </summary>
  <metric name="FieldSignature">
    <summary>
      The signature of the field. This is the hash identifier used to denote
      this field for query and voting purposes. See
      components/autofill/core/common/signatures_util.cc for more details.
    </summary>
  </metric>
  <metric name="FormSignature">
    <summary>
      The signature of the form. This is the hash identifier used to denote this
      form for query and voting purposes. See
      components/autofill/core/common/signatures_util.cc for more details.
    </summary>
  </metric>
  <metric name="IsAutofilled">
    <summary>
      The field is currently autofilled.
    </summary>
  </metric>
  <metric name="MillisecondsSinceFormParsed">
    <summary>
      Time since form parse.
    </summary>
  </metric>
  <metric name="PredictionSource">
    <summary>
      The system which generated the prediction: heuristics, server, overall.
    </summary>
  </metric>
  <metric name="ValidationEvent">
    <summary>
      The event which triggered the validation: Submission, Left Form, Form has
      Autocomplete attributes.
    </summary>
  </metric>
  <metric name="WasPreviouslyAutofilled">
    <summary>
      The field was autofilled and subsequently edited.
    </summary>
  </metric>
</event>

<event name="Autofill.FieldTypeValidation">
  <owner>rogerm@chromium.org</owner>
  <summary>
    Recorded when Chrome validates field type predictions (on submit, on leaving
    a form, on receiving a form with autocomplete attributes).
  </summary>
  <metric name="ActualType" enum="AutofillServerFieldType">
    <summary>
      The observed type of the field. See: autofill::ServerFieldType
    </summary>
  </metric>
  <metric name="FieldSignature">
    <summary>
      The signature of the field
    </summary>
  </metric>
  <metric name="FormSignature">
    <summary>
      The signature of the form.
    </summary>
  </metric>
  <metric name="MillisecondsSinceFormParsed">
    <summary>
      Time since form parse.
    </summary>
  </metric>
  <metric name="PredictedType" enum="AutofillServerFieldType">
    <summary>
      The predicted type of the field. See: autofill::ServerFieldType
    </summary>
  </metric>
  <metric name="PredictionSource" enum="AutofillPredictionSource">
    <summary>
      The system which generated the prediction: heuristics, server, overall.
    </summary>
  </metric>
  <metric name="ValidationEvent" enum="AutofillQualitiyMetricType">
    <summary>
      The event which triggered the validation: Submission, Left Form, Form has
      Autocomplete attributes.
    </summary>
  </metric>
</event>

<event name="Autofill.FormEvent">
  <owner>dlkumar@google.com</owner>
  <summary>
    Recorded when user interacted with autofill.
  </summary>
  <metric name="AutofillFormEvent">
    <summary>
      Logs autofill form events funnel. See |FormEvent|.
    </summary>
  </metric>
  <metric name="FormTypes">
    <summary>
      Type of form. Stored as bitvector. A set ith bit implies enum FormType's
      ith type was detected. Multiple types are possible.
    </summary>
  </metric>
  <metric name="MillisecondsSinceFormParsed">
    <summary>
      Time since form parse.
    </summary>
  </metric>
</event>

<event name="Autofill.FormFillSuccessIOS">
  <owner>kazinova@google.com</owner>
  <summary>
    Records whether the form was successfully filled by Autofill on iOS. The
    metric is used to measure silent renderer fails when the filling request is
    executed successfully but the results reported in a callback are empty.
  </summary>
  <metric name="FormFillSuccess" enum="Boolean">
    <summary>
      A boolean indicating success or failure.
    </summary>
  </metric>
</event>

<event name="Autofill.FormSubmitted">
  <owner>jiahuiguo@google.com</owner>
  <summary>
    Recorded when user submits a form.
  </summary>
  <metric name="AutocompleteFills">
    <summary>
      Number of Autocomplete fills invoked by the user on the current form.
    </summary>
  </metric>
  <metric name="AutofillAssistantIntent" enum="AutofillAssistantIntent">
    <summary>
      Describes the trigger source that invoked Autofill. Only recorded if
      AutofillAssistantIntent was not undefined.
    </summary>
  </metric>
  <metric name="AutofillFills">
    <summary>
      Number of Autofill fills invoked by the user on the current form.
    </summary>
  </metric>
  <metric name="AutofillFormSubmittedState">
    <summary>
      Whether form's fields were all autofilled, some fields were autofilled, or
      none of the field were autofilled. See |AutofillFormSubmittedState|.
    </summary>
  </metric>
  <metric name="FormElementUserModifications">
    <summary>
      Number of times a user focused on a form element and changed its value.
      Consecutive value changes on the same form element are not counted,
      neither are JS invoked changes. Also, re-focusing a form element and
      changing its value is only counted if another form element's value was
      changed in the meantime.
    </summary>
  </metric>
  <metric name="FormSignature">
    <summary>
      FormSignature is approximately 10 bit hash of form structure.
    </summary>
  </metric>
  <metric name="FormTypes">
    <summary>
      Type of form. Stored as bitvector. A set ith bit implies enum FormType's
      ith type was detected. Multiple types are possible.
    </summary>
  </metric>
  <metric name="HasUpiVpaField">
    <summary>
      True for forms containing a UPI/VPA field.
    </summary>
  </metric>
  <metric name="IsForCreditCard">
    <summary>
      True for credit card forms, false for address/profile forms. See
      |FormStructure::IsCompleteCreditCardForm()|.
    </summary>
  </metric>
  <metric name="MillisecondsSinceFormParsed">
    <summary>
      Time since form parse.
    </summary>
  </metric>
</event>

<event name="Autofill.HiddenRepresentationalFieldSkipDecision">
  <owner>parastoog@chromium.org</owner>
  <summary>
    Recorded while trying to fill or preview a hidden or a representational
    field.
  </summary>
  <metric name="FieldOverallType">
    <summary>
      Field's overall |ServerFieldType|. See |AutofillField.GetStorableType()|.
    </summary>
  </metric>
  <metric name="FieldSignature">
    <summary>
      The signature of the field. This is the hash identifier used to denote
      this field for query and voting purposes. See
      components/autofill/core/common/signatures_util.cc for more details.
    </summary>
  </metric>
  <metric name="FieldTypeGroup">
    <summary>
      Field's |FieldTypeGroup|. See |AutofillType.group()|.
    </summary>
  </metric>
  <metric name="FormSignature">
    <summary>
      The signature of the form. This is the hash identifier used to denote this
      form for query and voting purposes. See
      components/autofill/core/common/signatures_util.cc for more details.
    </summary>
  </metric>
  <metric name="HeuristicType">
    <summary>
      Field's |ServerFieldType| based on heuristics. See
      |AutofillField.heuristic_type()|.
    </summary>
  </metric>
  <metric name="HtmlFieldMode">
    <summary>
      Whether the field's autocomplete hint specified 'billing' or 'shipping'.
      See |AutofillField.html_mode()|.
    </summary>
  </metric>
  <metric name="HtmlFieldType">
    <summary>
      Field's autocomplete field type hint. See |AutofillField.html_type()|.
    </summary>
  </metric>
  <metric name="IsSkipped">
    <summary>
      True if the field was skipped while filling or previewing the form,
      because it was hidden or representational, but not a 'select' one.
    </summary>
  </metric>
  <metric name="ServerType">
    <summary>
      Field's |ServerFieldType| returned by server. See
      |AutofillField.server_type()|.
    </summary>
  </metric>
</event>

<event name="Autofill.InteractedWithForm">
  <owner>jiahuiguo@google.com</owner>
  <summary>
    Recorded when we parse a form to log form metadata and autofill settings
    that apply to all subsequent events for this form.
  </summary>
  <metric name="FormSignature">
    <summary>
      FormSignature is approximately 10 bit hash of form structure.
    </summary>
  </metric>
  <metric name="FormTypes">
    <summary>
      Type of form. Stored as bitvector. A set ith bit implies enum FormType's
      ith type was detected. Multiple types are possible.
    </summary>
  </metric>
  <metric name="IsForCreditCard">
    <summary>
      True for credit card forms, false for address/profile forms.
    </summary>
  </metric>
  <metric name="LocalRecordTypeCount">
    <summary>
      Number of local credit cards or local autofill profiles.
    </summary>
  </metric>
  <metric name="ServerRecordTypeCount">
    <summary>
      Number of masked and full server credit cards or server autofill profiles.
    </summary>
  </metric>
</event>

<event name="Autofill.KeyMetrics">
  <owner>battre@chromium.org</owner>
  <owner>kolos@chromium.org</owner>
  <owner>nepper@chromium.org</owner>
  <summary>
    These metrics are a clone of Autofill's UMA key metrics to measure Autofill
    quality. They are recorded on navigation if a form was submitted before.
  </summary>
  <metric name="AutofillAssistantIntent" enum="AutofillAssistantIntent">
    <summary>
      Obsolete. Used to describe the trigger source that invoked Autofill. Was
      only recorded if AutofillAssistantIntent was not undefined.
    </summary>
  </metric>
  <metric name="AutofillFills">
    <summary>
      Number of Autofill fills invoked by the user on the current form.
    </summary>
  </metric>
  <metric name="FastCheckoutRunId">
    <summary>
      Optional, only set if a form was filled by Fast Checkout. Unique ID of a
      Fast Checkout run.
    </summary>
  </metric>
  <metric name="FillingAcceptance">
    <summary>
      Has value 1 if user accepted the suggestion to fill values on a submitted
      form, 0 otherwise. This is counted as 1 if the user accepted such a
      suggestion at any time, regardless whether other suggestions were ignored
      or whether the accepted suggestion was reverted afterwards. Only recorded
      if suggestions were shown to the user.
    </summary>
  </metric>
  <metric name="FillingAssistance">
    <summary>
      Has value 1 if the user filled any fields via Autofill on a submitted
      form, 0 otherwise.

      If the user reverts the filling, the form is still counted as filled.

      This metric is different from FillingAcceptance in the sense that the
      latter is only recorded if the user has actually seen a prompt to fill
      data.
    </summary>
  </metric>
  <metric name="FillingCorrectness">
    <summary>
      Has value 1 for submitted and autofilled forms if user edited at least one
      filled value before submitting the form, 0 otherwise. Only recorded if any
      suggestion was filled.
    </summary>
  </metric>
  <metric name="FillingReadiness">
    <summary>
      Has value 1 for submitted forms when Chromium had any address or payments
      data to fill, 0 otherwise.

      It does not matter whether the user actually requested to fill the data.
      It does not matter either whether the data available for filling
      corresponded to the submitted data.
    </summary>
  </metric>
  <metric name="FlowId">
    <summary>
      Hashed GUID linking together multiple emissions of this event if emitted
      within a 20 minutes timeframe.
    </summary>
  </metric>
  <metric name="FormElementUserModifications">
    <summary>
      Number of times a user focused on a form element and changed its value.
      Consecutive value changes on the same form element are not counted,
      neither are JS invoked changes. Also, re-focusing a form element and
      changing its value is only counted if another form element's value was
      changed in the meantime.
    </summary>
  </metric>
  <metric name="FormTypes">
    <summary>
      Type of form. Stored as bitvector. A set ith bit implies enum FormType's
      ith type was detected. Multiple types are possible.
    </summary>
  </metric>
</event>

<event name="Autofill.RepeatedServerTypePredictionRationalized">
  <owner>parastoog@chromium.org</owner>
  <summary>
    Recorded when a field type predicted by server is rationalized because of
    repetition.
  </summary>
  <metric name="FieldNewOverallType">
    <summary>
      Field's overall |ServerFieldType| after rationalization. See
      |AutofillField.GetStorableType()|.
    </summary>
  </metric>
  <metric name="FieldOldOverallType">
    <summary>
      Field's overall |ServerFieldType| before rationalization. See
      |AutofillField.GetStorableType()|.
    </summary>
  </metric>
  <metric name="FieldSignature">
    <summary>
      The signature of the field. This is the hash identifier used to denote
      this field for query and voting purposes. See
      components/autofill/core/common/signatures_util.cc for more details.
    </summary>
  </metric>
  <metric name="FieldTypeGroup">
    <summary>
      Field's |FieldTypeGroup|. See |AutofillType.group()|.
    </summary>
  </metric>
  <metric name="FormSignature">
    <summary>
      The signature of the form. This is the hash identifier used to denote this
      form for query and voting purposes. See
      components/autofill/core/common/signatures_util.cc for more details.
    </summary>
  </metric>
  <metric name="HeuristicType">
    <summary>
      Field's |ServerFieldType| based on heuristics. See
      |AutofillField.heuristic_type()|.
    </summary>
  </metric>
  <metric name="HtmlFieldMode">
    <summary>
      Whether the field's autocomplete hint specified 'billing' or 'shipping'.
      See |AutofillField.html_mode()|.
    </summary>
  </metric>
  <metric name="HtmlFieldType">
    <summary>
      Field's autocomplete field type hint. See |AutofillField.html_type()|.
    </summary>
  </metric>
  <metric name="ServerType">
    <summary>
      Field's |ServerFieldType| returned by server. See
      |AutofillField.server_type()|.
    </summary>
  </metric>
</event>

<event name="Autofill.Sectioning">
  <owner>fleimgruber@google.com</owner>
  <owner>schwering@google.com</owner>
  <summary>
    Recorded after sectioning is performed when the server classification
    arrived, and only when `AutofillUseParameterizedSectioning` is enabled.
  </summary>
  <metric name="FormSignature">
    <summary>
      A 10-bit hash of the form's signature.
    </summary>
  </metric>
  <metric name="SectioningSignature">
    <summary>
      A 10-bit hash of the form's computed sections.
    </summary>
  </metric>
</event>

<event name="Autofill.SelectedMaskedServerCard">
  <obsolete>
    Deprecated 2/2019
  </obsolete>
  <owner>jiahuiguo@google.com</owner>
  <metric name="MillisecondsSinceFormParsed">
    <summary>
      Obsolete.

      Time since form parse.
    </summary>
  </metric>
</event>

<event name="Autofill.SuggestionFilled">
  <owner>jiahuiguo@google.com</owner>
  <summary>
    Recorded when user selects a suggestion and we fill the form with that
    suggestion.
  </summary>
  <metric name="FieldSignature">
    <summary>
      The signature of the field
    </summary>
  </metric>
  <metric name="FormSignature">
    <summary>
      The signature of the form.
    </summary>
  </metric>
  <metric name="IsForCreditCard">
    <summary>
      True for credit card forms, false for address/profile forms.
    </summary>
  </metric>
  <metric name="MillisecondsSinceFormParsed">
    <summary>
      Time since form parse.
    </summary>
  </metric>
  <metric name="RecordType">
    <summary>
      Whether the suggestion was from a local card/autofill profile or from a
      server card/autofill profile.
    </summary>
  </metric>
</event>

<event name="Autofill.SuggestionsShown">
  <owner>jiahuiguo@google.com</owner>
  <summary>
    Recorded when a suggestion is shown to user.
  </summary>
  <metric name="FieldSignature">
    <summary>
      The signature of the field
    </summary>
  </metric>
  <metric name="FormSignature">
    <summary>
      The signature of the form.
    </summary>
  </metric>
  <metric name="HeuristicType">
    <summary>
      Field's |ServerFieldType| based on heuristics. See
      |AutofillField.heuristic_type()|.
    </summary>
  </metric>
  <metric name="HtmlFieldType">
    <summary>
      Field's autocomplete field type hint. See |AutofillField.html_type()|.
    </summary>
  </metric>
  <metric name="MillisecondsSinceFormParsed">
    <summary>
      Time since form parse.
    </summary>
  </metric>
  <metric name="ServerType">
    <summary>
      Field's |ServerFieldType| returned by server. See
      |AutofillField.server_type()|.
    </summary>
  </metric>
</event>

<event name="Autofill.TextFieldDidChange">
  <owner>jiahuiguo@google.com</owner>
  <summary>
    Recorded when user edits a text field. The text field may have been
    autofilled.
  </summary>
  <metric name="FieldSignature">
    <summary>
      The signature of the field
    </summary>
  </metric>
  <metric name="FieldTypeGroup">
    <summary>
      Field's |FieldTypeGroup|. See |AutofillType.group()|.
    </summary>
  </metric>
  <metric name="FormSignature">
    <summary>
      The signature of the form.
    </summary>
  </metric>
  <metric name="HeuristicType">
    <summary>
      Field's |ServerFieldType| based on heuristics. See
      |AutofillField.heuristic_type()|.
    </summary>
  </metric>
  <metric name="HtmlFieldMode">
    <summary>
      Whether the field's autocomplete hint specified 'billing' or 'shipping'.
      See |AutofillField.html_mode()|.
    </summary>
  </metric>
  <metric name="HtmlFieldType">
    <summary>
      Field's autocomplete field type hint. See |AutofillField.html_type()|.
    </summary>
  </metric>
  <metric name="IsAutofilled">
    <summary>
      True if the field was autofilled. See |AutofillField.is_autofilled|.
    </summary>
  </metric>
  <metric name="IsEmpty">
    <summary>
      True if the field was empty. See |AutofillField.IsEmpty()|.
    </summary>
  </metric>
  <metric name="MillisecondsSinceFormParsed">
    <summary>
      Time since form parse.
    </summary>
  </metric>
  <metric name="ServerType">
    <summary>
      Field's |ServerFieldType| returned by server. See
      |AutofillField.server_type()|.
    </summary>
  </metric>
</event>

<event name="Autofill2.FieldInfo">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-team@google.com</owner>
  <summary>
    All information about a specific field, recorded at form submission or form
    destruction time (whatever comes first).
  </summary>
  <metric name="AutofillSkippedStatus">
    <summary>
      Whether filling the field was skipped during autofill, and if it was
      skipped, what the skipping reasons were. Recorded as a DenseSet of
      |SkipStatus|.
    </summary>
  </metric>
  <metric name="FieldSessionIdentifier">
    <summary>
      A random variable assigned to a specific instance of a form control (e.g.
      a HTML input element). This should be globally unique and suitable for
      distinguishing fields. Two different users would have different values.
      For the same user, the same field in the same form in two different tabs
      would have two different values.
    </summary>
  </metric>
  <metric name="FieldSignature">
    <summary>
      The signature of the field, a 10 bit hash value (0-1021) of the field name
      and field type used to denote this field for query and voting purposes.
    </summary>
  </metric>
  <metric name="FilledValueWasModified" enum="Boolean">
    <summary>
      Whether the user modified a field after autofilling/autocompleting it.
    </summary>
  </metric>
  <metric name="FormControlType" enum="AutofillFormControlType">
    <summary>
      A form control type of a web form-associated element. We only list the
      very common ones that are seen in autofill, such as text, textarea,
      checkbox, radio, select-one, see |autofill::FormControlType|.
    </summary>
  </metric>
  <metric name="FormSessionIdentifier">
    <summary>
      A random variable assigned to a specific instance of a HTML form in a
      specific renderer. This should be globally unique and suitable for
      counting distinct forms. Two different users would have different values.
      A single user loading the same form in two different tabs would have two
      different values. This is used to link the fields to a form in
      Autofill2.FormSummary.
    </summary>
  </metric>
  <metric name="HadTypedOrFilledValueAtSubmission" enum="Boolean">
    <summary>
      Whether there was a value after user typed or autofilled in the field at
      form submission or form destruction time.
    </summary>
  </metric>
  <metric name="HadValueBeforeFilling" enum="Boolean">
    <summary>
      Whether there was a value before autofill in the field.
    </summary>
  </metric>
  <metric name="HeuristicType" enum="AutofillServerFieldType">
    <summary>
      There are multiple heuristic classification strategies working in
      parallel. This type is predicted from the active pattern source.
    </summary>
  </metric>
  <metric name="HeuristicTypeDefault" enum="AutofillServerFieldType">
    <summary>
      The type of the field predicted from the source of local heuristics on the
      client, which uses patterns applied for most users, the types are from
      |autofill::ServerFieldType|.
    </summary>
  </metric>
  <metric name="HeuristicTypeExperimental" enum="AutofillServerFieldType">
    <summary>
      The type of the field predicted from the heuristics that uses experimental
      patterns, the types are from |autofill::ServerFieldType|.
    </summary>
  </metric>
  <metric name="HeuristicTypeLegacy" enum="AutofillServerFieldType">
    <summary>
      The type of the field predicted from patterns whose stability is above
      suspicion, the types are from |autofill::ServerFieldType|.
    </summary>
  </metric>
  <metric name="HeuristicTypeNextGen" enum="AutofillServerFieldType">
    <summary>
      The type of the field predicted from the heuristics that uses patterns
      only for non-user-visible metrics, one step before experimental, the types
      are from |autofill::ServerFieldType|.
    </summary>
  </metric>
  <metric name="HtmlFieldMode" enum="AutocompleteHtmlFieldMode">
    <summary>
      The mode according to the autocomplete attribute of a field. Only set if a
      field has a valid autocomplete attribute. Currently this is used to
      specify if the field is part of the billing or shipping address. See
      autofill::mojom::HtmlFieldMode.
    </summary>
  </metric>
  <metric name="HtmlFieldType" enum="AutocompleteHtmlFieldType">
    <summary>
      The field type specified in the autocomplete attribute of the field. Only
      set if a field has a valid autocomplete attribute. See
      autofill::mojom::HtmlFieldType.
    </summary>
  </metric>
  <metric name="IsFocusable" enum="Boolean">
    <summary>
      Whether the field is focusable to the user. This is an approximation of
      visibility with false positives.
    </summary>
  </metric>
  <metric name="OverallType" enum="AutofillServerFieldType">
    <summary>
      The final field type from the list of |autofill::ServerFieldType| that we
      choose after rationalization, which is used to determine the autofill
      suggestion when the user triggers autofilling.
    </summary>
  </metric>
  <metric name="RankInFieldSignatureGroup">
    <summary>
      If multiple fields have the same signature, this indicates the position
      within this set of fields. This allows us to understand problems related
      to duplicated field signatures.
    </summary>
  </metric>
  <metric name="SectionId">
    <summary>
      A single HTML form can consist of multiple sections. A section is a set of
      fields that are filled together. For example a single form can contain a
      shipping and a billing address. Each of those corresponds to one section.
      The sections are mapped to consecutive natural numbers starting at 1. The
      section IDs are unique per form.
    </summary>
  </metric>
  <metric name="ServerPredictionSource1" enum="AutofillServerPredictionSource">
    <summary>
      The major source of predictions from the Autofill crowdsourced server, see
      AutofillQueryResponse::FormSuggestion::FieldSuggestion::FieldPrediction::Source.
    </summary>
  </metric>
  <metric name="ServerPredictionSource2" enum="AutofillServerPredictionSource">
    <summary>
      The additional source of predictions from the Autofill crowdsourced server
      if there is an additional prediction, see
      AutofillQueryResponse::FormSuggestion::FieldSuggestion::FieldPrediction::Source.
    </summary>
  </metric>
  <metric name="ServerType1" enum="AutofillServerFieldType">
    <summary>
      The type of the field predicted from the Autofill crowdsourced server from
      majority voting (and some more complex stuff). The types are from
      |autofill::ServerFieldType|.
    </summary>
  </metric>
  <metric name="ServerType2" enum="AutofillServerFieldType">
    <summary>
      The additional type of the field predicted from the Autofill crowdsourced
      server if there is an additional prediction. The types are from
      |autofill::ServerFieldType|.
    </summary>
  </metric>
  <metric name="ServerTypeIsOverride" enum="Boolean">
    <summary>
      This is an annotation for server predicted field types which indicates
      that a manual override defines the server type. This allows us to assess
      the impact of server overrides and detect possible problems with it.
    </summary>
  </metric>
  <metric name="SuggestionWasAccepted" enum="Boolean">
    <summary>
      Whether the suggestion was accepted. This is only set for a field where a
      suggestion was shown and accepted by the user. It is not the same as
      autofilled, which is true for all the fields that were filled. More than
      one field can have an accepted suggestion because the form can be split
      into multiple sections (e.g. shipping and billing address) or because the
      user triggers autofill multiple times.
    </summary>
  </metric>
  <metric name="SuggestionWasAvailable" enum="Boolean">
    <summary>
      Whether there was a suggestion available for the field from user data.
      This is only set for a field that was focused by the user.
    </summary>
  </metric>
  <metric name="SuggestionWasShown" enum="Boolean">
    <summary>
      Whether a suggestion popup was ever shown on this field (i.e. the field
      had focus and user had data on file).
    </summary>
  </metric>
  <metric name="TypeChangedByRationalization" enum="Boolean">
    <summary>
      Whether the field's type was changed by running the rationalization.
    </summary>
  </metric>
  <metric name="UserTypedIntoField" enum="Boolean">
    <summary>
      Whether the user ever typed into the field (regardless of autofill).
    </summary>
  </metric>
  <metric name="WasAutofilled" enum="Boolean">
    <summary>
      Whether the field was ever filled by autofill. This applies to all the
      fields that were autofilled, not just the field that was clicked. If a
      fill operation did not change the value of a field because the old value
      matches the filled value, this is still recorded as a WasAutofilled =
      true.
    </summary>
  </metric>
  <metric name="WasFocused" enum="Boolean">
    <summary>
      Whether the user ever focused on the field.
    </summary>
  </metric>
  <metric name="WasRefill" enum="Boolean">
    <summary>
      Whether the form was refilled by autofill.
    </summary>
  </metric>
</event>

<event name="Autofill2.FormSummary">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-team@google.com</owner>
  <summary>
    Information recorded for a HTML form element on the HTML page, recorded at
    form submission or form destruction time (whatever comes first).
  </summary>
  <metric name="AutofillFormEvents">
    <summary>
      A bit vector of some autofill form events that records a funnel of this
      autofill form. The autofill form events are from an enum list specifying
      the possible status of the autofill forms, such as if a dropdown with
      suggestions was shown, if the user interacted with a field in the form.
      Some of the events are triggered separately for address and credit card
      forms, e.g. if all the fillable fields in the credit card forms were
      filled. New form events can be added over time and a form can have
      multiple form events. This bit vector stored only events 0..63.
    </summary>
  </metric>
  <metric name="AutofillFormEvents2">
    <summary>
      A bit vector of some autofill form events that records a funnel of this
      autofill form. This contains the entries 64...127 shifted right by 64
      bits.
    </summary>
  </metric>
  <metric name="FormSessionIdentifier">
    <summary>
      A random variable assigned to a specific instance of a HTML form in a
      specific renderer. This should be globally unique and suitable for
      counting distinct forms. Two different users would have different values.
      A single user loading the same form in two different tabs would have two
      different values. This is used to link the fields in this form in
      Autofill2.FieldInfo.
    </summary>
  </metric>
  <metric name="FormSignature">
    <summary>
      The signature of the form, which is a 10-bit hash of the form's domain,
      name and all the supported form fields (including empty names).
    </summary>
  </metric>
  <metric name="IsInMainframe" enum="Boolean">
    <summary>
      This indicates whether the form is located in the main frame or in an
      iframe. A cross-origin autofill is prevented only because shared-autofill
      is disabled in the field's frame. Shared-autofill is a policy-controlled
      feature by which a frame can allow a child-frame to be autofilled across
      origin. We record the url of the main frame not the iframe even if the
      form is in the iframe.
    </summary>
  </metric>
  <metric name="MillisecondsFromFirstInteratctionUntilSubmission">
    <summary>
      The time interval from first interaction on the form to form submission in
      ms in exponential buckets from |GetSemanticBucketMinForDurationTiming()|.
    </summary>
  </metric>
  <metric name="MillisecondsFromFormParsedUntilSubmission">
    <summary>
      The time interval from form parse to form submission in ms in exponential
      buckets from |GetSemanticBucketMinForDurationTiming()|.
    </summary>
  </metric>
  <metric name="SampleRate">
    <summary>
      A sampling rate is a precomputed positive integer and is applied to each
      form and adaptive to the popularity of forms. The most popular forms are
      classified into a `very popular` category and maybe apply a 1:100 sampling
      while the less popular forms have a sampling of 1:1. If the sampling is
      1:X, this sample rate value stores the `X`.
    </summary>
  </metric>
  <metric name="WasSubmitted" enum="Boolean">
    <summary>
      Whether the form was submitted.
    </summary>
  </metric>
</event>

<event name="BackForwardCacheDisabledForRenderFrameHostReason">
  <owner>altimin@chromium.org</owner>
  <owner>hajimehoshi@chromium.org</owner>
  <summary>
    Recorded at a history commit for each reason passed to
    BackForwardCache::DisableForRenderFrameHost. The source IDs match with the
    source IDs of HistoryNavigation events.
  </summary>
  <metric name="Reason"
      enum="BackForwardCacheDisabledForRenderFrameHostReasonShort">
    <obsolete>
      Deprecated as of 03/2021. Replaced with Reason2.
    </obsolete>
    <summary>
      For history navigations, records the reason passed to
      BackForwardCache::DisableForRenderFrameHost calls.

      The metric is recorded when a history navigation commits and emits a
      sample for each reason. One history navigation can emit multiple reasons,
      and these reasons are recorded as multiple events with the same source ID
      based on the navigation ID.
    </summary>
  </metric>
  <metric name="Reason2"
      enum="BackForwardCacheDisabledForRenderFrameHostReason2">
    <summary>
      For history navigations, records the reason passed to
      BackForwardCache::DisableForRenderFrameHost calls. The reason is specified
      as a 48-bit int representing the source (blink or an embedder) and a
      source-specific 16-bit int representing the reason specific to that
      source.

      The metric is recorded when a history navigation commits and emits a
      sample for each reason. One history navigation can emit multiple reasons,
      and these reasons are recorded as multiple events with the same source ID
      based on the navigation ID.
    </summary>
  </metric>
</event>

<event name="BackForwardCacheDisallowActivationReason">
  <owner>altimin@chromium.org</owner>
  <owner>hajimehoshi@chromium.org</owner>
  <owner>fergal@chromium.org</owner>
  <summary>
    Recorded at a history commit for each reason passed to
    RenderFrameHost::IsInactiveAndDisallowActivation. The source IDs match with
    the source IDs of HistoryNavigation events.
  </summary>
  <metric name="Reason" enum="InactiveFrameDisallowActivationReason">
    <summary>
      For history navigations, records the reason passed to
      RenderFrameHost::IsInactiveAndDisallowActivation.

      The metric is recorded when a history navigation commits and emits a
      sample for each reason. One history navigation can emit multiple reasons,
      and these reasons are recorded as multiple events with the same source ID
      based on the navigation ID.
    </summary>
  </metric>
</event>

<event name="BackgroundFetch">
  <owner>nator@chromium.org</owner>
  <owner>rayankans@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    A BackgroundFetch event is logged before a background fetch is started from
    a document context.
  </summary>
  <metric name="DeniedDueToPermissions">
    <summary>
      Boolean for whether the background fetch was denied due to permission.
      This includes only the content setting permission.
    </summary>
  </metric>
  <metric name="DownloadTotal">
    <summary>
      The value of downloadTotal provided with the background fetch. This is the
      number of bytes that the developer expects to be downloaded with the
      background fetch. This number is exponentially bucketed for privacy
      reasons, and uses the UKM GetExponentialBucketMin method with a value of
      2.0 for spacing.
    </summary>
  </metric>
  <metric name="HasTitle">
    <summary>
      Boolean for whether a title was provided with the background fetch.
    </summary>
  </metric>
  <metric name="NumIcons">
    <summary>
      Count of icons provided with the background fetch.
    </summary>
  </metric>
  <metric name="NumRequestsInFetch">
    <summary>
      Number of requests in the background fetch. This number is exponentially
      bucketed for privacy reasons, and uses the UKM GetExponentialBucketMin
      method with a value of 2.0 for spacing.
    </summary>
  </metric>
  <metric name="RatioOfIdealToChosenIconSize">
    <summary>
      Ratio of the ideal icon to the chosen icon size, times hundred. This will
      be set to -1 if either ideal icon size is 0, or if none of the provided
      icons are suitable.
    </summary>
  </metric>
</event>

<event name="BackgroundFetchDeletingRegistration">
  <owner>nator@chromium.org</owner>
  <owner>rayankans@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    A BackgroundFetchDeletingRegistration event is logged when a background
    fetch job is being deleted.
  </summary>
  <metric name="UserInitiatedAbort">
    <summary>
      Boolean for whether the background fetch job was cancelled from the UI.
    </summary>
  </metric>
</event>

<event name="BackgroundSyncCompleted">
  <owner>nator@chromium.org</owner>
  <owner>rayankans@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    Logged when a Background Sync one-shot registration is completed.
  </summary>
  <metric name="MaxAttempts">
    <summary>
      Integer value of the maximum number of allowed retries.
    </summary>
  </metric>
  <metric name="NumAttempts">
    <summary>
      Integer value of the number of retries / sync events dispatched.
    </summary>
  </metric>
  <metric name="Status">
    <summary>
      The enum value of the completion status, defined in
      blink::ServiceWorkerStatusCode.
    </summary>
  </metric>
</event>

<event name="BackgroundSyncRegistered">
  <owner>nator@chromium.org</owner>
  <owner>rayankans@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    Logged when a one-shot Background Sync registration is created.
  </summary>
  <metric name="CanFire">
    <summary>
      Boolean for whether a sync event can be immediately dispatched for this
      registration.
    </summary>
  </metric>
  <metric name="IsReregistered">
    <summary>
      Boolean for whether this is a duplicate registration.
    </summary>
  </metric>
</event>

<event name="Badging">
  <owner>phillis@chromium.org</owner>
  <owner>cmumford@chromium.org</owner>
  <summary>
    Metrics that measure the use of Badging API
  </summary>
  <metric name="UpdateAppBadge" enum="UpdateAppBadgeTypes">
    <summary>
      Logged when navigator.setAppBadge or navigator.clearAppBadge is called.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="Blink.AutomaticLazyLoadFrame" singular="True">
  <owner>chikamune@google.com</owner>
  <owner>sisidovski@google.com</owner>
  <owner>kouhei@google.com</owner>
  <summary>
    Records metrics for LazyAds and LazyEmbeds Interventions. LazyAds and
    LazyEmbeds Interventions will automatically apply lazy loading to ad's
    frames and embedded web applications so that we can automatically improve
    Core Web Vitals for many sites. These metrics help us to know to what degree
    these Interventions can improve Core Web Vitals when the sites are eligible
    for LazyAds or LazyEmbeds.
  </summary>
  <metric name="LazyAdsFrameCount">
    <summary>
      Records the total number of per-page ad frames that are eligible for the
      LazyAds interventions by AutomaticLazyFrameLoadingToAds. The exponential
      bucketing is applied for privacy reasons by using
      ukm::GetExponentialBucketMinForCounts1000().
    </summary>
  </metric>
  <metric name="LazyEmbedsFrameCount">
    <summary>
      Records the total number of per-page frames that are eligible for the
      LazyEmbeds interventions by AutomaticLazyFrameLoadingToEmbeds. The
      exponential bucketing is applied for privacy reasons by using
      ukm::GetExponentialBucketMinForCounts1000().
    </summary>
  </metric>
</event>

<event name="Blink.ContextMenu.ImageSelection">
  <obsolete>
    No longer recorded after August 2022 launch of the feature.
  </obsolete>
  <owner>flackr@chromium.org</owner>
  <owner>blink-interactions-team@google.com</owner>
  <summary>
    Sent when a user long presses or right clicks a document (and that an image
    is found). Requires that the `EnablePenetratingImageSelection` feature is
    enabled together with a `logUkm` specific finch param.
  </summary>
  <metric name="Outcome" enum="ImageSelectionOutcome">
    <summary>
      Emits an integer id for a selection corresponding to the
      ImageSelectionOutcome enum defined in Blink's context_menu_controller.h.
    </summary>
  </metric>
</event>

<event name="Blink.DeveloperMetricsRare">
  <owner>schenney@chromium.org</owner>
  <owner>chrome-webdev-metrics@google.com</owner>
  <summary>
    Collects data for a subset of UseCounter features of interest to the Web
    Platform Developer Metrics team due to their recent launch or potential for
    spec changes. Features reported in this set should be rare, appearing in
    fewer than 5% of page loads.
  </summary>
  <metric name="Feature" enum="FeatureObserver">
    <summary>
      Opt-in UseCounter feature, listed in
      components/page_load_metrics/browser/observers/use_counter/webdev_metrics_ukm_features.cc
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="IsMainFrameFeature" enum="Boolean">
    <summary>
      Emits True(1) or False(0) to indicate whether the Feature recorded is in
      the main frame or not.
    </summary>
  </metric>
</event>

<event name="Blink.FedCm">
  <owner>yigu@chromium.org</owner>
  <owner>web-identity-eng@google.com</owner>
  <summary>
    Records performance metrics for FedCM(Federated Credential Management) API.
  </summary>
  <metric name="AutoReauthn.BlockedByContentSettings" enum="Boolean">
    <summary>
      Records whether the FedCM auto re-authn call is blocked because the auto
      re-authn content settings permission is disabled. Records at most one
      sample per FedCM API with auto re-authn enabled: some failures could occur
      before this metric is recorded.
    </summary>
  </metric>
  <metric name="AutoReauthn.BlockedByEmbargo" enum="Boolean">
    <summary>
      Records whether the FedCM auto re-authn call is blocked because the auto
      re-authn is under embargo, i.e. due to cooldown. Records at most one
      sample per FedCM API with auto re-authn enabled: some failures could occur
      before this metric is recorded.
    </summary>
  </metric>
  <metric name="AutoReauthn.ReturningAccounts" enum="FedCmReturningAccounts">
    <summary>
      Records whether there was zero, one, or multiple returning accounts when a
      site calls the FedCM API with autoReauthn: true. Records at most one
      sample per failed API call: some failures could occur before this metric
      is recorded.
    </summary>
  </metric>
  <metric name="AutoReauthn.Succeeded" enum="Boolean">
    <summary>
      Records whether auto re-authn checks succeeded or not. The count would
      provide roughly the number of FedCM re-authn attempts, the true count
      would provide the number of times the re-authn UI is shown to the user,
      and the false count would provide the number of attempts where auto
      re-authn was blocked for some non-network related reason. Records at most
      one sample per FedCM API with auto re-authn enabled: some failures could
      occur before this metric is recorded.
    </summary>
  </metric>
  <metric name="AutoReauthn.TimeFromEmbargoWhenBlocked">
    <summary>
      Records the amount of time that has passed from the time the FedCM auto
      re-authn API was embargoed to the time in which the next call occurs. Only
      records a sample when there is an auto re-authn FedCM API call which is
      blocked due to embargo. Samples are exponentially bucketed, with a max
      bucket of 10 minutes, the embargo duration (see
      `kFederatedIdentityAutoReauthnEmbargoDuration`).
    </summary>
  </metric>
  <metric name="FedCmSessionID">
    <summary>
      Records the session ID associated to the FedCM call for which this event
      is recording metrics. Each FedCM call gets a random integer session id,
      which helps group UKM events by the session id.
    </summary>
  </metric>
  <metric name="Status.RequestIdToken" enum="FedCmRequestIdTokenStatus">
    <summary>
      Records the status of a request id token call to the FedCM API.
    </summary>
  </metric>
  <metric name="Status.Revoke" enum="FedCmRevokeStatus">
    <obsolete>
      Removed June 2022 with the removal of the revoke() method.
    </obsolete>
    <summary>
      Records the status of a revoke call to the FedCM API.
    </summary>
  </metric>
  <metric name="Timing.CancelOnDialog">
    <summary>
      Records the time (in milliseconds) from when the accounts dialog is shown
      to when the user closes the dialog without selecting any account.
    </summary>
  </metric>
  <metric name="Timing.ContinueOnDialog">
    <summary>
      Records the time (in milliseconds) from when the accounts dialog is shown
      to when the user presses the Continue button.
    </summary>
  </metric>
  <metric name="Timing.IdTokenResponse">
    <summary>
      Records the time (in milliseconds) from when the user presses the Continue
      button to when the id token response is received.
    </summary>
  </metric>
  <metric name="Timing.ShowAccountsDialog">
    <summary>
      Records the time (in milliseconds) from when a call to the API was made to
      when the accounts dialog is shown.
    </summary>
  </metric>
  <metric name="Timing.TurnaroundTime">
    <summary>
      Records the overall time (in milliseconds) from when the API is called to
      when the id token response is received.
    </summary>
  </metric>
</event>

<event name="Blink.FedCmIdp">
  <owner>npm@chromium.org</owner>
  <owner>web-identity-eng@google.com</owner>
  <summary>
    Records performance metrics for FedCM (Federated Credential Management) API.
    Recorded when the web developer calls the FedCM API. Individual metrics are
    recorded eagerly, whenever the value has been computed.

    This event uses the specific WEB_IDENTITY ukm_source_id which is generated
    from the identity provider's origin.
  </summary>
  <metric name="FedCmSessionID">
    <summary>
      Records the session ID associated to the FedCM call for which this event
      is recording metrics. Each FedCM call gets a random integer session id,
      which helps group UKM events by the session id.
    </summary>
  </metric>
  <metric name="Status.RequestIdToken" enum="FedCmRequestIdTokenStatus">
    <summary>
      Records the status of a request id token call to the FedCM API.
    </summary>
  </metric>
  <metric name="Status.SignInStateMatch" enum="FedCmSignInStateMatchStatus">
    <summary>
      Records whether user sign-in states between IDP and browser match after
      browser receives an account list from IDP prior to showing UI.
    </summary>
  </metric>
  <metric name="Timing.CancelOnDialog">
    <summary>
      Records the time (in milliseconds) from when the accounts dialog is shown
      to when the user closes the dialog without selecting any account.
    </summary>
  </metric>
  <metric name="Timing.ContinueOnDialog">
    <summary>
      Records the time (in milliseconds) from when the accounts dialog is shown
      to when the user presses the Continue button.
    </summary>
  </metric>
  <metric name="Timing.IdTokenResponse">
    <summary>
      Records the time (in milliseconds) from when the user presses the Continue
      button to when the id token response is received.
    </summary>
  </metric>
  <metric name="Timing.ShowAccountsDialog">
    <summary>
      Records the time (in milliseconds) from when a call to the API was made to
      when the accounts dialog is shown.
    </summary>
  </metric>
  <metric name="Timing.TurnaroundTime">
    <summary>
      Records the overall time (in milliseconds) from when the API is called to
      when the id token response is received.
    </summary>
  </metric>
</event>

<event name="Blink.FindInPage" singular="True">
  <owner>vmpstr@chromium.org</owner>
  <owner>chrishtr@chromium.org</owner>
  <owner>paint-dev@chromium.org</owner>
  <summary>
    Logged once per page; indicates the type of find-in-page behaviors users
    utilizied.
  </summary>
  <metric name="BeforematchExpandedHiddenMatchable">
    <summary>
      Boolean indicating that a find-in-page match was hidden but became visible
      after the beforematch event was fired.
    </summary>
  </metric>
  <metric name="DidHaveRenderSubtreeMatch">
    <summary>
      Boolean indicating whether there was an active match in content-visibility
      unrendered elements.
    </summary>
  </metric>
  <metric name="DidSearch">
    <summary>
      Boolean indicating that find-in-page happened.
    </summary>
  </metric>
</event>

<event name="Blink.HTMLParsing">
  <owner>schenney@chromium.org</owner>
  <owner>dom-dev@chromium.org</owner>
  <summary>
    Logged once per page load, to capture information about invocation of the
    HTMLDocumentParser for the initial document load. Does not include other
    aspects of document parsing, such as style sheet parsing or script execution
    during parsing. Also does not include innerText parsing.

    This event is not recorded on machines with low-resolution clocks.
  </summary>
  <metric name="ChunkCount">
    <summary>
      The number of chunks parsed while loading the page. Each chunk represents
      a piece of the HTML content that can be loaded without blocking or
      yielding.
    </summary>
  </metric>
  <metric name="ParsingTimeMax">
    <summary>
      The maximum time used to parse a single chunk before being blocked,
      yielding or completing, in microseconds.
    </summary>
  </metric>
  <metric name="ParsingTimeMin">
    <summary>
      The minimum time used to parse a single chunk before being blocked,
      yielding or completing, in microseconds.
    </summary>
  </metric>
  <metric name="ParsingTimeTotal">
    <summary>
      The total amount of time spent in the HTMLDocumentParser parsing the page,
      in microseconds.
    </summary>
  </metric>
  <metric name="TokensParsedAverage">
    <summary>
      The average number of tokens parsed across all chunks.
    </summary>
  </metric>
  <metric name="TokensParsedMax">
    <summary>
      The maximum number of tokens parsed as a chunk.
    </summary>
  </metric>
  <metric name="TokensParsedMin">
    <summary>
      The minimum number of tokens parsed as a chunk.
    </summary>
  </metric>
  <metric name="TokensParsedTotal">
    <summary>
      The total number of tokens parsed across all chunks.
    </summary>
  </metric>
  <metric name="YieldedTimeAverage">
    <summary>
      The average time between parsing of two chunks, in microseconds. Will be
      zero if only one chunk was parsed.
    </summary>
  </metric>
  <metric name="YieldedTimeMax">
    <summary>
      The minimum time between parsing of two chunks, in microseconds. Will be
      zero if only one chunk was parsed.
    </summary>
  </metric>
  <metric name="YieldedTimeMin">
    <summary>
      The maximum time between parsing of two chunks, in microseconds. Will be
      zero if only one chunk was parsed.
    </summary>
  </metric>
</event>

<event name="Blink.PageLoad">
  <owner>schenney@chromium.org</owner>
  <owner>paint-dev@chromium.org</owner>
  <summary>
    The aggregated time spent in each metric's component from creation of the
    local frame view to the First Contentful Paint signal. The event is reported
    once per page load when First Contentful Paint is signaled.

    This event is not recorded on machines with low-resolution clocks.
  </summary>
  <metric name="Accessibility">
    <summary>
      The time spent in accessibility tree code, between navigation and First
      Contentful Paint, in microseconds.
    </summary>
  </metric>
  <metric name="AnchorElementMetricsIntersectionObserver">
    <summary>
      Time spent computing IntersectionObservations for anchor elements, in
      microseconds.
    </summary>
  </metric>
  <metric name="Animate">
    <summary>
      The time spent in main frame animation, between navigation and First
      Contentful Paint, in microseconds.
    </summary>
  </metric>
  <metric name="Compositing">
    <obsolete>
      Obsolete as of http://crrev.com/794384 and M86.
    </obsolete>
    <summary>
      The time spent in main thread compositing, between navigation and First
      Contentful Paint, in microseconds.
    </summary>
  </metric>
  <metric name="CompositingAssignments">
    <obsolete>
      No longer recorded after M97 with the launch of CompositeAfterPaint.
    </obsolete>
    <summary>
      The time spent in main thread compositing assignments, between navigation
      and First Contentful Paint, in microseconds.
    </summary>
  </metric>
  <metric name="CompositingCommit">
    <summary>
      The time spent committing main thread compositing results, between
      navigation and First Contentful Paint, in microseconds.
    </summary>
  </metric>
  <metric name="CompositingInputs">
    <summary>
      The time spent in main thread compositing inputs, between navigation and
      First Contentful Paint, in microseconds.
    </summary>
  </metric>
  <metric name="ContentDocumentUpdate">
    <summary>
      The time spent doing forced document updates due to update sub-document
      content, between navigation and First Contentful Paint, in microseconds.
      Includes SVG, Canvas and Plugins.
    </summary>
  </metric>
  <metric name="DisplayLockIntersectionObserver">
    <summary>
      Time spent computing IntersectionObservations for
      DisplayLockDocumentState, in microseconds.
    </summary>
  </metric>
  <metric name="ForcedStyleAndLayout">
    <summary>
      The time spent in forced style recalc and layouts, between navigation and
      First Contentful Paint, in microseconds.
    </summary>
  </metric>
  <metric name="HandleInputEvents">
    <summary>
      The time spent in processing rAF-aligned input for the main frame, between
      navigation and First Contentful Paint, in microseconds.
    </summary>
  </metric>
  <metric name="HitTestDocumentUpdate">
    <summary>
      The time spent updating the document in preparation for a hit test for the
      main frame, between navigation and First Contentful Paint, in
      microseconds.
    </summary>
  </metric>
  <metric name="ImplCompositorCommit">
    <summary>
      The time spent committing layer tree impl data in the compositor thread,
      between navigation and First Contentful Paint, in microseconds.
    </summary>
  </metric>
  <metric name="IntersectionObservation">
    <summary>
      The time spent computing intersection observer state, between navigation
      and First Contentful Paint, in microseconds.
    </summary>
  </metric>
  <metric name="IntersectionObservationInternalCount">
    <summary>
      The total number of times a blink-internal IntersectionObservation was
      recomputed between navigation and First Contentful Paint.
    </summary>
  </metric>
  <metric name="IntersectionObservationJavascriptCount">
    <summary>
      The total number of times a javascript-instantiated
      IntersectionObservation was recomputed between navigation and First
      Contentful Paint.
    </summary>
  </metric>
  <metric name="JavascriptDocumentUpdate">
    <summary>
      The time spent doing forced document updates due to generic Javascript API
      requests, between navigation and First Contentful Paint, in microseconds.
      Note this primarily captures Javascript that explicitly requires Style and
      Layout, but not implicit requests such as through setting focus or scroll
      position.
    </summary>
  </metric>
  <metric name="JavascriptIntersectionObserver">
    <summary>
      Time spent computing IntersectionObservations for javascript observers, in
      microseconds.
    </summary>
  </metric>
  <metric name="Layout">
    <summary>
      The time spent in layout document lifecycle work, between navigation and
      First Contentful Paint, in microseconds.
    </summary>
  </metric>
  <metric name="LazyLoadIntersectionObserver">
    <summary>
      Time spent computing IntersectionObservations for lazy loading, in
      microseconds.
    </summary>
  </metric>
  <metric name="MainFrame">
    <summary>
      The time spent in ProxyMain::BeginMainFrame, between navigation and First
      Contentful Paint, in microseconds.
    </summary>
  </metric>
  <metric name="MediaIntersectionObserver">
    <summary>
      Time spent computing IntersectionObservations for media elements, in
      microseconds.
    </summary>
  </metric>
  <metric name="Paint">
    <summary>
      The time spent in paint document lifecycle work, between navigation and
      First Contentful Paint, in microseconds.
    </summary>
  </metric>
  <metric name="ParseStyleSheet">
    <summary>
      The time spent parsing style sheets.
    </summary>
  </metric>
  <metric name="PrePaint">
    <summary>
      The time spent in pre-paint document lifecycle work, between navigation
      and First Contentful Paint, in microseconds.
    </summary>
  </metric>
  <metric name="ProxyCommit">
    <obsolete>
      Removed in M84 in favor of separate ImplCompositorCommit and WaitForCommit
      metrics.
    </obsolete>
    <summary>
      The time spent committing main thread to impl layer tree information,
      between navigation and First Contentful Paint, in microseconds.
    </summary>
  </metric>
  <metric name="ScrollingCoordinator">
    <obsolete>
      Merged into CompositingCommit in http://crrev.com/815947 in M88.
    </obsolete>
    <summary>
      The time spent in ScrollingCoordinator, between navigation and First
      Contentful Paint, in microseconds.
    </summary>
  </metric>
  <metric name="ServiceDocumentUpdate">
    <summary>
      The time spent doing forced document updates due to browser requested
      actions, such as accessibility, intersection observer or spell checking,
      between navigation and First Contentful Paint, in microseconds.
    </summary>
  </metric>
  <metric name="Style">
    <summary>
      The time spent in style document lifecycle work, between navigation and
      First Contentful Paint, in microseconds.
    </summary>
  </metric>
  <metric name="StyleAndLayout">
    <obsolete>
      Removed January 2020 in favor of separate Style and Layout metrics.
    </obsolete>
    <summary>
      The time spent in layout and style document lifecycle work, between
      navigation and First Contentful Paint, in microseconds. Will be obsolete
      in M-82.
    </summary>
  </metric>
  <metric name="UpdateLayers">
    <summary>
      The time spent in for LayerTreeHost::UpdateLayers, between navigation and
      First Contentful Paint, in microseconds.
    </summary>
  </metric>
  <metric name="UpdateViewportIntersection">
    <summary>
      Time spent computing internal geometry information about iframes, between
      navigation and First Contentful Paint, in microseconds.
    </summary>
  </metric>
  <metric name="UserDrivenDocumentUpdate">
    <summary>
      The time spent doing forced document updates due to a user action such as
      input, find-in-page or printing, between navigation and First Contentful
      Paint, in microseconds.

      As of 04/2023, updates for scrolling are included in this metric.
    </summary>
  </metric>
  <metric name="VisualUpdateDelay">
    <summary>
      Time elapsed, in microseconds, between when an animation update is first
      scheduled and when the resulting BeginMainFrame starts.
    </summary>
  </metric>
  <metric name="WaitForCommit">
    <summary>
      The time spent waiting for the compositor thread to begin processing a
      commit, between navigation and First Contentful Paint, in microseconds.
    </summary>
  </metric>
</event>

<event name="Blink.PaintTiming" singular="True">
  <owner>npm@chromium.org</owner>
  <owner>sullivan@chromium.org</owner>
  <summary>
    Paint timing metrics recorded in Blink, usually used as debugging metrics
    for PaintTiming metrics in the PageLoad event.
  </summary>
  <metric name="LCPDebugging.HasViewportImage" enum="Boolean">
    <summary>
      Records whether a page has an image whose size equals the full viewport.
      Recorded when the LCP algorithm has stopped.
    </summary>
  </metric>
</event>

<event name="Blink.Script.AsyncScripts" singular="True">
  <owner>dom@chromium.org</owner>
  <owner>chrome-loading@google.com</owner>
  <summary>
    Metrics associated with the async script count associated with a document,
    recorded when the HTML parsing of a mainframe has completed.
  </summary>
  <metric name="AsyncScriptCount">
    <obsolete>
      Deprecated 04/2022.
    </obsolete>
    <summary>
      The total number of async scripts associated with a document at the time
      parsing has finished.
    </summary>
  </metric>
</event>

<event name="Blink.UpdateTime">
  <owner>schenney@chromium.org</owner>
  <owner>paint-dev@chromium.org</owner>
  <summary>
    Metrics that measure various update times in Blink. This includes paint,
    compositing, and layout update times. This event is reported once in the
    first main frame update after First Contentful Paint, with data from a
    randomly chosen frame up to and including First Contentful Paint, and once
    on LocalFrameView destruction with data from a random frame between
    FirstContentfulPaint and shutdown.

    This event is not recorded on machines with low-resolution clocks.
  </summary>
  <metric name="Accessibility">
    <summary>
      The time taken for accessibility for the main frame in microseconds during
      the sampled frame.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="AccessibilityBeginMainFrame">
    <summary>
      The total main frame time used in accessibility, in microseconds.
    </summary>
  </metric>
  <metric name="AnchorElementMetricsIntersectionObserver">
    <summary>
      Time spent computing IntersectionObservations for anchor elements, in
      microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="AnchorElementMetricsIntersectionObserverBeginMainFrame">
    <summary>
      The total main frame time used to compute IntersectionObservations for
      anchor elements, in microseconds.
    </summary>
  </metric>
  <metric name="Animate">
    <summary>
      The time taken for main frame animation in microseconds during the sampled
      frame.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Animate.Average">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The average time taken for main frame animation in microseconds in the
      event period.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Animate.AverageRatio">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The average over frames within the sample window of the ratio of time
      taken for main frame animation to the total time for the main frame. An
      int in the range [0,100].
    </summary>
  </metric>
  <metric name="Animate.WorstCase">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The longest single time taken for main frame animation in microseconds in
      the event period.
    </summary>
  </metric>
  <metric name="Animate.WorstCaseRatio">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The highest proportion of a frame ever used for main frame animation
      within the sample window. An int in the range [0,100].
    </summary>
  </metric>
  <metric name="AnimateBeginMainFrame">
    <summary>
      The total main frame time used by by main thread animations, in
      microseconds.
    </summary>
  </metric>
  <metric name="AnimatePercentage">
    <obsolete>
      Deprecated as of 11/2020. Replaced with AnimateBeginMainFrame.
    </obsolete>
    <summary>
      The percentage of the main frame time used by main thread animations. An
      int in the range [0,100].
    </summary>
  </metric>
  <metric name="Compositing">
    <obsolete>
      Obsolete as of http://crrev.com/794384.
    </obsolete>
    <summary>
      The time taken by the compositing phase in microseconds during the sampled
      frame.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Compositing.Average">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The average time taken by the compositing phase in microseconds in the
      event period.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Compositing.AverageRatio">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The average over frames within the sample window of the ratio of time
      taken in the compositing phase to the total time for the main frame. An
      int in the range [0,100].
    </summary>
  </metric>
  <metric name="Compositing.WorstCase">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The longest single time taken by the compositing phase in microseconds in
      the event period.
    </summary>
  </metric>
  <metric name="Compositing.WorstCaseRatio">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The highest proportion of a frame ever used by the compositing phase
      within the sample window. An int in the range [0,100].
    </summary>
  </metric>
  <metric name="CompositingAssignments">
    <obsolete>
      No longer recorded after M97 with the launch of CompositeAfterPaint.
    </obsolete>
    <summary>
      The time taken by compositing assignments in microseconds during the
      sampled frame.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="CompositingAssignmentsBeginMainFrame">
    <obsolete>
      No longer recorded after M97 with the launch of CompositeAfterPaint.
    </obsolete>
    <summary>
      The total main frame time used by the compositing assignments phase, in
      microseconds.
    </summary>
  </metric>
  <metric name="CompositingAssignmentsPercentage">
    <obsolete>
      Deprecated as of 11/2020. Replaced with
      CompositingAssignmentsBeginMainFrame.
    </obsolete>
    <summary>
      The percentage of the main frame time used by the compositing assignments
      phase. An int in the range [0,100].
    </summary>
  </metric>
  <metric name="CompositingCommit">
    <summary>
      The time taken by the compositing commit in microseconds during the
      sampled frame.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="CompositingCommit.Average">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The average time taken by the compositing commit at the end of the blink
      lifecycle, in microseconds in the event period.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="CompositingCommit.AverageRatio">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The average over frames within the sample window of the ratio of time
      taken by the compositing commit at the end of the blink lifecycle to the
      total time for the main frame. An int in the range [0,100].
    </summary>
  </metric>
  <metric name="CompositingCommit.WorstCase">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The longest single time taken by the compositing commit at the end of the
      blink lifecycle, in microseconds in the event period.
    </summary>
  </metric>
  <metric name="CompositingCommit.WorstCaseRatio">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The highest proportion of a frame ever taken by the compositing commit at
      the end of the blink lifecycle to the total time for the main frame. An
      int in the range [0,100].
    </summary>
  </metric>
  <metric name="CompositingCommitBeginMainFrame">
    <summary>
      The total main frame time used by the compositing commit, in microseconds.
    </summary>
  </metric>
  <metric name="CompositingCommitPercentage">
    <obsolete>
      Deprecated as of 11/2020. Replaced with CompositingCommitBeginMainFrame.
    </obsolete>
    <summary>
      The percentage of the main frame time used by the compositing commit. An
      int in the range [0,100].
    </summary>
  </metric>
  <metric name="CompositingInputs">
    <summary>
      The time taken by the compositing inputs phase in microseconds during the
      sampled frame.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="CompositingInputsBeginMainFrame">
    <summary>
      The total main frame time used by the compositing inputs phase, in
      microseconds.
    </summary>
  </metric>
  <metric name="CompositingInputsPercentage">
    <obsolete>
      Deprecated as of 11/2020. Replaced with CompositingInputsBeginMainFrame.
    </obsolete>
    <summary>
      The percentage of the main frame time used by the compositing inputs
      phase. An int in the range [0,100].
    </summary>
  </metric>
  <metric name="CompositingPercentage">
    <obsolete>
      Obsolete as of http://crrev.com/794384.
    </obsolete>
    <summary>
      The percentage of the main frame time used by the compositing phase. An
      int in the range [0,100].
    </summary>
  </metric>
  <metric name="ContentDocumentUpdate">
    <summary>
      The time spent doing forced document updates due to update sub-document
      content, during a sampled frame, in microseconds. Includes SVG, Canvas and
      Plugins.
    </summary>
  </metric>
  <metric name="ContentDocumentUpdateBeginMainFrame">
    <summary>
      The time spent doing forced document updates due to update sub-document
      content, during the BeginMainFrame block of a sampled frame, in
      microseconds. Includes SVG, Canvas and Plugins.
    </summary>
  </metric>
  <metric name="DisplayLockIntersectionObserver">
    <summary>
      Time spent computing IntersectionObservations for
      DisplayLockDocumentState, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="DisplayLockIntersectionObserverBeginMainFrame">
    <summary>
      The total main frame time used to compute IntersectionObservations for
      DisplayLockDocumentState, in microseconds.
    </summary>
  </metric>
  <metric name="ForcedStyleAndLayout">
    <summary>
      The time taken by forced style recalc and layouts in microseconds between
      the end of the last main frame update and the current sampled frame, in
      microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="ForcedStyleAndLayout.Average">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The average time taken by all forced style recalcs and layouts in
      microseconds in the event period.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="ForcedStyleAndLayout.AverageRatio">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The average over frames within the sample window of the ratio of time
      taken by forced style recalc and layouts at the end of the blink lifecycle
      to the total time for the main frame. An int in the range [0,100].
    </summary>
  </metric>
  <metric name="ForcedStyleAndLayout.WorstCase">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The longest single time taken by a forced style recalc and layout in
      microseconds in the event period.
    </summary>
  </metric>
  <metric name="ForcedStyleAndLayout.WorstCaseRatio">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The highest proportion of a frame ever taken by forced style recalc and
      layouts at the end of the blink lifecycle to the total time for the main
      frame. An int in the range [0,100].
    </summary>
  </metric>
  <metric name="ForcedStyleAndLayoutBeginMainFrame">
    <summary>
      The total main frame time used by forced style updates and layouts, in
      microseconds. This metric may include time that is also included in the
      AnimateBeginMainFrame metric.
    </summary>
  </metric>
  <metric name="ForcedStyleAndLayoutPercentage">
    <obsolete>
      Deprecated as of 11/2020. Replaced with
      ForcedStyleAndLayoutBeginMainFrame.
    </obsolete>
    <summary>
      The percentage of the main frame time used by forced style updates and
      layouts during the main frame update (not including time outside of the
      frame update. This metric may include time that is also included in the
      AnimatePercentage metric. An int in the range [0,100].
    </summary>
  </metric>
  <metric name="HandleInputEvents">
    <summary>
      The time taken to process rAF-aligned input for the main frame in
      microseconds during the sampled frame.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="HandleInputEvents.Average">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The average time taken to process rAF-aligned input for the main frame in
      microseconds in the event period.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="HandleInputEvents.AverageRatio">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The average over frames within the sample window of the ratio of time
      taken to process rAF-aligned input for the main frame to the total time
      for the main frame. An int in the range [0,100].
    </summary>
  </metric>
  <metric name="HandleInputEvents.WorstCase">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The longest single time taken to process rAF-aligned input for the main
      frame in microseconds in the event period.
    </summary>
  </metric>
  <metric name="HandleInputEvents.WorstCaseRatio">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The highest proportion of a frame ever taken to process rAF-aligned input
      for the main frame to the total time for the main frame. An int in the
      range [0,100].
    </summary>
  </metric>
  <metric name="HandleInputEventsBeginMainFrame">
    <summary>
      The total main frame time used in processing rAF-aligned input, in
      microseconds.
    </summary>
  </metric>
  <metric name="HandleInputEventsPercentage">
    <obsolete>
      Deprecated as of 11/2020. Replaced with HandleInputEventsBeginMainFrame.
    </obsolete>
    <summary>
      The percentage of the main frame time used in processing rAF-aligned
      input. An int in the range [0,100].
    </summary>
  </metric>
  <metric name="HitTestDocumentUpdate">
    <summary>
      The time taken to perform hit test document updates for the main frame in
      microseconds during the sampled frame. It does not compute the actual hit
      test time, rather the style, layout, compositing, etc time to prepare for
      the test.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="HitTestDocumentUpdateBeginMainFrame">
    <summary>
      The total main frame time used in performing hit test document updates, in
      microseconds.
    </summary>
  </metric>
  <metric name="HitTestDocumentUpdatePercentage">
    <obsolete>
      Deprecated as of 11/2020. Replaced with
      HitTestDocumentUpdateBeginMainFrame.
    </obsolete>
    <summary>
      The percentage of the main frame time used in performing hit test document
      updates. An int in the range [0,100].
    </summary>
  </metric>
  <metric name="ImplCompositorCommit">
    <summary>
      The time spent committing layer tree impl data in the compositor thread,
      in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="ImplCompositorCommitBeginMainFrame">
    <summary>
      The total main frame time spent committing layer tree impl data in the
      compositor thread, in microseconds. This should always match
      ImplCompositorCommit and serves as a check.
    </summary>
  </metric>
  <metric name="ImplCompositorCommitPercentage">
    <obsolete>
      Deprecated as of 11/2020. Replaced with
      ImplCompositorCommitBeginMainFrame.
    </obsolete>
    <summary>
      The percentage of the main frame time spent committing layer tree impl
      data in the compositor thread. An int in the range [0,100].
    </summary>
  </metric>
  <metric name="IntersectionObservation">
    <summary>
      The time taken to compute intersection observer state for the main frame
      in microseconds during the sampled frame.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="IntersectionObservation.Average">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The average time taken to compute IntersectionObserver observations in
      microseconds in the event period.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="IntersectionObservation.AverageRatio">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The average over frames within the sample window of the ratio of time
      taken compute IntersectionObserver observations to the total time for the
      main frame. An int in the range [0,100].
    </summary>
  </metric>
  <metric name="IntersectionObservation.WorstCase">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The longest single time taken to compute IntersectionObserver observations
      in microseconds in the event period.
    </summary>
  </metric>
  <metric name="IntersectionObservation.WorstCaseRatio">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The highest proportion of a frame ever taken to compute
      IntersectionObserver observations within the sample window. An int in the
      range [0,100].
    </summary>
  </metric>
  <metric name="IntersectionObservationBeginMainFrame">
    <summary>
      The total main frame time used to compute IntersectionObserver
      observations, in microseconds.
    </summary>
  </metric>
  <metric name="IntersectionObservationInternalCount">
    <summary>
      The number of blink-internal IntersectionObservations that were recomputed
      during the sampled frame.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="IntersectionObservationInternalCountBeginMainFrame">
    <summary>
      The number of blink-internal IntersectionObservations that were recomputed
      during the sampled frame.
    </summary>
  </metric>
  <metric name="IntersectionObservationJavascriptCount">
    <summary>
      The number of javascript-instantiated IntersectionObservations that were
      recomputed during the sampled frame.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="IntersectionObservationJavascriptCountBeginMainFrame">
    <summary>
      The number of javascript-instantiated IntersectionObservations that were
      recomputed during the sampled frame.
    </summary>
  </metric>
  <metric name="IntersectionObservationPercentage">
    <obsolete>
      Deprecated as of 11/2020. Replaced with
      IntersectionObservationBeginMainFrame.
    </obsolete>
    <summary>
      The percentage of the main frame time used in computing intersection
      observer state. An int in the range [0,100].
    </summary>
  </metric>
  <metric name="JavascriptDocumentUpdate">
    <summary>
      The time spent doing forced document updates due to generic Javascript API
      requests, during a sampled frame, in microseconds. Note this primarily
      captures Javascript that explicitly requires Style and Layout, but not
      implicit requests such as through setting focus or scroll position.
    </summary>
  </metric>
  <metric name="JavascriptDocumentUpdateBeginMainFrame">
    <summary>
      The time spent doing forced document updates due to generic Javascript API
      requests, during the BeginMainFrame block of a sampled frame, in
      microseconds. Note this primarily captures Javascript that explicitly
      requires Style and Layout, but not implicit requests such as through
      setting focus or scroll position.
    </summary>
  </metric>
  <metric name="JavascriptIntersectionObserver">
    <summary>
      Time spent computing IntersectionObservations for javascript observers, in
      microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="JavascriptIntersectionObserverBeginMainFrame">
    <summary>
      The total main frame time used to compute IntersectionObservations for
      Javascript observers, in microseconds.
    </summary>
  </metric>
  <metric name="Layout">
    <summary>
      The time taken for layout for the main frame in microseconds during the
      sampled frame.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="LayoutBeginMainFrame">
    <summary>
      The total main frame time used in layout, in microseconds.
    </summary>
  </metric>
  <metric name="LayoutPercentage">
    <obsolete>
      Deprecated as of 11/2020. Replaced with LayoutBeginMainFrame.
    </obsolete>
    <summary>
      The percentage of the main frame time used in layout work. An int in the
      range [0,100].
    </summary>
  </metric>
  <metric name="LazyLoadIntersectionObserver">
    <summary>
      Time spent computing IntersectionObservations for lazy loading, in
      microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="LazyLoadIntersectionObserverBeginMainFrame">
    <summary>
      The total main frame time used to compute IntersectionObservations for
      lazy loading, in microseconds.
    </summary>
  </metric>
  <metric name="MainFrame">
    <summary>
      The time between a BeginMainFrame and the commit of paint results for the
      sampled frame, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="MainFrame.Average">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The average time between a BeginMainFrame and the commit of paint results,
      in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="MainFrame.WorstCase">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The longest single time between a BeginMainFrame and the commit of paint
      results, in microseconds.
    </summary>
  </metric>
  <metric name="MainFrameIsBeforeFCP" enum="Boolean">
    <summary>
      True if the lifecycle update in this event occurred before FCP (First
      Contentful Paint) was registered.
    </summary>
  </metric>
  <metric name="MainFrameReasons">
    <summary>
      A bitfield representation of the reasons for a main frame update. The
      fields are based on the FrameSequenceTrackerType enum, so bitwise and with
      the following values to determine if a reason was present:
      CompositorAnimation: 1, MainThreadAnimation: 2, PinchZoom: 4, RAF: 8,
      TouchScroll: 16, Universal: 32, Video: 64 and WheelScroll: 128.
    </summary>
  </metric>
  <metric name="MediaIntersectionObserver">
    <summary>
      Time spent computing IntersectionObservations for media elements, in
      microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="MediaIntersectionObserverBeginMainFrame">
    <summary>
      The total main frame time used to compute IntersectionObservations for
      media elements, in microseconds.
    </summary>
  </metric>
  <metric name="Paint">
    <summary>
      The time taken to paint for the main frame in microseconds during the
      sampled frame.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Paint.Average">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The average time taken by the paint phase in microseconds in the event
      period.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Paint.AverageRatio">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The average over frames within the sample window of the ratio of time
      taken in the paint phase to the total time for the main frame. An int in
      the range [0,100].
    </summary>
  </metric>
  <metric name="Paint.WorstCase">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The longest single time taken by the paint phase in microseconds in the
      event period.
    </summary>
  </metric>
  <metric name="Paint.WorstCaseRatio">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The highest proportion of a frame ever used by the paint phase within the
      sample window. An int in the range [0,100].
    </summary>
  </metric>
  <metric name="PaintBeginMainFrame">
    <summary>
      The total main frame time used in paint, in microseconds.
    </summary>
  </metric>
  <metric name="PaintPercentage">
    <obsolete>
      Deprecated as of 11/2020. Replaced with PaintBeginMainFrame.
    </obsolete>
    <summary>
      The percentage of the main frame time used in paint. An int in the range
      [0,100].
    </summary>
  </metric>
  <metric name="ParseStyleSheet">
    <summary>
      The time spent parsing style sheets.
    </summary>
  </metric>
  <metric name="ParseStyleSheetBeginMainFrame">
    <summary>
      The total main frame time spent parsing style sheets.
    </summary>
  </metric>
  <metric name="PrePaint">
    <summary>
      The time taken for pre-paint for the main frame in microseconds during the
      sampled frame.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="PrePaint.Average">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The average time taken by the pre-paint phase in microseconds in the event
      period.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="PrePaint.AverageRatio">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The average over frames within the sample window of the ratio of time
      taken in the pre-paint phase to the total time for the main frame. An int
      in the range [0,100].
    </summary>
  </metric>
  <metric name="PrePaint.WorstCase">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The longest single time taken by the pre-paint phase in microseconds in
      the event period.
    </summary>
  </metric>
  <metric name="PrePaint.WorstCaseRatio">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The highest proportion of a frame ever used by the pre-paint phase within
      the sample window. An int in the range [0,100].
    </summary>
  </metric>
  <metric name="PrePaintBeginMainFrame">
    <summary>
      The total main frame time used in pre-paint, in microseconds.
    </summary>
  </metric>
  <metric name="PrePaintPercentage">
    <obsolete>
      Deprecated as of 11/2020. Replaced with PrePaintBeginMainFrame.
    </obsolete>
    <summary>
      The percentage of the main frame time used in pre-paint. An int in the
      range [0,100].
    </summary>
  </metric>
  <metric name="ProxyCommit">
    <obsolete>
      Removed in M84 in favor of separate ImplCompositorCommit and WaitForCommit
      metrics.
    </obsolete>
    <summary>
      The time taken for the proxy to commit to the impl thread in microseconds
      during the sampled frame.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="ProxyCommitPercentage">
    <obsolete>
      Removed in M84 in favor of separate ImplCompositorCommit and WaitForCommit
      metrics.
    </obsolete>
    <summary>
      The percentage of the main frame time used to commit to the impl thread.
      An int in the range [0,100].
    </summary>
  </metric>
  <metric name="ScrollingCoordinator">
    <obsolete>
      Merged into Blink.MainFrame.CompositingCommitRatio in
      http://crrev.com/815947 in M88.
    </obsolete>
    <summary>
      The time taken for scrolling coordinator for the main frame in
      microseconds during the sampled frame.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="ScrollingCoordinator.Average">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The average time taken by the style and layout phases in microseconds in
      the event period.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="ScrollingCoordinator.AverageRatio">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The average over frames within the event period of the ratio of time taken
      to update the scrolling coordinator after painting to the total time for
      the main frame, expressed as a percentage. An int in the range [0,100].
    </summary>
  </metric>
  <metric name="ScrollingCoordinator.WorstCase">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The longest single time within the event period that was used to update
      the ScrollingCoordinator after painting (in microseconds).
    </summary>
  </metric>
  <metric name="ScrollingCoordinator.WorstCaseRatio">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The highest proportion of a frame within the event period that was used to
      update the ScrollingCoordinator after painting, expressed as a percentage.
      An int in the range [0,100].
    </summary>
  </metric>
  <metric name="ScrollingCoordinatorPercentage">
    <obsolete>
      Merged into Blink.MainFrame.CompositingCommitRatio in
      http://crrev.com/815947 in M88.
    </obsolete>
    <summary>
      The percentage of the main frame time used in scrolling coordinator. An
      int in the range [0,100].
    </summary>
  </metric>
  <metric name="ServiceDocumentUpdate">
    <summary>
      The time spent doing forced document updates due to browser requested
      actions, such as accessibility, intersection observer or spell checking,
      during a sampled frame, in microseconds.
    </summary>
  </metric>
  <metric name="ServiceDocumentUpdateBeginMainFrame">
    <summary>
      The time spent doing forced document updates due to browser requested
      actions, such as accessibility, intersection observer or spell checking,
      during the BeginMainFrame block of a sampled frame, in microseconds.
    </summary>
  </metric>
  <metric name="Style">
    <summary>
      The time taken for style update for the main frame in microseconds during
      the sampled frame.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="StyleAndLayout">
    <obsolete>
      Removed January 2020 in favor of separate Style and Layout metrics.
    </obsolete>
    <summary>
      The time taken for style and layout for the main frame in microseconds
      during the sampled frame.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="StyleAndLayout.Average">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The average time taken by the style and layout phases in microseconds in
      the event period.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="StyleAndLayout.AverageRatio">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The average over frames within the sample window of the ratio of time
      taken to update style and layout to the total time for the main frame. An
      int in the range [0,100].
    </summary>
  </metric>
  <metric name="StyleAndLayout.WorstCase">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The longest single time taken by the style and layout phases in
      microseconds in the event period.
    </summary>
  </metric>
  <metric name="StyleAndLayout.WorstCaseRatio">
    <obsolete>
      Deprecated as of 03/2019.
    </obsolete>
    <summary>
      The highest proportion of a frame ever used to compute style and layout
      within the sample window. An int in the range [0,100].
    </summary>
  </metric>
  <metric name="StyleAndLayoutPercentage">
    <obsolete>
      Removed January 2020 in favor of separate Style and Layout metrics.
    </obsolete>
    <summary>
      The percentage of the main frame time used in style and layout work. An
      int in the range [0,100].
    </summary>
  </metric>
  <metric name="StyleBeginMainFrame">
    <summary>
      The total main frame time spent updating style information and building
      the layout tree, in microseconds.
    </summary>
  </metric>
  <metric name="StylePercentage">
    <summary>
      The percentage of the main frame time used in style work. An int in the
      range [0,100].
    </summary>
  </metric>
  <metric name="UpdateLayers">
    <summary>
      The time taken for LayerTreeHost::UpdateLayers in microseconds during the
      sampled frame
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="UpdateLayersBeginMainFrame">
    <summary>
      The total main frame time spent in LayerTreeHost::UpdateLayer, in
      microseconds. This should always match UpdateLayers and serves as a check.
    </summary>
  </metric>
  <metric name="UpdateLayersPercentage">
    <obsolete>
      Deprecated as of 11/2020. Replaced with UpdateLayersBeginMainFrame.
    </obsolete>
    <summary>
      The percentage of the main frame time used by LayerTreeHost::UpdateLayers.
      An int in the range [0,100].
    </summary>
  </metric>
  <metric name="UpdateViewportIntersection">
    <summary>
      Time spent computing internal geometry information about iframes, in
      microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="UpdateViewportIntersectionBeginMainFrame">
    <summary>
      The total main frame time used to compute internal geometry information
      about iframes, in microseconds.
    </summary>
  </metric>
  <metric name="UserDrivenDocumentUpdate">
    <summary>
      The time spent doing forced document updates due to a user action such as
      input, find-in-page or printing, during a sampled frame, in microseconds.

      As of 04/2023, updates for scrolling are included in this metric.
    </summary>
  </metric>
  <metric name="UserDrivenDocumentUpdateBeginMainFrame">
    <summary>
      The time spent doing forced document updates due to a user action such as
      input, find-in-page or printing, during the BeginMainFrame block of a
      sampled frame, in microseconds.

      As of 04/2023, updates for scrolling are included in this metric.
    </summary>
  </metric>
  <metric name="VisualUpdateDelay">
    <summary>
      Time elapsed between when an animation update is first scheduled and when
      the resulting BeginMainFrame starts.
    </summary>
  </metric>
  <metric name="VisualUpdateDelayBeginMainFrame">
    <summary>
      Time elapsed between when an animation update is first scheduled and when
      the resulting BeginMainFrame starts.
    </summary>
  </metric>
  <metric name="WaitForCommit">
    <summary>
      The time spent waiting for the compositor thread to begin processing a
      commit, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="WaitForCommitBeginMainFrame">
    <summary>
      The total main frame time spent waiting for the compositor thread to begin
      processing a commit, in microseconds. This should always match
      WaitForCommit and serves as a check.
    </summary>
  </metric>
  <metric name="WaitForCommitPercentage">
    <obsolete>
      Deprecated as of 11/2020. Replaced with WaitForCommitBeginMainFrame.
    </obsolete>
    <summary>
      The percentage of the main frame time spent waiting for the compositor
      thread to begin processing a commit. An int in the range [0,100].
    </summary>
  </metric>
</event>

<event name="Blink.UseCounter">
  <owner>chasej@chromium.org</owner>
  <summary>
    Collects data for a subset of UseCounter features where UMA UseCounter data
    shows a behaviour that is rare but too common to blindly change. This metric
    should be used to reason about whether a breaking change is acceptable or
    not.

    Note: In M87, a number of use counters were removed from UKM reporting due
    to being reported too frequently (high proportion across page loads).
  </summary>
  <metric name="Feature" enum="FeatureObserver">
    <summary>
      Opt-in UseCounter feature.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="IsMainFrameFeature" enum="Boolean">
    <summary>
      Emits True(1) or False(0) to indicate whether the Feature recorded is in
      the main frame or not.
    </summary>
  </metric>
</event>

<event name="BloatedRenderer">
  <obsolete>
    Deprecated as of 03/2019.
  </obsolete>
  <owner>ulan@chromium.org</owner>
  <summary>
    Metrics related to a bloated renderer that is close to out-of-memory. They
    are recorded only if the renderer process has a single page.
  </summary>
  <metric name="V8.Heap">
    <summary>
      The total physical size of V8's heap in MB.
    </summary>
  </metric>
  <metric name="V8.Heap.AllocatedObjects">
    <summary>
      The total size of allocated on V8's heap in MB.
    </summary>
  </metric>
  <metric name="V8.Heap.Limit">
    <summary>
      The V8 heap limit in MB.
    </summary>
  </metric>
  <metric name="V8.NearV8HeapLimitHandling">
    <summary>
      An enum that specifies how the near V8 heap limit event was handled. See
      blink::NearV8HeapLimitHandling for the enum elements.
    </summary>
  </metric>
</event>

<event name="BrowsingTopics.DocumentBrowsingTopicsApiResult">
  <obsolete>
    Deprecated 10/2022 in favor of
    BrowsingTopics.DocumentBrowsingTopicsApiResult2
  </obsolete>
  <owner>yaoxia@chromium.org</owner>
  <owner>jkarlin@chromium.org</owner>
  <summary>
    The document.browsingTopics() result and other metadata. Recorded whenever
    document.browsingTopics() is invoked from a context. If the API returns more
    than 3 topics (e.g. due to custom configuration FeatureParam), only the
    first 3 topics will be recorded.
  </summary>
  <metric name="EmptyReason" enum="BrowsingTopicsEmptyApiResultReason">
    <summary>
      The reason why the API returns no topic. This metric won't be recorded if
      the API returns any topic.
    </summary>
  </metric>
  <metric name="ReturnedTopic0">
    <summary>
      The returned topic ID at index 0. This metric won't be recorded if the API
      returns no topics.
    </summary>
  </metric>
  <metric name="ReturnedTopic0IsTrueTopTopic" enum="Boolean">
    <summary>
      Whether `ReturnedTopic0` is a true top topic, as opposed to a randomly
      padded topic. This metric won't be recorded if the API returns no topics.
    </summary>
  </metric>
  <metric name="ReturnedTopic0ModelVersion">
    <summary>
      The version of the model used to calculate `ReturnedTopic0`. This metric
      won't be recorded if the API returns no topics.
    </summary>
  </metric>
  <metric name="ReturnedTopic0TaxonomyVersion">
    <summary>
      The version of the taxonomy applicable to `ReturnedTopic0`. This metric
      won't be recorded if the API returns no topics.
    </summary>
  </metric>
  <metric name="ReturnedTopic1">
    <summary>
      The returned topic ID at index 1. This metric won't be recorded if the API
      returns no topics.
    </summary>
  </metric>
  <metric name="ReturnedTopic1IsTrueTopTopic" enum="Boolean">
    <summary>
      Whether `ReturnedTopic1` is a true top topic, as opposed to a randomly
      padded topic. This metric won't be recorded if the API returns no topics.
    </summary>
  </metric>
  <metric name="ReturnedTopic1ModelVersion">
    <summary>
      The version of the model used to calculate `ReturnedTopic1`. This metric
      won't be recorded if the API returns less than 2 topics.
    </summary>
  </metric>
  <metric name="ReturnedTopic1TaxonomyVersion">
    <summary>
      The version of the taxonomy applicable to `ReturnedTopic1`. This metric
      won't be recorded if the API returns less than 2 topics.
    </summary>
  </metric>
  <metric name="ReturnedTopic2">
    <summary>
      The returned topic ID at index 2. This metric won't be recorded if the API
      returns no topics.
    </summary>
  </metric>
  <metric name="ReturnedTopic2IsTrueTopTopic" enum="Boolean">
    <summary>
      Whether `ReturnedTopic2` is a true top topic, as opposed to a randomly
      padded topic. This metric won't be recorded if the API returns no topics.
    </summary>
  </metric>
  <metric name="ReturnedTopic2ModelVersion">
    <summary>
      The version of the model used to calculate `ReturnedTopic2`. This metric
      won't be recorded if the API returns less than 3 topics.
    </summary>
  </metric>
  <metric name="ReturnedTopic2TaxonomyVersion">
    <summary>
      The version of the taxonomy applicable to `ReturnedTopic2`. This metric
      won't be recorded if the API returns less than 3 topics.
    </summary>
  </metric>
</event>

<event name="BrowsingTopics.DocumentBrowsingTopicsApiResult2">
  <owner>yaoxia@chromium.org</owner>
  <owner>jkarlin@chromium.org</owner>
  <summary>
    The document.browsingTopics() result and other metadata. Recorded whenever
    document.browsingTopics() is invoked from a context. If there are more than
    3 candidate topics (e.g. due to custom configuration FeatureParam), only the
    first 3 candidate topics will be recorded.
  </summary>
  <metric name="CandidateTopic0">
    <summary>
      The candidate topic ID at index 0. This metric won't be recorded if no
      topics were derived from the candidate epochs (which can be due to
      insufficient epochs, failed epoch topics calculation, cleared history, or
      cleared/blocked individual topics).
    </summary>
  </metric>
  <metric name="CandidateTopic0IsTrueTopTopic" enum="Boolean">
    <summary>
      Whether `CandidateTopic0` is a true top topic (as opposed to a padded or
      random one). This metric will be recorded iff `CandidateTopic0` is
      recorded.
    </summary>
  </metric>
  <metric name="CandidateTopic0ModelVersion">
    <summary>
      The version of the model used to calculate `CandidateTopic0`. This metric
      will be recorded iff `CandidateTopic0` is recorded.
    </summary>
  </metric>
  <metric name="CandidateTopic0ShouldBeFiltered" enum="Boolean">
    <summary>
      Whether `CandidateTopic0` should be filtered. This metric will be recorded
      iff `CandidateTopic0` is recorded.
    </summary>
  </metric>
  <metric name="CandidateTopic0TaxonomyVersion">
    <summary>
      The version of the taxonomy applicable to `CandidateTopic0`. This metric
      will be recorded iff `CandidateTopic0` is recorded.
    </summary>
  </metric>
  <metric name="CandidateTopic1">
    <summary>
      The candidate topic ID at index 1. This metric won't be recorded if less
      than 2 topics were derived from the candidate epochs (which can be due to
      insufficient epochs, failed epoch topics calculation, cleared history, or
      cleared/blocked individual topics).
    </summary>
  </metric>
  <metric name="CandidateTopic1IsTrueTopTopic" enum="Boolean">
    <summary>
      Whether `CandidateTopic1` is a true top topic (as opposed to a padded or
      random one). This metric will be recorded iff `CandidateTopic1` is
      recorded.
    </summary>
  </metric>
  <metric name="CandidateTopic1ModelVersion">
    <summary>
      The version of the model used to calculate `CandidateTopic1`. This metric
      will be recorded iff `CandidateTopic1` is recorded.
    </summary>
  </metric>
  <metric name="CandidateTopic1ShouldBeFiltered" enum="Boolean">
    <summary>
      Whether `CandidateTopic1` should be filtered. This metric will be recorded
      iff `CandidateTopic1` is recorded.
    </summary>
  </metric>
  <metric name="CandidateTopic1TaxonomyVersion">
    <summary>
      The version of the taxonomy applicable to `CandidateTopic1`. This metric
      will be recorded iff `CandidateTopic1` is recorded.
    </summary>
  </metric>
  <metric name="CandidateTopic2">
    <summary>
      The candidate topic ID at index 2. This metric won't be recorded if less
      than 3 topics were derived from the candidate epochs (which can be due to
      insufficient epochs, failed epoch topics calculation, cleared history, or
      cleared/blocked individual topics).
    </summary>
  </metric>
  <metric name="CandidateTopic2IsTrueTopTopic" enum="Boolean">
    <summary>
      Whether `CandidateTopic2` is a true top topic (as opposed to a padded or
      random one). This metric will be recorded iff `CandidateTopic2` is
      recorded.
    </summary>
  </metric>
  <metric name="CandidateTopic2ModelVersion">
    <summary>
      The version of the model used to calculate `CandidateTopic2`. This metric
      will be recorded iff `CandidateTopic2` is recorded.
    </summary>
  </metric>
  <metric name="CandidateTopic2ShouldBeFiltered" enum="Boolean">
    <summary>
      Whether `CandidateTopic2` should be filtered. This metric will be recorded
      iff `CandidateTopic2` is recorded.
    </summary>
  </metric>
  <metric name="CandidateTopic2TaxonomyVersion">
    <summary>
      The version of the taxonomy applicable to `CandidateTopic2`. This metric
      will be recorded iff `CandidateTopic2` is recorded.
    </summary>
  </metric>
  <metric name="FailureReason" enum="BrowsingTopicsApiAccessResult">
    <summary>
      The reason why the API access is not allowed.
    </summary>
  </metric>
</event>

<event name="BrowsingTopics.EpochTopicsCalculationResult">
  <owner>yaoxia@chromium.org</owner>
  <owner>jkarlin@chromium.org</owner>
  <summary>
    The epoch topics calculation result, including the top 5 topics and other
    metadata. Recorded whenever the periodic (weekly) topics calculation has
    finished. If the result has more than 5 topics (e.g. due to custom
    configuration FeatureParam), only the first 5 topics will be recorded.
  </summary>
  <metric name="ModelVersion">
    <summary>
      The version of the model used to calculate the result topics. This metric
      won't be recorded if the topics calculation failed in general.
    </summary>
  </metric>
  <metric name="PaddedTopicsStartIndex">
    <summary>
      The start index of the randomly padded top topics. This metric won't be
      recorded if the topics calculation failed in general. If all topics are
      real, `PaddedTopicsStartIndex` will equal the feature param
      `kBrowsingTopicsNumberOfTopTopicsPerEpoch`.
    </summary>
  </metric>
  <metric name="TaxonomyVersion">
    <summary>
      The version of the taxonomy applicable to the result topics. This metric
      won't be recorded if the topics calculation failed in general.
    </summary>
  </metric>
  <metric name="TopTopic0">
    <summary>
      The top topic ID at index 0. This metric won't be recorded if the
      candidate topic was blocked, or if the topics calculation failed in
      general.
    </summary>
  </metric>
  <metric name="TopTopic1">
    <summary>
      The top topic ID at index 1. This metric won't be recorded if the
      candidate topic was blocked, or if the topics calculation failed in
      general.
    </summary>
  </metric>
  <metric name="TopTopic2">
    <summary>
      The top topic ID at index 2. This metric won't be recorded if the
      candidate topic was blocked, or if the topics calculation failed in
      general.
    </summary>
  </metric>
  <metric name="TopTopic3">
    <summary>
      The top topic ID at index 3. This metric won't be recorded if the
      candidate topic was blocked, or if the topics calculation failed in
      general.
    </summary>
  </metric>
  <metric name="TopTopic4">
    <summary>
      The top topic ID at index 4. This metric won't be recorded if the
      candidate topic was blocked, or if the topics calculation failed in
      general.
    </summary>
  </metric>
</event>

<event name="BrowsingTopics.PageLoad">
  <owner>yaoxia@chromium.org</owner>
  <owner>jkarlin@chromium.org</owner>
  <summary>
    PageLoad metrics for BrowsingTopics. Recorded when a page has Topics API
    usages (that pass the user permission check), and the page is being
    destroyed/navigated.
  </summary>
  <metric name="TopicsRequestingContextDomainsCount">
    <summary>
      The number of unique context domains have requested the topics. Rounded to
      the nearest exponential bucket (with a bucket ratio of 1.15).
    </summary>
  </metric>
</event>

<event name="ChargeEventHistory">
  <owner>thanhdng@chromium.org</owner>
  <summary>
    Records history of charge events including start time and duration of
    charges. Can be used with other ChargeEventHistory to track the last 30 days
    of charging events. If a &quot;SmartCharging&quot; event and a
    &quot;ChargeEventHistory&quot; event has them same source ID and
    &quot;EventId&quot;, it means &quot;ChargeEventHistory&quot; is the charge
    history when &quot;SmartCharging&quot; event is logged. ChargeEventHistory
    records an array. Each ChargeEventHistory event records an item in the
    array, specified by its index ChargeEventHistoryIndex. Items in the same
    array will have same source ID and EventId.
  </summary>
  <metric name="ChargeEventHistoryDuration">
    <summary>
      Duration of a history charge event.
    </summary>
  </metric>
  <metric name="ChargeEventHistoryIndex">
    <summary>
      Index of this event in the ChargeEventHistory array. Please see the event
      summary for more details.
    </summary>
  </metric>
  <metric name="ChargeEventHistorySize">
    <summary>
      Number of items in ChargeEventHistory array. Please see the event summary
      for more details.
    </summary>
  </metric>
  <metric name="ChargeEventHistoryStartTime">
    <summary>
      Duration (in minutes) between start time of a charge event and logging
      time.
    </summary>
  </metric>
  <metric name="EventId">
    <summary>
      A unique number that represent order of an event. Used combined with
      &quot;SmartCharging&quot;'s EventId to reconstruct charge history.
    </summary>
  </metric>
</event>

<event name="ChromeOS.DeviceManagement">
  <owner>siakabaro@google.com</owner>
  <summary>
    Records the ChromeOS device management state. This event is recorded once
    per UKM report and is not associated with a source URL.
  </summary>
  <metric name="EnrollmentStatus" enum="EnrollmentStatus">
    <summary>
      An enum value representing the enrollment status of a ChromeOS device.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="ChromeOS.WebsiteUsageTime">
  <owner>nancylingwang@chromium.org</owner>
  <owner>dominickn@chromium.org</owner>
  <summary>
    Records the amount of time that the focused and activated website was
    accessed in last two hours on Chrome OS. This is logged each two hours, and
    only when the website is not installed as a PWA or Chrome app.
  </summary>
  <metric name="Duration">
    <summary>
      The milliseconds that the website was accessed in the focused tab and the
      activated browser window. The accessing time is calculated each five
      minutes, then the noise is applied, and sum the running time for five
      minutes with noise to calculate the two hours accessing time. For example
      the running time in the past 2 hours = time1 * noise1 + time2 * noise2 +
      time3 * noise3....
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="IsFromLastLogin" enum="Boolean">
    <summary>
      Whether the metrics is read from the user pref on disk, recorded for the
      last login.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Promotable" enum="Boolean">
    <summary>
      Whether the website can be an installable web app.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="UrlContent" enum="URLContent">
    <obsolete>
      Deprecated as of 01/2023.
    </obsolete>
    <summary>
      The url content, e.g. full url, scope.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="UserDeviceMatrix" enum="UserDeviceMatrix">
    <summary>
      An enum that records the user type and the device type.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="ChromeOSApp.InputEvent">
  <owner>nancylingwang@chromium.org</owner>
  <owner>dominickn@chromium.org</owner>
  <summary>
    Records each five minutes in Chrome OS to log the input events happened on
    the app window. This is logged only when the user allows app syncing or
    allows sync of everything, and the user does not set up a sync passphrase.
  </summary>
  <metric name="AppInputEventCount">
    <summary>
      The number of the input events happened in each five minutes.
    </summary>
  </metric>
  <metric name="AppInputEventSource" enum="AppInputEventSource">
    <summary>
      An enum that records the input event source.
    </summary>
  </metric>
  <metric name="AppType" enum="AppType">
    <summary>
      An enum that records the app type.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="UserDeviceMatrix" enum="UserDeviceMatrix">
    <summary>
      An enum that records the user type and the device type.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="ChromeOSApp.InstalledApp">
  <owner>nancylingwang@chromium.org</owner>
  <owner>dominickn@chromium.org</owner>
  <summary>
    Records the installed app in Chrome OS, only when the user allows app
    syncing or allows sync of everything, and the user does not set up a sync
    passphrase. Only ARC apps, Chrome apps and web apps(PWA), system web apps,
    buildin apps are recorded. This is logged when the user installs a new app.
  </summary>
  <metric name="AppType" enum="AppType">
    <summary>
      An enum that records the app type.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="InstallReason" enum="InstallReason">
    <summary>
      An enum that records the reason why the app was installed.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="InstallSource" enum="InstallSource">
    <obsolete>
      Removed in M96. Replaced with InstallReason.
    </obsolete>
    <summary>
      An enum that records how the app was installed.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="InstallSource2" enum="InstallSource2">
    <summary>
      An enum that records where the app was installed.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="InstallTime" enum="InstallTime">
    <summary>
      An enum that records when the app was installed.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="UserDeviceMatrix" enum="UserDeviceMatrix">
    <summary>
      An enum that records the user type and the device type.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="ChromeOSApp.Launch">
  <owner>nancylingwang@chromium.org</owner>
  <owner>dominickn@chromium.org</owner>
  <summary>
    Records a launched app in Chrome OS, only when the user allows app syncing
    or allows sync of everything, and the user does not set up a sync
    passphrase. Only ARC apps, Chrome apps and web apps(PWA), system web apps,
    buildin apps are recorded. This is logged when an app is launched.
  </summary>
  <metric name="AppType" enum="AppType">
    <summary>
      An enum that records the app type.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="LaunchSource" enum="LaunchSource">
    <summary>
      An enum that records where the app was launched.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="UserDeviceMatrix" enum="UserDeviceMatrix">
    <summary>
      An enum that records the user type and the device type.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="ChromeOSApp.UninstallApp">
  <owner>nancylingwang@chromium.org</owner>
  <owner>dominickn@chromium.org</owner>
  <summary>
    Records the uninstalled app in Chrome OS, only when the user allows app
    syncing or allows sync of everything, and the user does not set up a sync
    passphrase. Only ARC apps, Chrome apps and web apps(PWA), system web apps,
    buildin apps are recorded. This is logged when the user uninstalls an app.
  </summary>
  <metric name="AppType" enum="AppType">
    <summary>
      An enum that records the app type.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="UninstallSource" enum="UninstallSource">
    <summary>
      An enum that records how the app was uninstalled.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="UserDeviceMatrix" enum="UserDeviceMatrix">
    <summary>
      An enum that records the user type and the device type.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="ChromeOSApp.UsageTime">
  <owner>nancylingwang@chromium.org</owner>
  <owner>dominickn@chromium.org</owner>
  <summary>
    Records the amount of time that the app were used in the last five minutes
    on Chrome OS, only when the user allows app syncing or allows sync of
    everything, and the user does not set up a sync passphrase. Only ARC apps,
    Chrome apps and web apps(PWA), system web apps, buildin apps are recorded.
    This is logged every five minutes.
  </summary>
  <metric name="AppType" enum="AppType">
    <summary>
      An enum that records the app type.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Duration">
    <summary>
      The milliseconds that the app was used.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="UserDeviceMatrix" enum="UserDeviceMatrix">
    <summary>
      An enum that records the user type and the device type.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="ChromeOSApp.UsageTimeReusedSourceId">
  <owner>nancylingwang@chromium.org</owner>
  <owner>dominickn@chromium.org</owner>
  <summary>
    Records the amount of time that the app were used in the last five minutes
    on Chrome OS, only when the user allows app syncing or allows sync of
    everything, and the user does not set up a sync passphrase. Only ARC apps,
    Chrome apps and web apps(PWA), system web apps, buildin apps are recorded.
    This is logged every two hours.
  </summary>
  <metric name="AppType" enum="AppType">
    <summary>
      An enum that records the app type.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Duration">
    <summary>
      The milliseconds that the app was used.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="UserDeviceMatrix" enum="UserDeviceMatrix">
    <summary>
      An enum that records the user type and the device type.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="ClickInput" singular="True">
  <owner>dougarnett@chromium.org</owner>
  <summary>
    Metrics associated with user click input. In particular, captures when user
    has a burst of clicks at the same location which may be a signal of user
    unhappiness for an experiment if it differs from the baseline data for the
    site.
  </summary>
  <metric name="Experimental.ClickInputBurst">
    <summary>
      The count of the largest burst of click inputs for a page load. Only
      recorded if it meets a minimum threshold to be considered a burst.
    </summary>
  </metric>
</event>

<event name="ClientHints.AcceptCHFrameUsage">
  <owner>arichiv@chromium.org</owner>
  <owner>victortan@chromium.org</owner>
  <summary>
    Record when a Client Hint is requested in an ACCEPT_CH TLS Frame.
  </summary>
  <metric name="Type" enum="WebClientHintsType">
    <summary>
      Records an enum representing the specific Client Hint type that was
      requested.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="ClientHints.AcceptCHHeaderUsage">
  <owner>arichiv@chromium.org</owner>
  <owner>victortan@chromium.org</owner>
  <summary>
    Record when a Client Hint is requested in a Accept-CH HTTP Response Header.
  </summary>
  <metric name="Type" enum="WebClientHintsType">
    <summary>
      Records an enum representing the specific Client Hint type that was
      requested.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="ClientHints.AcceptCHMetaUsage">
  <owner>arichiv@chromium.org</owner>
  <owner>victortan@chromium.org</owner>
  <summary>
    Record when a Client Hint is requested in a Accept-CH HTML Meta Tag.
  </summary>
  <metric name="Type" enum="WebClientHintsType">
    <summary>
      Records an enum representing the specific Client Hint type that was
      requested.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="ClientHints.CriticalCHHeaderUsage">
  <owner>arichiv@chromium.org</owner>
  <owner>victortan@chromium.org</owner>
  <summary>
    Record when a Client Hint is requested in a Critical-CH HTTP Response
    Header.
  </summary>
  <metric name="Type" enum="WebClientHintsType">
    <summary>
      Records an enum representing the specific Client Hint type that was
      requested.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="ClientHints.DelegateCHMetaUsage">
  <owner>arichiv@chromium.org</owner>
  <owner>victortan@chromium.org</owner>
  <summary>
    Record when a Client Hint is requested in a Delegate-CH HTML Meta Tag.
  </summary>
  <metric name="Type" enum="WebClientHintsType">
    <summary>
      Records an enum representing the specific Client Hint type that was
      requested.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="ClientRenderingAPI">
  <owner>aaronhk@chromium.org</owner>
  <owner>cwallez@chromium.org</owner>
  <owner>enga@chromium.org</owner>
  <owner>fserb@chromium.org</owner>
  <owner>jdarpinian@chromium.org</owner>
  <owner>juanmihd@chromium.org</owner>
  <owner>kainino@chromium.org</owner>
  <owner>kbr@chromium.org</owner>
  <owner>shrekshao@google.com</owner>
  <summary>
    Metrics collecting types of rendering context created with
    canvas/offscreencanvas. It also collects requests of GPU device via WebGPU
    API.
  </summary>
  <metric name="Canvas.RenderingContext" enum="CanvasRenderingAPI">
    <summary>
      Type of rendering contexts created for HTMLCanvasElement.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Canvas.RenderingContextDrawnTo" enum="CanvasRenderingAPI">
    <summary>
      Type of rendering contexts created for HTMLCanvasElement that something
      has actually been drawn to. For WebGL 1 and 2 context this means there is
      at least one draw call issued. For other context types we leave the
      implementation blank at this moment.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="GPUDevice">
    <summary>
      Event fired when a GPUDevice from the WebGPU API is created.
    </summary>
  </metric>
  <metric name="OffscreenCanvas.RenderingContext" enum="CanvasRenderingAPI">
    <summary>
      Type of rendering contexts created for OffscreenCanvas.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="OffscreenCanvas.RenderingContextDrawnTo"
      enum="CanvasRenderingAPI">
    <summary>
      Type of rendering contexts created for OffscreenCanvas that something has
      actually been drawn to. For WebGL 1 and 2 context this means there is at
      least one draw call issued. For other context types we leave the
      implementation blank at this moment.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="Companion.PageView">
  <owner>shaktisahu@chromium.org</owner>
  <summary>
    Records metrics for the companion side panel. The events correspond to a
    single page load in the main frame and the metrics are flushed when the page
    navigates away. For most of the UI surfaces, only the last event (e.g.
    displayed or clicked) is recorded.
  </summary>
  <metric name="CQ.ChildElementCount">
    <summary>
      The number of child elements shown within the CQ suface, e.g. the number
      of related queries in the related queries component. Clamped to a max
      value of 10.
    </summary>
  </metric>
  <metric name="CQ.LastEvent" enum="Companion.UiEvent">
    <summary>
      The last event on the CQ surface.
    </summary>
  </metric>
  <metric name="PH.LastEvent" enum="Companion.UiEvent">
    <summary>
      The last event on the PH surface.
    </summary>
  </metric>
  <metric name="PromoEvent" enum="Companion.PromoEvent">
    <summary>
      The last event on the promo surface.
    </summary>
  </metric>
  <metric name="RegionSearch.ClickCount">
    <summary>
      The number of times region search in the multimodal box was clicked.
    </summary>
  </metric>
</event>

<event name="Compositor.Rendering">
  <owner>khushalsagar@chromium.org</owner>
  <summary>
    Metrics related to rendering in the compositor.
  </summary>
  <metric name="CheckerboardedImagesCount">
    <summary>
      The number of images checker-imaged and re-rasterized on this page.
    </summary>
  </metric>
</event>

<event name="Compositor.UserInteraction">
  <owner>khushalsagar@chromium.org</owner>
  <summary>
    Metrics related to user interaction handled by the compositor. This includes
    user gestures like scrolling, pinch-zoom and page-scale animations triggered
    in response to a double-tap event. The length of the user interaction is
    defined as the time the compositor is running an animation resulting from
    user input.
  </summary>
  <metric name="CheckerboardedContentArea">
    <summary>
      The number of visible pixels per frame checkerboarded during this
      interaction.
    </summary>
  </metric>
  <metric name="CheckerboardedContentAreaRatio">
    <summary>
      The percentage of visible pixels per frame checkerboarded during this
      interaction. This value should be between [0, 100].
    </summary>
  </metric>
  <metric name="CheckerboardedImagesCount">
    <summary>
      The number of images checker-imaged and re-rasterized during this
      interaction.
    </summary>
  </metric>
  <metric name="NumMissingTiles">
    <summary>
      The number of visible tiles per frame checkerboarded during this
      interaction.
    </summary>
  </metric>
</event>

<event name="ContactsPicker.ShareStatistics">
  <owner>finnur@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    Measures statistics about the contacts shared in the contacts picker (when
    the Contacts Picker dialog is dismissed.)
  </summary>
  <metric name="PropertiesRequested">
    <summary>
      Measures the contact properties requested by the website (names, emails,
      telephone numbers). Bit 1 - telephone numbers, bit 2 - emails, bit 3 -
      names.
    </summary>
  </metric>
  <metric name="SelectCount">
    <summary>
      Measures the total number of contacts selected in the contacts picker.
    </summary>
  </metric>
  <metric name="SelectPercentage">
    <summary>
      Measures the percentage of contacts selected in the contacts picker.
    </summary>
  </metric>
</event>

<event name="ContentIndex.Added">
  <owner>rayankans@chromium.org</owner>
  <summary>
    Collected when a new Content Index entry is registered.
  </summary>
  <metric name="Category" enum="ContentIndexCategory">
    <summary>
      The type of the content registered. Corresponds to
      blink.mojom.ContentCategory.
    </summary>
  </metric>
</event>

<event name="ContentIndex.DeletedByUser">
  <owner>rayankans@chromium.org</owner>
  <summary>
    Collected when a Content Index entry is deleted by the user from the
    Downloads page.
  </summary>
  <metric name="Deleted" enum="Boolean">
    <summary>
      Always true.
    </summary>
  </metric>
</event>

<event name="ContentIndex.Opened">
  <owner>rayankans@chromium.org</owner>
  <summary>
    Collected when a Content Index entry is opened from the Downloads page.
  </summary>
  <metric name="IsOffline" enum="Boolean">
    <summary>
      Whether the browser was offline when the content was opened.
    </summary>
  </metric>
</event>

<event name="ContextMenuAndroid.Selected">
  <owner>benwgold@google.com</owner>
  <owner>twellington@chromium.org</owner>
  <metric name="Action">
    <summary>
      Emits an integer id for a selection corresponding to the action enum
      defined in ChromeContextMenuPopulator.java (within the ContextMenuUma
      class).
    </summary>
  </metric>
</event>

<event name="ContextMenuAndroid.Shown">
  <owner>benwgold@google.com</owner>
  <owner>twellington@chromium.org</owner>
  <metric name="SearchByImage" enum="Boolean">
    <summary>
      Recorded when the context menu is constructed and logged if the search by
      image option was displayed.
    </summary>
  </metric>
  <metric name="SearchWithGoogleLens" enum="Boolean">
    <summary>
      Recorded when the context menu is constructed and logged if the Lens
      option was displayed.
    </summary>
  </metric>
  <metric name="ShopWithGoogleLens" enum="Boolean">
    <summary>
      Recorded when the context menu is constructed and logged if the Lens
      shopping option was displayed.
    </summary>
  </metric>
  <metric name="ShopWithGoogleLensChip" enum="Boolean">
    <summary>
      Recorded when the context menu is constructed and logged if the Lens
      shopping chip was displayed.
    </summary>
  </metric>
  <metric name="TranslateWithGoogleLensChip" enum="Boolean">
    <summary>
      Recorded when the context menu is constructed and logged if the Lens
      translate chip was displayed.
    </summary>
  </metric>
</event>

<event name="ContextualSearch">
  <obsolete>
    Deprecated as of 05/2022.
  </obsolete>
  <owner>donnd@chromium.org</owner>
  <summary>
    Metrics related to a Contextual Search Tap event on a page, for use with
    Ranker. These metrics are recorded each time the user triggers the
    Contextual Search UI via a tap gesture (when enabled).
  </summary>
  <metric name="DidOptIn">
    <summary>
      Emits a 1 or 0 to indicate whether the user has Opted-in to the privacy
      conditions for Contextual Search or not.
    </summary>
  </metric>
  <metric name="DurationAfterScrollMs">
    <summary>
      Duration in MS between showing the UI and a subsequent scroll event, or
      not recorded if there was no subsequent scroll.
    </summary>
  </metric>
  <metric name="EntityImpressionsCount">
    <summary>
      Emits an integer in the range of 0 - N that represents the number of
      impressions of an Entity that were shown in the Bar, aggregated in Android
      device storage for this user, starting in M-69.
    </summary>
  </metric>
  <metric name="EntityOpensCount">
    <summary>
      Emits an integer in the range of 0 - N that represents the number of times
      an Entity was shown in the Bar and the panel was opened, aggregated in
      Android device storage for this user, starting in M-69.
    </summary>
  </metric>
  <metric name="FontSize">
    <summary>
      Emits a value from 0-10 representing the effective font size on the
      screen. A value of 0 means the font size cannot be obtained. A value of 1
      represents a very small font and a value of 10 represents a large font.
    </summary>
  </metric>
  <metric name="IsEntity">
    <summary>
      Emits a 1 or 0 to indicate whether the word tapped appears to be part of
      an entity, given simple English language rules that check capitalization
      and punctuation.
    </summary>
  </metric>
  <metric name="IsEntityEligible">
    <summary>
      Emits a 1 or 0 to indicate whether the IsEntity boolean ever had a chance
      of being true or not. When we're dealing with languages other than ones
      where our simple entity-detection can work this signal is false.
    </summary>
  </metric>
  <metric name="IsHttp">
    <summary>
      Emits a 1 or 0 to indicate whether the base page is HTTP (insecure).
    </summary>
  </metric>
  <metric name="IsLanguageMismatch">
    <summary>
      Emits a 1 or 0 to indicate whether the language of the base page is a
      mismatch from the list of languages the user knows, so they might want
      translation.
    </summary>
  </metric>
  <metric name="IsLongWord">
    <summary>
      Emits a 1 or 0 to indicate whether the word tapped was considered long (at
      least 10 chars in length).
    </summary>
  </metric>
  <metric name="IsSecondTapOverride">
    <summary>
      Emits a 1 or 0 to indicate whether the tap was an override of normal tap
      suppression because it was considered a second tap on a word after the
      first tap was suppressed.
    </summary>
  </metric>
  <metric name="IsShortWord">
    <summary>
      Emits a 1 or 0 to indicate whether the word tapped was considered short
      (less than 4 characters in length).
    </summary>
  </metric>
  <metric name="IsWordEdge">
    <summary>
      Emits a 1 or 0 to indicate whether the tap gesture was on the edge of a
      word, rather than in the middle 50% of the word.
    </summary>
  </metric>
  <metric name="OpenCount">
    <summary>
      Emits an integer in the range of 0 - N that represents the total number of
      times the user opened the panel, aggregated in Android device storage for
      this user since M-69.
    </summary>
  </metric>
  <metric name="OutcomeRankerDidPredict">
    <summary>
      Emits a 1 or 0 to indicate whether Ranker was able to make a prediction.
    </summary>
  </metric>
  <metric name="OutcomeRankerPrediction">
    <summary>
      Emits a 1 or 0 to indicate what Ranker's prediction was for this record.
      Recorded only when OutcomeRankerDidPredict is true.
    </summary>
  </metric>
  <metric name="OutcomeRankerPredictionScore">
    <summary>
      Emits a single-precision float to indicate the score for the Ranker
      prediction for this record. Recorded only when OutcomeRankerDidPredict is
      true.
    </summary>
  </metric>
  <metric name="OutcomeWasCardsDataShown">
    <summary>
      Emits a 1 or 0 to indicate whether any Contextual Cards data was shown in
      the Contextual Search Bar.
    </summary>
  </metric>
  <metric name="OutcomeWasPanelOpened">
    <summary>
      Emits a 1 or 0 to indicate whether the user opened the overlay panel. This
      is the primary outcome metric.
    </summary>
  </metric>
  <metric name="OutcomeWasQuickActionClicked">
    <summary>
      Emits a 1 or 0 to indicate whether the user clicked within the overlay
      panel when a Quick-Action was shown. This is a secondary outcome metric.
    </summary>
  </metric>
  <metric name="OutcomeWasQuickAnswerSeen">
    <summary>
      Emits a 1 or 0 to indicate whether the user could see a Quick-Answer
      caption within the overlay panel. This is a tertiary outcome metric.
    </summary>
  </metric>
  <metric name="PortionOfElement">
    <summary>
      Emits an integer in the range 0-10 inclusive that expresses the portion of
      the enclosing element that is the word tapped. A zero will be emitted if
      the ratio cannot be calculated. A value of 10 means the word spans the
      entire element, and a value of 1 means the word is 10% or less than the
      entire element.
    </summary>
  </metric>
  <metric name="Previous28DayCtrPercent">
    <summary>
      The CTR of the overlay panel for this user, aggregated in Android device
      storage over a previous 28 day period, expressed as an integer between
      0-99, since M-60.
    </summary>
  </metric>
  <metric name="Previous28DayImpressionsCount">
    <summary>
      The count of views of the overlay panel for this user, aggregated in
      Android device storage over a previous 28 day period, since M-60.
    </summary>
  </metric>
  <metric name="PreviousWeekCtrPercent">
    <summary>
      The CTR of the overlay panel for this user, aggregated in Android device
      storage over the previous week, expressed as an integer between 0-99,
      since M-60.
    </summary>
  </metric>
  <metric name="PreviousWeekImpressionsCount">
    <summary>
      The count of views of the overlay panel for this user, aggregated in
      Android device storage over the previous week, since M-60.
    </summary>
  </metric>
  <metric name="QuickActionImpressionsCount">
    <summary>
      Emits an integer in the range of 0 - N that represents the total number of
      times the user saw a quick action in the caption of the Bar, e.g. a phone
      number to dial. Aggregated in Android device storage since M-69 for this
      user.
    </summary>
  </metric>
  <metric name="QuickActionsIgnored">
    <summary>
      Emits an integer in the range of 0 - N that represents the total number of
      times the user ignored a quick action but opened the Bar instead, e.g. a
      phone number was available but not dialed. Aggregated in Android device
      storage starting at M-69.
    </summary>
  </metric>
  <metric name="QuickActionsTaken">
    <summary>
      Emits an integer in the range of 0 - N that represents the total number of
      times the user activated a quick action by tapping on a quick action shown
      in the Bar, e.g. dialed a phone number. Aggregated in Android device
      storage since M-69 for this user.
    </summary>
  </metric>
  <metric name="QuickAnswerCount">
    <summary>
      Emits an integer in the range of 0 - N that represents the total number of
      times the user saw a quick answer in the caption of the Bar. Typically
      these quick answers represent an automatic translation of the selection.
      Aggregated in Android device storage for all time for this user, since
      M-57.
    </summary>
  </metric>
  <metric name="ScreenTopDps">
    <summary>
      The location of the tap relative to the top of the screen, expressed in
      DPs.
    </summary>
  </metric>
  <metric name="TapCount">
    <summary>
      Emits an integer in the range of 0 - N that represents the total number of
      taps that triggered the Bar, aggregated in Android device storage for this
      user, since M-43.
    </summary>
  </metric>
  <metric name="TapDurationMs">
    <summary>
      The duration of the tap gesture expressed as an integer in milliseconds.
    </summary>
  </metric>
  <metric name="WasScreenBottom">
    <summary>
      The location of the tap relative to the bottom of the screen, expressed as
      an integer with 0 meaning not at the bottom and 1 meaning at the bottom.
    </summary>
  </metric>
</event>

<event name="ContextualSuggestions">
  <obsolete>
    This feature was deprecated in M74
  </obsolete>
  <owner>donnd@chromium.org</owner>
  <owner>fgorski@chromium.org</owner>
  <owner>twellington@chromium.org</owner>
  <owner>zea@chromium.org</owner>
  <summary>
    Metrics related to Contextual Suggestions shown in the Chrome Assistive
    Surface, aka EoC shown in CAS. These metrics are recorded each time the
    Contextual Suggestions UI is dismissed. Each record always contains a value
    for every metric known at the time of the implementation.
  </summary>
  <metric name="AnyDownloaded">
    <summary>
      Emits an integer in the range 0-1 to indicate whether the user downloaded
      any suggestions.
    </summary>
  </metric>
  <metric name="AnySuggestionTaken">
    <summary>
      Emits an integer in the range 0-1 to indicate whether any suggestion link
      was taken.
    </summary>
  </metric>
  <metric name="ClosedFromPeek">
    <summary>
      Emits an integer in the range 0-1 to indicate whether the peeking sheet
      was closed by tapping on the close button.
    </summary>
  </metric>
  <metric name="EverOpened">
    <summary>
      Emits an integer in the range 0-1 to indicate whether the sheet was ever
      opened.
    </summary>
  </metric>
  <metric name="FetchState">
    <summary>
      Emits an integer in the range 0-7 to indicate the ending state of the data
      fetcher and results returned. A value of 0 indicates not-started, a 7
      indicates fetch-completed with suggestions. See the code for details.
    </summary>
  </metric>
  <metric name="ShowDurationBucketMin">
    <summary>
      Emits an integer in the range 0-N to indicate the duration that the sheet
      was shown before a positive or negative action was taken. A value of 0
      indicates that the UI was never shown. A value greater than 0 indicates
      that some user interaction occurred taking at least the indicated number
      of milliseconds, but less than twice that amount. This exponential
      bucketing is done for privacy reasons, and uses the UKM
      GetExponentialBucketMin method with a value of 2.0 for spacing.
    </summary>
  </metric>
  <metric name="TriggerEvent">
    <summary>
      Emits an integer in the range 0-2 to indicate whether the contextual
      suggestions UI was ever triggered and how it was triggered. A value of 0
      indicates never-shown, a 1 indicates peeked in response to a
      reverse-scroll (deprecated), and 2 indicates that the toolbar button was
      shown (the only trigger currently supported).
    </summary>
  </metric>
</event>

<event name="CPUUsageMeasurement">
  <owner>chrisha@chromium.org</owner>
  <owner>siggi@chromium.org</owner>
  <summary>
    A CPU usage measurement that corresponds to a tick in a CPU usage
    time-series. There is also some metadata stored to determine how faithful
    the CPU usage measurement is (e.g. NumberOfCoresidentTabs).
  </summary>
  <metric name="CPUUsage">
    <summary>
      CPU usage measurement. This is in units of clock-cycles. For example, 1.2
      seconds of 100% CPU usage on a 2.5GHz CPU corresponds to a value of 1.2 x
      1.0 x 2.5e9 = 3e6.
    </summary>
  </metric>
  <metric name="EventType">
    <summary>
      The event associated with the measurement. This is an integer value
      corresponding to the enum defined in
      resource_coordinator::RenderProcessProbe.
    </summary>
  </metric>
  <metric name="IsVisible">
    <summary>
      Indicates if any frame hosted in this tab is visible at the moment the
      measurement is taken.
    </summary>
  </metric>
  <metric name="NumberOfCoresidentTabs">
    <summary>
      Number of co-resident tabs in all of the render processes a tab is
      associated with when the CPU usage measurement is taken.
    </summary>
  </metric>
  <metric name="ObservationWindowSizeMs">
    <summary>
      The size of the observation window (time since last CPU measurement) in
      milliseconds.
    </summary>
  </metric>
  <metric name="ProcessUptimeMs">
    <summary>
      The uptime of the process being measured, in milliseconds.
    </summary>
  </metric>
</event>

<event name="CrossOriginSubframeWithoutEmbeddingControl">
  <owner>clamy@chromium.org</owner>
  <summary>
    Recorded when a subframe is embedded in a cross-origin context without
    having a CSP frame-ancestor header or an XFO header.
  </summary>
  <metric name="SubframeEmbedded">
    <summary>
      Mesaures the number of pages with subframes embedded in cross-origin
      contexts without having a CSP frame-ancestor header or an XFO header.
    </summary>
  </metric>
</event>

<event name="DailyChargeSummary">
  <owner>thanhdng@chromium.org</owner>
  <summary>
    Records daily summaries of charging. DailyChargeSummary summarizes charging
    information (e.g. amount of time on full charge, amount of time on AC
    adapter, etc) in a day. It can be used in combination with other
    DailyChargeSummary events to get information about the last 30 days of
    charging. If a &quot;SmartCharging&quot; event and a
    &quot;DailyChargeSummary&quot; event has them same source ID and
    &quot;EventId&quot;, it means &quot;DailyChargeSummary&quot; is the summary
    when &quot;SmartCharging&quot; event is logged. DailyChargeSummary records
    an array. Each event records an item in the array, specified by its index
    DailySummaryIndex. Items in the same array will have same source ID and
    EventId.
  </summary>
  <metric name="DailySummaryHoldTimeOnAc">
    <summary>
      Amount of time (in minutes) the device was on AC charger and the charge
      was hold due to adaptive charging, at an index specified by
      DailySummaryIndex.
    </summary>
  </metric>
  <metric name="DailySummaryIndex">
    <summary>
      Index of this event in the array. Please see the event summary for more
      details.
    </summary>
  </metric>
  <metric name="DailySummaryNumDaysDistance">
    <summary>
      Distance in days bettwen current day and the day that the daily summary
      was logged.
    </summary>
  </metric>
  <metric name="DailySummarySize">
    <summary>
      Number of items in array. Please see the event summary for more details.
    </summary>
  </metric>
  <metric name="DailySummaryTimeFullOnAc">
    <summary>
      Amount of time (in minutes) the device was keep on AC charger with full
      battery (100%).
    </summary>
  </metric>
  <metric name="DailySummaryTimeOnAc">
    <summary>
      Amount of time (in minutes) the device was keep on AC charger.
    </summary>
  </metric>
  <metric name="EventId">
    <summary>
      A number that represent order of an event. Used combined with
      &quot;SmartCharging&quot;'s EventId to reconstruct charge history.
    </summary>
  </metric>
</event>

<event name="DataReductionProxy" singular="True">
  <owner>robertogden@chromium.org</owner>
  <summary>
    Data Reduction Proxy related metrics associated with a page load. See
    //components/data_reduction_proxy/.
  </summary>
  <metric name="DataSaverPageUUID">
    <summary>
      A unique identifier of this page load to the proxy server. Recorded for
      each navigation that uses the proxy.
    </summary>
  </metric>
  <metric name="EstimatedOriginalNetworkBytes">
    <summary>
      The estimated number of bytes that would have been used if that proxy was
      disabled on this page load. Recorded for each navigation that uses the
      proxy.
    </summary>
  </metric>
</event>

<event name="DetachedWindows.Experimental">
  <obsolete>
    Deprecated as of 01/2020.
  </obsolete>
  <owner>bartekn@chromium.org</owner>
  <summary>
    Metrics related to detached windows.
  </summary>
  <metric name="NavigationSourceId">
    <summary>
      Contains the UKM source id of the navigation as an integer.
    </summary>
  </metric>
  <metric name="NumberOfCallsInDetachedWindowByClosing">
    <summary>
      The number of function calls in a window detached by closing/removal.
    </summary>
  </metric>
  <metric name="NumberOfCallsInDetachedWindowByClosing_After10sSinceDetaching">
    <summary>
      The number of function calls in a window detached by closing/removal, that
      happened at least 10 seconds after detaching.
    </summary>
  </metric>
  <metric name="NumberOfCallsInDetachedWindowByClosing_After1minSinceDetaching">
    <summary>
      The number of function calls in a window detached by closing/removal, that
      happened at least 1 minute after detaching.
    </summary>
  </metric>
  <metric name="NumberOfCallsInDetachedWindowByNavigation">
    <summary>
      The number of function calls in a window detached by navigating away.
    </summary>
  </metric>
  <metric
      name="NumberOfCallsInDetachedWindowByNavigation_After10sSinceDetaching">
    <summary>
      The number of function calls in a window detached by navigating away, that
      happened at least 10 seconds after detaching.
    </summary>
  </metric>
  <metric
      name="NumberOfCallsInDetachedWindowByNavigation_After1minSinceDetaching">
    <summary>
      The number of function calls in a window detached by navigating away, that
      happened at least 1 minute after detaching.
    </summary>
  </metric>
  <metric name="NumberOfCallsInDetachedWindowByOtherReason">
    <summary>
      The number of function calls in a window detached by another reason.
    </summary>
  </metric>
  <metric
      name="NumberOfCallsInDetachedWindowByOtherReason_After10sSinceDetaching">
    <summary>
      The number of function calls in a window detached by another reason, that
      happened at least 10 seconds after detaching.
    </summary>
  </metric>
  <metric
      name="NumberOfCallsInDetachedWindowByOtherReason_After1minSinceDetaching">
    <summary>
      The number of function calls in a window detached by another reason, that
      happened at least 1 minute after detaching.
    </summary>
  </metric>
</event>

<event name="DIPS.Deletion" singular="True">
  <owner>rtarpine@google.com</owner>
  <owner>dc-komics@google.com</owner>
  <summary>
    Recorded when DIPS judges a site to be an incidental party and deletes its
    storage.
  </summary>
  <metric name="Detected" enum="BooleanDetected">
    <summary>
      Always set to true (only present because UKM events require at least one
      metric).
    </summary>
  </metric>
</event>

<event name="DIPS.Redirect" singular="True">
  <owner>rtarpine@google.com</owner>
  <owner>dc-komics@google.com</owner>
  <summary>
    Recorded on every HTTP redirect or client-side bounce, where a client-side
    bounce is a non-user-initiated navigation starting soon after the previous
    navigation committed.
  </summary>
  <metric name="ClientBounceDelay">
    <summary>
      Populated for client redirects only. The time in seconds (capped at 10)
      between the page committing and the redirect navigation starting. An int
      in the range [0, 10].
    </summary>
  </metric>
  <metric name="CookieAccessType" enum="CookieAccessType">
    <summary>
      Whether the redirect read cookies, wrote cookies, both, or neither.
    </summary>
  </metric>
  <metric name="HasStickyActivation" enum="BooleanHasUserActivation">
    <summary>
      Populated for client redirects only. Whether the user ever interacted with
      the page. (See the HTML spec for a definition.)
    </summary>
  </metric>
  <metric name="InitialAndFinalSitesSame" enum="BooleanSameSite">
    <summary>
      True when the site before the redirect chain is the same as the site at
      the end of the chain.
    </summary>
  </metric>
  <metric name="RedirectAndFinalSiteSame" enum="BooleanSameSite">
    <summary>
      True when the redirect site is the same as the site at the end of the
      redirect chain.
    </summary>
  </metric>
  <metric name="RedirectAndInitialSiteSame" enum="BooleanSameSite">
    <summary>
      True when the redirect site is the same as the site before the redirect
      chain.
    </summary>
  </metric>
  <metric name="RedirectChainIndex">
    <summary>
      0-based index of this individual redirect within its chain.
    </summary>
  </metric>
  <metric name="RedirectChainLength">
    <summary>
      The length of the overall redirect chain.
    </summary>
  </metric>
  <metric name="RedirectType" enum="DIPSRedirectType">
    <summary>
      The type of the redirect: client or server.
    </summary>
  </metric>
  <metric name="SiteEngagementLevel" enum="SiteEngagementLevel">
    <summary>
      The site engagement level of the redirect URL, at the time the redirect
      took place.
    </summary>
  </metric>
</event>

<event name="DIPS.TriggeringAction">
  <owner>kaklilu@google.com</owner>
  <owner>dc-komics@google.com</owner>
  <summary>
    Recorded on a repeated interval when DIPS may want to clear site storage to
    improve user privacy. These metrics will be used to determine which
    triggering action is most appropriate for our use case.

    When these cases occur, the DIPS instance recording these metrics will keep
    track of which triggering actions have already happened to prevent logging
    duplicate metrics.
  </summary>
  <metric name="DidBounce" enum="Boolean">
    <summary>
      True for sites that redirected the user since the last time the DIPS
      instance attempted to clear site storage.
    </summary>
  </metric>
  <metric name="DidStatefulBounce" enum="Boolean">
    <summary>
      True for sites that redirected the user while accessing storage since the
      last time the DIPS instance attempted to clear site storage.
    </summary>
  </metric>
  <metric name="UsedStorage" enum="Boolean">
    <summary>
      True for sites wrote to the browser's storage since the last time the DIPS
      instance attempted to clear site storage.
    </summary>
  </metric>
</event>

<event name="Document.OutliveTimeAfterShutdown">
  <obsolete>
    Removed January 2021
  </obsolete>
  <owner>hajimehoshi@chromium.org</owner>
  <owner>keishi@chromium.org</owner>
  <summary>
    Recorded when a Document object survives certain number of garbage
    collections after detached. It is expected that regular Document objects are
    destroyed soon after detached, and if a document outlives longer, probably
    this can be leaked.
  </summary>
  <metric name="GCCount">
    <summary>
      Measures the numbers of garbarge collection after the document is
      detached. This is recorded when the number reached certain numbers like 5
      or 10.
    </summary>
  </metric>
</event>

<event name="DocumentCreated">
  <owner>beccahughes@chromium.org</owner>
  <summary>
    Recorded when a Document object is created and records the source ID of the
    navigation and whether the document was in the main frame. This can be used
    to link subframe UKM events to the parent document.
  </summary>
  <metric name="IsCrossOriginFrame">
    <summary>
      Whether the document was in a cross origin iframe. This can either be 0 or
      1.
    </summary>
  </metric>
  <metric name="IsCrossSiteFrame">
    <summary>
      Whether the document was in a cross site iframe. This can either be 0 or
      1.
    </summary>
  </metric>
  <metric name="IsMainFrame">
    <summary>
      Whether the document was in the main frame. This is can either be 0 or 1.
    </summary>
  </metric>
  <metric name="NavigationSourceId">
    <summary>
      Contains the UKM source id of the navigation as an integer.
    </summary>
  </metric>
</event>

<event name="Download.Completed">
  <owner>clank-downloads@google.com</owner>
  <summary>
    Metrics taken when a download completes. Its parent event is
    Download.Started.
  </summary>
  <metric name="BytesWasted">
    <summary>
      The number of bytes that have been used in an excess (ie. download
      restarting the middle of a download).
    </summary>
  </metric>
  <metric name="DownloadId">
    <summary>
      The id of the download that is used to associate separate events.
    </summary>
  </metric>
  <metric name="ResultingFileSize">
    <summary>
      The size of the file that is downloaded, expressed in kilobytes with
      exponentially growing buckets.
    </summary>
  </metric>
  <metric name="TimeSinceStart">
    <summary>
      The difference in the time between when the download finished and when it
      began, expressed in milliseconds.
    </summary>
  </metric>
</event>

<event name="Download.Interrupted">
  <owner>clank-downloads@google.com</owner>
  <summary>
    Metrics taken when a download is interrupted. Its parent event is
    Download.Started.
  </summary>
  <metric name="BytesWasted">
    <summary>
      The number of bytes that have been used in an excess (ie. download
      restarting the middle of a download).
    </summary>
  </metric>
  <metric name="ChangeInFileSize">
    <summary>
      The difference in the size of the file that is downloaded compared to the
      initial reported size, expressed in kilobytes with exponentially growing
      buckets.
    </summary>
  </metric>
  <metric name="DownloadId">
    <summary>
      The id of the download that is used to associate separate events.
    </summary>
  </metric>
  <metric name="Reason">
    <summary>
      The reason the download was interrupted, expressed as an enum defined in
      DownloadInterruptReason.
    </summary>
  </metric>
  <metric name="ResultingFileSize">
    <summary>
      The size of the file that is downloaded, expressed in kilobytes with
      exponentially growing buckets.
    </summary>
  </metric>
  <metric name="TimeSinceStart">
    <summary>
      The difference in the time between when the download interrupted and when
      it began, expressed in milliseconds.
    </summary>
  </metric>
</event>

<event name="Download.Resumed">
  <owner>clank-downloads@google.com</owner>
  <summary>
    Metrics taken when a download is resumed. Its parent event is
    Download.Started.
  </summary>
  <metric name="DownloadId">
    <summary>
      The id of the download that is used to associate separate events.
    </summary>
  </metric>
  <metric name="Mode">
    <summary>
      The mode by which the download was resumed, expressed as an enum defined
      in ResumeMode.
    </summary>
  </metric>
  <metric name="TimeSinceStart">
    <summary>
      The difference in the time between when the download resumed and when it
      began, expressed in milliseconds.
    </summary>
  </metric>
</event>

<event name="Download.Started">
  <owner>clank-downloads@google.com</owner>
  <summary>
    Metrics taken when a download begins. It has one Download.Ended and none to
    multiple Download.Interrupted/Download.Resumed events associated with it.
  </summary>
  <metric name="DownloadConnectionSecurity">
    <summary>
      The state of the security of the final download URL and all the redirects
      leading to it. Expressed as an enum defined in DownloadConnectionSecurity.
    </summary>
  </metric>
  <metric name="DownloadId">
    <summary>
      The id of the download that is used to associate separate events.
    </summary>
  </metric>
  <metric name="DownloadSource">
    <summary>
      The source of the download, expressed as an enum defined in DownloadEntry.
    </summary>
  </metric>
  <metric name="FileType">
    <summary>
      The type of file that is downloaded, expressed as an enum defined in
      DownloadContentType.
    </summary>
  </metric>
  <metric name="IsSameHostDownload">
    <summary>
      A boolean denoting if the final download URL is the same host as the
      initiating frame (i.e., whether the initiating site likely controls the
      download itself).
    </summary>
  </metric>
</event>

<event name="Event.ScrollBegin.Touch">
  <owner>nzolghadr@chromium.org</owner>
  <summary>
    Metrics related to first scroll action caused by the generated ScrollUpdate
    gesture event.
  </summary>
  <metric name="IsMainThread">
    <summary>
      Whether the event is handled on the main thread or not.
    </summary>
  </metric>
  <metric name="TimeToHandled">
    <summary>
      The time in microseconds between initial creation of a touch event and the
      first generated ScrollUpdate gesture event in a given scroll gesture event
      sequence is handled on main/impl thread. If no swap was induced by the
      ScrollUpdate gesture event, no recording is made.
    </summary>
  </metric>
  <metric name="TimeToScrollUpdateSwapBegin">
    <summary>
      The time in microseconds between initial creation of a touch event and the
      start of the frame swap on the GPU service caused by the generated
      ScrollUpdate gesture event if that ScrollUpdate is the first such event in
      a given scroll gesture event sequence. If no swap was induced by the
      event, no recording is made.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.country,profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="Event.ScrollBegin.Wheel">
  <owner>nzolghadr@chromium.org</owner>
  <summary>
    Metrics related to first scroll action caused by the generated ScrollUpdate
    gesture event.
  </summary>
  <metric name="IsMainThread">
    <summary>
      Whether the event is handled on the main thread or not.
    </summary>
  </metric>
  <metric name="TimeToHandled">
    <summary>
      The time in microseconds between initial creation of a wheel event and the
      first generated ScrollUpdate gesture event in a given scroll gesture event
      sequence is handled on main/impl thread. If no swap was induced by the
      ScrollBegin gesture event, no recording is made.
    </summary>
  </metric>
  <metric name="TimeToScrollUpdateSwapBegin">
    <summary>
      The time in microseconds between the initial creation of a wheel event and
      the start of the frame swap on the GPU service caused by the generated
      ScrollUpdate gesture event if that ScrollUpdate is the first such event in
      a given scroll gesture event sequence. If no swap was induced by the
      event, no recording is made.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.country,profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="Event.ScrollUpdate.Touch">
  <owner>nzolghadr@chromium.org</owner>
  <summary>
    Metrics related to a scroll action caused by the generated ScrollUpdate
    gesture event.
  </summary>
  <metric name="IsMainThread">
    <summary>
      Whether the event is handled on the main thread or not.
    </summary>
  </metric>
  <metric name="TimeToHandled">
    <summary>
      The time in microseconds between initial creation of a touch event and the
      generated ScrollUpdate gesture event is handled on main/impl thread. If no
      swap was induced by the ScrollUpdate gesture event, no recording is made.
    </summary>
  </metric>
  <metric name="TimeToScrollUpdateSwapBegin">
    <summary>
      The time in microseconds between the initial creation of a touch event and
      the start of the frame swap on the GPU service. If no swap was induced by
      the event, no recording is made. The first GSU of every scrolling sequence
      is excluded from this metric.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.country,profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="Event.ScrollUpdate.Wheel">
  <owner>nzolghadr@chromium.org</owner>
  <owner>tdresser@chromium.org</owner>
  <summary>
    Metrics related to a scroll action caused by the generated ScrollUpdate
    gesture event.
  </summary>
  <metric name="IsMainThread">
    <summary>
      Whether the event is handled on the main thread or not.
    </summary>
  </metric>
  <metric name="TimeToHandled">
    <summary>
      The time in microseconds between initial creation of a wheel event and the
      generated ScrollUpdate gesture event is handled on main/impl thread. If no
      swap was induced by the ScrollUpdate gesture event, no recording is made.
      The first GSU of every scrolling sequence is excluded from this metric.
    </summary>
  </metric>
  <metric name="TimeToScrollUpdateSwapBegin">
    <summary>
      The time in microseconds between the initial creation of a wheel event and
      the start of the frame swap on the GPU service. If no swap was induced by
      the event, no recording is made. The first GSU of every scrolling sequence
      is excluded from this metric.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.country,profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="Extensions.CrossOriginFetchFromContentScript3">
  <obsolete>
    Deprecated in Chrome 87 / September 2020 - it was not needed anymore since
    CORS-for-content-scripts has successfully shipped in M85.
  </obsolete>
  <owner>lukasza@chromium.org</owner>
  <summary>
    This UKM event is logged when an extension which triggers a cross-origin
    CORS-mode request from a content script if such a request results would be
    allowed by CORB, but potentially blocked by CORS. The source-id URL
    associated with the UKM event identifies the extension initiating such
    request.

    Note that this data is only gathered if the
    CorbAllowlistAlsoAppliesToOorCors feature is disabled. Also note that this
    data is not gathered for extensions that are already on the allowlist.
  </summary>
  <metric name="EventHappened" enum="Boolean">
    <summary>
      Always true - introduced to have non-zero number of metrics which should
      make it easier to work with queries / dashboards for the overall
      CrossOriginFetchFromContentScript3 event.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="Extensions.OnNavigation" singular="True">
  <owner>chikamune@chromium.org</owner>
  <owner>yyanagisawa@chromium.org</owner>
  <owner>sisidovski@chromium.org</owner>
  <owner>hiroshige@chromium.org</owner>
  <owner>kouhei@chromium.org</owner>
  <summary>
    Records the extension related metrics that might have negative impacts on
    LCP. This is recorded when navigation is finished.
  </summary>
  <metric name="DeclarativeNetRequestFeedbackPermissionCount">
    <summary>
      The number of enabled extensions that have a DeclarativeNetRequestFeedback
      permission. The exponential bucketing is applied for privacy reasons by
      using ukm::GetExponentialBucketMin(value, 2).
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="DeclarativeNetRequestPermissionCount">
    <summary>
      The number of enabled extensions that have a DeclarativeNetRequest
      permission. The exponential bucketing is applied for privacy reasons by
      using ukm::GetExponentialBucketMin(value, 2).
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="DeclarativeNetRequestWithHostAccessPermissionCount">
    <summary>
      The number of enabled extensions that have a
      DeclarativeNetRequestWithHostAccess permission. The exponential bucketing
      is applied for privacy reasons by using
      ukm::GetExponentialBucketMin(value, 2).
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="DeclarativeWebRequestPermissionCount">
    <summary>
      The number of enabled extensions that have a DeclarativeWebRequest
      permission. The exponential bucketing is applied for privacy reasons by
      using ukm::GetExponentialBucketMin(value, 2).
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="EnabledExtensionCount">
    <summary>
      The number of enabled extensions that are not themes nor apps nor
      components. The exponential bucketing is applied for privacy reasons by
      using ukm::GetExponentialBucketMin(value, 2).
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="EnabledExtensionCount.HaveHostPermissions">
    <summary>
      The number of enabled extensions that have host permissions for the
      navigation target URL. The exponential bucketing is applied for privacy
      reasons by using ukm::GetExponentialBucketMin(value, 2).
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="EnabledExtensionCount.InjectContentScript">
    <summary>
      The number of enabled extensions that inject content scripts. The
      exponential bucketing is applied for privacy reasons by using
      ukm::GetExponentialBucketMin(value, 2).
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="WebRequestAuthProviderPermissionCount">
    <summary>
      The number of enabled extensions that have a WebRequestAuthProvider
      permission. The exponential bucketing is applied for privacy reasons by
      using ukm::GetExponentialBucketMin(value, 2).
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="WebRequestBlockingPermissionCount">
    <summary>
      The number of enabled extensions that have a WebRequestBlocking
      permission. The exponential bucketing is applied for privacy reasons by
      using ukm::GetExponentialBucketMin(value, 2).
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="WebRequestPermissionCount">
    <summary>
      The number of enabled extensions that have a WebRequest permission. The
      exponential bucketing is applied for privacy reasons by using
      ukm::GetExponentialBucketMin(value, 2).
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="Extensions.WebRequest.KeepaliveRequestFinished">
  <owner>yhirano@chromium.org</owner>
  <owner>kinuko@chromium.org</owner>
  <summary>
    Whether and how keepalive requests are blocked. Recorded when a keepalive
    request finishes.
  </summary>
  <metric name="NumRedirects">
    <summary>
      The number of redirects the request experienced. This is up to 21, as
      specified at https://fetch.spec.whatwg.org/#http-redirect-fetch .
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="State" enum="ExtensionInProgressRequestState">
    <summary>
      The final state of the request.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="FileSystemAPI.WebRequest">
  <owner>mek@chromium.org</owner>
  <owner>rhalavatigit@chromium.org</owner>
  <summary>
    Logged when a website requests accessing FileSystem API.
  </summary>
  <metric name="Persistent">
    <summary>
      Marks a request for a Persistent FileSystem.
    </summary>
  </metric>
  <metric name="Temporary">
    <summary>
      Marks a request for a Temporary FileSystem.
    </summary>
  </metric>
</event>

<event name="FlocPageLoad" singular="True">
  <owner>yaoxia@chromium.org</owner>
  <owner>jkarlin@chromium.org</owner>
  <summary>
    Whenever the floc is computed, this event will be recorded at the commit
    time of the next page load. Caveat: if the browser is closed before the next
    page load occurs (in a new session), the event won't be recorded.
  </summary>
  <metric name="FlocId">
    <summary>
      The user's floc id. This ignores any general or per-context access
      permissions, and records the internal int64_t number directly. This metric
      may still be skipped if the floc was not calculated or has been
      invalidated.
    </summary>
  </metric>
</event>

<event name="FontMatchAttempts">
  <owner>caraitto@chromium.org</owner>
  <owner>pauljensen@chromium.org</owner>
  <owner>privacy-sandbox-dev@chromium.org</owner>
  <summary>
    Records font family match attempts, broken down by system fonts and web
    fonts. Multiple match attempts using the same font family name are
    de-duplicated. Matching of @font-face src:local fonts isn't currently
    supported.
  </summary>
  <metric name="LoadContext" enum="FontLoadContext">
    <summary>
      If the font family name was matched in a top-level frame, a sub-frame or a
      worker.
    </summary>
  </metric>
  <metric name="LocalFontFailures">
    <summary>
      The count of failed attempts to match @font-face src:local rules.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="LocalFontSuccesses">
    <summary>
      The count of successful attempts to match @font-face src:local rules.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="LocalFontTotal">
    <summary>
      The count of total attempts (failed + succeeded) to match @font-face
      src:local rules.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SystemFontFamilyFailures">
    <summary>
      The count of system font family match attempts that failed.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SystemFontFamilySuccesses">
    <summary>
      The count of system font family match attempts that succeeded.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SystemFontFamilyTotal">
    <summary>
      Total count of system font family match attempts (succeeded + failed).
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="WebFontFamilyFailures">
    <summary>
      The count of web font family match attempts that failed.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="WebFontFamilySuccesses">
    <summary>
      The count of web font family match attempts that succeeded.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="WebFontFamilyTotal">
    <summary>
      Total count of web font family match attempts (succeeded + failed).
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="GamingInputOverlay.ActionRepositionOperationType">
  <owner>pjlee@google.com</owner>
  <owner>cuicuiruan@google.com</owner>
  <owner>arc-gaming@google.com</owner>
  <summary>
    An event that is logged when key mapping position is changed.
  </summary>
  <metric name="OperationType" enum="ArcInputOverlayRepositionOperationType">
    <summary>
      Type about how the reposition is done.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="GamingInputOverlay.ActionRepositionWindowStateType">
  <owner>pjlee@google.com</owner>
  <owner>cuicuiruan@google.com</owner>
  <owner>arc-gaming@google.com</owner>
  <summary>
    An event that is logged when key mapping position is changed.
  </summary>
  <metric name="WindowStateType" enum="ArcInputOverlayWindowStateType">
    <summary>
      Window state type when the reposition is done.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="GamingInputOverlay.ButtonGroupRepositionOperationType">
  <owner>pjlee@google.com</owner>
  <owner>cuicuiruan@google.com</owner>
  <owner>arc-gaming@google.com</owner>
  <summary>
    An event that is logged when button group position is changed.
  </summary>
  <metric name="OperationType" enum="ArcInputOverlayRepositionOperationType">
    <summary>
      Type about how the reposition is done.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="GamingInputOverlay.ButtonGroupRepositionWindowStateType">
  <owner>pjlee@google.com</owner>
  <owner>cuicuiruan@google.com</owner>
  <owner>arc-gaming@google.com</owner>
  <summary>
    An event that is logged when menu entry position is changed.
  </summary>
  <metric name="WindowStateType" enum="ArcInputOverlayWindowStateType">
    <summary>
      Window state type when the reposition is done.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="GamingInputOverlay.Customization">
  <owner>pjlee@google.com</owner>
  <owner>cuicuiruan@google.com</owner>
  <owner>arc-gaming@google.com</owner>
  <summary>
    An event for gaming input overlay that is logged when users enter into edit
    mode.
  </summary>
  <metric name="CustomizationUsed" enum="Boolean">
    <summary>
      Whether the customization option was used.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="GamingInputOverlay.Feature">
  <owner>pjlee@google.com</owner>
  <owner>cuicuiruan@google.com</owner>
  <owner>arc-gaming@google.com</owner>
  <summary>
    An event for gaming input overlay that is logged when the input overlay
    feature itself changes state.
  </summary>
  <metric name="FeatureStateOn" enum="Boolean">
    <summary>
      Whether the gaming input overlay feature is in use.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="GamingInputOverlay.MappingHint">
  <owner>pjlee@google.com</owner>
  <owner>cuicuiruan@google.com</owner>
  <owner>arc-gaming@google.com</owner>
  <summary>
    An event for gaming input overlay that is logged when the mapping hint state
    is changed.
  </summary>
  <metric name="MappingHintStateOn" enum="Boolean">
    <summary>
      Whether the mapping hint for gaming input overlay is on.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="GamingInputOverlay.MenuEntryRepositionOperationType">
  <owner>pjlee@google.com</owner>
  <owner>cuicuiruan@google.com</owner>
  <owner>arc-gaming@google.com</owner>
  <summary>
    An event that is logged when key mapping position is changed.
  </summary>
  <metric name="OperationType" enum="ArcInputOverlayRepositionOperationType">
    <summary>
      Type about how the reposition is done.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="GamingInputOverlay.MenuEntryRepositionWindowStateType">
  <owner>pjlee@google.com</owner>
  <owner>cuicuiruan@google.com</owner>
  <owner>arc-gaming@google.com</owner>
  <summary>
    An event that is logged when menu entry position is changed.
  </summary>
  <metric name="WindowStateType" enum="ArcInputOverlayWindowStateType">
    <summary>
      Window state type when the reposition is done.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="GeneratedNavigation" singular="True">
  <owner>ryansturm@chromium.org</owner>
  <owner>avi@chromium.org</owner>
  <summary>
    Logged when the user navigated to their home page or their default search
    engine. Recorded if the first URL or the final URL matches the pattern for
    Default Search or matches the user's home page URL. Recorded upon commit
    (even if the page was not foreground).
  </summary>
  <metric name="FinalURLIsDefaultSearchEngine">
    <summary>
      If the navigation committed URL matches the template URL of the user's
      Default Search Engine.
    </summary>
  </metric>
  <metric name="FinalURLIsHomePage">
    <summary>
      If the navigation committed URL matches the user's home page URL. Not
      recorded on Android because home page is managed outside of Chrome.
    </summary>
  </metric>
  <metric name="FirstURLIsDefaultSearchEngine">
    <summary>
      If the navigation starting URL matches the template URL of the user's
      Default Search Engine.
    </summary>
  </metric>
  <metric name="FirstURLIsHomePage">
    <summary>
      If the navigation starting URL (first URL in the redirect chain) matches
      the user's home page URL. Not recorded on Android because home page is
      managed outside of Chrome.
    </summary>
  </metric>
</event>

<event name="GoogleDocsOfflineExtension">
  <owner>rhalavati@chromium.org</owner>
  <owner>chrome-privacy-core@google.com</owner>
  <summary>
    Logged when a website requests a shared resource from Google Docs Offline
    Extension. Note that this is double counted for imports since it is done
    once in preload and once in actual load.
  </summary>
  <metric name="ResourceRequested">
    <summary>
      Marks a resource request from a website.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="Graphics.Smoothness.EventLatency">
  <owner>jonross@chromium.org</owner>
  <summary>
    Tracks the duration of stages in the rendering pipeline when processing a
    single frame in response to an input event. To meet UKM goals for data
    volume, a Poisson process with an exponential decay multiplier is used to
    sample events for recporting. It will sample many reandomly distributed
    events early during page load and initial interaction, then samples at an
    exponentially decreasing rate to effectively cap the number of samples. All
    times are in microseconds.
  </summary>
  <metric name="Activation">
    <summary>
      The duration of the activation stage, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="BeginImplFrameToSendBeginMainFrame">
    <summary>
      The time from when the Impl frame is started to when BeginMainFrame is
      sent, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="BrowserToRendererCompositor">
    <obsolete>
      Deprecated as of 01/2021. Replaced with event dispatch breakdown metrics.
    </obsolete>
    <summary>
      The time from when the event is created in the browser until the first
      compositor stage after the event arrives in the renderer, in microseconds.
    </summary>
  </metric>
  <metric name="Commit">
    <summary>
      The duration of the commit stage, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="EndActivateToSubmitCompositorFrame">
    <summary>
      The time from when an activation is complete to the next
      SubmitCompositorFrame, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="EndCommitToActivation">
    <summary>
      The time from when a commit is complete to the beginning of the next
      activation, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="EventType" enum="EventLatencyEventType">
    <summary>
      Type of the input event.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="GenerationToRendererCompositor">
    <summary>
      The time from when the event is created until it arrives in the renderer
      compositor, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="PinchInputType" enum="EventLatencyPinchInputType">
    <summary>
      Type of the input device for pinch events.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="RendererCompositorFinishedToActivation">
    <summary>
      The time from when the event processing is finished on the renderer
      compositor until the beginning of the activation, in microseconds. This
      metric is only reported if the event is handled on the renderer compositor
      and the first compositor step after that is the beginning of the
      activation.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="RendererCompositorFinishedToBeginImplFrame">
    <summary>
      The time from when the event processing is finished on the renderer
      compositor until the compositor frame is started, in microseconds. This
      metric is only reported if the event is handled on the renderer compositor
      and compositor frame is started after that.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="RendererCompositorFinishedToCommit">
    <summary>
      The time from when the event processing is finished on the renderer
      compositor until the beginning of the commit, in microseconds. This metric
      is only reported if the event is handled on the renderer compositor and
      the first compositor step after that is the beginning of the commit.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="RendererCompositorFinishedToEndActivate">
    <summary>
      The time from when the event processing is finished on the renderer
      compositor until the end of the activation, in microseconds. This metric
      is only reported if the event is handled on the renderer compositor and
      the first compositor step after that is the end of the activation.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="RendererCompositorFinishedToEndCommit">
    <summary>
      The time from when the event processing is finished on the renderer
      compositor until the end of the commit, in microseconds. This metric is
      only reported if the event is handled on the renderer compositor and the
      first compositor step after that is the end of the commit.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="RendererCompositorFinishedToSendBeginMainFrame">
    <summary>
      The time from when the event processing is finished on the renderer
      compositor until BeginMainFrame is sent, in microseconds. This metric is
      only reported if the event is handled on the renderer compositor and the
      first compositor step after that is SendBeginMainFrame.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="RendererCompositorFinishedToSubmitCompositorFrame">
    <summary>
      The time from when the event processing is finished on the renderer
      compositor until the compositor frame is submitted, in microseconds. This
      metric is only reported if the event is handled on the renderer compositor
      and the first compositor step after that is the submission of the
      compositor frame.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="RendererCompositorProcessing">
    <summary>
      The time spent in the renderer compositor to process the event, in
      microseconds. This metric won't be reported if the renderer compositor
      does not have a dedicated thread.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="RendererCompositorQueueingDelay">
    <summary>
      The time from when the event arrives in the renderer compositor until the
      compositor starts processing it, in microseconds. This metric won't be
      reported if the renderer compositor does not have a dedicated thread.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="RendererCompositorToMain">
    <summary>
      The time from when the processing of the event on the renderer compositor
      is finished until the main thread starts processing the event, in
      microseconds. If the renderer compositor does not have a dedicated thread,
      the processing of the event on the renderer compositor is considered
      finished as soon as the event arrives in the renderer compositor. This
      metric won't be reported if the event is handled on the renderer
      compositor.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="RendererMainFinishedToActivation">
    <summary>
      The time from when the event processing is finished on the renderer main
      until the beginning of the activation, in microseconds. This metric is
      only reported if the event is handled on the renderer main and the first
      compositor step after that is the beginning of the activation.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="RendererMainFinishedToBeginImplFrame">
    <summary>
      The time from when the event processing is finished on the renderer main
      until the compositor frame is started, in microseconds. This metric is
      only reported if the event is handled on the renderer main and compositor
      frame is started after that.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="RendererMainFinishedToCommit">
    <summary>
      The time from when the event processing is finished on the renderer main
      until the beginning of the commit, in microseconds. This metric is only
      reported if the event is handled on the renderer main and the first
      compositor step after that is the beginning of the commit.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="RendererMainFinishedToEndActivate">
    <summary>
      The time from when the event processing is finished on the renderer main
      until the end of the activation, in microseconds. This metric is only
      reported if the event is handled on the renderer main and the first
      compositor step after that is the end of the activation.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="RendererMainFinishedToEndCommit">
    <summary>
      The time from when the event processing is finished on the renderer main
      until the end of the commit, in microseconds. This metric is only reported
      if the event is handled on the renderer main and the first compositor step
      after that is the end of the commit.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="RendererMainFinishedToSendBeginMainFrame">
    <summary>
      The time from when the event processing is finished on the renderer main
      until BeginMainFrame is sent, in microseconds. This metric is only
      reported if the event is handled on the renderer main and the first
      compositor step after that is SendBeginMainFrame.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="RendererMainFinishedToSubmitCompositorFrame">
    <summary>
      The time from when the event processing is finished on the renderer main
      until the compositor frame is submitted, in microseconds. This metric is
      only reported if the event is handled on the renderer main and the first
      compositor step after that is the submission of the compositor frame.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="RendererMainProcessing">
    <summary>
      The time spent in the main thread to process the event, in microseconds.
      This metric won't be reported if the renderer compositor handles the
      event.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="ScrollInputType" enum="EventLatencyScrollInputType">
    <summary>
      Type of the input device for scroll events.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SendBeginMainFrameToCommit">
    <summary>
      The time from when the BeginMainFrame is sent to the beginning of the
      commit, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SendBeginMainFrameToCommit.Accessibility">
    <summary>
      The time portion of SendBeginMainFrameToCommit spent on accessibility, in
      microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SendBeginMainFrameToCommit.Animate">
    <summary>
      The time portion of SendBeginMainFrameToCommit spent on animations, in
      microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SendBeginMainFrameToCommit.BeginMainSentToStarted">
    <summary>
      The time portion of SendBeginMainFrameToCommit spent before starting main
      thread work, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SendBeginMainFrameToCommit.CompositeCommit">
    <summary>
      The time portion of SendBeginMainFrameToCommit spent on composite commit,
      in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SendBeginMainFrameToCommit.CompositingAssignments">
    <obsolete>
      No longer recorded after M97 with the launch of CompositeAfterPaint.
    </obsolete>
    <summary>
      The time portion of SendBeginMainFrameToCommit spent on updating
      compositing assignments, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SendBeginMainFrameToCommit.CompositingInputs">
    <summary>
      The time portion of SendBeginMainFrameToCommit spent on updating
      compositing inputs, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SendBeginMainFrameToCommit.HandleInputEvents">
    <summary>
      The time portion of SendBeginMainFrameToCommit spent on handling input
      events, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SendBeginMainFrameToCommit.LayoutUpdate">
    <summary>
      The time portion of SendBeginMainFrameToCommit spent on layout update, in
      microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SendBeginMainFrameToCommit.Paint">
    <summary>
      The time portion of SendBeginMainFrameToCommit spent on paint, in
      microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SendBeginMainFrameToCommit.Prepaint">
    <summary>
      The time portion of SendBeginMainFrameToCommit spent on prepaint, in
      microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SendBeginMainFrameToCommit.StyleUpdate">
    <summary>
      The time portion of SendBeginMainFrameToCommit spent on style update, in
      microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SendBeginMainFrameToCommit.UpdateLayers">
    <summary>
      The time portion of SendBeginMainFrameToCommit spent on updating layers,
      in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SubmitCompositorFrameToPresentationCompositorFrame">
    <summary>
      The time from when a compositor frame is submitted to the display
      compositor to when it is presented, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric
      name="SubmitCompositorFrameToPresentationCompositorFrame.BufferAvailableToBufferReady">
    <summary>
      The time from when the target framebuffer is available to when the GPU has
      finished drawing to it, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric
      name="SubmitCompositorFrameToPresentationCompositorFrame.BufferReadyToLatch">
    <summary>
      The time from when the target framebuffer is ready to be displayed to when
      the buffer is latched on for presentation, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric
      name="SubmitCompositorFrameToPresentationCompositorFrame.LatchToSwapEnd">
    <summary>
      The time from when the target framebuffer is latched on to when the swap
      ends, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric
      name="SubmitCompositorFrameToPresentationCompositorFrame.ReceivedCompositorFrameToStartDraw">
    <summary>
      The time from when a compositor frame is received to when it starts to
      draw, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric
      name="SubmitCompositorFrameToPresentationCompositorFrame.StartDrawToSwapEnd">
    <obsolete>
      Deprecated 02/2020. Split into
      SubmitCompositorFrameToPresentationCompositorFrame.StartDrawToSwapStart
      and SubmitCompositorFrameToPresentationCompositorFrame.SwapStartToSwapEnd.
    </obsolete>
    <summary>
      The time from when the a compositor frame is started to draw to when it
      ends swap, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric
      name="SubmitCompositorFrameToPresentationCompositorFrame.StartDrawToSwapStart">
    <summary>
      The time from when a compositor frame is started to draw to when it starts
      swap, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric
      name="SubmitCompositorFrameToPresentationCompositorFrame.SubmitToReceiveCompositorFrame">
    <summary>
      The time from when a compositor frame is submitted to when it is received,
      in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric
      name="SubmitCompositorFrameToPresentationCompositorFrame.SwapEndToPresentationCompositorFrame">
    <summary>
      The time from when a compositor frame ends swap to when it is presented,
      in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric
      name="SubmitCompositorFrameToPresentationCompositorFrame.SwapStartToBufferAvailable">
    <summary>
      The time from when the compositor frame starts to swap to when the target
      framebuffer becomes available, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric
      name="SubmitCompositorFrameToPresentationCompositorFrame.SwapStartToSwapEnd">
    <summary>
      The time from when a compositor frame starts swap to when it ends swap, in
      microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="TotalLatency">
    <summary>
      The total time from when the event is created in the browser to when the
      frame is presented, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="TotalLatencyToSwapBegin">
    <obsolete>
      Deprecated as of 01/2021.
    </obsolete>
    <summary>
      The time from when the event is created in the browser to when the
      gpu-swap is started, for scroll events, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="TotalLatencyToSwapEnd">
    <obsolete>
      Deprecated as of 07/2020. Replaced with TotalLatencyToSwapBegin which
      measures what we actually intended to measure.
    </obsolete>
    <summary>
      The time from when the event is created in the browser to when the
      gpu-swap is completed, for scroll events, in microseconds.
    </summary>
  </metric>
</event>

<event name="Graphics.Smoothness.Latency">
  <owner>animations-dev@chromium.org</owner>
  <owner>jonross@chromium.org</owner>
  <owner>schenney@chromium.org</owner>
  <summary>
    Tracks the duration of stages in the rendering pipeline while processing a
    single frame. All times are in microseconds.
  </summary>
  <metric name="Activation">
    <summary>
      The duration of the activation stage, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="BeginImplFrameToSendBeginMainFrame">
    <summary>
      The time from when the Impl frame is started to when BeginMainFrame is
      sent, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="CanvasAnimation" enum="Boolean">
    <summary>
      True when a canvas animation was active this frame.
    </summary>
  </metric>
  <metric name="Commit">
    <summary>
      The duration of the commit stage, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="CompositorAnimation" enum="Boolean">
    <summary>
      True when a compositor-driven animation was active this frame.
    </summary>
  </metric>
  <metric name="EndActivateToSubmitCompositorFrame">
    <summary>
      The time from when an activation is complete to the next
      SubmitCompositorFrame, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="EndCommitToActivation">
    <summary>
      The time from when a commit is complete to the beginning of the next
      activation, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="JSAnimation" enum="Boolean">
    <summary>
      True when a inline style animation was active this frame.
    </summary>
  </metric>
  <metric name="MainThreadAnimation" enum="Boolean">
    <summary>
      True when a main-thread-driven animation was active this frame.
    </summary>
  </metric>
  <metric name="MissedFrame" enum="Boolean">
    <summary>
      True when the main frame missed its deadline for this frame.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="PinchZoom" enum="Boolean">
    <summary>
      True when a pinch-to-zoom interaction was active this frame.
    </summary>
  </metric>
  <metric name="RAF" enum="Boolean">
    <summary>
      True when a rAF-driven animation was active this frame.
    </summary>
  </metric>
  <metric name="ScrollbarScroll" enum="Boolean">
    <summary>
      True when a scrollbar driven interaction was active this frame.
    </summary>
  </metric>
  <metric name="SendBeginMainFrameToCommit">
    <summary>
      The time from when the BeginMainFrame is sent to the beginning of the
      commit, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SendBeginMainFrameToCommit.Accessibility">
    <summary>
      The time portion of SendBeginMainFrameToCommit spent on accessibility, in
      microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SendBeginMainFrameToCommit.Animate">
    <summary>
      The time portion of SendBeginMainFrameToCommit spent on animations, in
      microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SendBeginMainFrameToCommit.BeginMainSentToStarted">
    <summary>
      The time portion of SendBeginMainFrameToCommit spent before starting main
      thread work, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SendBeginMainFrameToCommit.CompositeCommit">
    <summary>
      The time portion of SendBeginMainFrameToCommit spent on composite commit,
      in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SendBeginMainFrameToCommit.CompositingAssignments">
    <obsolete>
      No longer recorded after M97 with the launch of CompositeAfterPaint.
    </obsolete>
    <summary>
      The time portion of SendBeginMainFrameToCommit spent on updating
      compositing assignments, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SendBeginMainFrameToCommit.CompositingInputs">
    <summary>
      The time portion of SendBeginMainFrameToCommit spent on updating
      compositing inputs, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SendBeginMainFrameToCommit.HandleInputEvents">
    <summary>
      The time portion of SendBeginMainFrameToCommit spent on handling input
      events, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SendBeginMainFrameToCommit.LayoutUpdate">
    <summary>
      The time portion of SendBeginMainFrameToCommit spent on layout update, in
      microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SendBeginMainFrameToCommit.Paint">
    <summary>
      The time portion of SendBeginMainFrameToCommit spent on paint, in
      microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SendBeginMainFrameToCommit.Prepaint">
    <summary>
      The time portion of SendBeginMainFrameToCommit spent on prepaint, in
      microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SendBeginMainFrameToCommit.StyleUpdate">
    <summary>
      The time portion of SendBeginMainFrameToCommit spent on style update, in
      microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SendBeginMainFrameToCommit.UpdateLayers">
    <summary>
      The time portion of SendBeginMainFrameToCommit spent on updating layers,
      in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SubmitCompositorFrameToPresentationCompositorFrame">
    <summary>
      The time from when the a compositor frame is submitted to the display
      compositor to when it is presented, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric
      name="SubmitCompositorFrameToPresentationCompositorFrame.BufferAvailableToBufferReady">
    <summary>
      The time from when the target framebuffer is available to when the GPU has
      finished drawing to it, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric
      name="SubmitCompositorFrameToPresentationCompositorFrame.BufferReadyToLatch">
    <summary>
      The time from when the target framebuffer is ready to be displayed to when
      the buffer is latched on for presentation, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric
      name="SubmitCompositorFrameToPresentationCompositorFrame.LatchToSwapEnd">
    <summary>
      The time from when the target framebuffer is latched on to when the swap
      ends, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric
      name="SubmitCompositorFrameToPresentationCompositorFrame.ReceivedCompositorFrameToStartDraw">
    <summary>
      The time from when a compositor frame is received to when it starts to
      draw, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric
      name="SubmitCompositorFrameToPresentationCompositorFrame.StartDrawToSwapEnd">
    <obsolete>
      Deprecated 02/2020. Split into
      SubmitCompositorFrameToPresentationCompositorFrame.StartDrawToSwapStart
      and SubmitCompositorFrameToPresentationCompositorFrame.SwapStartToSwapEnd.
    </obsolete>
    <summary>
      The time from when the a compositor frame is started to draw to when it
      ends swap, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric
      name="SubmitCompositorFrameToPresentationCompositorFrame.StartDrawToSwapStart">
    <summary>
      The time from when a compositor frame is started to draw to when it starts
      swap, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric
      name="SubmitCompositorFrameToPresentationCompositorFrame.SubmitToReceiveCompositorFrame">
    <summary>
      The time from when a compositor frame is submitted to when it is received,
      in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric
      name="SubmitCompositorFrameToPresentationCompositorFrame.SwapEndToPresentationCompositorFrame">
    <summary>
      The time from when the a compositor frame ends swap to when it is
      presented, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric
      name="SubmitCompositorFrameToPresentationCompositorFrame.SwapStartToBufferAvailable">
    <summary>
      The time from when the compositor frame starts to swap to when the target
      framebuffer becomes available, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric
      name="SubmitCompositorFrameToPresentationCompositorFrame.SwapStartToSwapEnd">
    <summary>
      The time from when a compositor frame starts swap to when it ends swap, in
      microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="TotalLatency">
    <summary>
      The total time starting from BeginImplFrame to when
      CompositorFramePresentation is done with updates from the MainThread (i.e.
      the time it takes for BeginImplFrame, BeginMainFrame, Commit, Activate,
      SubmitCompositorFrame and PresentCompositorFrame), in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="TouchScroll" enum="Boolean">
    <summary>
      True when a touchscreen driven interaction was active this frame.
    </summary>
  </metric>
  <metric name="Unknown">
    <summary>
      The time within a stage not attributed to any system, in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Video" enum="Boolean">
    <summary>
      True when video playback was active this frame.
    </summary>
  </metric>
  <metric name="WheelScroll" enum="Boolean">
    <summary>
      True when a mouse driven scroll was active this frame.
    </summary>
  </metric>
</event>

<event name="Graphics.Smoothness.NormalizedPercentDroppedFrames"
    singular="True">
  <owner>animations-dev@chromium.org</owner>
  <owner>jonross@chromium.org</owner>
  <summary>
    Measures various normalizations for the smoothness metric. The metric is
    measured by counting dropped frames, and various normalization strategies
    are used.

    The metric is reported once per page-load, and when the page closes (e.g.
    the user closes the tab, or navigates away to a different page).
  </summary>
  <metric name="AboveThreshold">
    <summary>
      The number of fixed-duration sliding windows (as a percentage) where the
      number of dropped frames are above a threshold. The specific threshold is
      yet to be determined.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Average">
    <summary>
      This is trivially computable by counting the total number of dropped
      frames and the total number of vsyncs the page has been visible for,
      exposed as a percentage.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="CompositorFocusedMedian">
    <summary>
      CompositorFocused metrics report the throughput of frames that include
      compositor thread updates. The median dropped frames within a
      fixed-duration sliding window (as a percentage). So out of all
      PerecentDroppedFrames of sliding windows the median will be reported here.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="CompositorFocusedPercentile95">
    <summary>
      CompositorFocused metrics report the throughput of frames that include
      compositor thread updates. The 95-th percentile dropped frames within a
      fixed-duration sliding window (as a percentage). So out of all
      PerecentDroppedFrames of sliding windows the 95th percentile will be
      reported here.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="CompositorFocusedVariance">
    <summary>
      CompositorFocused metrics report the throughput of frames that include
      compositor thread updates. The variance of percent dropped frames within a
      fixed-duration sliding window. So out of all PerecentDroppedFrames of
      sliding windows the variance will be reported here.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="MainFocusedMedian">
    <summary>
      MainFocused metrics report the throughput of frames that include main
      thread updates. The median dropped frames within a fixed-duration sliding
      window (as a percentage). So out of all PerecentDroppedFrames of sliding
      windows the median will be reported here.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="MainFocusedPercentile95">
    <summary>
      MainFocused metrics report the throughput of frames that include main
      thread updates. The 95-th percentile dropped frames within a
      fixed-duration sliding window (as a percentage). So out of all
      PerecentDroppedFrames of sliding windows the 95th percentile will be
      reported here.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="MainFocusedVariance">
    <summary>
      MainFocused metrics report the throughput of frames that include main
      thread updates. The variance of percent dropped frames within a
      fixed-duration sliding window. So out of all PerecentDroppedFrames of
      sliding windows the variance will be reported here.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Median">
    <summary>
      The median dropped frames within a fixed-duration sliding window (as a
      percentage). So out of all PerecentDroppedFrames of sliding windows the
      median will be reported here.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Percentile95">
    <summary>
      The 95-th percentile dropped frames within a fixed-duration sliding window
      (as a percentage). So out of all PerecentDroppedFrames of sliding windows
      the 95th percentile will be reported here.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="ScrollFocusedMedian">
    <summary>
      ScrollFocused metrics reports the throughput with highest priority on
      scroll interactions. The median dropped frames within a fixed-duration
      sliding window (as a percentage) with highest priority given to scroll
      throughput. So out of all PerecentDroppedFrames of sliding windows the
      median will be reported here.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="ScrollFocusedPercentile95">
    <summary>
      ScrollFocused metrics reports the throughput with highest priority on
      scroll interactions. The 95-th percentile dropped frames within a
      fixed-duration sliding window (as a percentage). So out of all
      PerecentDroppedFrames of sliding windows the 95th percentile will be
      reported here.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="ScrollFocusedVariance">
    <summary>
      ScrollFocused metrics reports the throughput with highest priority on
      scroll interactions. The variance of percent dropped frames within a
      fixed-duration sliding window. So out of all PerecentDroppedFrames of
      sliding windows the variance will be reported here.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SmoothnessBad">
    <summary>
      The percentage of sliding windows with bad smoothness, or a
      PercentDroppedFrames of 12% to 25%.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SmoothnessGood">
    <summary>
      The percentage of sliding windows with good smoothness, or a
      PercentDroppedFrames of 3% to 6%.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SmoothnessOkay">
    <summary>
      The percentage of sliding windows with okay smoothness, or a
      PercentDroppedFrames of 6% to 12%.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SmoothnessVeryBad25to50">
    <summary>
      The percentage of sliding windows with a subset of very bad smoothness, or
      a PercentDroppedFrames of 25% to 50%.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SmoothnessVeryBad50to75">
    <summary>
      The percentage of sliding windows with a subset of very bad smoothness, or
      a PercentDroppedFrames of 50% to 75%.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SmoothnessVeryBad75to100">
    <summary>
      The percentage of sliding windows with a subset of very bad smoothness, or
      a PercentDroppedFrames of 75% to 100%.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SmoothnessVeryGood">
    <summary>
      The percentage of sliding windows with very good smoothness, or a
      PercentDroppedFrames of 0% to 3%.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="TimingSinceFCPWorstCase">
    <obsolete>
      Removed July 2022 along with UMA metric, which are no longer needed.
    </obsolete>
    <summary>
      The Time From FCP when the worst case happened
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Variance">
    <summary>
      The variance of percent dropped frames within a fixed-duration sliding
      window. So out of all PerecentDroppedFrames of sliding windows the
      variance will be reported here.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="WorstCase">
    <summary>
      The maximum number of dropped frames (as a percentage) within a
      fixed-duration sliding window. So out of all PerecentDroppedFrames of
      sliding windows the max percentile will be reported here.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="WorstCaseAfter1Sec">
    <summary>
      The same as WorstCase metric, but only the sliding windows which starts 1
      second after first contentful paint will be taken into account.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="WorstCaseAfter2Sec">
    <summary>
      The same as WorstCase metric, but only the sliding windows which starts 2
      second after first contentful paint will be taken into account.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="WorstCaseAfter5Sec">
    <summary>
      The same as WorstCase metric, but only the sliding windows which starts 5
      second after first contentful paint will be taken into account.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="Graphics.Smoothness.PercentDroppedFrames">
  <obsolete>
    Deprecated 02/2023.
  </obsolete>
  <owner>animations-dev@chromium.org</owner>
  <owner>jonross@chromium.org</owner>
  <summary>
    Tracks the percent of dropped frames for a particular sequence of frames
    such as during scroll or animation. PercentDroppedFrames is measured by
    tracking the number of frames the sequence was expected to produce, and the
    number of frames that were not displayed on screen (dropped). It is the
    ratio of dropped over expected, converted to a percentage.
  </summary>
  <metric name="AllAnimations">
    <summary>
      Tracks the throughput of a particular sequence of frames for all
      animations. This metric is reported for all animations (e.g.
      comositor-driven animations, main-thread driven animations, and raf-driven
      animations).
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="AllInteractions">
    <summary>
      Tracks the throughput of a particular sequence of frames where a
      user-input (e.g. scroll, pinch) is active. This metric is reported for all
      sources of user-input (i.e. both touchscreen and touchpad/mouse-wheel).
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="AllSequences">
    <summary>
      Tracks the throughput of a particular sequence of frames. This metric is
      reported for all animations and all interactions.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="CompositorThread.CompositorAnimation">
    <summary>
      The throughput of the compositor thread during a compositor animation.
    </summary>
  </metric>
  <metric name="CompositorThread.MainThreadAnimation">
    <summary>
      The throughput of the compositor thread during a main thread animation.
    </summary>
  </metric>
  <metric name="CompositorThread.PinchZoom">
    <summary>
      The throughput of the compositor thread during pinch-zoom interactions.
    </summary>
  </metric>
  <metric name="CompositorThread.RAF">
    <summary>
      The throughput of the compositor thread during rAF callback driven
      animation.
    </summary>
  </metric>
  <metric name="CompositorThread.ScrollbarScroll">
    <summary>
      The throughput of the compositor thread during scrollbar scroll driven
      interactions.
    </summary>
  </metric>
  <metric name="CompositorThread.TouchScroll">
    <summary>
      The throughput of the compositor thread during touchscroll driven
      interactions.
    </summary>
  </metric>
  <metric name="CompositorThread.Universal">
    <obsolete>
      Removed in 9/2020, due to over penalize smoothness.
    </obsolete>
    <summary>
      The throughput of the compositor thread for all frame production.
    </summary>
  </metric>
  <metric name="CompositorThread.Video">
    <summary>
      The throughput of the compositor thread during video play.
    </summary>
  </metric>
  <metric name="CompositorThread.WheelScroll">
    <summary>
      The throughput of the compositor thread during mousewheel scroll driven
      interactions.
    </summary>
  </metric>
  <metric name="MainThread.CanvasAnimation">
    <summary>
      The throughput of the main thread during canvas animation.
    </summary>
  </metric>
  <metric name="MainThread.CompositorAnimation">
    <summary>
      The throughput of the main thread during a compositor animation.
    </summary>
  </metric>
  <metric name="MainThread.JSAnimation">
    <summary>
      The throughput of the main thread during inline style animation.
    </summary>
  </metric>
  <metric name="MainThread.MainThreadAnimation">
    <summary>
      The throughput of the main thread during a main thread animation.
    </summary>
  </metric>
  <metric name="MainThread.PinchZoom">
    <summary>
      The throughput of the main thread during pinch-zoom interactions.
    </summary>
  </metric>
  <metric name="MainThread.RAF">
    <summary>
      The throughput of the main thread during rAF callback driven animation.
    </summary>
  </metric>
  <metric name="MainThread.ScrollbarScroll">
    <summary>
      The throughput of the main thread during scrollbar scroll driven
      interactions.
    </summary>
  </metric>
  <metric name="MainThread.TouchScroll">
    <summary>
      The throughput of the main thread during touchscroll driven interactions.
    </summary>
  </metric>
  <metric name="MainThread.Universal">
    <obsolete>
      Removed in 9/2020, due to over penalize smoothness.
    </obsolete>
    <summary>
      The throughput of the main thread for all frame production.
    </summary>
  </metric>
  <metric name="MainThread.Video">
    <summary>
      The throughput of the main thread during video play.
    </summary>
  </metric>
  <metric name="MainThread.WheelScroll">
    <summary>
      The throughput of the main thread during mousewheel scroll driven
      interactions.
    </summary>
  </metric>
  <metric name="SlowerThread.CompositorAnimation">
    <obsolete>
      Removed in 9/2020, since no longer needed after 'Universal' metric was
      deprecated.
    </obsolete>
    <summary>
      The worse throughput of the main and the compositor thread during a
      compositor animation.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SlowerThread.MainThreadAnimation">
    <obsolete>
      Removed in 9/2020, since no longer needed after 'Universal' metric was
      deprecated.
    </obsolete>
    <summary>
      The worse throughput of the main and the compositor thread during a main
      thread animation.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SlowerThread.PinchZoom">
    <summary>
      The worse throughput of the main and the compositor thread during
      pinch-zoom interactions.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SlowerThread.RAF">
    <obsolete>
      Removed in 9/2020, since no longer needed after 'Universal' metric was
      deprecated.
    </obsolete>
    <summary>
      The worse throughput of the main and the compositor thread during rAF
      callback driven animation.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SlowerThread.ScrollbarScroll">
    <obsolete>
      Removed in 9/2020, since no longer needed after 'Universal' metric was
      deprecated.
    </obsolete>
    <summary>
      The worse throughput of the main and the compositor thread during
      scrollbar driven interactions.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SlowerThread.TouchScroll">
    <obsolete>
      Removed in 9/2020, since no longer needed after 'Universal' metric was
      deprecated.
    </obsolete>
    <summary>
      The worse throughput of the main and the compositor thread during
      touchscroll driven interactions.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SlowerThread.Universal">
    <obsolete>
      Removed in 9/2020, due to over penalize smoothness.
    </obsolete>
    <summary>
      The worse throughput of the main and the compositor thread for all frame
      production.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SlowerThread.Video">
    <obsolete>
      Removed in 9/2020, since no longer needed after 'Universal' metric was
      deprecated.
    </obsolete>
    <summary>
      The worse throughput of the main and the compositor thread during video
      play.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SlowerThread.WheelScroll">
    <obsolete>
      Removed in 9/2020, since no longer needed after 'Universal' metric was
      deprecated.
    </obsolete>
    <summary>
      The worse throughput of the main and the compositor thread during
      mousewheel scroll driven interactions.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="Graphics.Smoothness.Throughput">
  <obsolete>
    Deprecated 02/2020.
  </obsolete>
  <owner>animations-dev@chromium.org</owner>
  <owner>jonross@chromium.org</owner>
  <summary>
    As of 2020-02-12, this is deprecated in favor of
    Graphics.Smoothness.PercentDroppedFrames.
  </summary>
  <metric name="CompositorThread.CompositorAnimation">
    <summary>
      The throughput of the compositor thread during a compositor animation.
    </summary>
  </metric>
  <metric name="CompositorThread.MainThreadAnimation">
    <summary>
      The throughput of the compositor thread during a main thread animation.
    </summary>
  </metric>
  <metric name="CompositorThread.PinchZoom">
    <summary>
      The throughput of the compositor thread during pinch-zoom interactions.
    </summary>
  </metric>
  <metric name="CompositorThread.RAF">
    <summary>
      The throughput of the compositor thread during rAF callback driven
      animation.
    </summary>
  </metric>
  <metric name="CompositorThread.TouchScroll">
    <summary>
      The throughput of the compositor thread during touchscroll driven
      interactions.
    </summary>
  </metric>
  <metric name="CompositorThread.Universal">
    <summary>
      The throughput of the compositor thread for all frame production.
    </summary>
  </metric>
  <metric name="CompositorThread.Video">
    <summary>
      The throughput of the compositor thread during video play.
    </summary>
  </metric>
  <metric name="CompositorThread.WheelScroll">
    <summary>
      The throughput of the compositor thread during mousewheel scroll driven
      interactions.
    </summary>
  </metric>
  <metric name="MainThread.CompositorAnimation">
    <summary>
      The throughput of the main thread during a compositor animation.
    </summary>
  </metric>
  <metric name="MainThread.MainThreadAnimation">
    <summary>
      The throughput of the main thread during a main thread animation.
    </summary>
  </metric>
  <metric name="MainThread.PinchZoom">
    <summary>
      The throughput of the main thread during pinch-zoom interactions.
    </summary>
  </metric>
  <metric name="MainThread.RAF">
    <summary>
      The throughput of the main thread during rAF callback driven animation.
    </summary>
  </metric>
  <metric name="MainThread.TouchScroll">
    <summary>
      The throughput of the main thread during touchscroll driven interactions.
    </summary>
  </metric>
  <metric name="MainThread.Universal">
    <summary>
      The throughput of the main thread for all frame production.
    </summary>
  </metric>
  <metric name="MainThread.Video">
    <summary>
      The throughput of the main thread during video play.
    </summary>
  </metric>
  <metric name="MainThread.WheelScroll">
    <summary>
      The throughput of the main thread during mousewheel scroll driven
      interactions.
    </summary>
  </metric>
  <metric name="SlowerThread.CompositorAnimation">
    <obsolete>
      Removed in 9/2020, since no longer needed after 'Universal' metric was
      deprecated.
    </obsolete>
    <summary>
      The worse throughput of the main and the compositor thread during a
      compositor animation.
    </summary>
  </metric>
  <metric name="SlowerThread.MainThreadAnimation">
    <obsolete>
      Removed in 9/2020, since no longer needed after 'Universal' metric was
      deprecated.
    </obsolete>
    <summary>
      The worse throughput of the main and the compositor thread during a main
      thread animation.
    </summary>
  </metric>
  <metric name="SlowerThread.PinchZoom">
    <obsolete>
      Removed in 9/2020, since no longer needed after 'Universal' metric was
      deprecated.
    </obsolete>
    <summary>
      The worse throughput of the main and the compositor thread during
      pinch-zoom interactions.
    </summary>
  </metric>
  <metric name="SlowerThread.RAF">
    <obsolete>
      Removed in 9/2020, since no longer needed after 'Universal' metric was
      deprecated.
    </obsolete>
    <summary>
      The worse throughput of the main and the compositor thread during rAF
      callback driven animation.
    </summary>
  </metric>
  <metric name="SlowerThread.TouchScroll">
    <obsolete>
      Removed in 9/2020, since no longer needed after 'Universal' metric was
      deprecated.
    </obsolete>
    <summary>
      The worse throughput of the main and the compositor thread during
      touchscroll driven interactions.
    </summary>
  </metric>
  <metric name="SlowerThread.Universal">
    <obsolete>
      Removed in 9/2020, since no longer needed after 'Universal' metric was
      deprecated.
    </obsolete>
    <summary>
      The worse throughput of the main and the compositor thread for all frame
      production.
    </summary>
  </metric>
  <metric name="SlowerThread.Video">
    <obsolete>
      Removed in 9/2020, since no longer needed after 'Universal' metric was
      deprecated.
    </obsolete>
    <summary>
      The worse throughput of the main and the compositor thread during video
      play.
    </summary>
  </metric>
  <metric name="SlowerThread.WheelScroll">
    <obsolete>
      Removed in 9/2020, since no longer needed after 'Universal' metric was
      deprecated.
    </obsolete>
    <summary>
      The worse throughput of the main and the compositor thread during
      mousewheel scroll driven interactions.
    </summary>
  </metric>
</event>

<event name="HistoryClusters" singular="True">
  <owner>chrome-memories@google.com</owner>
  <owner>mcrouse@chromium.org</owner>
  <summary>
    Metrics that capture the iteractions with HistoryClusters, or Journeys, This
    will be recorded once per visit to the HistoryClusters UI and logged when
    the UI is closed or navigated away from.
  </summary>
  <metric name="FinalState" enum="HistoryClustersFinalState">
    <summary>
      The final state, or outcome, of an interaction on the HistoryClusters UI.
    </summary>
  </metric>
  <metric name="InitialState" enum="HistoryClustersInitialState">
    <summary>
      The initial state that describes how an interaction with the
      HistoryClusters UI was started.
    </summary>
  </metric>
  <metric name="NumQueries">
    <summary>
      The number of times the user performed a query on the HistoryClusters UI
      during this interaction. This can include partial queries that occur due
      to the UI's query timing.
    </summary>
  </metric>
  <metric name="NumTogglesToBasicHistory">
    <summary>
      The number of times the user toggled to the basic history page during this
      interaction with the HistoryClusters UI.
    </summary>
  </metric>
</event>

<event name="HistoryManipulationIntervention">
  <owner>shivanisha@chromium.org</owner>
  <summary>
    Logged when an entry in the back-forward list is marked to be skipped on
    subsequent back/forward button clicks as part of the history manipulation
    intervention. This is logged when the entry is navigated away from.
  </summary>
</event>

<event name="HistoryNavigation" singular="True">
  <owner>altimin@chromium.org</owner>
  <owner>arthursonzogni@chromium.org</owner>
  <owner>hajimehoshi@chromium.org</owner>
  <summary>
    Metrics recorded each time we commit a history navigation, which are needed
    to estimate benefits of back-forward cache. Except as otherwise noted, the
    metrics are recorded for history navigations, but not for same-document
    navigations.
  </summary>
  <metric
      name="AverageCumulativeShiftScoreAfterBackForwardCacheRestore.SessionWindow.Gap5000ms">
    <obsolete>
      Deprecated 06/2021.
    </obsolete>
    <summary>
      Measures the average cumulative layout shift (bit.ly/cls-explainer) that
      has occurred in a session window, after the page is restored from the
      back-forward. The gap between two consecutive shifts in a window is not
      bigger than 5000ms. This metric's integral value is 100x the fractional
      cumulative layout shift score described in the explainer.
    </summary>
  </metric>
  <metric
      name="AverageUserInteractionLatencyOverBudgetAfterBackForwardCacheRestore.MaxEventDuration2">
    <summary>
      The average value of user interaction latency above budget of a page after
      it is restored from the back-forward, in ms. For this metric, we measure
      the latency of user interactions by
      Responsiveness.UserInteraction.MaxEventDuration and we deduct a budget
      from the original value. If the latency value is below the budget, it will
      be treated as 0 ms. Each type of interaction has its own budget.
    </summary>
  </metric>
  <metric
      name="AverageUserInteractionLatencyOverBudgetAfterBackForwardCacheRestore.TotalEventDuration2">
    <obsolete>
      Deprecated March 2022 in favor of
      SlowUserInteractionLatencyAfterBackForwardCacheRestore.HighPercentile2.MaxEventDuration
    </obsolete>
    <summary>
      The average value of user interaction latency above budget of a page after
      it is restored from the back-forward, in ms. For this metric, we measure
      the latency of user interactions by
      Responsiveness.UserInteraction.TotalEventDuration and we deduct a budget
      from the original value. If the latency value is below the budget, it will
      be treated as 0 ms. Each type of interaction has its own budget.
    </summary>
  </metric>
  <metric name="BackForwardCache.BlocklistedFeatures"
      enum="WebSchedulerTrackedFeature">
    <summary>
      When navigating back to a page in the session history, this records what
      blocklisted features were used when the page was loaded and prevented this
      page from being stored in the back-forward cache. Multiple blocklisted
      features can be recorded for the same page as a binary mask.
    </summary>
  </metric>
  <metric name="BackForwardCache.BrowsingInstanceNotSwappedReason"
      enum="BackForwardCacheBrowsingInstanceNotSwappedReason">
    <summary>
      When navigating back to a page in the session history and the
      BackForwardCache wasn't used because of the related browsing instances,
      this records the reason why the browsing instance wasn't swapped.
    </summary>
  </metric>
  <metric name="BackForwardCache.DisabledForRenderFrameHostReasonCount">
    <summary>
      The number of the reasons passed to
      BackForwardCache::DisableForRenderFrameHost calls.
    </summary>
  </metric>
  <metric name="BackForwardCache.IsAmpPage" enum="Boolean">
    <summary>
      Boolean whether the now-restored page uses AMP (see https://amp.dev). If
      the page wasn't restored from the back-forward cache, this metric will not
      be populated. This metric will never be true when
      BackForwardCache.IsServedFromBackForwardCache is false.
    </summary>
  </metric>
  <metric name="BackForwardCache.IsServedFromBackForwardCache">
    <summary>
      Boolean whether the page was restored from the back-forward cache or not.
    </summary>
  </metric>
  <metric name="BackForwardCache.NotRestoredReasons">
    <summary>
      Bitmask of the reasons why the page was not restored from the back-forward
      cache. See contents::BackForwardCacheMetrics::NotRestoredReason for the
      meaning of the individual bits.
    </summary>
  </metric>
  <metric name="CrossOriginSubframesFeatures">
    <summary>
      Bitmask of features used by the cross origin subframes of the previous
      page load. See blink::SchedulingPolicy::Feature for the meaning for the
      individual features.
    </summary>
  </metric>
  <metric name="CumulativeShiftScoreAfterBackForwardCacheRestore">
    <summary>
      Deprecated as of 04/23. It is still reported, but most users should use
      PageLoad.LayoutInstability.MaxCumulativeShiftScore.AfterBackForwardCacheRestore.SessionWindow.Gap1000ms.Max5000ms.

      Measures the cumulative layout shift (bit.ly/3fQz29y) that has occurred
      during the session, after the page is restored from the back-forward
      cache. This metric's integral value is 100x the fractional cumulative
      layout shift score described in the explainer.
    </summary>
  </metric>
  <metric name="FirstInputDelayAfterBackForwardCacheRestore">
    <summary>
      Measures First Input Delay, the duration between the hardware timestamp
      and the start of event processing on the main thread for the first
      meaningful input per navigation, after the page is restored from the
      back-forward cache.
    </summary>
  </metric>
  <metric name="FirstRequestAnimationFrameAfterBackForwardCacheRestore">
    <summary>
      Measures the time duration between the page restore from back-forward
      cache and the first requestAnimationFrame time in milliseconds.
    </summary>
  </metric>
  <metric name="ForegroundDurationAfterBackForwardCacheRestore">
    <summary>
      For page loads that start in the foreground, measures the duration of time
      in milliseconds until one of the following events occurs: the load of the
      main resource fails, the page load is stopped, the tab hosting the page is
      closed, the render process hosting the page goes away, a new navigation
      which later commits is initiated in the same tab, or the tab hosting the
      page is backgrounded. This metric has a very long tail, for pages that
      spend a long period of time in the foreground. As such, use of the mean or
      tail values are not recommended.
    </summary>
  </metric>
  <metric name="LastCommittedCrossDocumentNavigationSourceIdForTheSameDocument">
    <summary>
      For history navigations and reloads, the source id of the previous
      navigation which loaded the page we're trying to navigate back to.
    </summary>
  </metric>
  <metric name="LastCommittedSourceIdForTheSameDocument">
    <summary>
      Deprecated as of 01/2019.
    </summary>
  </metric>
  <metric name="MainFrameFeatures">
    <summary>
      Bitmask of features used by the main frames of the previous page load. See
      blink::SchedulingPolicy::Feature for the meaning for the individual
      features.
    </summary>
  </metric>
  <metric
      name="MaxCumulativeShiftScoreAfterBackForwardCacheRestore.SessionWindow.Gap1000ms">
    <obsolete>
      Deprecated 06/2021.
    </obsolete>
    <summary>
      Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that
      has occurred in a session window, after the page is restored from the
      back-forward. The gap between two consecutive shifts in a window is not
      bigger than 1000ms. This metric's integral value is 100x the fractional
      cumulative layout shift score described in the explainer.
    </summary>
  </metric>
  <metric
      name="MaxCumulativeShiftScoreAfterBackForwardCacheRestore.SessionWindow.Gap1000ms.Max5000ms">
    <summary>
      Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that
      has occurred in a session window, after the page is restored from the
      back-forward. The gap between two consecutive shifts in a window is not
      bigger than 1000ms and the maximum window size is 5000ms. This metric's
      integral value is 100x the fractional cumulative layout shift score
      described in the explainer.
    </summary>
  </metric>
  <metric
      name="MaxCumulativeShiftScoreAfterBackForwardCacheRestore.SessionWindowByInputs.Gap1000ms.Max5000ms">
    <obsolete>
      Deprecated 06/2021.
    </obsolete>
    <summary>
      Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that
      has occurred in a session window, after the page is restored from the
      back-forward. The gap between two consecutive shifts in a window is not
      bigger than 1000ms and the maximum window size is 5000ms. We start a new
      window whenever there's a new user input. This metric's integral value is
      100x the fractional cumulative layout shift score described in the
      explainer.
    </summary>
  </metric>
  <metric
      name="MaxCumulativeShiftScoreAfterBackForwardCacheRestore.SlidingWindow.Duration1000ms">
    <obsolete>
      Deprecated 06/2021.
    </obsolete>
    <summary>
      Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that
      has occurred in a 1000ms sliding window, after the page is restored from
      the back-forward. This metric's integral value is 100x the fractional
      cumulative layout shift score described in the explainer.
    </summary>
  </metric>
  <metric
      name="MaxCumulativeShiftScoreAfterBackForwardCacheRestore.SlidingWindow.Duration300ms">
    <obsolete>
      Deprecated 06/2021.
    </obsolete>
    <summary>
      Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that
      has occurred in a 300ms sliding window, after the page is restored from
      the back-forward. This metric's integral value is 100x the fractional
      cumulative layout shift score described in the explainer.
    </summary>
  </metric>
  <metric name="NavigatedToTheMostRecentEntryForDocument">
    <summary>
      Boolean for whether we navigated to the same navigation entry as the one
      which was last visible.

      It can be false when subframes or same-document navigations are present.
      For example, after navigating from http://foo to http://foo#bar and then
      http://bar and then going back by 2 entries will mean we went to
      http://foo while the last committed entry from this document was
      http://foo#bar.

      It's expected to be rare, but might be problematic for back-forward cache.
    </summary>
  </metric>
  <metric name="NavigationToFirstPaintAfterBackForwardCacheRestore">
    <summary>
      Measures the time in milliseconds from navigation timing's navigation
      start to the time the first paint is performed, after the page is restored
      from the back-forward cache.
    </summary>
  </metric>
  <metric name="NumInteractionsAfterBackForwardCacheRestore">
    <summary>
      The number of distinct user interactions on a page after it is restored
      from the back-forward cache. See definition of user interaction:
      https://web.dev/better-responsiveness-metric/#group-events-into-interactions
    </summary>
  </metric>
  <metric name="PageEndReasonAfterBackForwardCacheRestore">
    <summary>
      The reason (as a |page_load_metrics::PageEndReason|) why the user
      navigated away from the page after it was restored from the back-forward
      cache. This includes navigations after which the page is stored in the
      back-forward cache again, as well as other page-ending events.
    </summary>
  </metric>
  <metric name="SameOriginSubframesFeatures">
    <summary>
      Bitmask of features used by the same origin subframes of the previous page
      load. See blink::SchedulingPolicy::Feature for the meaning for the
      individual features.
    </summary>
  </metric>
  <metric name="SecondRequestAnimationFrameAfterBackForwardCacheRestore">
    <summary>
      Measures the time duration between the page restore from back-forward
      cache and the second requestAnimationFrame time in milliseconds.
    </summary>
  </metric>
  <metric
      name="SlowUserInteractionLatencyOverBudgetAfterBackForwardCacheRestore.HighPercentile.MaxEventDuration2">
    <obsolete>
      Deprecated March 2022 in favor of
      SlowUserInteractionLatencyAfterBackForwardCacheRestore.HighPercentile2.MaxEventDuration
    </obsolete>
    <summary>
      An approximation of high percentile of user interaction latency above
      budget of a page after it is restored from the back-forward, in ms. For
      this metric, we measure the latency of user interactions by
      Responsiveness.UserInteraction.MaxEventDuration and we deduct a budget
      from the original value. If the latency value is below the budget, it will
      be treated as 0 ms. Each type of interaction has its own budget.
    </summary>
  </metric>
  <metric
      name="SlowUserInteractionLatencyOverBudgetAfterBackForwardCacheRestore.HighPercentile.TotalEventDuration2">
    <obsolete>
      Deprecated March 2022 in favor of
      SlowUserInteractionLatencyAfterBackForwardCacheRestore.HighPercentile2.MaxEventDuration
    </obsolete>
    <summary>
      An approximation of high percentile of user interaction latency above
      budget of a page after it is restored from the back-forward, in ms. For
      this metric, we measure the latency of user interactions by
      Responsiveness.UserInteraction.TotalEventDuration and we deduct a budget
      from the original value. If the latency value is below the budget, it will
      be treated as 0 ms. Each type of interaction has its own budget.
    </summary>
  </metric>
  <metric
      name="SlowUserInteractionLatencyOverBudgetAfterBackForwardCacheRestore.HighPercentile2.MaxEventDuration2">
    <summary>
      An approximation of high percentile of user interaction latency above
      budget of a page after it is restored from the back-forward, in ms. For
      this metric, we measure the latency of user interactions by
      Responsiveness.UserInteraction.MaxEventDuration and we deduct a budget
      from the original value. If the latency value is below the budget, it will
      be treated as 0 ms. Each type of interaction has its own budget.
    </summary>
  </metric>
  <metric
      name="SlowUserInteractionLatencyOverBudgetAfterBackForwardCacheRestore.HighPercentile2.TotalEventDuration2">
    <obsolete>
      Deprecated March 2022 in favor of
      SlowUserInteractionLatencyAfterBackForwardCacheRestore.HighPercentile2.MaxEventDuration
    </obsolete>
    <summary>
      An approximation of high percentile of user interaction latency above
      budget of a page after it is restored from the back-forward, in ms. For
      this metric, we measure the latency of user interactions by
      Responsiveness.UserInteraction.TotalEventDuration and we deduct a budget
      from the original value. If the latency value is below the budget, it will
      be treated as 0 ms. Each type of interaction has its own budget.
    </summary>
  </metric>
  <metric
      name="SumOfUserInteractionLatencyOverBudgetAfterBackForwardCacheRestore.MaxEventDuration2">
    <summary>
      The sum of user interaction latency above budget of a page after it is
      restored from the back-forward, in ms. For this metric, we measure the
      latency of user interactions by
      Responsiveness.UserInteraction.MaxEventDuration and we deduct a budget
      from the original value. If the latency value is below the budget, it will
      be treated as 0 ms. Each type of interaction has its own budget.
    </summary>
  </metric>
  <metric
      name="SumOfUserInteractionLatencyOverBudgetAfterBackForwardCacheRestore.TotalEventDuration2">
    <obsolete>
      Deprecated March 2022 in favor of
      SlowUserInteractionLatencyAfterBackForwardCacheRestore.HighPercentile2.MaxEventDuration
    </obsolete>
    <summary>
      The sum of user interaction latency above budget of a page after it is
      restored from the back-forward, in ms. For this metric, we measure the
      latency of user interactions by
      Responsiveness.UserInteraction.TotalEventDuration and we deduct a budget
      from the original value. If the latency value is below the budget, it will
      be treated as 0 ms. Each type of interaction has its own budget.
    </summary>
  </metric>
  <metric name="ThirdRequestAnimationFrameAfterBackForwardCacheRestore">
    <summary>
      Measures the time duration between the page restore from back-forward
      cache and the third requestAnimationFrame time in milliseconds.
    </summary>
  </metric>
  <metric name="TimeSinceNavigatedAwayFromDocument">
    <summary>
      Time in milliseconds from the moment the current navigation stopped being
      active to the start of the current navigation.

      This is clamped to hours for values greater than 3 hours, to minutes for
      values greater than 3 minutes, to seconds for values greater than 5
      seconds.
    </summary>
  </metric>
  <metric
      name="UserInteractionLatencyAfterBackForwardCacheRestore.HighPercentile2.MaxEventDuration">
    <summary>
      An approximation of a high percentile of user interaction latency of a
      page after it is restored from the back-forward cache, in ms. For this
      metric, we measure the latency of user interactions by
      Responsiveness.UserInteraction.MaxEventDuration.
    </summary>
  </metric>
  <metric
      name="WorstUserInteractionLatencyAfterBackForwardCacheRestore.MaxEventDuration2">
    <summary>
      The maximum value of user interaction latency of a page after it is
      restored from the back-forward, in ms. For this metric, we measure the
      latency of user interactions by
      Responsiveness.UserInteraction.MaxEventDuration.
    </summary>
  </metric>
  <metric
      name="WorstUserInteractionLatencyAfterBackForwardCacheRestore.TotalEventDuration2">
    <obsolete>
      Deprecated March 2022 in favor of
      SlowUserInteractionLatencyAfterBackForwardCacheRestore.HighPercentile2.MaxEventDuration
    </obsolete>
    <summary>
      The maximum value of user interaction latency of a page after it is
      restored from the back-forward, in ms. For this metric, we measure the
      latency of user interactions by
      Responsiveness.UserInteraction.TotalEventDuration.
    </summary>
  </metric>
  <metric
      name="WorstUserInteractionLatencyOverBudgetAfterBackForwardCacheRestore.MaxEventDuration2">
    <obsolete>
      Deprecated March 2022 in favor of
      SlowUserInteractionLatencyAfterBackForwardCacheRestore.HighPercentile2.MaxEventDuration
    </obsolete>
    <summary>
      The maximum value of user interaction latency above budget of a page after
      it is restored from the back-forward, in ms. For this metric, we measure
      the latency of user interactions by
      Responsiveness.UserInteraction.MaxEventDuration and we reduct a budget
      from the original value. If the latency value is below the budget, it will
      be treated as 0 ms. Each type of interaction has its own budget.
    </summary>
  </metric>
  <metric
      name="WorstUserInteractionLatencyOverBudgetAfterBackForwardCacheRestore.TotalEventDuration2">
    <obsolete>
      Deprecated March 2022 in favor of
      SlowUserInteractionLatencyAfterBackForwardCacheRestore.HighPercentile2.MaxEventDuration
    </obsolete>
    <summary>
      The maximum value of user interaction latency above budget of a page after
      it is restored from the back-forward, in ms. For this metric, we measure
      the latency of user interactions by
      Responsiveness.UserInteraction.TotalEventDuration and we reduct a budget
      from the original value. If the latency value is below the budget, it will
      be treated as 0 ms. Each type of interaction has its own budget.
    </summary>
  </metric>
</event>

<event name="Identifiability">
  <owner>antoniosartori@chromium.org</owner>
  <owner>caraitto@chromium.org</owner>
  <owner>mkwst@chromium.org</owner>
  <owner>pauljensen@chromium.org</owner>
  <summary>
    Identifiability metrics are used to measure the diversity of web clients as
    observed by individual web sites.

    Browser or device fingerprinting uses differences in behaviors of web APIs
    as identifiers. The values collected under this event indicate the level of
    identifiability of these differences.

    Metrics recorded under this event are keyed based on parameters determined
    at runtime. Hence the metrics described in this file are not exhaustive.

    See
    //third_party/blink/public/common/privacy_budget/identifiability/identifiability_metric_builder.h
    for details on how the metrics hash is determined.
  </summary>
  <metric name="GeneratorVersion.926">
    <summary>
      An integer identifying the &quot;generator&quot; version for this record.
      Some identifiability study samples are derived from multiple factors which
      are run though a digest function to derive the int64_t value. If the set
      of factors change or the method of combining them changes, then the
      resulting statistics cannot be aggregated with those from a prior version.

      The name suffix (.926) was chosen so that the resulting metric hash as
      determined by base::HashMetricName() has all 8 LSBs set to 0. Such a
      metric hash does not collide with any other metric hash generated by
      blink::IdentifiabilityMetricBuilder().
    </summary>
  </metric>
  <metric name="StudyGeneration.626">
    <summary>
      An integer identifying the study &quot;generation.&quot; In case the study
      parameters need to be tweaked to the point where results cannot be
      aggregated across study parameter sets, this value can be changed to
      partition the results.

      The name suffix (.626) was chosen so that the resulting metric hash as
      determined by base::HashMetricName() has all 8 LSBs set to 0. Such a
      metric hash does not collide with any other metric hash generated by
      blink::IdentifiabilityMetricBuilder().
    </summary>
  </metric>
</event>

<event name="InputEvent">
  <owner>mmocny@chromium.org</owner>
  <owner>sullivan@chromium.org</owner>
  <owner>speed-metrics-dev@chromium.org</owner>
  <summary>
    Metrics associated with user input events. This event is recorded in Blink
    and may not be recorded for the same page visits as events like PageLoad.
    Consumers of this event's metrics should be aware of this when making
    comparisons between InputEvent metrics and PageLoad metrics.
  </summary>
  <metric name="EventType" enum="InputEventTypeForResponsivenessMetric">
    <summary>
      The Event Type of the input event.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.is_dominant_version"/>
        <index fields="profile.is_latest_version"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="InteractiveTiming.InputDelay">
    <summary>
      Measures Input Delay, the duration between the hardware timestamp and the
      start of event processing on the main thread for the meaningful input. In
      ms. (go/FirstInputDelay)
    </summary>
    <aggregation>
      <history>
        <index fields="profile.is_dominant_version"/>
        <index fields="profile.is_latest_version"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="InteractiveTiming.ProcessingFinishedToNextPaint">
    <summary>
      Measures the time in ms from when the event handlers finish processing the
      input event to the time when the next paint caused by the input event is
      performed.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.is_dominant_version"/>
        <index fields="profile.is_latest_version"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="InteractiveTiming.ProcessingTime">
    <summary>
      Measures Input Event processing time, the duration of event handlers
      processing the input event. In ms.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.is_dominant_version"/>
        <index fields="profile.is_latest_version"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="InputMethod.Assistive.AutocorrectV2">
  <owner>mehrab@google.com</owner>
  <summary>
    Metrics recording a summary of user interactions with Autocorrect feature.
    The event is recorded whenever an autocorrect suggestion is shown or a user
    interacted with a suggestion to accept or reject it.
  </summary>
  <metric name="CompatibilitySummary.PK"
      enum="IMEAutocorrectCompatibilitySummary">
    <summary>
      A summary of interactions with Physical Keyboard Autocorrect suggestions
      for the purpose of identifying App Compatibility issues.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="CompatibilitySummary.VK"
      enum="IMEAutocorrectCompatibilitySummary">
    <summary>
      A summary of interactions with Virtual Keyboard Autocorrect suggestions
      for the purpose of identifying App Compatibility issues.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="InputMethod.Assistive.Match">
  <owner>jiwan@chromium.org</owner>
  <summary>
    Recorded when an assistive action could be triggered according to the
    surrounding text.
  </summary>
  <metric name="Type" enum="IMEAssistiveAction">
    <summary>
      The type of the assistive suggestion which is triggered.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="InputMethod.LongpressDiacritics">
  <owner>jopalmer@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Recorded when a user uses the long press diacritics feature to insert
    diacritics via long press with a physical keyboard.
  </summary>
  <metric name="Actions" enum="IMEPKLongpressDiacriticAction">
    <summary>
      Action taken by the user to interact with this feature.
    </summary>
  </metric>
</event>

<event name="InputMethod.NonCompliantApi">
  <owner>shend@chromium.org</owner>
  <summary>
    Metrics indicating what Input Method Editor (IME) operations are behaving
    incorrectly on an input field. This event is recorded whenever an IME
    operation is executed on the input field but the result does not match the
    IME's expectations (e.g. IME wants to insert 'a' but the input field
    inserted 'b' instead).
  </summary>
  <metric name="NonCompliantOperation" enum="InputMethodApiOperation">
    <summary>
      The operation that behaved incorrectly.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="InstalledRelatedApps">
  <owner>rayankans@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    Recorded before resolving a call to navigator.getInstalledRelatedApps().
  </summary>
  <metric name="Called">
    <summary>
      Always true.
    </summary>
  </metric>
</event>

<event name="Intervention.DocumentWrite.ScriptBlock" singular="True">
  <obsolete>
    Removed 12/2021.
  </obsolete>
  <owner>bmcquade@chromium.org</owner>
  <summary>
    Recorded for page loads where the document.write script block intervention
    could apply.
  </summary>
  <metric name="Disabled.Reload">
    <summary>
      Records '1' if the document.write script block intervention could have
      applied, but was disabled due to the page being reloaded.
    </summary>
  </metric>
  <metric name="ParseTiming.ParseBlockedOnScriptExecutionFromDocumentWrite">
    <summary>
      Measures the time in milliseconds that the HTML parser spent blocked on
      the execution of scripts inserted from document.write, for main frame
      documents that finished parsing.
    </summary>
  </metric>
  <metric name="ParseTiming.ParseBlockedOnScriptLoadFromDocumentWrite">
    <summary>
      Measures the time in milliseconds that the HTML parser spent blocked on
      the load of scripts inserted from document.write, for main frame documents
      that finished parsing.
    </summary>
  </metric>
</event>

<event name="IOS.FindInPageSearchMatches">
  <owner>thegreenfrog@chromium.org</owner>
  <owner>michaeldo@chromium.org</owner>
  <summary>
    Logged when the FindInPage returns a user search request result. Starting
    from M111, this is only logged at the end of the Find session i.e. when the
    Find UI is dismissed.
  </summary>
  <metric name="HasMatches" enum="Boolean">
    <summary>
      True if there were matches.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="IOS.IsDefaultBrowser">
  <owner>rkgibson@chromium.org</owner>
  <summary>
    As of iOS14, users will be able to set a default browser other than Safari.
    When Chrome is the default browser, it will open all URL links, which is
    likely to change certain stability metrics. Thus, it will be good to filter
    those metrics by default browser status. This metrics records whether the
    user was deemed to have set Chrome as the device's default browser. This
    metric will be logged once per metrics log upload, and if the metric changes
    mid-report, this just records the state at the very end of the report. Note:
    this is tied to a source_id that is not going to be emitted.
  </summary>
  <metric name="IsDefaultBrowser" enum="Boolean">
    <summary>
      True if Chrome is set as default browser.
    </summary>
  </metric>
</event>

<event name="IOS.PageAddedToReadingList">
  <owner>thegreenfrog@chromium.org</owner>
  <summary>
    Logged when the user adds a page to the Reading List.
  </summary>
  <metric name="AddedFromMessages" enum="Boolean">
    <summary>
      True if the page was added by the user tapping on the Messages prompt to
      save to Reading List.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="IOS.PageReadability">
  <owner>thegreenfrog@chromium.org</owner>
  <summary>
    Logged when the Distilibility score of the current page is returned and the
    Reading List Message is shown. Muliplied by 10X to get tenth digit
    granularity. 0.1 granularity will be recorded for scores between 0.5 and
    1.5. Otherwise, the granularity will be 0.5.
  </summary>
  <metric name="DidAccept" enum="Boolean">
    <summary>
      True if the user tapped on the Messages prompt to save the current page to
      Reading List.
    </summary>
  </metric>
  <metric name="DistilibilityLongScore">
    <summary>
      Distilibility score value indicating the &quot;long readability&quot; of
      the page.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="DistilibilityScore">
    <summary>
      Distilibility score value indicating the &quot;readability&quot; of the
      page.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="IOS.PageZoomChanged">
  <owner>rkgibson@google.com</owner>
  <summary>
    Logged when the user changes their zoom level on iOS.
  </summary>
  <metric name="ContentSizeCategory" enum="IOSContentSizeCategory">
    <summary>
      The content size category the user is currently using.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="OverallZoomLevel">
    <summary>
      The overall zoom level. This is based on a combination of the user zoom
      level and a multiplier from the user's content size category.
    </summary>
  </metric>
  <metric name="UserZoomLevel">
    <summary>
      The current zoom multiplier (percentage-based, with 100 -&gt; 100%) the
      user has chosen.
    </summary>
  </metric>
</event>

<event name="IOS.RendererGone">
  <owner>olivierrobin@chromium.org</owner>
  <summary>
    Logged when WKWebView process is reported gone. Metrics will give
    information of the context in which some website present sad tabs. It will
    help debug some renderer issues either in Chrome or in WebKit.
  </summary>
  <metric name="AliveRecentlyRendererCount">
    <summary>
      The number of WKWebView alive in the last 2 seconds.
    </summary>
  </metric>
  <metric name="AliveRendererCount">
    <summary>
      The number of WKWebView alive at the moment this renderer is gone.
    </summary>
  </metric>
  <metric name="InForeground" enum="TabForegroundState">
    <summary>
      Whether the app/tab was in foregound or background. 0: tab in foreground,
      app in foreground, 1: tab in background, app in foreground, 2: tab in
      foreground, app in background, 3: tab in background, app in background.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SawMemoryWarning" enum="Boolean">
    <summary>
      Whether a memory warning was received less than 5 seconds before the
      renderer process is gone.
    </summary>
  </metric>
</event>

<event name="IOS.URLMismatchInLegacyAndSlimNavigationManager">
  <owner>ajuma@chromium.org</owner>
  <owner>gambard@chromium.org</owner>
  <summary>
    Logged when LegacyNavigationManager and KWKBasedNavigationManager have
    different last committed URLs. This means that either old or new navigation
    system has a URL spoofing bug.
  </summary>
  <metric name="HasMismatch">
    <summary>
      True if there was a mismatch.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="JavascriptFrameworkPageLoad" singular="True">
  <owner>houssein@chromium.org</owner>
  <owner>npm@chromium.org</owner>
  <summary>
    Metrics stating whether the main frame of a page uses certain JavaScript
    frameworks. This event is recorded when the page is going to be unloaded or
    when the app enters the background on Android. The framework detection is
    done when the document is loaded (similar to when load event is fired). If a
    framework is used after this then it would not be detected. Note that a page
    can use multiple frameworks at the same time, hence why this reports each
    framework individually instead of a single enum.
  </summary>
  <metric name="AngularPageLoad" enum="Boolean">
    <summary>
      True if the page loaded in the main frame uses the Angular JavaScript
      framework.
    </summary>
  </metric>
  <metric name="GatsbyPageLoad" enum="Boolean">
    <summary>
      True if the page loaded in the main frame uses the Gatsby JavaScript
      framework.
    </summary>
  </metric>
  <metric name="NextJSPageLoad" enum="Boolean">
    <summary>
      True if the page loaded in the main frame uses the Next.js JavaScript
      framework.
    </summary>
  </metric>
  <metric name="NuxtJSPageLoad" enum="Boolean">
    <summary>
      True if the page loaded in the main frame uses the Nuxt.js JavaScript
      framework.
    </summary>
  </metric>
  <metric name="PreactPageLoad" enum="Boolean">
    <summary>
      True if the page loaded in the main frame uses the Preact JavaScript
      framework.
    </summary>
  </metric>
  <metric name="ReactPageLoad" enum="Boolean">
    <summary>
      True if the page loaded in the main frame uses the React JavaScript
      framework.
    </summary>
  </metric>
  <metric name="SapperPageLoad" enum="Boolean">
    <summary>
      True if the page loaded in the main frame uses the Sapper JavaScript
      framework.
    </summary>
  </metric>
  <metric name="SveltePageLoad" enum="Boolean">
    <summary>
      True if the page loaded in the main frame uses the Svelte JavaScript
      framework.
    </summary>
  </metric>
  <metric name="VuePageLoad" enum="Boolean">
    <summary>
      True if the page loaded in the main frame uses the Vue JavaScript
      framework.
    </summary>
  </metric>
  <metric name="VuePressPageLoad" enum="Boolean">
    <summary>
      True if the page loaded in the main frame uses the VuePress JavaScript
      framework.
    </summary>
  </metric>
</event>

<event name="Layout.DisplayCutout.StateChanged">
  <obsolete>
    Obsolete as of 08/2021.
  </obsolete>
  <owner>beccahughes@chromium.org</owner>
  <owner>media-dev@chromium.org</owner>
  <summary>
    Recorded every time the ViewportFit that is supplied by a frame changes or
    the fullscreen state of a frame or its parent WebContents changes.
  </summary>
  <metric name="IsMainFrame">
    <summary>
      Records '1' if the frame that triggered this event is the main frame.
    </summary>
  </metric>
  <metric name="SafeAreasPresent">
    <summary>
      Records whether each safe area was present. It will contain the first flag
      (1) if the top safe area is present. Likewise the second for the left, the
      third for the bottom and the forth for the right. If the safe area is
      updated whilst we are allowed to extend into the cutout then we will use
      the newest safe area values.
    </summary>
  </metric>
  <metric name="ViewportFit.Applied">
    <summary>
      Contains the ViewportFit value that was applied by the WebContents. The
      frame that is fullscreen will always propagate it's ViewportFit value.
      This is stored as a ViewportFit enum (see display_cutout.mojom).
    </summary>
  </metric>
  <metric name="ViewportFit.IgnoredReason">
    <summary>
      Records the reason why the ViewportFit value of this frame was not the
      applied value. It will be '0' if the value was allowed. It will be '1' if
      the ViewportFit value from the frame was blocked because the WebContents
      was not fullscreen. It will be '2' flag if the ViewportFit value from the
      frame was blocked because another frame is fullscreen.
    </summary>
  </metric>
  <metric name="ViewportFit.Supplied">
    <summary>
      Contains the ViewportFit value that was supplied by the frame that
      triggered the event. This is stored as a ViewportFit enum (see
      display_cutout.mojom). It can never be kAuto as we ignore events when the
      page is not trying to use the viewport fit API.
    </summary>
  </metric>
</event>

<event name="LiteVideo">
  <obsolete>
    Obsoleted December 2021.
  </obsolete>
  <owner>mcrouse@chromium.org</owner>
  <owner>rajendrant@chromium.org</owner>
  <summary>
    Metrics that capture the state and result of the LiteVideo optimization.
    This will be recorded once per frame when the associated render process
    ends. Only for Lite mode users on Android.
  </summary>
  <metric name="BlocklistReason" enum="LiteVideoBlocklistReason">
    <summary>
      The reason that a navigation was blocklisted and will not have media
      requests throttled.
    </summary>
  </metric>
  <metric name="ThrottlingResult" enum="LiteVideoThrottleResult">
    <summary>
      The result for whether media requests associated with this navigation were
      successfully throttled or stopped due to an opt-out event.
    </summary>
  </metric>
  <metric name="ThrottlingStartDecision" enum="LiteVideoDecision">
    <summary>
      The decision for whether media requests associated with this frame will be
      potentially throttled.
    </summary>
  </metric>
</event>

<event name="LoadCountsPerTopLevelDocument">
  <owner>fdoray@chromium.org</owner>
  <owner>chrome-catan@google.com</owner>
  <summary>
    Counts loads of each type that occurred on a top-level document. Recorded
    when a top-level document is unloaded. This can be used to diagnose changes
    to the &quot;Total pageloads&quot; shown on stability dashboard.

    Exponential bucketing is applied to all counts. The bucketing function
    preserves exact count up until 20.
  </summary>
  <metric name="NumMainFrameSameDocumentLoads_Hidden">
    <summary>
      Number of main frame same-document loads that occurred while the page was
      hidden.
    </summary>
  </metric>
  <metric name="NumMainFrameSameDocumentLoads_Visible">
    <summary>
      Number of main frame same-document loads that occurred while the page was
      visible.
    </summary>
  </metric>
  <metric name="NumSubFrameDifferentDocumentLoads_Hidden">
    <summary>
      Number of sub frame different-document loads that occurred while the page
      was hidden.
    </summary>
  </metric>
  <metric name="NumSubFrameDifferentDocumentLoads_Visible">
    <summary>
      Number of sub frame different-document loads that occurred while the page
      was visible.
    </summary>
  </metric>
  <metric name="NumSubFrameSameDocumentLoads_Hidden">
    <summary>
      Number of sub frame same-document loads that occurred while the page was
      hidden.
    </summary>
  </metric>
  <metric name="NumSubFrameSameDocumentLoads_Visible">
    <summary>
      Number of sub frame same-document loads that occurred while the page was
      visible.
    </summary>
  </metric>
</event>

<event name="LoadingPredictor" singular="true">
  <owner>sophiechang@chromium.org</owner>
  <owner>tbansal@chromium.org</owner>
  <summary>
    Metrics that reflect the accuracy of the predictions used by the Loading
    Predictor. This event will be recorded once per page load on
    DocumentOnLoadCompletedInPrimaryMainFrame().
  </summary>
  <metric name="CorrectSubresourceOriginPreconnectsInitiated">
    <summary>
      The number of subresource origin preconnects that were initiated by the
      Loading Predictor for the navigation and were actually used by the page
      load, excluding the main frame URL's origin. If more than 100 subresource
      origins were preconnected to and were actually used by the page load, this
      will be capped at 100.
    </summary>
  </metric>
  <metric name="CorrectSubresourcePrefetchesInitiated">
    <summary>
      The number of subresource prefetches that were initiated by the Loading
      Predictor for the navigation and were actually used by the page load. If
      more than 100 subresources were prefetched and were actually used by the
      page load, this will be capped at 100.
    </summary>
  </metric>
  <metric name="LocalPredictionCorrectlyPredictedOrigins">
    <summary>
      The number of subresource origins that were correctly predicted by the
      local prediction database. This will be recorded if there is a prediction
      available in the local prediction database and does not necessarily mean
      that the prediction was used. If more than 100 subresource origins were
      correctly predicted, this will be capped at 100.
    </summary>
  </metric>
  <metric name="LocalPredictionOrigins">
    <summary>
      The number of subresource origins that were predicted locally. This will
      be recorded if there is a prediction available in the local prediction
      database and does not necessarily mean that the prediction was used. If
      more than 100 subresource origins were predicted, this will be capped at
      100.
    </summary>
  </metric>
  <metric name="NavigationStartToFirstSubresourcePrefetchInitiated">
    <summary>
      The time (in milliseconds) that elapsed between navigation start and the
      first subresource prefetch that was initiated based on these predictions.
    </summary>
  </metric>
  <metric name="NavigationStartToNavigationCommit">
    <summary>
      The time (in milliseconds) that elapsed between navigation start and the
      commit finished.
    </summary>
  </metric>
  <metric name="NavigationStartToOptimizationGuidePredictionArrived">
    <summary>
      The time (in milliseconds) that elapsed between navigation start and the
      optimization guide prediction arriving for the navigation.
    </summary>
  </metric>
  <metric name="OptimizationGuidePredictionCorrectlyPredictedOrigins">
    <summary>
      The number of subresource origins that were correctly predicted by the
      Optimization Guide. This will be recorded if the Optimization Guide was
      consulted for the page load and the Optimization Guide had a prediction
      for it. If more than 100 subresource origins were correctly predicted,
      this will be capped at 100.
    </summary>
  </metric>
  <metric name="OptimizationGuidePredictionCorrectlyPredictedSubresources">
    <summary>
      The number of subresources that were correctly predicted by the
      Optimization Guide. This will be recorded if the Optimization Guide was
      consulted for the page load and the Optimization Guide had a prediction
      for it. If more than 100 subresources were predicted, this will be capped
      at 100.
    </summary>
  </metric>
  <metric name="OptimizationGuidePredictionDecision"
      enum="OptimizationGuideOptimizationGuideDecision">
    <summary>
      The decision coming from the Optimization Guide for whether there was a
      prediction available for the Page Load. This will be recorded if the
      Optimization Guide was consulted for the page load.
    </summary>
  </metric>
  <metric name="OptimizationGuidePredictionOrigins">
    <summary>
      The number of subresource origins that were predicted by the Optimization
      Guide. This will be recorded if the Optimization Guide was consulted for
      the page load and the Optimization Guide had a prediction for it. If more
      than 100 subresource origins were predicted, this will be capped at 100.
    </summary>
  </metric>
  <metric name="OptimizationGuidePredictionSubresources">
    <summary>
      The number of subresources that were predicted by the Optimization Guide.
      This will be recorded if the Optimization Guide was consulted for the page
      load and the Optimization Guide had a prediction for it. If more than 100
      subresources were predicted, this will be capped at 100.
    </summary>
  </metric>
  <metric name="SubresourceOriginPreconnectsInitiated">
    <summary>
      The number of subresource origins that were initiated by the Loading
      Predictor and were preconnected to, excluding the main frame URL's origin.
      If more than 100 subresource origins were preconnected to, this will be
      capped at 100.
    </summary>
  </metric>
  <metric name="SubresourcePrefetchesInitiated">
    <summary>
      The number of subresource prefetches that were initiated by the Loading
      Predictor for the navigation. If more than 100 subresources were
      prefetched, this will be capped at 100.
    </summary>
  </metric>
</event>

<event name="LocalNetworkRequests">
  <owner>uthakore@chromium.org</owner>
  <owner>invernizzi@chromium.org</owner>
  <summary>
    Metrics that describe the resource request behavior of pages for which
    navigation successfully commits. A separate entry is generated for every
    unique IP address or localhost port number to which the loaded page makes a
    resource request.
  </summary>
  <metric name="Count.Failed">
    <summary>
      The count of requests made by the page to the given resource for which a
      response is not received or a network error occurs (i.e. |net_error| !=
      |net::OK|) between the time navigation to the page commits and the time it
      completes.
    </summary>
  </metric>
  <metric name="Count.Successful">
    <summary>
      The count of requests made by the page to the given resource for which a
      successful response is received (i.e. |net_error| == |net::OK|) between
      the time navigation to the page commits and the time it completes.
    </summary>
  </metric>
  <metric name="PortType">
    <summary>
      An enum value representing the type of port for requests to localhost. The
      enum is defined in |LocalNetworkRequestsPageLoadMetricsObserver|. Possible
      values are 1 for common web server ports, 2 for common database server
      ports, 4 for common print server ports, 8 for common development server
      ports, and 0 for all other ports.
    </summary>
  </metric>
  <metric name="ResourceType">
    <summary>
      An enum value representing the type of resource requested. The enum is
      defined in |LocalNetworkRequestsPageLoadMetricsObserver|. Possible values
      are 0 for public resources requested by private pages, 1 for private
      resources requested by public pages, 2 for private resources within the
      same reserved IP space as the loaded private page, 4 for private resources
      within a different reserved IP space than the loaded private page, 8 for
      resources requested by public pages that are suspected to be routers, and
      16 for localhost resources.
    </summary>
  </metric>
</event>

<event name="LoginDetection" singular="True">
  <owner>rajendrant@chromium.org</owner>
  <owner>mcrouse@chromium.org</owner>
  <summary>
    Records the info about login detected for sites based on different
    heuristics.
  </summary>
  <metric name="Page.LoginType" enum="LoginDetectionType">
    <summary>
      An enum for representing the different ways of user login to a site, such
      as via passwords, via OAuth, etc. Recorded for every page load.
    </summary>
  </metric>
</event>

<event name="LookalikeUrl.NavigationSuggestion" singular="True">
  <owner>meacer@chromium.org</owner>
  <owner>cthomp@chromium.org</owner>
  <summary>
    Metrics recorded when a navigated URL's domain name is visually similar to a
    popular domain or a domain that the user engaged with.
  </summary>
  <metric name="MatchType">
    <summary>
      An enum value representing the type of the match (popular domain, engaged
      domain, etc.). The enum is defined in |LookalikeUrlBlockingPage|.
    </summary>
  </metric>
  <metric name="TriggeredByInitialUrl" enum="Boolean">
    <summary>
      A boolean representing whether or not the warning was triggered by the
      first URL in the chain, or whether the warning was triggered by the final
      (committed) URL.
    </summary>
  </metric>
  <metric name="UserAction">
    <summary>
      An enum value representing the decision the user made when shown an
      interstitial (ignored, suggestion_accepted, etc.). The enum is defined in
      |LookalikeUrlBlockingPage|.
    </summary>
  </metric>
</event>

<event name="MainFrameDownload">
  <obsolete>
    Deprecated as of 03/2019.
  </obsolete>
  <owner>yaoxia@chromium.org</owner>
  <summary>
    Measurement for top frame download. It is only recorded for downloads
    originated from navigations or from HTML anchor download attributes.
  </summary>
  <metric name="HasGesture">
    <summary>
      A boolean denoting whether the download involves a transient user gesture.
    </summary>
  </metric>
  <metric name="HasSandbox">
    <summary>
      A boolean denoting whether the download occurs in a sandboxed browsing
      context.
    </summary>
  </metric>
</event>

<event name="MainFrameNavigation" singular="True">
  <owner>thegreenfrog@chromium.org</owner>
  <summary>
    Metric associated with a main frame navigation. Currently implemented only
    on iOS.
  </summary>
  <metric name="DidCommit" enum="Boolean">
    <summary>
      Set to 1 if the navigation successfully committed.
    </summary>
  </metric>
</event>

<event name="Media.Autoplay.Attempt">
  <owner>dalecurtis@chromium.org</owner>
  <owner>media-dev@chromium.org</owner>
  <summary>
    Event recorded when there is an attempt to autoplay (ie. no user gesture).
    It will be recorded regardless of the result of this attempt.
  </summary>
  <metric name="AudioTrack">
    <summary>
      Whether the element had an audio track when autoplay was attempted.
    </summary>
  </metric>
  <metric name="HighMediaEngagement">
    <summary>
      Whether the document has a high media engagement.
    </summary>
  </metric>
  <metric name="Muted">
    <summary>
      Whether the element was muted when autoplay was attempted.
    </summary>
  </metric>
  <metric name="Source">
    <summary>
      Source of the autoplay attempt: 0 for attribute; 1 for play().
    </summary>
  </metric>
  <metric name="UserGestureRequired">
    <summary>
      Whether a user gesture was required per autoplay rules at the time of
      attempt. By definition there is no user gesture on the stack when the
      attempt is registered.
    </summary>
  </metric>
  <metric name="UserGestureStatus">
    <summary>
      Reflects the current status of user gesture/activation. This is a bit
      field with the following values: - 0b0001 if there is a user gesture on
      the stack; - 0b0010 if there was a user gesture on the page (ie. was
      activated); - 0b0100 if there was a user gesture propagated after a
      navigation.
    </summary>
  </metric>
  <metric name="VideoTrack">
    <summary>
      Whether the element had a video track when autoplay was attempted.
    </summary>
  </metric>
</event>

<event name="Media.Autoplay.AudioContext">
  <owner>dalecurtis@chromium.org</owner>
  <owner>media-dev@chromium.org</owner>
  <summary>
    Records the AudioContext autoplay information.
  </summary>
  <metric name="SourceNodeStarted">
    <summary>
      A boolean indicating if start() was called for any source node associated
      to the AudioContext.
    </summary>
  </metric>
  <metric name="Status">
    <summary>
      Status of this AudioContext when the autoplay policy applies. It will
      match the values from AudioContext::AutoplayStatus.
    </summary>
  </metric>
  <metric name="UnlockType">
    <summary>
      How the AudioContext was unlocked if it was. It will match the values from
      AudioContext::AutoplayUnlockType unless the AudioContext was never
      unlocked in which case it will be equal to -1.
    </summary>
  </metric>
</event>

<event name="Media.Autoplay.Muted.UnmuteAction">
  <owner>dalecurtis@chromium.org</owner>
  <owner>media-dev@chromium.org</owner>
  <summary>
    Event recorded when there is an attempt to unmute an media that was
    autoplaying following the rules of autoplay muted.
  </summary>
  <metric name="Result">
    <summary>
      0 means that the unmute failed because it happened without a user gesture.
      1 means that it succeeded because it had a user gesture.
    </summary>
  </metric>
  <metric name="Source">
    <summary>
      Similar to &quot;Source&quot; in &quot;Media.Autoplay.Attempt&quot; with
      the addition of a value for both sources being used: 0 for attribute; 1
      for play(); 2 for both attempted.
    </summary>
  </metric>
</event>

<event name="Media.BasicPlayback">
  <owner>dalecurtis@chromium.org</owner>
  <owner>media-dev@chromium.org</owner>
  <summary>
    Core metrics associated with a media playback through WebMediaPlayerImpl.
    Reported at the time of WatchTimeRecorder destruction or render process
    termination; whichever comes first. There will be multiple entries for a
    given playback; one for every PlaybackProperties change as well as one for
    foreground and background. Records may be aggregated based on PlayerID and
    correlated with the Media.WebMediaPlayerState event.
  </summary>
  <metric name="AudioCodec">
    <summary>
      media::AudioCodec enum value. Can be kUnknownAudioCodec even when HasAudio
      is true because we don't always know the codec.
    </summary>
  </metric>
  <metric name="AudioCodecProfile">
    <summary>
      media::AudioCodecProfile enum value. Can be AudioCodecProfile::kUnknown
      even when HasAudio is true because we don't always know the codec profile.
    </summary>
  </metric>
  <metric name="AudioDecoderName">
    <summary>
      Enumeration of audio decoder implementations, zero if none or unknown
      (Cast, HLS, etc). See AudioDecoderType (media/base/decoder.h) for expected
      values.
    </summary>
  </metric>
  <metric name="AudioEncryptionScheme">
    <summary>
      media::EncryptionMode enum value. Can be kUnencrypted if IsEME is false or
      if the audio track is unencrypted.
    </summary>
  </metric>
  <metric name="AutoplayInitiated">
    <summary>
      Boolean value indicating whether the initial playback was initiated via
      autoplay. Multilpe chunk records of the same player should have the same
      value. Autoplay is defined as a playback starting before there was a user
      activation on the page or without a user initiated same-domain navigation.
    </summary>
  </metric>
  <metric name="CompletedRebuffersCount">
    <summary>
      Integer count of the number of times a previous rebuffer succeeded and
      playback continued.
    </summary>
  </metric>
  <metric name="CompletedRebuffersDuration">
    <summary>
      Sum in milliseconds of all completed rebuffering events. Only reported if
      a rebuffering completion occurred.
    </summary>
  </metric>
  <metric name="Duration">
    <summary>
      Duration in milliseconds, rounded to the most significant digit, of the
      media being played. May be missing if the duration is unknown or infinite.
    </summary>
  </metric>
  <metric name="HasAudio">
    <summary>
      Boolean value indicating the presence of audio.
    </summary>
  </metric>
  <metric name="HasVideo">
    <summary>
      Boolean value indicating the presence of video.
    </summary>
  </metric>
  <metric name="IsBackground">
    <summary>
      Boolean value indicating if this event is for a background playback.
    </summary>
  </metric>
  <metric name="IsEME">
    <summary>
      Boolean value indicating if this event is for an EME playback.
    </summary>
  </metric>
  <metric name="IsMSE">
    <summary>
      Boolean value indicating if this event is for an MSE playback. If false it
      means this was a SRC playback.
    </summary>
  </metric>
  <metric name="IsMuted">
    <summary>
      Boolean value indicating if this event is for a muted playback.
    </summary>
  </metric>
  <metric name="IsTopFrame">
    <summary>
      Flag indicating whether the report comes from the top frame or some inner
      frame. For privacy, metrics from inner frames are recorded with the top
      frame's origin, so this flag helps separate top frame vs. embedded
      playbacks.
    </summary>
  </metric>
  <metric name="LastPipelineStatus">
    <summary>
      media::PipelineStatus enum value. Always 0 if the playback succeeded; all
      other values indicate the playback ended in an error.
    </summary>
  </metric>
  <metric name="MeanTimeBetweenRebuffers">
    <summary>
      Average number of milliseconds between rebuffering events. Only reported
      if a rebuffering event occurred. Computed by dividing total watch time by
      the number of rebuffering events.
    </summary>
  </metric>
  <metric name="MediaStreamType" enum="MediaStreamType">
    <summary>
      Enum value indicating the type of MediaStream if the playback is from a
      MediaStream, or kNonMediaStream otherwise.
    </summary>
  </metric>
  <metric name="PlayerID">
    <summary>
      ID which corresponds to a given WebMediaPlayerImpl instance. May be linked
      with Media.WebMediaPlayerState events to understand playback more deeply.
    </summary>
  </metric>
  <metric name="RebuffersCount">
    <summary>
      Integer count of the number of times playback experienced rebuffering.
    </summary>
  </metric>
  <metric name="VideoCodec">
    <summary>
      media::VideoCodec enum value. Can be kUnknownVideoCodec even when HasVideo
      is true because we don't always know the codec.
    </summary>
  </metric>
  <metric name="VideoCodecProfile">
    <summary>
      media::VideoCodecProfile enum value. Can be VIDEO_CODEC_PROFILE_UNKNOWN
      even when HasVideo is true because we don't always know the codec profile.
    </summary>
  </metric>
  <metric name="VideoDecoderName">
    <summary>
      Enumeration of video decoder implementations, zero if none or unknown
      (Cast, HLS, etc). See VideoDecoderType (media/base/decoder.h) for expected
      values.
    </summary>
  </metric>
  <metric name="VideoEncryptionScheme">
    <summary>
      media::EncryptionMode enum value. Can be kUnencrypted if IsEME is false or
      if the video track is unencrypted.
    </summary>
  </metric>
  <metric name="VideoFramesDecoded">
    <summary>
      Integer count of the video frames decoded in this record.
    </summary>
  </metric>
  <metric name="VideoFramesDropped">
    <summary>
      Integer count of the video frames dropped in this record. Should not
      exceed VideoFramesDecoded.
    </summary>
  </metric>
  <metric name="VideoNaturalHeight">
    <summary>
      Integer value indicating the natural height of the playback.
    </summary>
  </metric>
  <metric name="VideoNaturalWidth">
    <summary>
      Integer value indicating the natural width of the playback.
    </summary>
  </metric>
  <metric name="WatchTime">
    <summary>
      Watch time in milliseconds for this playback. See Media.WatchTime UMA
      metrics.
    </summary>
  </metric>
  <metric name="WatchTime.AC">
    <summary>
      Watch time on AC power in milliseconds for this playback. See
      Media.WatchTime UMA metrics.
    </summary>
  </metric>
  <metric name="WatchTime.Battery">
    <summary>
      Watch time on battery power in milliseconds for this playback. See
      Media.WatchTime UMA metrics.
    </summary>
  </metric>
  <metric name="WatchTime.DisplayFullscreen">
    <summary>
      Watch time for fullscreen in milliseconds for this playback. See
      Media.WatchTime UMA metrics. Only reported for foreground playbacks.
    </summary>
  </metric>
  <metric name="WatchTime.DisplayInline">
    <summary>
      Watch time for inline display in milliseconds for this playback. See
      Media.WatchTime UMA metrics. Only reported for foreground playbacks.
    </summary>
  </metric>
  <metric name="WatchTime.DisplayPictureInPicture">
    <summary>
      Watch time for picture in picture display in milliseconds for this
      playback. See Media.WatchTime UMA metrics. Only reported for foreground
      playbacks.
    </summary>
  </metric>
  <metric name="WatchTime.NativeControlsOff">
    <summary>
      Watch time with no controls in milliseconds for this playback. See
      Media.WatchTime UMA metrics. Only reported for foreground playbacks.
    </summary>
  </metric>
  <metric name="WatchTime.NativeControlsOn">
    <summary>
      Watch time with native controls in milliseconds for this playback. See
      Media.WatchTime UMA metrics. Only reported for foreground playbacks.
    </summary>
  </metric>
</event>

<event name="Media.EME.ApiPromiseRejection">
  <owner>xhwang@chromium.org</owner>
  <owner>media-dev@chromium.org</owner>
  <summary>
    Event recorded when an Encrypted Media Extensions (EME) API promise is
    rejected. In most cases this indicates a failure.
  </summary>
  <metric name="Api" enum="EmeApiType">
    <summary>
      The EME API for which the promise is rejected.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="KeySystem" enum="MediaKeySystem">
    <summary>
      The key system associated with the current CDM.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SystemCode" enum="CdmSystemCode">
    <summary>
      A CDM specific code providing more details about the cause of rejection.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="UseHardwareSecureCodecs" enum="Boolean">
    <summary>
      Whether hardware secure codecs are required for the current CDM.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="Media.EME.CreateMediaKeys">
  <owner>xhwang@chromium.org</owner>
  <owner>media-dev@chromium.org</owner>
  <summary>
    Event recorded when createMediaKeys() is called as part of Encrypted Media
    Extensions (EME) API.
  </summary>
  <metric name="IsAdFrame" enum="Boolean">
    <summary>
      Whether the frame is an ad frame.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="IsCrossOrigin" enum="Boolean">
    <summary>
      Whether the frame is Cross-Origin to the main frame.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="IsTopFrame" enum="Boolean">
    <summary>
      Whether the frame is the main frame.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="KeySystem" enum="MediaKeySystemLegacy">
    <summary>
      The key system associated with this call.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="Media.EME.GetStatusForPolicy">
  <owner>frs@chromium.org</owner>
  <owner>media-dev@chromium.org</owner>
  <summary>
    Event recorded when the EME API GetStatusForPolicy promise is resolved.
  </summary>
  <metric name="IsAdFrame" enum="Boolean">
    <summary>
      Whether the frame is an ad frame. This is not set if the frame is null.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="KeySystem" enum="MediaKeySystem">
    <summary>
      The key system associated with the current CDM.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="MinHdcpVersion" enum="HdcpVersion">
    <summary>
      The minimum HDCP version requested for EME API GetStatusForPolicy.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="UseHardwareSecureCodecs" enum="Boolean">
    <summary>
      Whether hardware secure codecs are required for the current CDM.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="Media.EME.RequestMediaKeySystemAccess">
  <owner>xhwang@chromium.org</owner>
  <owner>media-dev@chromium.org</owner>
  <summary>
    Event recorded when RequestMediaKeySystemAccess() is called as part of
    Encrypted Media Extensions (EME) API.
  </summary>
  <metric name="IsAdFrame" enum="Boolean">
    <summary>
      Whether the frame is an ad frame.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="IsCrossOrigin" enum="Boolean">
    <summary>
      Whether the frame is Cross-Origin to the main frame.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="IsTopFrame" enum="Boolean">
    <summary>
      Whether the frame is the main frame.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="KeySystem" enum="MediaKeySystemLegacy">
    <summary>
      The key system passed in requestMediaKeySystemAccess() call.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="VideoCapabilities" enum="Boolean">
    <summary>
      Whether there are any &quot;videoCapabilities&quot;.
    </summary>
  </metric>
  <metric name="VideoCapabilities.HasEmptyRobustness" enum="Boolean">
    <summary>
      Whether there are any &quot;videoCapabilities&quot; with empty robustness.
    </summary>
  </metric>
  <metric name="VideoCapabilities.HasHwSecureAllRobustness" enum="Boolean">
    <summary>
      Whether there are any &quot;videoCapabilities&quot; with robustness being
      &quot;HW_SECURE_ALL&quot;.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="Media.Engagement.SessionFinished">
  <owner>beccahughes@chromium.org</owner>
  <owner>media-dev@chromium.org</owner>
  <summary>
    The Media Engagement index stores the number of significant media playbacks
    per origin and the number of visits. From that we calculate a Media
    Engagement Score.

    To tweak the scoring function we are logging the total number of significant
    media playbacks, the total number of visits, the calculated engagement score
    and the new number of significant media playbacks that occurred this visit.
  </summary>
  <metric name="Engagement.IsHigh">
    <summary>
      Whether the Media Engagement Service considers the score to be high (we
      are using a two threshold approach so there is one threshold to be
      considered high and another one to lose that status to reduce jitter).
    </summary>
  </metric>
  <metric name="Engagement.IsHigh.Changed">
    <obsolete>
      Deprecated 8/19 as part of https://crbug.com/998685
    </obsolete>
    <summary>
      Whether the IsHigh bit changed during the current session.
    </summary>
  </metric>
  <metric name="Engagement.IsHigh.Changes">
    <obsolete>
      Deprecated 8/19 as part of https://crbug.com/998685
    </obsolete>
    <summary>
      Counts of IsHigh changing (from 0 to 1 or 1 to 0).
    </summary>
  </metric>
  <metric name="Engagement.IsPreloaded">
    <obsolete>
      Deprecated 8/19 as part of https://crbug.com/998685
    </obsolete>
    <summary>
      Whether the origin was preloaded (from the chrome://component) as a high
      engagement origin.
    </summary>
  </metric>
  <metric name="Engagement.Score">
    <summary>
      The calculated Media Engagement score for the current origin. The score is
      calculated by dividing the number of significant media playbacks by the
      number of visits. If the number of visits is below 5 then the score will
      be zero. This score is taken from MediaEngagementService.
    </summary>
  </metric>
  <metric name="Playbacks.AudioContextTotal">
    <obsolete>
      Deprecated 8/19 as part of https://crbug.com/998685
    </obsolete>
    <summary>
      The total number of significant media playbacks on this origin that came
      from WebAudio / AudioContext.
    </summary>
  </metric>
  <metric name="Playbacks.Delta">
    <obsolete>
      Deprecated 8/19 as part of https://crbug.com/998685
    </obsolete>
    <summary>
      The number of significant media playbacks on this origin during this
      session (a visit to an origin on the same tab). A playback is determined
      significant if it meets certain criteria such as a video size of at least
      200x140px, is not muted, is playing, etc.
    </summary>
  </metric>
  <metric name="Playbacks.MediaElementTotal">
    <obsolete>
      Deprecated 8/19 as part of https://crbug.com/998685
    </obsolete>
    <summary>
      The total number of significant media playbacks on this origin that came
      from media elements.
    </summary>
  </metric>
  <metric name="Playbacks.SecondsSinceLast">
    <obsolete>
      Deprecated 8/19 as part of https://crbug.com/998685
    </obsolete>
    <summary>
      The number of seconds between significant media playback on the last visit
      and significant media playback on the current visit. If there was no
      previous visit or significant media playback this visit it will be 0.
    </summary>
  </metric>
  <metric name="Playbacks.Total">
    <summary>
      The total number of significant media playbacks on this origin.
    </summary>
  </metric>
  <metric name="Player.Audible.Delta">
    <summary>
      The number of unique audio/video players on a page that was audible (made
      sound) during a visit.
    </summary>
  </metric>
  <metric name="Player.Audible.Total">
    <obsolete>
      Deprecated 8/19 as part of https://crbug.com/998685
    </obsolete>
    <summary>
      The delta from above but instead of a single visit, the total of all
      deltas for all visits on this origin.
    </summary>
  </metric>
  <metric name="Player.Significant.Delta">
    <summary>
      The number of unique audio/video players on a page that was audible (made
      sound) and considered significant (played for at least 7 seconds) during a
      visit.
    </summary>
  </metric>
  <metric name="Player.Significant.Total">
    <obsolete>
      Deprecated 8/19 as part of https://crbug.com/998685
    </obsolete>
    <summary>
      The delta from above but instead of a single visit, the total of all
      deltas for all visits on this origin.
    </summary>
  </metric>
  <metric name="Visits.Total">
    <summary>
      The total number of visits to this origin.
    </summary>
  </metric>
</event>

<event name="Media.Engagement.ShortPlaybackIgnored">
  <owner>beccahughes@chromium.org</owner>
  <owner>media-dev@chromium.org</owner>
  <summary>
    The Media Engagement index stores the number of significant media playbacks
    per origin and the number of audible players. From that we calculate a Media
    Engagement Score.

    Media with a short playback length is ignored so we are logging any time the
    player is ignored with the length in msec. This will allow us to identify
    whether sites are being penalized or there is abuse and allow us to tweak
    the length considered &quot;short&quot;.
  </summary>
  <metric name="Length"/>
</event>

<event name="Media.Feed.Discover">
  <owner>beccahughes@chromium.org</owner>
  <owner>media-dev@chromium.org</owner>
  <summary>
    Media Feeds are out of band feeds of media recommendations that are fetched
    by the browser. This records when we discover a feed that has been placed in
    a meta tag on a website.
  </summary>
  <metric name="HasMediaFeed">
    <summary>
      Whether the site has a media feed.
    </summary>
  </metric>
</event>

<event name="Media.GlobalMediaControls.ActionButtonPressed">
  <owner>steimel@chromium.org</owner>
  <owner>media-dev@chromium.org</owner>
  <summary>
    Records when a user presses a button in the Global Media Controls. Records
    no more than 100 actions per source per session. Records which button was
    pressed (e.g. play, pause, next track, picture-in-picture).
  </summary>
  <metric name="MediaSessionAction" enum="MediaSessionAction">
    <summary>
      The action of the button that was pressed (e.g. play, pause, next track,
      picture-in-picture).
    </summary>
  </metric>
</event>

<event name="Media.Kaleidoscope.Navigation">
  <obsolete>
    Deprecated as of 2020/12.
  </obsolete>
  <owner>beccahughes@chromium.org</owner>
  <owner>media-dev@chromium.org</owner>
  <summary>
    Kaleidoscope is a media recommendations feature in Chrome. This event is
    recorded when a user selects a media recommendation and there is a
    navigation to the new site from Kaleidoscope.
  </summary>
  <metric name="WasFromKaleidoscope">
    <summary>
      Whether the navigation was from Kaleiodscope.
    </summary>
  </metric>
</event>

<event name="Media.Learning.PredictionRecord">
  <owner>liberato@chromium.org</owner>
  <summary>
    A record of some predicted value vs. an observation. If the prediction is
    for a regression-style task (e.g., &quot;predict a number&quot; rather than
    &quot;predict an enum value&quot;), then the predicted and observed values
    are the numeric values, scaled by default to be in the integer range 0-100.

    The exact scaling used depends on the particular regression problem. Please
    see the LearningTask structure for the task of interest to find out how it
    maps values into the [0, 100] output range.

    A record is created for every prediction separately.

    For example, in the MediaCapabilities experiments, each playback generates a
    record. The predicted / observed values are the ratio of dropped to decoded
    frames, expressed as a percentage scaled to 0-100.
  </summary>
  <metric name="LearningTask">
    <summary>
      The learning task to which this record applies. This is a persistent hash
      of the |name| field in the LearningTask. Presumably, you'll want to
      include only records of a particular task when analyzing results.
    </summary>
  </metric>
  <metric name="ObservedValue">
    <summary>
      Observed value for this sample, scaled into the range [0, 100]. The exact
      scaling factor depends on the particular task.

      MediaCapabilities, for example, reports 100 * percentage_of_dropped_frames
      in this field.
    </summary>
  </metric>
  <metric name="PredictedValue">
    <summary>
      Predicted value for this sample, scaled into the range [0, 100]. The exact
      scaling factor depends on the particular task.

      MediaCapabilities, for example, reports 100 * percentage_of_dropped_frames
      in this field.
    </summary>
  </metric>
  <metric name="TrainingDataSize">
    <summary>
      Number of training examples that were used to train this model.
    </summary>
  </metric>
  <metric name="TrainingDataTotalWeight">
    <summary>
      Total weight of all examples that were used to train this model.
    </summary>
  </metric>
</event>

<event name="Media.SiteMuted" singular="True">
  <owner>steimel@chromium.org</owner>
  <owner>media-dev@chromium.org</owner>
  <summary>
    Event recorded when a website tries to play audio but is muted by the sound
    content setting.
  </summary>
  <metric name="MuteReason">
    <summary>
      Enum value giving the reason the site was muted. Defined as
      |SoundContentSettingObserver::MuteReason|.
    </summary>
  </metric>
</event>

<event name="Media.VideoDecodePerfRecord">
  <owner>chcunningham@chromium.org</owner>
  <owner>media-dev@chromium.org</owner>
  <summary>
    A record of decoding performance metrics from a video playback with the
    given stream characteristics (profile, resolution, fps). Also includes what
    Media Capabilities API would claim for such a stream as a means of assessing
    the API's accuracy.
  </summary>
  <metric name="Perf.ApiWouldClaimIsPowerEfficient">
    <summary>
      Boolean signaling whether MediaCapabilities would classify streams with
      these characteristics as power efficient prior to considering this latest
      record. MediaCapabilities prediction is accurate when this value matches
      RecordIsPowerEfficient.
    </summary>
  </metric>
  <metric name="Perf.ApiWouldClaimIsSmooth">
    <summary>
      Boolean signaling whether MediaCapabilities would classify streams with
      these characteristics as smooth prior to considering this latest record.
      MediaCapabilities prediction is accurate when this value matches
      RecordIsSmooth.
    </summary>
  </metric>
  <metric name="Perf.PastVideoFramesDecoded">
    <summary>
      Integer count of past video frames decoded for the given video type.
    </summary>
  </metric>
  <metric name="Perf.PastVideoFramesDropped">
    <summary>
      Integer count of past video frames dropped for the given video type.
    </summary>
  </metric>
  <metric name="Perf.PastVideoFramesPowerEfficient">
    <summary>
      Integer count of past video frames power efficient for the given video
      type.
    </summary>
  </metric>
  <metric name="Perf.RecordIsPowerEfficient">
    <summary>
      Boolean signaling whether MediaCapabilities would classify this isolated
      playback record as power efficient.
    </summary>
  </metric>
  <metric name="Perf.RecordIsSmooth">
    <summary>
      Boolean signaling whether MediaCapabilities would classify this isolated
      playback record as smooth.
    </summary>
  </metric>
  <metric name="Perf.VideoFramesDecoded">
    <summary>
      Integer count of the video frames decoded in this record.
    </summary>
  </metric>
  <metric name="Perf.VideoFramesDropped">
    <summary>
      Integer count of the video frames dropped in this record. Should not
      exceed VideoFramesDecoded.
    </summary>
  </metric>
  <metric name="Perf.VideoFramesPowerEfficient">
    <summary>
      Integer count of the video frames decoded via power efficient means in
      this record. Should not exceed VideoFramesDecoded.
    </summary>
  </metric>
  <metric name="Video.CodecProfile">
    <summary>
      media::VideoCodecProfile enum value. Can be VIDEO_CODEC_PROFILE_UNKNOWN if
      we don't know the video codec.
    </summary>
  </metric>
  <metric name="Video.EME.KeySystem" enum="MediaKeySystem">
    <summary>
      Name of the KeySystem used during for an encrypted (EME) playback. Will be
      unset when EME is not used.
    </summary>
  </metric>
  <metric name="Video.EME.UseHwSecureCodecs">
    <summary>
      Boolean indicating whether content decryption module (CDM) was configured
      to use hardware secure decoding. May be true or false for EME playbacks.
      Will be unset for non-EME playbacks.
    </summary>
  </metric>
  <metric name="Video.FramesPerSecond">
    <summary>
      Integer representing video frames per second. This is the cadence of video
      frames as described by stream timestamps multiplied by
      HTMLMediaELement.playbackRate.
    </summary>
  </metric>
  <metric name="Video.InTopFrame">
    <summary>
      Flag indicating whether the record comes from the top frame or some inner
      frame. For privacy, metrics from inner frames are recorded with the top
      frame's origin, so this flag helps separate top frame vs. embedded
      playbacks.
    </summary>
  </metric>
  <metric name="Video.NaturalHeight">
    <summary>
      Integer representing height of video natural size.
    </summary>
  </metric>
  <metric name="Video.NaturalWidth">
    <summary>
      Integer representing width of video natural size.
    </summary>
  </metric>
  <metric name="Video.PlayerID">
    <summary>
      ID which corresponds to a given WebMediaPlayerImpl instance. May be linked
      with Media.WebMediaPlayerState events to understand playback more deeply.
    </summary>
  </metric>
</event>

<event name="Media.WatchTime">
  <obsolete>
    Deprecated 8/2017 in favor Media.BasicPlayback
  </obsolete>
  <owner>dalecurtis@chromium.org</owner>
  <summary>
    Watch time is defined as the amount of elapsed media time for audio+video
    media aggregated per player instance. A minimum of 7 seconds of unmuted,
    foreground media must be watched to start watch time monitoring. Watch time
    is checked on a regular basis and reported upon one of the stop events
    mentioned below or at player destruction if none occur prior.

    Any one of paused, hidden, or muted is sufficient to stop watch time metric
    reports. Each of these has a hysteresis where if the state change is undone
    within some time, the watch time will be counted as uninterrupted.

    Power events (on/off battery power) have a similar hysteresis, but unlike
    the aforementioned properties, will not stop metric collection.

    Native controls events have a similar behavior than power events.

    Each seek event will result in a new watch time metric being started and the
    old metric finalized as accurately as possible.
  </summary>
  <metric name="Audio.AC"/>
  <metric name="Audio.All"/>
  <metric name="Audio.Battery"/>
  <metric name="Audio.EME"/>
  <metric name="Audio.MSE"/>
  <metric name="Audio.NativeControlsOff"/>
  <metric name="Audio.NativeControlsOn"/>
  <metric name="Audio.SRC"/>
  <metric name="AudioVideo.AC"/>
  <metric name="AudioVideo.All"/>
  <metric name="AudioVideo.Background.AC"/>
  <metric name="AudioVideo.Background.All"/>
  <metric name="AudioVideo.Background.Battery"/>
  <metric name="AudioVideo.Background.EME"/>
  <metric name="AudioVideo.Background.MSE"/>
  <metric name="AudioVideo.Background.SRC"/>
  <metric name="AudioVideo.Battery"/>
  <metric name="AudioVideo.DisplayFullscreen"/>
  <metric name="AudioVideo.DisplayInline"/>
  <metric name="AudioVideo.DisplayPictureInPicture"/>
  <metric name="AudioVideo.EME"/>
  <metric name="AudioVideo.MSE"/>
  <metric name="AudioVideo.NativeControlsOff"/>
  <metric name="AudioVideo.NativeControlsOn"/>
  <metric name="AudioVideo.SRC"/>
</event>

<event name="Media.WebAudio.AudioContext.AudibleTime">
  <owner>hongchan@chromium.org</owner>
  <owner>mjwilson@chromium.org</owner>
  <owner>webaudio-dev@chromium.org</owner>
  <summary>
    Records the AudioContext audible time information.
  </summary>
  <metric name="AudibleTime">
    <summary>
      Audible time in milliseconds for this event.
    </summary>
  </metric>
  <metric name="IsMainFrame">
    <summary>
      Indicates whether the event is fired from main frame.
    </summary>
  </metric>
</event>

<event name="Media.WebMediaPlayerState">
  <owner>dalecurtis@chromium.org</owner>
  <owner>media-dev@chromium.org</owner>
  <summary>
    Final state of WebMediaPlayerImpl instance. Records only immutable playback
    properties. Contains a PlaybackID which links to Media.BasicPlayback events.
  </summary>
  <metric name="AudioEncryptionType" enum="MediaEncryptionType">
    <summary>
      Encryption type of the audio stream such as whether audio is encrypted and
      if so whether it has clear lead.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="ContainerName">
    <summary>
      media::container_names::MediaContainerName enum value. Only recorded for
      !IsMSE src=URL playbacks, this is the container of the media being played
      back; E.g., mp4, avi, mp3, etc.
    </summary>
  </metric>
  <metric name="FinalPipelineStatus" enum="PipelineStatus">
    <summary>
      media::PipelineStatus enum value. Always 0 if the playback succeeded; all
      other values indicate the playback ended in an error.
    </summary>
  </metric>
  <metric name="IsEME">
    <summary>
      Boolean value indicating if this event is for an EME playback. Note: EME
      can be attached anytime during the lifecycle of a WebMediaPlayerImpl, but
      once attached can't be removed.
    </summary>
  </metric>
  <metric name="IsHardwareSecure" enum="Boolean">
    <summary>
      Boolean value indicating whether the EME playback is using hardware secure
      pipeline. For clear playback, this will always be false.
    </summary>
  </metric>
  <metric name="IsMSE">
    <summary>
      Boolean value indicating if this event is for an MSE playback. If false it
      means this was a SRC playback.
    </summary>
  </metric>
  <metric name="IsTopFrame">
    <summary>
      Flag indicating whether the report comes from the top frame or some inner
      frame. For privacy, metrics from inner frames are recorded with the top
      frame's origin, so this flag helps separate top frame vs. embedded
      playbacks.
    </summary>
  </metric>
  <metric name="KeySystem" enum="MediaKeySystem">
    <summary>
      For EME playback, this is the key system used. For clear playback, this
      will always be the default value 0 (kUnknownKeySystemForUkm).
    </summary>
  </metric>
  <metric name="PlayerID">
    <summary>
      ID which corresponds to a given WebMediaPlayerImpl instance. May be linked
      with Media.BasicPlayback events to understand a playback more deeply.
    </summary>
  </metric>
  <metric name="RendererType" enum="MediaRendererType">
    <summary>
      Type of media::Renderer used for the playback. In most cases we do not
      support dynamically changing RendererType during one playback.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="TimeToFirstFrame">
    <summary>
      Time in milliseconds from when WebMediaPlayerImpl starts loading until the
      first video frame has been shown.
    </summary>
  </metric>
  <metric name="TimeToMetadata">
    <summary>
      Time in milliseconds from when WebMediaPlayerImpl starts loading until
      metadata is known.
    </summary>
  </metric>
  <metric name="TimeToPlayReady">
    <summary>
      Time in milliseconds from when WebMediaPlayerImpl starts loading until it
      has buffered enough to start playback.
    </summary>
  </metric>
  <metric name="URLScheme">
    <summary>
      media::mojom::MediaURLScheme enum value. Only recorded for !IsMSE src=URL
      playbacks, this is the scheme of that URL; E.g., http, https, filesystem,
      etc.
    </summary>
  </metric>
  <metric name="VideoEncryptionType" enum="MediaEncryptionType">
    <summary>
      Encryption type of the video stream such as whether video is encrypted and
      if so whether it has clear lead.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="MediaRouter.CastWebSenderExtensionLoadUrl" singular="True">
  <owner>rwkeane@chromium.org</owner>
  <owner>openscreen-eng@google.com</owner>
  <summary>
    Records that the a resource has been loaded from the Media Router Component
    Extension.
  </summary>
  <metric name="HasOccurred" enum="Boolean">
    <summary>
      A boolean signaling that the event has occurred; only records true values.
    </summary>
  </metric>
</event>

<event name="MediaRouter.SiteInitiatedMirroringStarted">
  <owner>muyaoxu@google.com</owner>
  <owner>openscreen-eng@google.com</owner>
  <summary>
    Recorded whenever user starts a site-initiated mirroring session via Media
    Router.
  </summary>
  <metric name="AllowAudioCapture" enum="BooleanAllowed">
    <summary>
      Whether audio capture is allowed in the cast session. If allowed, audio
      playback will happen on the receiver side. If not allowed, audio playback
      will happen on the sender side.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="MediaRouter.TabMirroringStarted">
  <owner>takumif@chromium.org</owner>
  <owner>openscreen-eng@google.com</owner>
  <summary>
    Recorded whenever user starts a tab mirroring session via Media Router.
  </summary>
  <metric name="AudioState" enum="WebContentsAudioState">
    <summary>
      The audio playback state of the WebContents at the start of the tab
      mirroring session.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="Memory.Experimental">
  <owner>erikchen@chromium.org</owner>
  <owner>ssid@chromium.org</owner>
  <summary>
    Metrics associated with memory consumption, in MB.
  </summary>
  <metric name="ArrayBuffer">
    <summary>
      Measure of memory consumed by Array Buffer.
    </summary>
  </metric>
  <metric name="BlinkGC">
    <summary>
      Measure of memory consumed by Oilpan.
    </summary>
  </metric>
  <metric name="BlinkGC.AllocatedObjects">
    <summary>
      Measure of memory consumed by live allocations made from Oilpan.
    </summary>
  </metric>
  <metric name="CanvasResourceProvider.SkSurface">
    <summary>
      Measure of memory used due to CanvasResourceProvider's SkSurface.
    </summary>
  </metric>
  <metric name="CommandBuffer">
    <summary>
      Measure of memory consumed by GL command buffer.
    </summary>
  </metric>
  <metric name="Discardable">
    <summary>
      Measure of memory consumed by Discardable memory service.
    </summary>
  </metric>
  <metric name="DownloadService">
    <summary>
      Measure of memory used by download service.
    </summary>
  </metric>
  <metric name="Extensions.ValueStore">
    <summary>
      Measure of memory consumed by Key Value Store databases of extensions.
    </summary>
  </metric>
  <metric name="FontCaches">
    <summary>
      Measure of memory used by font platform and shape caches in renderer
      process.
    </summary>
  </metric>
  <metric name="GpuMemory">
    <summary>
      Measure of GPU memory used by Chrome.
    </summary>
  </metric>
  <metric name="History">
    <summary>
      Approximate measure of memory consumed by History service.
    </summary>
  </metric>
  <metric name="IsVisible">
    <summary>
      Indicates whether the tab is visible or not at the time of metric
      collection.
    </summary>
  </metric>
  <metric name="JavaHeap">
    <summary>
      Measure of memory consumed by java heap on Android.
    </summary>
  </metric>
  <metric name="LevelDatabase">
    <summary>
      Measure of memory consumed by unaccounted level databases.
    </summary>
  </metric>
  <metric name="Malloc">
    <summary>
      Measure of memory allocated by malloc, that is not classified by other
      metrics.
    </summary>
  </metric>
  <metric name="Malloc.AllocatedObjects">
    <summary>
      Measure of total memory used by objects allocated using malloc.
    </summary>
  </metric>
  <metric name="Net">
    <obsolete>
      Deprecated as of 09/2021.
    </obsolete>
    <summary>
      Measure of memory allocated by network sockets and caches.
    </summary>
  </metric>
  <metric name="Net.UrlRequestContext">
    <obsolete>
      Deprecated as of 09/2021.
    </obsolete>
    <summary>
      Measure of memory allocated by all network requests.
    </summary>
  </metric>
  <metric name="NumberOfAdSubframes">
    <summary>
      The number of ad subframes that the associated renderer owns.
    </summary>
  </metric>
  <metric name="NumberOfArrayBufferContents">
    <summary>
      The number of arraybuffer contents that the associated renderer owns.
    </summary>
  </metric>
  <metric name="NumberOfCallsInDetachedWindowByClosing">
    <obsolete>
      Deprecated as of 01/2020.
    </obsolete>
    <summary>
      The number of function calls in a window detached by closing/removal.
    </summary>
  </metric>
  <metric name="NumberOfCallsInDetachedWindowByClosing_After10sSinceDetaching">
    <obsolete>
      Deprecated as of 01/2020.
    </obsolete>
    <summary>
      The number of function calls in a window detached by closing/removal, that
      happened at least 10 seconds after detaching.
    </summary>
  </metric>
  <metric name="NumberOfCallsInDetachedWindowByClosing_After1minSinceDetaching">
    <obsolete>
      Deprecated as of 01/2020.
    </obsolete>
    <summary>
      The number of function calls in a window detached by closing/removal, that
      happened at least 1 minute after detaching.
    </summary>
  </metric>
  <metric name="NumberOfCallsInDetachedWindowByNavigation">
    <obsolete>
      Deprecated as of 01/2020.
    </obsolete>
    <summary>
      The number of function calls in a window detached by navigating away.
    </summary>
  </metric>
  <metric
      name="NumberOfCallsInDetachedWindowByNavigation_After10sSinceDetaching">
    <obsolete>
      Deprecated as of 01/2020.
    </obsolete>
    <summary>
      The number of function calls in a window detached by navigating away, that
      happened at least 10 seconds after detaching.
    </summary>
  </metric>
  <metric
      name="NumberOfCallsInDetachedWindowByNavigation_After1minSinceDetaching">
    <obsolete>
      Deprecated as of 01/2020.
    </obsolete>
    <summary>
      The number of function calls in a window detached by navigating away, that
      happened at least 1 minute after detaching.
    </summary>
  </metric>
  <metric name="NumberOfCallsInDetachedWindowByOtherReason">
    <obsolete>
      Deprecated as of 01/2020.
    </obsolete>
    <summary>
      The number of function calls in a window detached by another reason.
    </summary>
  </metric>
  <metric
      name="NumberOfCallsInDetachedWindowByOtherReason_After10sSinceDetaching">
    <obsolete>
      Deprecated as of 01/2020.
    </obsolete>
    <summary>
      The number of function calls in a window detached by another reason, that
      happened at least 10 seconds after detaching.
    </summary>
  </metric>
  <metric
      name="NumberOfCallsInDetachedWindowByOtherReason_After1minSinceDetaching">
    <obsolete>
      Deprecated as of 01/2020.
    </obsolete>
    <summary>
      The number of function calls in a window detached by another reason, that
      happened at least 1 minute after detaching.
    </summary>
  </metric>
  <metric name="NumberOfDetachedScriptStates">
    <summary>
      The number of detached ScriptState that the associated renderer owns.
    </summary>
  </metric>
  <metric name="NumberOfDocuments">
    <summary>
      The number of documents that the associated renderer owns.
    </summary>
  </metric>
  <metric name="NumberOfExtensions">
    <summary>
      The number of extensions that are served from the associated renderer
      process.
    </summary>
  </metric>
  <metric name="NumberOfFrames">
    <summary>
      The number of frames that the associated renderer owns.
    </summary>
  </metric>
  <metric name="NumberOfLayoutObjects">
    <summary>
      The number of layout objects that the associated renderer owns.
    </summary>
  </metric>
  <metric name="NumberOfMojoHandles">
    <summary>
      The number of mojo handles stored in HandleTable.
    </summary>
  </metric>
  <metric name="NumberOfNodes">
    <summary>
      The number of nodes that the associated renderer owns.
    </summary>
  </metric>
  <metric name="NumberOfWebMediaPlayers">
    <summary>
      The number of web media players in the associated renderer.
    </summary>
  </metric>
  <metric name="OmniboxSuggestions">
    <summary>
      Measure of memory used due to URL indexing and autocomplete suggestions.
    </summary>
  </metric>
  <metric name="PartitionAlloc">
    <summary>
      Measure of memory allocated by PartitionAlloc allocator.
    </summary>
  </metric>
  <metric name="PartitionAlloc.AllocatedObjects">
    <summary>
      Measure of total memory used by objects allocated using PartitionAlloc.
    </summary>
  </metric>
  <metric name="PartitionAlloc.Partitions.ArrayBuffer">
    <summary>
      Measure of memory used by Array Buffer partition in PartitionAlloc.
    </summary>
  </metric>
  <metric name="PartitionAlloc.Partitions.Buffer">
    <summary>
      Measure of memory used by Buffer partition in PartitionAlloc.
    </summary>
  </metric>
  <metric name="PartitionAlloc.Partitions.FastMalloc">
    <summary>
      Measure of memory used by Fast Malloc partition in PartitionAlloc.
    </summary>
  </metric>
  <metric name="PartitionAlloc.Partitions.Layout">
    <summary>
      Measure of memory used by Layout partition in PartitionAlloc.
    </summary>
  </metric>
  <metric name="PrivateMemoryFootprint">
    <summary>
      Measure of total private memory consumed by process.
    </summary>
    <aggregation>
      <history>
        <index fields="metrics.ProcessType"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="PrivateSwapFootprint">
    <summary>
      Measure of private swap memory consumed by a process. Available on Linux
      and Android.
    </summary>
  </metric>
  <metric name="ProcessType">
    <summary>
      Type of process (e.g. browser, renderer, GPU --- see
      services/resource_coordinator/public/mojom/memory_instrumentation/memory_instrumentation.mojom)
      of associated metrics.
    </summary>
    <aggregation>
      <history>
        <statistics export="False">
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Resident">
    <summary>
      Size of process' working set.
    </summary>
  </metric>
  <metric name="SharedMemoryFootprint">
    <summary>
      Measure of total shared memory consumed by process.
    </summary>
  </metric>
  <metric name="SiteStorage">
    <summary>
      Measure of memory used due to web storage APIs in browser process.
    </summary>
  </metric>
  <metric name="SiteStorage.BlobStorage">
    <summary>
      Measure of memory used by in-memory blob file API in browser process.
    </summary>
  </metric>
  <metric name="SiteStorage.IndexDB">
    <summary>
      Measure of memory used due to IndexedDB API in browser process.
    </summary>
  </metric>
  <metric name="SiteStorage.LocalStorage">
    <summary>
      Measure of memory used due to Local Storage API in browser process.
    </summary>
  </metric>
  <metric name="SiteStorage.SessionStorage">
    <summary>
      Measure of memory used due to Session Storage API in browser process.
    </summary>
  </metric>
  <metric name="Skia">
    <summary>
      Measure of memory used by Skia.
    </summary>
  </metric>
  <metric name="Skia.SkGlyphCache">
    <summary>
      Measure of memory used by Skia Glyph Cache.
    </summary>
  </metric>
  <metric name="Skia.SkResourceCache">
    <summary>
      Measure of memory used by Skia Resource Cache.
    </summary>
  </metric>
  <metric name="Sqlite">
    <summary>
      Measure of memory used by all sqlite databases.
    </summary>
  </metric>
  <metric name="Sync">
    <summary>
      Measure of memory used by Sync storage.
    </summary>
  </metric>
  <metric name="TabRestore">
    <summary>
      Approximate measure of memory used by Tab restore service.
    </summary>
  </metric>
  <metric name="TimeSinceLastNavigation">
    <summary>
      The time in seconds since the Tab navigated. Only emitted for tabs that
      are not sharing a process.
    </summary>
  </metric>
  <metric name="TimeSinceLastVisibilityChange">
    <summary>
      The time in seconds since the Tab changed visibility. Only emitted for
      tabs that are not sharing a process.
    </summary>
  </metric>
  <metric name="Total2.PrivateMemoryFootprint">
    <summary>
      Measure of total private memory consumed by all processes.
    </summary>
  </metric>
  <metric name="Total2.SharedMemoryFootprint">
    <summary>
      Measure of total shared memory consumed by all processes.
    </summary>
  </metric>
  <metric name="UI">
    <summary>
      Measure of memory used by Android UI bitmaps.
    </summary>
  </metric>
  <metric name="Uptime">
    <summary>
      Process uptime.
    </summary>
  </metric>
  <metric name="V8">
    <summary>
      Measure of memory consumed by V8.
    </summary>
    <aggregation>
      <history>
        <index fields="metrics.ProcessType"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="V8.AllocatedObjects">
    <summary>
      Measure of memory consumed by live objects in V8.
    </summary>
    <aggregation>
      <history>
        <index fields="metrics.ProcessType"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="V8.Main">
    <summary>
      Measure of memory consumed by the main isolate of V8.
    </summary>
  </metric>
  <metric name="V8.Main.AllocatedObjects">
    <summary>
      Measure of memory consumed by live objects in the main isolate of V8.
    </summary>
  </metric>
  <metric name="V8.Main.GlobalHandles">
    <summary>
      Measure of memory consumed by global handles in V8.
    </summary>
  </metric>
  <metric name="V8.Main.GlobalHandles.AllocatedObjects">
    <summary>
      Measure of memory consumed by used global handles in V8.
    </summary>
  </metric>
  <metric name="V8.Main.Heap">
    <summary>
      Measure of memory consumed by the main heap of V8.
    </summary>
  </metric>
  <metric name="V8.Main.Heap.AllocatedObjects">
    <summary>
      Measure of memory consumed by live objects in the main heap of V8.
    </summary>
  </metric>
  <metric name="V8.Main.Heap.CodeLargeObjectSpace">
    <summary>
      Measure of memory consumed by the code large object space of the main heap
      of V8.
    </summary>
  </metric>
  <metric name="V8.Main.Heap.CodeLargeObjectSpace.AllocatedObjects">
    <summary>
      Measure of memory consumed by live objects in the code large object space
      of the main heap of V8.
    </summary>
  </metric>
  <metric name="V8.Main.Heap.CodeSpace">
    <summary>
      Measure of memory consumed by the code space of the main heap of V8.
    </summary>
  </metric>
  <metric name="V8.Main.Heap.CodeSpace.AllocatedObjects">
    <summary>
      Measure of memory consumed by live objects in the code space of the main
      heap of V8.
    </summary>
  </metric>
  <metric name="V8.Main.Heap.LargeObjectSpace">
    <summary>
      Measure of memory consumed by the large object space of the main heap of
      V8.
    </summary>
  </metric>
  <metric name="V8.Main.Heap.LargeObjectSpace.AllocatedObjects">
    <summary>
      Measure of memory consumed by live objects in the large object space of
      the main heap of V8.
    </summary>
  </metric>
  <metric name="V8.Main.Heap.MapSpace">
    <summary>
      Measure of memory consumed by the map space of the main heap of V8.
    </summary>
  </metric>
  <metric name="V8.Main.Heap.MapSpace.AllocatedObjects">
    <summary>
      Measure of memory consumed by live objects in the map space of the main
      heap of V8.
    </summary>
  </metric>
  <metric name="V8.Main.Heap.NewLargeObjectSpace">
    <summary>
      Measure of memory consumed by the new large object space of the main heap
      of V8.
    </summary>
  </metric>
  <metric name="V8.Main.Heap.NewLargeObjectSpace.AllocatedObjects">
    <summary>
      Measure of memory consumed by live objects in the new large object space
      of the main heap of V8.
    </summary>
  </metric>
  <metric name="V8.Main.Heap.NewSpace">
    <summary>
      Measure of memory consumed by the new space of the main heap of V8.
    </summary>
  </metric>
  <metric name="V8.Main.Heap.NewSpace.AllocatedObjects">
    <summary>
      Measure of memory consumed by live objects in the new space of the main
      heap of V8.
    </summary>
  </metric>
  <metric name="V8.Main.Heap.OldSpace">
    <summary>
      Measure of memory consumed by the old space of the main heap of V8.
    </summary>
  </metric>
  <metric name="V8.Main.Heap.OldSpace.AllocatedObjects">
    <summary>
      Measure of memory consumed by live objects in the old space of the main
      heap of V8.
    </summary>
  </metric>
  <metric name="V8.Main.Heap.ReadOnlySpace">
    <summary>
      Measure of memory consumed by the read-only space of the main heap of V8.
    </summary>
  </metric>
  <metric name="V8.Main.Heap.ReadOnlySpace.AllocatedObjects">
    <summary>
      Measure of memory consumed by live objects in the read-only space of the
      main heap of V8.
    </summary>
  </metric>
  <metric name="V8.Main.Malloc">
    <summary>
      Measure of memory allocated by malloc in the main isolate of V8.
    </summary>
  </metric>
  <metric name="V8.Workers">
    <summary>
      Measure of memory consumed by worker isolates of V8.
    </summary>
  </metric>
  <metric name="V8.Workers.AllocatedObjects">
    <summary>
      Measure of memory consumed by live objects in worker isolates of V8.
    </summary>
  </metric>
  <metric name="WebCache">
    <summary>
      Measure of memory consumed by all resources in Blink Web Cache.
    </summary>
  </metric>
  <metric name="WebCache.CSSStylesheetResources">
    <summary>
      Measure of memory consumed by CSS Stylesheet resources in Blink Web Cache.
    </summary>
  </metric>
  <metric name="WebCache.EncodedSizeDuplicatedInDataUrls">
    <summary>
      Measure of memory consumed by data URLs of Image resources in Blink Web
      Cache.
    </summary>
  </metric>
  <metric name="WebCache.FontResources">
    <summary>
      Measure of memory consumed by Font resources in Blink Web Cache.
    </summary>
  </metric>
  <metric name="WebCache.ImageResources">
    <summary>
      Measure of memory consumed by Image resources in Blink Web Cache.
    </summary>
  </metric>
  <metric name="WebCache.OtherResources">
    <summary>
      Measure of memory consumed by other resources in Blink Web Cache.
    </summary>
  </metric>
  <metric name="WebCache.ScriptResources">
    <summary>
      Measure of memory consumed by Script resources in Blink Web Cache.
    </summary>
  </metric>
  <metric name="WebCache.V8CodeCache">
    <summary>
      Measure of memory consumed by V8 code cache held by Script resources in
      Blink Web Cache.
    </summary>
  </metric>
  <metric name="WebCache.XSLStylesheetResources">
    <summary>
      Measure of memory consumed by XSL Stylesheet resources in Blink Web Cache.
    </summary>
  </metric>
  <metric name="WebMediaPlayer.Audio">
    <summary>
      Measure of total memory used by media/webmediaplayer/audio.
    </summary>
  </metric>
  <metric name="WebMediaPlayer.DataSource">
    <summary>
      Measure of total memory used by media/webmediaplayer/data_source.
    </summary>
  </metric>
  <metric name="WebMediaPlayer.Demuxer">
    <summary>
      Measure of total memory used by media/webmediaplayer/demuxer.
    </summary>
  </metric>
  <metric name="WebMediaPlayer.Video">
    <summary>
      Measure of total memory used by media/webmediaplayer/video.
    </summary>
  </metric>
</event>

<event name="Memory.TabFootprint">
  <owner>tommckee@chromium.org</owner>
  <summary>
    Measure of memory used by the processes that host an instance of a tab.
    Intended as a high-level metric for analyzing effective memory use of
    individual sites.
  </summary>
  <metric name="MainFrameProcessPMF">
    <summary>
      Measure of private memory, in MB, consumed by the render process dedicated
      to hosting the main frame. Undefined if the main frame is hosted by a
      render process used by other tabs. If this is undefined, TabPMF will be
      undefined.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SubFrameProcessPMF.Excluded">
    <summary>
      Number of render processes that were blocked from contributing to
      SubFrameProcessPMF.Total. A process can have its contribution blocked if
      the process has responsibilities outside the scope of the relevant tab. If
      this is non-zero, TabPMF will be undefined.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SubFrameProcessPMF.Included">
    <summary>
      Number of render processes that contributed to SubFrameProcessPMF.Total.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SubFrameProcessPMF.Total">
    <summary>
      Measure of total private memory, in MB, consumed by the render processes
      dedicated to hosting sub-frames of the tab. Note that, if a render process
      hosts frames of other tabs, it isn't considered to be 'dedicated' and so
      it doesn't contribute to this total.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="TabPMF">
    <summary>
      Measure of private memory, in MB, consumed by all render processes
      dedicated to hosting some part of a tab. Undefined if there are processes
      responsible for hosting parts of this tab while hosting parts of other
      tabs.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="MixedContentAutoupgrade.ResourceRequest">
  <owner>carlosil@chromium.org</owner>
  <summary>
    Status and Network error or HTTP response code for a resource request that
    was autoupgraded to HTTPS as part of the mixed content autoupgrade
    experiment.
  </summary>
  <metric name="Code">
    <summary>
      The HTTP response or network error code for an autoupgraded request.
    </summary>
  </metric>
  <metric name="Status">
    <summary>
      An enum with 0 representing started, 1 failed, and 2 response received.
    </summary>
  </metric>
</event>

<event name="MobileFriendliness" singular="True">
  <owner>kumagi@google.com</owner>
  <owner>gaul@google.com</owner>
  <metric name="AllowUserZoom" enum="Boolean">
    <summary>
      Whether the page allows the user to zoom in/out.
    </summary>
  </metric>
  <metric name="BadTapTargetsRatio">
    <obsolete>
      Deprecated 12/2022 in favor of MobileFriendliness.TappedBadTargets.
    </obsolete>
    <summary>
      Percentage of tap targets whose center position is within another tap
      target (expanded by a margin). The detail of the algorithm is
      go/bad-tap-target-ukm. If evaluation time budget exceeded, this will be is
      -2.
    </summary>
  </metric>
  <metric name="SmallTextRatio">
    <summary>
      Percentage of small font text area in total text area.
    </summary>
  </metric>
  <metric name="TextContentOutsideViewportPercentage">
    <summary>
      Percentage of pixels of text and images horizontally outside the viewport,
      relative to the frame width.
    </summary>
  </metric>
  <metric name="ViewportDeviceWidth" enum="Boolean">
    <summary>
      Whether the width of the viewport specified as device-width or not.
    </summary>
  </metric>
  <metric name="ViewportHardcodedWidth">
    <summary>
      Specified hardcoded viewport width in CSS pixels.
    </summary>
  </metric>
  <metric name="ViewportInitialScaleX10">
    <summary>
      Specified initial viewport scaling multiplied by 10. 1 means 0.1, 100
      means 10. [1-100].
    </summary>
  </metric>
</event>

<event name="MobileFriendliness.TappedBadTargets">
  <owner>kumagi@google.com</owner>
  <owner>gaul@google.com</owner>
  <metric name="CloseDisplayEdge" enum="Boolean">
    <summary>
      The distance from the center position of tapped target to display's edge
      is less than 5mm.
    </summary>
  </metric>
  <metric name="HighlyZoomed" enum="Boolean">
    <summary>
      Whether the page is manually 100%+ zoomed when tapped.
    </summary>
  </metric>
  <metric name="TooClose" enum="Boolean">
    <summary>
      Whether the center of the tapped tap target is close less than 5mm to
      other tap target's edge.
    </summary>
  </metric>
  <metric name="TooSmall" enum="Boolean">
    <summary>
      Whether the tapped tap target is small as both width and height is less
      than 7mm.
    </summary>
  </metric>
  <metric name="Zoomed" enum="Boolean">
    <summary>
      Whether the page is manually 20%+ zoomed when tapped.
    </summary>
  </metric>
</event>

<event name="MobileMenu.DirectShare">
  <owner>sayman@chromium.org</owner>
  <summary>
    User pressed 'Share' in the app menu. The intent most recently used to share
    was invoked directly. See also MobileMenu.Share.
  </summary>
  <metric name="HasOccurred" enum="Boolean">
    <summary>
      A boolean signaling that the event has occurred; only records true values.
    </summary>
  </metric>
</event>

<event name="MobileMenu.FindInPage">
  <owner>frechette@chromium.org</owner>
  <summary>
    User pressed 'Find in page' in the app menu.
  </summary>
  <metric name="HasOccurred" enum="Boolean">
    <summary>
      A boolean signaling that the event has occurred (typically only records
      true values).
    </summary>
  </metric>
</event>

<event name="MobileMenu.Share">
  <owner>sayman@chromium.org</owner>
  <summary>
    User pressed 'Share' in the app menu. A picker was shown. See also
    MobileMenu.DirectShare.
  </summary>
  <metric name="HasOccurred" enum="Boolean">
    <summary>
      A boolean signaling that the event has occurred; only records true values.
    </summary>
  </metric>
</event>

<event name="Navigation.IDNA2008Transition" singular="True">
  <owner>meacer@google.com</owner>
  <owner>chrome-trusty-transport@google.com</owner>
  <summary>
    Recorded upon main frame navigations to hostnames that contain characters
    that are treated differently between IDNA 2003 and IDNA 2008, aka deviation
    characters. Ignores reload navigations.
  </summary>
  <metric name="Character" enum="IDNA2008DeviationCharacter">
    <summary>
      The deviation character in the URLs eTLD+1. Chrome's URL parsing code
      normalizes deviation characters so the characters don't appear in the
      recorded URL. This is recorded to make the deviation character
      identification simpler.
    </summary>
  </metric>
</event>

<event name="Navigation.ReceivedResponse">
  <owner>miketaylr@chromium.org</owner>
  <owner>potassium-katabolism@google.com</owner>
  <summary>
    Recorded when the navigation receives a response from the networking layer.
    Only recorded for main frames (i.e. top-level frames).
  </summary>
  <metric name="HasAcceptCHFrame">
    <summary>
      A boolean value representing whether the navigation included the
      processing of an ACCEPT_CH ALPS frame.
    </summary>
  </metric>
  <metric name="NavigationFirstResponseLatency">
    <summary>
      The duration (in milliseconds) for how long it took from the time the
      navigation loader is created to the time the navigation loader receives
      the response from the networking layer.
    </summary>
  </metric>
</event>

<event name="NavigationPredictorAnchorElementMetrics">
  <owner>ryansturm@chromium.org</owner>
  <summary>
    Metrics that describe an anchor element's data. This event is emitted at
    most 10 times per page load, once for each of the top n URLs on a page, and
    the order of the events is randomized. If there is no nth anchor element, no
    value is returned.
  </summary>
  <metric name="AnchorIndex">
    <summary>
      The index of the clicked-on anchor element in the tracked list.
    </summary>
  </metric>
  <metric name="BucketedPathHash">
    <summary>
      The anchor element's href URL path is hashed, then bucketed using 10
      different buckets. The bucket ({0, 1, ..., 9}) the hash falls into is
      logged in this field.
    </summary>
  </metric>
  <metric name="ContainsImage">
    <summary>
      1 if the anchor element contains an image.
    </summary>
  </metric>
  <metric name="FontSize">
    <summary>
      The bucketed font size of the anchor element, according to its computed
      style. 1 corresponds to a pixel font size in [0, 10), 2 corresponds to a
      fonts size in [10, 18) and 3 is logged when the font size is 18 pixels or
      larger.
    </summary>
  </metric>
  <metric name="HasTextSibling">
    <summary>
      1 if the anchor element has an immediate text sibling, 0 otherwise.
    </summary>
  </metric>
  <metric name="IsBold">
    <summary>
      1 if the anchor's computed style's font-weight is greater than 500, 0
      otherwise.
    </summary>
  </metric>
  <metric name="IsInIframe">
    <summary>
      1 if the anchor element is in an iframe.
    </summary>
  </metric>
  <metric name="IsURLIncrementedByOne">
    <summary>
      1 if the anchor element's target URL and the document's source URL only
      differ by one number, and the target URL increments that number in the
      source URL by 1.
    </summary>
  </metric>
  <metric name="NavigationStartToLinkLoggedMs">
    <summary>
      The time in ms between navigation start and the moment this entry was
      logged. Exponentially bucketed using GetExponentialBucketMin a value of
      1.3.
    </summary>
  </metric>
  <metric name="PathDepth">
    <summary>
      The number of slashes in the anchor element's href URL path. Truncated at
      5.
    </summary>
  </metric>
  <metric name="PathLength">
    <summary>
      The number of characters in the anchor element's href URL path. Buckets of
      size 10, truncated at 100.
    </summary>
  </metric>
  <metric name="PercentClickableArea">
    <summary>
      The percent of the total document area that this anchor element's
      clickable area occupies.
    </summary>
  </metric>
  <metric name="PercentVerticalDistance">
    <summary>
      How far down the document the top of the anchor element is, expressed as a
      ratio with the total document height.
    </summary>
  </metric>
  <metric name="SameOrigin">
    <summary>
      1 if the anchor element's target URL and the document's source URL are the
      same origin.
    </summary>
  </metric>
</event>

<event name="NavigationPredictorPageLinkClick">
  <owner>ryansturm@chromium.org</owner>
  <summary>
    Sent on an in-page link click.
  </summary>
  <metric name="AnchorElementIndex">
    <summary>
      An integer (0-indexed), corresponding to the index of that anchor element
      in the list of top ten anchor elements on that page, sorted by their
      navigation scores. If an anchor element is clicked that is not in
      NavigationPredictorAnchorElementMetrics, -1 is returned.
    </summary>
  </metric>
  <metric name="HrefUnchanged">
    <summary>
      1 if the href of the anchor element at the time the click is handled is
      the same as the href when the element was created. 0 if the href changed.
    </summary>
  </metric>
  <metric name="NavigationStartToLinkClickedMs">
    <summary>
      The time in milliseconds between the moment an entry for the anchor
      element was logged to UKM and the moment the user clicked on it.
      Exponentially bucketed, 1.3 factor.
    </summary>
  </metric>
</event>

<event name="NavigationPredictorPageLinkMetrics" singular="True">
  <owner>ryansturm@chromium.org</owner>
  <summary>
    Metrics that describe aggregate information about the links within a page.
    Some anchor elements present on a page may not be represented in these
    metrics, if they are outside the viewport or if their placement in the page
    is after the 40th anchor element. This event is emitted at most once per
    page load. Unless otherwise specified, each of the aggregate metrics is
    bucketted with exponential buckets of size 1.3.
  </summary>
  <metric name="MedianLinkLocation">
    <summary>
      The median vertical link location in the viewport, as a ratio of the
      distance from the top of the link to the visible top of the page.
      Bucketted with a linear bucket size of 10.
    </summary>
  </metric>
  <metric name="NumberOfAnchors.ContainsImage">
    <summary>
      The total number of links in the page that are images.
    </summary>
  </metric>
  <metric name="NumberOfAnchors.InIframe">
    <summary>
      The total number of links in the page in any iframe.
    </summary>
  </metric>
  <metric name="NumberOfAnchors.SameHost">
    <summary>
      The total number of links in the page that point to the same origin as the
      current page's origin.
    </summary>
  </metric>
  <metric name="NumberOfAnchors.Total">
    <summary>
      The total number of links within a page.
    </summary>
  </metric>
  <metric name="NumberOfAnchors.URLIncremented">
    <summary>
      The total number of links on the page, where each link only differs from
      the current page's URL by a number, and that number is incremented by 1 in
      the link.
    </summary>
  </metric>
  <metric name="TotalClickableSpace">
    <summary>
      The total clickable space in the entire page, expressed as a ratio of the
      visible clickable region to the entire viewport region.
    </summary>
  </metric>
  <metric name="Viewport.Height">
    <summary>
      The height of the viewport, in pixels.
    </summary>
  </metric>
  <metric name="Viewport.Width">
    <summary>
      The width of the viewport, in pixels.
    </summary>
  </metric>
</event>

<event name="NavigationPredictorPreloadOnHover">
  <owner>ryansturm@chromium.org</owner>
  <owner>domenic@chromium.org</owner>
  <owner>isaboori@google.com</owner>
  <summary>
    This event records required data to assess and fine-tune the preloading
    on-hover and on pointer down heuristics, and is submitted once per mouse
    over, mouse out, mouse down and mouse up events for randomly selected anchor
    elements.
  </summary>
  <metric name="HoverNotTakenMs">
    <summary>
      Duration that the user was hovering over the anchor element and it did not
      result in a navigation to that link. Exponentially bucketed using
      GetExponentialBucketMin with a spacing of 1.3.
    </summary>
  </metric>
  <metric name="HoverTakenMs">
    <summary>
      Duration that the user was hovering over the anchor element and it
      resulted in a navigation to that link. Exponentially bucketed using
      GetExponentialBucketMin with a spacing of 1.3.
    </summary>
  </metric>
  <metric name="MouseDownNotTakenMs">
    <summary>
      Time since the user pressed the left/middle mouse button over the anchor
      element and that did not result in a navigation to that link.
      Exponentially bucketed using GetExponentialBucketMin with a spacing of
      1.3.
    </summary>
  </metric>
  <metric name="MouseDownTakenMs">
    <summary>
      Time since the user presses the left/middle mouse button over the anchor
      element and that resulted in a navigation to that link. Exponentially
      bucketed using GetExponentialBucketMin with a spacing of 1.3.
    </summary>
  </metric>
</event>

<event name="NavigationPredictorRendererWarmup">
  <obsolete>
    Removed in M91.
  </obsolete>
  <owner>robertogden@chromium.org</owner>
  <owner>tbansal@chromium.org</owner>
  <summary>
    Internal feature metrics for a feature that decides whether to start a spare
    renderer on pages where Chrome heuristically determines that a cross-origin
    page load is likely to occur based on the anchor elements on the page being
    cross-origin and/or whether the current page is a search engine result page.
  </summary>
  <metric name="CrossOriginLinksRatio">
    <summary>
      An int in the range [0, 100] to represent a percentage of the ratio of the
      links on a page that are cross-origin to the source document. Recorded
      when there are 1 or more links on a page.
    </summary>
  </metric>
  <metric name="DidWarmup" enum="Boolean">
    <summary>
      A bool that is set if a spare renderer was started. Also set on
      counter-factual arms when the same criteria were met.
    </summary>
  </metric>
  <metric name="PageIndependentStatusBitMask">
    <summary>
      A bitmask, recorded on every page when the feature flag is enabled. 0b0001
      - Set if the feature is in a cooldown period following the last renderer
      warmup. 0b0010 - Set if the browser already had a spare renderer. 0b0100 -
      Set if the device memory is below the experiment threshold.
    </summary>
  </metric>
  <metric name="WasDSESRP" enum="Boolean">
    <summary>
      A bool that is set if the page is a search result page for the browser's
      default search engine
    </summary>
  </metric>
</event>

<event name="NavigationPredictorUserInteractions">
  <owner>ryansturm@chromium.org</owner>
  <owner>isaboori@google.com</owner>
  <summary>
    Metrics that describe user interaction with an anchor element. This event is
    emitted once per randomly selected anchor elements.
  </summary>
  <metric name="AnchorIndex">
    <summary>
      The index of the anchor element in NavigationPredictor's |top_urls_|.
    </summary>
  </metric>
  <metric name="IsInViewport">
    <summary>
      1 if anchor element is in viewport, otherwise 0.
    </summary>
  </metric>
  <metric name="IsPointerHoveringOver">
    <summary>
      1 if the pointer is hovering over the anchor element, otherwise 0.
    </summary>
  </metric>
  <metric name="MaxEnteredViewportToLeftViewportMs">
    <summary>
      Maximum time between the moment the anchor element entered the viewport
      and the moment it left the viewport in milliseconds. Exponentially
      bucketed using GetExponentialBucketMin a value of 1.3.
    </summary>
  </metric>
  <metric name="MaxHoverDwellTimeMs">
    <summary>
      Maximum dwelltime of pointer hovering over the anchor element in
      milliseconds. Exponentially bucketed using GetExponentialBucketMin a value
      of 1.3.
    </summary>
  </metric>
  <metric name="PointerHoveringOverCount">
    <summary>
      How many times the pointer was hovering over the anchor element.
      Exponentially bucketed using GetExponentialBucketMin a value of 1.3.
    </summary>
  </metric>
</event>

<event name="NavigationThrottleDeferredTime">
  <owner>ryansturm@chromium.org</owner>
  <owner>chrome-brapp-loading@google.com</owner>
  <summary>
    Information recorded about a navigation throttle when a navigation is
    deferred at any stage of the navigation. Only recorded for main frame
    navigations that were deferred and later resumed.
  </summary>
  <metric name="DurationOfNavigationDeferralMs">
    <summary>
      The duration from the start of the navigation deferral until the throttle
      resumes the navigation recorded in milliseconds.
    </summary>
  </metric>
  <metric name="NavigationThrottleEventType">
    <summary>
      An enum representing each event that can cause deferral method
      (WillFailRequest, WillProcessResponse, WillRedirectRequest,
      WillStartRequest). See NavigationThrottleRunner::Event for enum details.
    </summary>
  </metric>
  <metric name="NavigationThrottleNameHash">
    <summary>
      A (MD5) hash of the logging name string which represents a unique
      navigation throttle class (subclass of NavigationThrottle). See
      NavigationThrottle::GetNameForLogging().
    </summary>
  </metric>
</event>

<event name="NavigationTiming" singular="True">
  <owner>nhiroki@chromium.org</owner>
  <owner>chrome-loading@google.com</owner>
  <summary>
    Metrics associated with main frame navigation.
  </summary>
  <metric name="EarlyHintsForFinalRequest">
    <obsolete>
      Deprecated 09/2021
    </obsolete>
    <owner>nhiroki@chromium.org</owner>
    <owner>chrome-loading@google.com</owner>
    <summary>
      The time relative to navigation start that the headers of the 103 Early
      Hints response are received in reply to the final HTTP request for the
      main resource of a main frame navigation.
    </summary>
  </metric>
  <metric name="EarlyHintsForFirstRequest">
    <obsolete>
      Deprecated 09/2021
    </obsolete>
    <owner>nhiroki@chromium.org</owner>
    <owner>chrome-loading@google.com</owner>
    <summary>
      The time relative to navigation start that the headers of the 103 Early
      Hints response are received in reply to the first HTTP request for the
      main resource of a main frame navigation.
    </summary>
  </metric>
  <metric name="FinalLoaderCallback">
    <summary>
      The time relative to navigation start that a callback for the navigation
      loader is last invoked for the main resource of a main frame navigation.
    </summary>
  </metric>
  <metric name="FinalRequestStart">
    <summary>
      The time relative to navigation start that the final HTTP request is sent
      for the main resource of a main frame navigation.
    </summary>
  </metric>
  <metric name="FinalResponseStart">
    <summary>
      The time relative to navigation start that the headers of the final HTTP
      response are received for the main resource of a main frame navigation.
    </summary>
  </metric>
  <metric name="FirstLoaderCallback">
    <summary>
      The time relative to navigation start that a callback for the navigation
      loader is first invoked for the main resource of a main frame navigation.
    </summary>
  </metric>
  <metric name="FirstRequestStart">
    <summary>
      The time relative to navigation start that the first HTTP request is sent
      for the main resource of a main frame navigation.
    </summary>
  </metric>
  <metric name="FirstResponseStart">
    <summary>
      The time relative to navigation start that the headers of the first HTTP
      response are received for the main resource of a main frame navigation.
    </summary>
  </metric>
  <metric name="NavigationCommitSent">
    <summary>
      The time relative to navigation start that navigation commit message for a
      main frame navigation is sent to a renderer process.
    </summary>
  </metric>
</event>

<event name="Net.LegacyTLSVersion">
  <obsolete>
    Deprecated as of 2/2023.
  </obsolete>
  <owner>davidben@chromium.org</owner>
  <summary>
    Recorded when a resource is loaded using TLS 1.0 or TLS 1.1.
  </summary>
  <metric name="IsAdResource">
    <summary>
      Boolean value representing whether the request is for an ad resource. Only
      set if IsSubresource is true.
    </summary>
  </metric>
  <metric name="IsMainFrame">
    <summary>
      Boolean value representing whether the request is in the main frame or not
      (if false, the request is from a subframe).
    </summary>
  </metric>
  <metric name="IsSubresource">
    <summary>
      Boolean value representing whether the request is for a subresource. If
      false, then the request was a main frame page load.
    </summary>
  </metric>
</event>

<event name="Network.CacheTransparency">
  <obsolete>
    Deprecated in Jan 2023 in favor of Network.CacheTransparency2.
  </obsolete>
  <owner>nidhijaju@chromium.org</owner>
  <owner>ricea@chromium.org</owner>
  <summary>
    Metrics for Cache Transparency which aims to allow a list of pervasive
    payloads to be specified and cached in a single-keyed cache to improve
    loading performance. Recorded for each navigation and subresource load.
  </summary>
  <metric name="FoundPervasivePayload" enum="Boolean">
    <summary>
      Records whether a requested resource's URL matched with any of the URLs in
      the Cache Transparency Pervasive Payloads List.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="TotalBytesFetched">
    <summary>
      Records the total bytes fetched by the network.
    </summary>
  </metric>
</event>

<event name="Network.CacheTransparency2">
  <owner>nidhijaju@chromium.org</owner>
  <owner>ricea@chromium.org</owner>
  <summary>
    Metrics for Cache Transparency which aims to allow a list of pervasive
    payloads to be specified and cached in a single-keyed cache to improve
    loading performance. Recorded for each navigation and subresource load.
  </summary>
  <metric name="FoundPervasivePayload" enum="Boolean">
    <summary>
      Records whether a requested resource's URL matched with any of the URLs in
      the Cache Transparency Pervasive Payloads List.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="PervasiveBytesFetched">
    <summary>
      Records the number of bytes fetched by the network for pervasive payloads
      on a page.
    </summary>
  </metric>
  <metric name="TotalBytesFetched">
    <summary>
      Records the total bytes fetched by the network.
    </summary>
  </metric>
</event>

<event name="NewTabPage.HistoryClusters">
  <owner>sophiechang@chromium.org</owner>
  <owner>tiborg@chromium.org</owner>
  <summary>
    Metrics related to a History Clusters module shown on the New Tab Page.
    Recorded for each History Clusters module shown on a 1P New Tab Page load,
    which can be multiple for a page load.
  </summary>
  <metric name="BelongsToBoostedCategory" enum="Boolean">
    <summary>
      Cluster is of a boosted category.
    </summary>
  </metric>
  <metric name="DidEngageWithModule" enum="Boolean">
    <summary>
      Whether the user engaged with the module.
    </summary>
  </metric>
  <metric name="LayoutTypeShown" enum="NTPHistoryClustersModuleDisplayLayout">
    <summary>
      The layout type that was shown to the user for this module.
    </summary>
  </metric>
  <metric name="MinutesSinceMostRecentVisit">
    <summary>
      Minutes since the shown cluster's most recent visit, exponentially
      bucketed using GetExponentialBucketMin with a spacing of 1.3.
    </summary>
  </metric>
  <metric name="NumAbandonedCarts">
    <summary>
      Number of abandoned carts associated with the cluster.
    </summary>
  </metric>
  <metric name="NumTotalVisits">
    <summary>
      Number of total visits in the same cluster including ones that are not
      necessarily shown in the module.
    </summary>
  </metric>
  <metric name="NumUniqueHosts">
    <summary>
      Number of unique hosts represented in the cluster.
    </summary>
  </metric>
  <metric name="NumVisitsWithImage">
    <summary>
      Number of visits with an image to show.
    </summary>
  </metric>
</event>

<event name="NoStatePrefetch" singular="True">
  <owner>tbansal@chromium.org</owner>
  <summary>
    Metrics related to NoStatePrefetch that are recorded using the same UKM IDs
    as PageLoad.
  </summary>
  <metric name="PrefetchedRecently.FinalStatus">
    <summary>
      Final status of the nostate prefetch if one was recently attempted for
      either the committed URL of this navigation or for any URL in the redirect
      chain for the main frame resource for this navigation. page. Recorded as
      enum PrerenderFinalStatus in //tools/metrics/histograms/enums.xml.
    </summary>
  </metric>
  <metric name="PrefetchedRecently.Origin">
    <summary>
      Triggering origin of the nostate prefetch if one was recently attempted
      for either the committed URL of this navigation or for any URL in the
      redirect chain for the main frame resource for this navigation. Recorded
      as enum PrerenderOrigin in //tools/metrics/histograms/enums.xml.
    </summary>
  </metric>
  <metric name="PrefetchedRecently.PrefetchAge">
    <summary>
      Records the time (in milliseconds) from the start of the nostate prefetch
      to the time of commit of this navigation. Metric is recorded down to the
      nearest power of 2. Recorded only if a nostate prefetch was recently
      attempted for either the committed URL of this navigation or for any URL
      in the redirect chain for the main frame resource for this navigation.
    </summary>
  </metric>
</event>

<event name="Notification">
  <owner>peter@chromium.org</owner>
  <summary>
    A notification event corresponds with the entire lifespan of a single
    notification, and will be logged to UKM when the notification is deleted
    from the notification database.
  </summary>
  <metric name="ClosedReason">
    <summary>
      Enum for how the notification was closed. {user, developer, unknown}
    </summary>
  </metric>
  <metric name="DidReplaceAnotherNotification">
    <summary>
      Boolean value representing whether a tag is present and a previously shown
      notification has been replaced. For UKM logging, we treat a replacement
      notification as a new notification.
    </summary>
  </metric>
  <metric name="DidUserOpenSettings">
    <summary>
      Boolean value indicating whether the user accessed the Chrome provided
      settings from the notification.
    </summary>
  </metric>
  <metric name="HasBadge">
    <summary>
      Boolean value representing if a badge URL was included.
    </summary>
  </metric>
  <metric name="HasIcon">
    <summary>
      Boolean value representing if an icon URL was included.
    </summary>
  </metric>
  <metric name="HasImage">
    <summary>
      Boolean value representing if an image URL was included.
    </summary>
  </metric>
  <metric name="HasRenotify">
    <summary>
      Boolean value representing whether default notification indicators (sound,
      vibration, light) should be played again if the notification is replacing
      an older notification.
    </summary>
  </metric>
  <metric name="HasTag">
    <summary>
      Boolean value representing if a tag is present.
    </summary>
  </metric>
  <metric name="IsSilent">
    <summary>
      Boolean value representing whether default notification indicators (sound,
      vibration, light) should be suppressed.
    </summary>
  </metric>
  <metric name="NumActionButtonClicks">
    <summary>
      Number of clicks on developer provided action buttons.
    </summary>
  </metric>
  <metric name="NumActions">
    <summary>
      Number of developer specified actions that can be taken.
    </summary>
  </metric>
  <metric name="NumClicks">
    <summary>
      Number of clicks, excluding action buttons. I.e. clicks on the
      notification itself.
    </summary>
  </metric>
  <metric name="RequireInteraction">
    <summary>
      Boolean value representing whether the notification should remain onscreen
      indefinitely, rather than being auto-minimized to the notification center
      (if allowed by platform).
    </summary>
  </metric>
  <metric name="TimeUntilClose">
    <summary>
      The length of time, in ms, between when the notification was triggered and
      when it was closed.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="TimeUntilFirstClick">
    <summary>
      Time, in ms, between when the notification is shown and the first click.
    </summary>
  </metric>
  <metric name="TimeUntilLastClick">
    <summary>
      Time, in ms, between when the notification is shown and the last click.
    </summary>
  </metric>
</event>

<event name="OfflineMeasurements">
  <obsolete>
    Removed M100. No longer used.
  </obsolete>
  <owner>curranmax@chromium.org</owner>
  <summary>
    Data collected by the OfflineMeasurementsBackgroundTask. At a regular
    interval the background task checks the state of the system including how
    the user is interacting with the system and whether the system is online or
    offline. The data for each run of the background task is persisted to prefs.
    Upon a successful navigation in Chrome, all data in prefs are logged to UKM
    and then cleared. This means that the first page load of a session will have
    a burst of events being recorded, but subsequent page loads will likely have
    no events. The background task is scheduled when Chrome opens, and it will
    continue to run even if Chrome is not running.
  </summary>
  <metric name="DurationMillis">
    <summary>
      The time, in milliseconds, since the last background task ran. This value
      is bucketed using ukm::GetExponentialBucketMinForUserTiming.
    </summary>
  </metric>
  <metric name="IsAirplaneModeEnabled" enum="BooleanEnabled">
    <summary>
      Whether airplane mode was enabled when the background task ran.
    </summary>
  </metric>
  <metric name="IsRoaming" enum="Boolean">
    <summary>
      Whether the device was roaming when the background task ran. This field is
      only set if we can determine whether the network was roaming or not. This
      means in cases where the HTTP probe was cancelled or we ecountered an
      error while getting whether the network is roaming or not that this field
      will be null.
    </summary>
  </metric>
  <metric name="LocalHourOfDayStart">
    <summary>
      The local hour when the background task ran. In the range of 0 to 23
      inclusive.
    </summary>
  </metric>
  <metric name="ProbeResult" enum="OfflineMeasurementsHttpProbeResult">
    <summary>
      The result of the HTTP probe when the background task ran.
    </summary>
  </metric>
  <metric name="UserState" enum="OfflineMeasurementsUserState">
    <summary>
      How the user is interacting with the device when the background task ran.
    </summary>
  </metric>
</event>

<event name="OfflinePages.SavePageRequested">
  <obsolete>
    Deprecated 03/2019
  </obsolete>
  <owner>petewil@chromium.org</owner>
  <metric name="RequestedFromForeground">
    <summary>
      Metrics that measure which URLs the user is requesting offline page copies
      of, and whether they were requested from the foreground or background UI.
      The value is 1 if requested from the foreground, 0 from background.
    </summary>
  </metric>
</event>

<event name="Omnibox.EditUrlSuggestion.Share">
  <owner>nyquist@chromium.org</owner>
  <owner>ssid@chromium.org</owner>
  <summary>
    User pressed 'Share' while viewing edit URL suggestions which shares the
    current URL.
  </summary>
  <metric name="HasOccurred" enum="Boolean">
    <summary>
      A boolean signaling that the event has occurred; only records true values.
    </summary>
  </metric>
</event>

<event name="OmniboxSecurityIndicator.FormSubmission">
  <owner>meacer@chromium.org</owner>
  <summary>
    Recorded when a form is submitted on an HTTPS page. Used to understand any
    regression introduced by updated omnibox security indicators.
  </summary>
  <metric name="Submitted">
    <summary>
      Placeholder metric, always true.
    </summary>
  </metric>
</event>

<event name="OptimizationGuide" singular="True">
  <owner>sophiechang@chromium.org</owner>
  <summary>
    Optimization guide metrics associated with a page load. It is recorded when
    the optimization guide was consulted in making a decision for the page load.
    See //components/optimization_guide/.
  </summary>
  <metric name="HintGenerationTimestamp">
    <obsolete>
      Obsolete as of 04/2020.
    </obsolete>
    <summary>
      The timestamp, in seconds from epoch, that the server generated the hint
      for the optimization applied on the page load.
    </summary>
  </metric>
  <metric name="HintSource">
    <obsolete>
      Obsolete as of 04/2020.
    </obsolete>
    <summary>
      The |optimization_guide::proto::HintSource| for the optimization that was
      applied on the page load.
    </summary>
  </metric>
  <metric name="NavigationHintsFetchAttemptStatus"
      enum="OptimizationGuideRaceNavigationFetchAttemptStatus">
    <summary>
      An enum value representing the status of a fetch attempt for the page load
      and what it contains (i.e. hosts or URLs). Captured at the start of the
      navigation.
    </summary>
  </metric>
  <metric name="NavigationHintsFetchRequestLatency">
    <summary>
      The duration (in milliseconds) for how long it took from the request to go
      out to when it was usable on the client. Only recorded if a fetch was
      initiated for the navigation. Will be recorded as INT64_MAX if the request
      did not complete successfully.
    </summary>
  </metric>
  <metric name="NavigationHostCovered"
      enum="OptimizationGuideNavigationHostCoveredStatus">
    <obsolete>
      Obsolete as of 04/2020.
    </obsolete>
    <summary>
      An enum value representing whether Chrome had a hint cached for the
      navigation or had attempted to fetch a hint from the remote Optimization
      Guide Service in the last 7 days. The enum is defined in
      |optimization_guide::NavigationHostCoveredStatus|.
    </summary>
  </metric>
  <metric name="PainfulPageLoadModelPredictionScore">
    <obsolete>
      Obsolete as of 04/2021.
    </obsolete>
    <summary>
      The score output after evaluating the painful page load model. If
      populated, this is 100x the fractional value output by the model
      evaluation. This will be a value between 0 and 100.
    </summary>
  </metric>
  <metric name="PainfulPageLoadModelVersion">
    <obsolete>
      Obsolete as of 04/2021.
    </obsolete>
    <summary>
      The server-generated version of the painful page load model that was
      evaluated for the page load.
    </summary>
  </metric>
  <metric name="PredictionModelFeatureEffectiveConnectionType">
    <obsolete>
      Obsolete as of 04/2021.
    </obsolete>
    <summary>
      The |net::EffectiveConnectionType| at the time a prediction was requested.
      Recorded once per page load.
    </summary>
  </metric>
  <metric name="PredictionModelFeatureIsSameOriginNavigation">
    <obsolete>
      Obsolete as of 04/2021.
    </obsolete>
    <summary>
      Whether the current navigatation is the same origin as the previous one at
      the time a prediction was requested. Recorded once per page load.
    </summary>
  </metric>
  <metric name="PredictionModelFeatureNavigationToFCPSessionMean">
    <obsolete>
      Obsolete as of 04/2021.
    </obsolete>
    <summary>
      The average navigation to first contentful paint for the current session
      at the time a prediction was requested. Recorded once per page load.
    </summary>
  </metric>
  <metric name="PredictionModelFeatureNavigationToFCPSessionStdDev">
    <obsolete>
      Obsolete as of 04/2021.
    </obsolete>
    <summary>
      The standard deviation of navigation to first contentful paint for page
      loads in the current session at the time a prediction was requested.
      Recorded once per page load.
    </summary>
  </metric>
  <metric name="PredictionModelFeaturePageTransition">
    <obsolete>
      Obsolete as of 04/2021.
    </obsolete>
    <summary>
      The |ui::PageTransition| of the current navigation at the time a
      prediction was requested. Recorded once per page load.
    </summary>
  </metric>
  <metric name="PredictionModelFeaturePreviousPageLoadNavigationToFCP">
    <obsolete>
      Obsolete as of 04/2021.
    </obsolete>
    <summary>
      The navigation to to first contentful paint for the previous page load at
      the time a prediction was requested. Recorded once per page load.
    </summary>
  </metric>
  <metric name="PredictionModelFeatureSiteEngagementScore">
    <obsolete>
      Obsolete as of 04/2021.
    </obsolete>
    <summary>
      The site engagement score of the host of the current navigation at the
      time a prediction was requested. Recorded once per page load.
    </summary>
  </metric>
  <metric name="RegisteredOptimizationTargets">
    <summary>
      A bitmask of the optimization targets that were registered at the start of
      the page load where each flipped bit corresponds to its int value in
      |optimization_guide::proto::OptimizationTarget|.
    </summary>
  </metric>
  <metric name="RegisteredOptimizationTypes">
    <summary>
      A bitmask of the optimization types that were registered at the start of
      the page load where each flipped bit corresponds to its int value in
      |optimization_guide::proto::OptimizationTarget|.
    </summary>
  </metric>
</event>

<event name="OptimizationGuideAutotuning">
  <obsolete>
    Removed 8/2021.
  </obsolete>
  <owner>sophiechang@chromium.org</owner>
  <owner>mcrouse@chromium.org</owner>
  <summary>
    Metrics associated with an autotuning event initiated by the Optimization
    Guide.
  </summary>
  <metric name="OptimizationType">
    <summary>
      The |optimization_guide::proto::OptimizationType| that is being tuned.
    </summary>
  </metric>
  <metric name="TuningVersion">
    <summary>
      The version of the tuning group for the optimization type that was served.
    </summary>
  </metric>
</event>

<event name="PageContentAnnotations" singular="True">
  <obsolete>
    Removed in 10/2022.
  </obsolete>
  <owner>chrome-intelligence-core@google.com</owner>
  <owner>mcrouse@chromium.org</owner>
  <summary>
    Metrics on the content annotations of the page, one record per page load
    commit and has an annotation calculated on it. The metrics are recorded in a
    RAPPOR-style with low-entropy so only aggregate analysis can be performed.
  </summary>
  <metric name="VisibilityScore">
    <summary>
      Records a low entropy respresentation of the visibility score output by a
      content annotations model. The low entropy value is calculated using a
      RAPPOR-style calculation to enable analysis only on aggregated results.
      The raw score is between 0 and 1, scaled to between 0 and 100. The score
      is then placed into one of 16 linearly spaced buckets by dividing the
      score by the bucket size and taking the floor. The resulting bucket value
      has noise added with a probability of .5 where the noise is randomly
      applied to each individual bit.
    </summary>
  </metric>
</event>

<event name="PageContentAnnotations2" singular="True">
  <owner>chrome-intelligence-core@google.com</owner>
  <owner>mcrouse@chromium.org</owner>
  <summary>
    Metrics on the content annotations of the page, one record per page load
    commit and has an annotation calculated on it. The metrics are recorded in a
    RAPPOR-style with low-entropy so only aggregate analysis can be performed.
  </summary>
  <metric name="VisibilityScore">
    <summary>
      Records a low entropy respresentation of the visibility score output by a
      content annotations model. The low entropy value is calculated using a
      RAPPOR-style calculation to enable analysis only on aggregated results.
      The raw score is between 0 and 1, scaled to between 0 and 100. The score
      is then placed into one of 16 linearly spaced buckets by dividing the
      score by the bucket size and taking the floor. The resulting bucket value
      has noise added with a probability of .5 where the noise is randomly
      applied to each individual bit.
    </summary>
  </metric>
</event>

<event name="PageDomainInfo">
  <owner>uthakore@chromium.org</owner>
  <owner>invernizzi@chromium.org</owner>
  <summary>
    Metrics that describe the domain of pages that successfully commit. One
    event is generated per page load that commits. Currently associated with
    LocalNetworkRequests UKM metric collection.
  </summary>
  <metric name="DomainType">
    <summary>
      An enum value representing the type of domain of the loaded page. The enum
      is defined in |LocalNetworkRequestsPageLoadMetricsObserver|. Possible
      values are 0 for unknown (should never be logged), 1 for pages with public
      domains, 2 for pages with private domains (IP addresses that are part of a
      reserved IP space not including localhost), or 4 for localhost.
    </summary>
  </metric>
</event>

<event name="PageForegroundSession">
  <owner>sullivan@chromium.org</owner>
  <summary>
    Total time in foreground in milliseconds, recorded each time the page is
    backgrounded. May be recorded multiple times for a single page visit.
  </summary>
  <metric name="ForegroundDuration">
    <summary>
      Total time in foreground in milliseconds, recorded each time the page is
      backgrounded.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="ForegroundNumInputEvents">
    <summary>
      The number of Input Events, including click, tap, key press, cancellable
      touchstart, or pointer down followed by apointer up. This metric gets
      recorded each time the page is backgrounded.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.country,profile.system_ram"/>
        <index fields="profile.is_dominant_version"/>
        <index fields="profile.is_latest_version"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="ForegroundTotalAdjustedInputDelay">
    <summary>
      sum(max(Input Delay - 50, 0)), recorded each time the page is
      backgrounded. The Input Delay refers to the duration between the hardware
      timestamp and the start of event processing on the main thread for the
      meaningful input. In ms.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.country,profile.system_ram"/>
        <index fields="profile.is_dominant_version"/>
        <index fields="profile.is_latest_version"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="ForegroundTotalInputDelay">
    <summary>
      sum(Input Delay), recorded each time the page is backgrounded. The Input
      Delay refers to the duration between the hardware timestamp and the start
      of event processing on the main thread for the meaningful input. In ms.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.country,profile.system_ram"/>
        <index fields="profile.is_dominant_version"/>
        <index fields="profile.is_latest_version"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="PageInfoBubble">
  <owner>dullweber@chromium.org</owner>
  <owner>chrome-privacy-core@google.com</owner>
  <summary>
    Recorded when an action on the Page Info Bubble (aka Origin Info Bubble or
    WebsiteSettings Bubble) is taken. May be recorded multiple times for a
    single page visit.
  </summary>
  <metric name="ActionTaken" enum="WebsiteSettingsAction">
    <summary>
      Records an enum value representing which action on the Page Info Bubble
      was taken.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="PageLoad" singular="True">
  <owner>sullivan@chromium.org</owner>
  <owner>chrome-metrics-team@google.com</owner>
  <summary>
    Core metrics associated with web page loads.
  </summary>
  <metric name="CpuTime">
    <summary>
      Amount of CPU wall time over the duration of a page load, while the page
      is in the foreground. Measured in milliseconds.
    </summary>
  </metric>
  <metric name="DayOfWeek">
    <summary>
      The day of the week when the page load was initiated. The time is measured
      in the local time zone according to the system clock. Only collected for
      page loads that start while on foreground.
    </summary>
  </metric>
  <metric name="DocumentTiming.NavigationToDOMContentLoadedEventFired">
    <summary>
      Measures the time in milliseconds from navigation timing's navigation
      start to the time the DOMContentLoaded event is fired, for main frame
      documents.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="DocumentTiming.NavigationToLoadEventFired">
    <summary>
      Measures the time in milliseconds from navigation timing's navigation
      start to the time the load event is fired, for main frame documents.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="DurationSinceLastVisitSeconds">
    <summary>
      The duration since the last visit to this URL in seconds, if the user has
      visited the URL before. Recorded as -1 if the user has not visited the URL
      before, or if the History service is unavailable or slow to respond. Any
      duration that exceeds 30 days will be recorded as 30 days, so in practice,
      if this duration indicates 30 days, it can be anything from 30 to the
      maximum duration that local history is stored.
    </summary>
  </metric>
  <metric name="Experimental.InputToNavigationStart">
    <summary>
      Measures the time in milliseconds from when the OS level input event
      occurred which triggered a navigation, until the navigation was started.
      Only set if the code can trace back to the original input event. Some
      known cases where it is missing: crbug.com/889223 crbug.com/893162
      crbug.com/897837 crbug.com/897840
    </summary>
  </metric>
  <metric
      name="Experimental.LayoutInstability.CumulativeShiftScoreAtFirstOnHidden">
    <summary>
      Measures the cumulative layout shift (bit.ly/lsm-explainer) that has
      occurred on the page (including all subframes) until the first time the
      page moves from the foreground to the background. This metric's integral
      value is 100x the fractional cumulative layout shift score described in
      the explainer. Stable since M98. Log of major changes:
      http://bit.ly/chrome-speed-metrics-changelog. This metric is trying to
      record the layout shift values which are not able to be recorded in
      LayoutInstability.CumulativeShiftScore for some reasons.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.country,profile.system_ram"/>
        <index fields="profile.is_dominant_version"/>
        <index fields="profile.is_latest_version"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric
      name="Experimental.LayoutInstability.MaxCumulativeShiftScoreAtFirstOnHidden.SessionWindow.Gap1000ms.Max5000ms">
    <summary>
      Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that
      has occurred in a session window until the first time the page moves from
      the foreground to the background. The gap between two consecutive shifts
      in a window is not bigger than 1000ms and the maximum window size is
      5000ms. This metric's integral value is 100x the fractional cumulative
      layout shift score described in the explainer. This metric is trying to
      record the layout shift values which are not able to be recorded in
      LayoutInstability.MaxCumulativeShiftScore.SessionWindow.Gap1000ms.Max5000ms
      for some reasons.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Experimental.Navigation.UserInitiated">
    <summary>
      True if this navigation was initiated by user input. For renderer
      navigations, only true if the code can trace back to the original input
      event. Some known cases where it is missing: crbug.com/889223
      crbug.com/897837 crbug.com/897840
    </summary>
  </metric>
  <metric name="Experimental.NavigationToInteractive">
    <obsolete>
      Removed 2/2020. Do not use Time to Interactive as a RUM metric.
    </obsolete>
    <summary>
      Measures Time to Interactive, a metric based on main thread and network
      heuristics to approximate the point in time when the page feels
      interactive to the user. See https://goo.gl/TFw6xz for detailed
      explanation. This histogram uses First Meaningful Paint as the lower bound
      for quiescent windows. The unit of time is ms.
    </summary>
  </metric>
  <metric name="Experimental.PageLoadType" enum="PageVisitFinalStatus">
    <obsolete>
      Renamed in 11/2021, use PageVisitFinalStatus instead.
    </obsolete>
    <summary>
      Determines the PageLoadType for this page load. That is, records whether
      the page was never foregrounded, was foregrounded but did not reach FCP,
      or did reach FCP. The metric is recorded at the end of each page load. As
      usual with PageLoad metrics, we consider app backgrounding on Android to
      be the end of page load as well as the app could be evicted by Android
      anytime after that happens.
    </summary>
  </metric>
  <metric name="Experimental.PaintTiming.NavigationToFirstMeaningfulPaint">
    <obsolete>
      Removed on 11/2022
    </obsolete>
    <summary>
      Measures the time in milliseconds from navigation timing's navigation
      start to the first meaningful paint (http://bit.ly/ttfmp-doc), for main
      frame documents.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Experimental.PaintTiming.NavigationToLargestContentPaint">
    <obsolete>
      Deprecated 7/2019, replaced by
      PaintTiming.NavigationToLargestContentfulPaint.MainFrame.
    </obsolete>
    <summary>
      Measures the time in milliseconds from navigation timing's navigation
      start to the time when the page first paints the largest content (text or
      image) within viewport. See http://bit.ly/fcp_plus_plus for more details.
    </summary>
  </metric>
  <metric
      name="Experimental.PaintTiming.NavigationToLargestContentPaintAllFrames">
    <obsolete>
      Deprecated 7/2019, replaced by
      PaintTiming.NavigationToLargestContentfulPaint
    </obsolete>
    <summary>
      Measures the time in milliseconds from navigation timing's navigation
      start to the time when the page first paints the largest content (text or
      image) within viewport. Compared with NavigationToLargestContentPaint,
      this is the aggregate results from all frames, while
      NavigationToLargestContentPaint is only for main frame. See
      http://bit.ly/fcp_plus_plus for more details.
    </summary>
  </metric>
  <metric name="Experimental.PaintTiming.NavigationToLargestImagePaint">
    <obsolete>
      Removed on 01/2020
    </obsolete>
    <summary>
      Measures the time in milliseconds from navigation timing's navigation
      start to the time when the page first paints the largest image within
      viewport after the image finishes loading. The value is recorded at the
      end of each page load. See http://bit.ly/fcp_plus_plus for more details.
    </summary>
  </metric>
  <metric
      name="Experimental.PaintTiming.NavigationToLargestImagePaint.BeforeUserInput">
    <obsolete>
      Deprecated 01/2019
    </obsolete>
    <summary>
      Measures the time in milliseconds from navigation timing's navigation
      start to the time when the page first paints the largest image within
      viewport after the image finishes loading, before user input. See
      http://bit.ly/fcp_plus_plus for more details.
    </summary>
  </metric>
  <metric name="Experimental.PaintTiming.NavigationToLargestTextPaint">
    <obsolete>
      Removed on 01/2020
    </obsolete>
    <summary>
      Measures the time in milliseconds from navigation timing's navigation
      start to the time when the page first paints the largest text within
      viewport. The value is recorded at the end of each page load. See
      http://bit.ly/fcp_plus_plus for more details.
    </summary>
  </metric>
  <metric
      name="Experimental.PaintTiming.NavigationToLargestTextPaint.BeforeUserInput">
    <obsolete>
      Deprecated 01/2019
    </obsolete>
    <summary>
      Measures the time in milliseconds from navigation timing's navigation
      start to the time when the page first paints the largest text within
      viewport, before user input. See http://bit.ly/fcp_plus_plus for more
      details.
    </summary>
  </metric>
  <metric name="Experimental.PaintTiming.NavigationToLastImagePaint">
    <obsolete>
      Deprecated on March 2019. This metric as a page load metric hasn't shown a
      good correlation with user experience.
    </obsolete>
    <summary>
      Measures the time in milliseconds from navigation timing's navigation
      start to the time when the page first paints the last image within
      viewport after the image finishes loading. The value is recorded at the
      end of each page load. See http://bit.ly/fcp_plus_plus for more details.
    </summary>
  </metric>
  <metric name="Experimental.PaintTiming.NavigationToLastTextPaint">
    <obsolete>
      Deprecated on March 2019. This metric as a page load metric hasn't shown a
      good correlation with user experience.
    </obsolete>
    <summary>
      Measures the time in milliseconds from navigation timing's navigation
      start to the time when the page first paints the last Text within
      viewport. The value is recorded at the end of each page load. See
      http://bit.ly/fcp_plus_plus for more details.
    </summary>
  </metric>
  <metric name="Experimental.TotalForegroundDuration">
    <obsolete>
      Deprecated on November 2021, replaced by
      PageTiming.TotalForegroundDuration.
    </obsolete>
    <summary>
      The total amount of time the page spent in the foreground, in
      milliseconds. Note that this metric adds all foreground durations
      occurring for the page. For example: if the page starts foregrounded
      during 1 second, then goes to the background for a while, then is
      foregrounded again for 2 seconds, and then is unloaded, this metric
      reports 3 seconds. To see metrics about consecutive foreground sessions,
      see the PageForegroundSession event instead. This metric is recorded at
      the end of each page load. As usual with PageLoad metrics, we consider app
      backgrounding on Android to be the end of page load as well as the app
      could be evicted by Android anytime after that happens.
    </summary>
  </metric>
  <metric name="HourOfDay">
    <summary>
      The hour of the day when the page load was initiated. The time is measured
      in the local time zone according to the system clock. Only collected for
      page loads that start while on foreground.
    </summary>
  </metric>
  <metric
      name="InteractiveTiming.AverageUserInteractionLatencyOverBudget.MaxEventDuration">
    <summary>
      The average value of user interaction latency above budget of a page load,
      in ms. For this metric, we measure the latency of user interactions by
      Responsiveness.UserInteraction.MaxEventDuration and we deduct a budget
      from the original value. If the latency value is below the budget, it will
      be treated as 0 ms. Each type of interaction has its own budget.
    </summary>
  </metric>
  <metric
      name="InteractiveTiming.AverageUserInteractionLatencyOverBudget.TotalEventDuration">
    <obsolete>
      Deprecated March 2022 for
      SlowUserInteractionLatency.HighPercentile2.MaxEventDuration
    </obsolete>
    <summary>
      The average value of user interaction latency above budget of a page load,
      in ms. For this metric, we measure the latency of user interactions by
      Responsiveness.UserInteraction.TotalEventDuration and we deduct a budget
      from the original value. If the latency value is below the budget, it will
      be treated as 0 ms. Each type of interaction has its own budget.
    </summary>
  </metric>
  <metric name="InteractiveTiming.FirstInputDelay">
    <obsolete>
      Deprecated on January 2019 in favor of InteractiveTiming.FirstInputDelay2,
      which correctly excludes some scrolling cases that were previously not
      excluded from this metric.
    </obsolete>
    <summary>
      Measures First Input Delay, the duration between the hardware timestamp
      and the start of event processing on the main thread for the first
      meaningful input per navigation. See https://goo.gl/tr1oTZ for a detailed
      explanation. In ms.
    </summary>
  </metric>
  <metric name="InteractiveTiming.FirstInputDelay.SkipFilteringComparison">
    <obsolete>
      Removed in January 2020 as the experiment is launched.
    </obsolete>
    <summary>
      For comparing FirstInputDelay metrics in the SkipTouchEventFilter
      experiment. Measures First Input Delay, the duration between the hardware
      timestamp and the start of event processing on the main thread for the
      first meaningful input per navigation. See https://goo.gl/tr1oTZ for a
      detailed explanation. In ms.
    </summary>
  </metric>
  <metric name="InteractiveTiming.FirstInputDelay2">
    <obsolete>
      Removed on February 2019 in favor of InteractiveTiming.FirstInputDelay3
      which brings the metric more in line with the EventTiming API.
    </obsolete>
    <summary>
      Measures First Input Delay, the duration between the hardware timestamp
      and the start of event processing on the main thread for the first
      meaningful input per navigation. See https://goo.gl/tr1oTZ for a detailed
      explanation. In ms.
    </summary>
  </metric>
  <metric name="InteractiveTiming.FirstInputDelay3">
    <obsolete>
      Removed in July 2019 in favor of InteractiveTiming.FirstInputDelay4 which
      includes events which were previously filtered.
    </obsolete>
    <summary>
      Measures First Input Delay, the duration between the hardware timestamp
      and the start of event processing on the main thread for the first
      meaningful input per navigation. See https://goo.gl/tr1oTZ for a detailed
      explanation. In ms.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="InteractiveTiming.FirstInputDelay4">
    <summary>
      Measures First Input Delay, the duration between the hardware timestamp
      and the start of event processing on the main thread for the first
      meaningful input per navigation. See https://goo.gl/tr1oTZ for a detailed
      explanation. In ms. Log of major changes:
      http://bit.ly/chrome-speed-metrics-changelog
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.country,profile.system_ram"/>
        <index fields="profile.is_dominant_version"/>
        <index fields="profile.is_latest_version"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="InteractiveTiming.FirstInputProcessingTimes">
    <summary>
      Measures First Input Processing Time, the duration of event handlers
      processing the first input event. In ms.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.country,profile.system_ram"/>
        <index fields="profile.is_dominant_version"/>
        <index fields="profile.is_latest_version"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="InteractiveTiming.FirstInputTimestamp">
    <obsolete>
      Deprecated on January 2019 in favor of
      InteractiveTiming.FirstInputTimestamp2, which correctly excludes some
      scrolling cases that were previously not excluded from this metric.
    </obsolete>
    <summary>
      The duration between navigation start and the hardware timestamp of the
      first meaningful input per navigation. See https://goo.gl/tr1oTZ for a
      detailed explanation. In ms.
    </summary>
  </metric>
  <metric name="InteractiveTiming.FirstInputTimestamp.SkipFilteringComparison">
    <obsolete>
      Removed in Jaunary 2020 as the experiment is launched.
    </obsolete>
    <summary>
      The duration between navigation start and the hardware timestamp of the
      first meaningful input per navigation. See https://goo.gl/tr1oTZ for a
      detailed explanation. In ms.

      This metric is used for comparing FirstInputTimestamp metrics in the
      SkipTouchEventFilter experiment.
    </summary>
  </metric>
  <metric name="InteractiveTiming.FirstInputTimestamp2">
    <obsolete>
      Removed on February 2019 in favor of
      InteractiveTiming.FirstInputTimestamp3 which brings the metric more in
      line with the EventTiming API.
    </obsolete>
    <summary>
      The duration between navigation start and the hardware timestamp of the
      first meaningful input per navigation. See https://goo.gl/tr1oTZ for a
      detailed explanation. In ms.
    </summary>
  </metric>
  <metric name="InteractiveTiming.FirstInputTimestamp3">
    <obsolete>
      Removed in July 2019 in favor of InteractiveTiming.FirstInputTimestamp4
      which includes events which were previously filtered.
    </obsolete>
    <summary>
      The duration between navigation start and the hardware timestamp of the
      first meaningful input per navigation. See https://goo.gl/tr1oTZ for a
      detailed explanation. In ms.
    </summary>
  </metric>
  <metric name="InteractiveTiming.FirstInputTimestamp4">
    <summary>
      The duration between navigation start and the hardware timestamp of the
      first meaningful input per navigation. See https://goo.gl/tr1oTZ for a
      detailed explanation. In ms.
    </summary>
  </metric>
  <metric name="InteractiveTiming.FirstScrollDelay">
    <summary>
      Measures the time, in milliseconds, from when a user starts scrolling
      until the result shows up on screen if the scroll was the first scroll
      since navigation.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.country,profile.system_ram"/>
        <index fields="profile.is_dominant_version"/>
        <index fields="profile.is_latest_version"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="InteractiveTiming.FirstScrollTimestamp">
    <summary>
      The duration between navigation start and the timestamp of the first
      scroll per navigation. In ms. This is rounded down to the nearest
      exponential bucket.
    </summary>
  </metric>
  <metric name="InteractiveTiming.LongestInputDelay">
    <obsolete>
      Deprecated on January 2019 in favor of
      InteractiveTiming.LongestInputDelay2, which correctly excludes some
      scrolling cases that were previously not excluded from this metric.
    </obsolete>
    <summary>
      Measures longest Input Delay, the longest duration between the hardware
      timestamp and the start of event processing on the main thread for the
      meaningful input per navigation. In ms.
    </summary>
  </metric>
  <metric name="InteractiveTiming.LongestInputDelay2">
    <obsolete>
      Removed on February 2019 in favor of InteractiveTiming.LongestInputDelay3
      which brings the metric more in line with the EventTiming API.
    </obsolete>
    <summary>
      Measures longest Input Delay, the longest duration between the hardware
      timestamp and the start of event processing on the main thread for the
      meaningful input per navigation. In ms.
    </summary>
  </metric>
  <metric name="InteractiveTiming.LongestInputDelay3">
    <obsolete>
      Removed on September 2019 in favor of InteractiveTiming.LongestInputDelay4
      which includes events which otherwise would have been filtered.
    </obsolete>
    <summary>
      Measures longest Input Delay, the longest duration between the hardware
      timestamp and the start of event processing on the main thread for the
      meaningful input per navigation. In ms.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="InteractiveTiming.LongestInputDelay4">
    <summary>
      Measures longest Input Delay, the longest duration between the hardware
      timestamp and the start of event processing on the main thread for the
      meaningful input per navigation. In ms.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="InteractiveTiming.LongestInputTimestamp">
    <obsolete>
      Deprecated on January 2019 in favor of
      InteractiveTiming.LongestInputTimestamp2, which correctly excludes some
      scrolling cases that were previously not excluded from this metric.
    </obsolete>
    <summary>
      The duration between navigation start and the hardware timestamp of the
      meaningful input with longest queuing delay per navigation. In ms.
    </summary>
  </metric>
  <metric name="InteractiveTiming.LongestInputTimestamp2">
    <obsolete>
      Removed on February 2019 in favor of
      InteractiveTiming.LongestInputTimestamp3 which brings the metric more in
      line with the EventTiming API.
    </obsolete>
    <summary>
      The duration between navigation start and the hardware timestamp of the
      meaningful input with longest queuing delay per navigation. In ms.
    </summary>
  </metric>
  <metric name="InteractiveTiming.LongestInputTimestamp3">
    <obsolete>
      Removed on February 2019 in favor of
      InteractiveTiming.LongestInputTimestamp4 which includes inputs which would
      have previously been filtered.
    </obsolete>
    <summary>
      The duration between navigation start and the hardware timestamp of the
      meaningful input with longest queuing delay per navigation. In ms.
    </summary>
  </metric>
  <metric name="InteractiveTiming.LongestInputTimestamp4">
    <summary>
      The duration between navigation start and the hardware timestamp of the
      meaningful input with longest queuing delay per navigation. In ms.
    </summary>
  </metric>
  <metric name="InteractiveTiming.NumInputEvents">
    <summary>
      The number of Input Events, including click, tap, key press, cancellable
      touchstart, or pointer down followed by a pointer up.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="InteractiveTiming.NumInteractions">
    <summary>
      The number of distinct user interactions. See definition of user
      interaction:
      https://web.dev/better-responsiveness-metric/#group-events-into-interactions
    </summary>
  </metric>
  <metric
      name="InteractiveTiming.SlowUserInteractionLatencyOverBudget.HighPercentile.MaxEventDuration">
    <obsolete>
      Deprecated March 2022 for
      SlowUserInteractionLatency.HighPercentile2.MaxEventDuration
    </obsolete>
    <summary>
      An approximation of a high percentile of user interaction latency above
      budget of a page load, in ms. For this metric, we measure the latency of
      user interactions by Responsiveness.UserInteraction.MaxEventDuration and
      we deduct a budget from the original value. If the latency value is below
      the budget, it will be treated as 0 ms. Each type of interaction has its
      own budget.
    </summary>
  </metric>
  <metric
      name="InteractiveTiming.SlowUserInteractionLatencyOverBudget.HighPercentile.TotalEventDuration">
    <obsolete>
      Deprecated March 2022 for
      SlowUserInteractionLatency.HighPercentile2.MaxEventDuration
    </obsolete>
    <summary>
      An approximation of a high percentile of user interaction latency above
      budget of a page load, in ms. For this metric, we measure the latency of
      user interactions by Responsiveness.UserInteraction.TotalEventDuration and
      we deduct a budget from the original value. If the latency value is below
      the budget, it will be treated as 0 ms. Each type of interaction has its
      own budget.
    </summary>
  </metric>
  <metric
      name="InteractiveTiming.SlowUserInteractionLatencyOverBudget.HighPercentile2.MaxEventDuration">
    <summary>
      An approximation of a high percentile of user interaction latency above
      budget of a page load, in ms. For this metric, we measure the latency of
      user interactions by Responsiveness.UserInteraction.MaxEventDuration and
      we deduct a budget from the original value. If the latency value is below
      the budget, it will be treated as 0 ms. Each type of interaction has its
      own budget.
    </summary>
  </metric>
  <metric
      name="InteractiveTiming.SlowUserInteractionLatencyOverBudget.HighPercentile2.TotalEventDuration">
    <obsolete>
      Deprecated March 2022 for
      SlowUserInteractionLatency.HighPercentile2.MaxEventDuration
    </obsolete>
    <summary>
      An approximation of a high percentile of user interaction latency above
      budget of a page load, in ms. For this metric, we measure the latency of
      user interactions by Responsiveness.UserInteraction.TotalEventDuration and
      we deduct a budget from the original value. If the latency value is below
      the budget, it will be treated as 0 ms. Each type of interaction has its
      own budget.
    </summary>
  </metric>
  <metric
      name="InteractiveTiming.SumOfUserInteractionLatencyOverBudget.MaxEventDuration">
    <summary>
      The sum of user interaction latency above budget of a page load, in ms.
      For this metric, we measure the latency of user interactions by
      Responsiveness.UserInteraction.MaxEventDuration and we deduct a budget
      from the original value. If the latency value is below the budget, it will
      be treated as 0 ms. Each type of interaction has its own budget.
    </summary>
  </metric>
  <metric
      name="InteractiveTiming.SumOfUserInteractionLatencyOverBudget.TotalEventDuration">
    <obsolete>
      Deprecated March 2022 for
      SlowUserInteractionLatency.HighPercentile2.MaxEventDuration
    </obsolete>
    <summary>
      The sum of user interaction latency above budget of a page load, in ms.
      For this metric, we measure the latency of user interactions by
      Responsiveness.UserInteraction.TotalEventDuration and we deduct a budget
      from the original value. If the latency value is below the budget, it will
      be treated as 0 ms. Each type of interaction has its own budget.
    </summary>
  </metric>
  <metric name="InteractiveTiming.TotalAdjustedInputDelay">
    <summary>
      sum(max(Input Delay - 50, 0)). The Input Delay refers to the duration
      between the hardware timestamp and the start of event processing on the
      main thread for the meaningful input. In ms.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="InteractiveTiming.TotalInputDelay">
    <summary>
      sum(Input Delay). The Input Delay refers to the duration between the
      hardware timestamp and the start of event processing on the main thread
      for the meaningful input. In ms.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric
      name="InteractiveTiming.TotalUserInteractionLatencyOverBudget.MaxEventDuration">
    <obsolete>
      Deprecated 10/2021. Replaced by
      &quot;InteractiveTiming.SumOfUserInteractionLatencyOverBudget.MaxEventDuration&quot;.
    </obsolete>
    <summary>
      The sum of user interaction latency above budget of a page load, in ms.
      For this metric, we measure the latency of user interactions by
      Responsiveness.UserInteraction.MaxEventDuration and we deduct a budget
      from the original value. If the latency value is below the budget, it will
      be treated as 0 ms. Each type of interaction has its own budget.
    </summary>
  </metric>
  <metric
      name="InteractiveTiming.TotalUserInteractionLatencyOverBudget.TotalEventDuration">
    <obsolete>
      Deprecated 10/2021. Replaced by
      &quot;InteractiveTiming.SumOfUserInteractionLatencyOverBudget.TotalEventDuration&quot;.
    </obsolete>
    <summary>
      The sum of user interaction latency above budget of a page load, in ms.
      For this metric, we measure the latency of user interactions by
      Responsiveness.UserInteraction.TotalEventDuration and we deduct a budget
      from the original value. If the latency value is below the budget, it will
      be treated as 0 ms. Each type of interaction has its own budget.
    </summary>
  </metric>
  <metric
      name="InteractiveTiming.UserInteractionLatency.HighPercentile2.MaxEventDuration">
    <summary>
      An approximation of a high percentile of user interaction latency of a
      page load, in ms. For this metric, we measure the latency of user
      interactions by Responsiveness.UserInteraction.MaxEventDuration.
    </summary>
  </metric>
  <metric
      name="InteractiveTiming.UserInteractionLatencyAtFirstOnHidden.HighPercentile2.MaxEventDuration">
    <summary>
      An approximation of a high percentile of user interaction latency of a
      page load, in ms. For this metric, we measure the latency of user
      interactions by Responsiveness.UserInteraction.MaxEventDuration. We record
      it when a page is moved from the foreground to the background for the
      first time. This metric is trying to record the INP values which are not
      able to be recorded in
      InteractiveTiming.UserInteractionLatency.HighPercentile2.MaxEventDuration
      for some reasons.
    </summary>
  </metric>
  <metric name="InteractiveTiming.WorstUserInteractionLatency.MaxEventDuration">
    <summary>
      The maximum value of user interaction latency of a page load, in ms. For
      this metric, we measure the latency of user interactions by
      Responsiveness.UserInteraction.MaxEventDuration. Each type of interaction
      has its own budget.
    </summary>
  </metric>
  <metric
      name="InteractiveTiming.WorstUserInteractionLatency.TotalEventDuration">
    <obsolete>
      Deprecated March 2022 for
      SlowUserInteractionLatency.HighPercentile2.MaxEventDuration
    </obsolete>
    <summary>
      The maximum value of user interaction latency of a page load, in ms. For
      this metric, we measure the latency of user interactions by
      Responsiveness.UserInteraction.TotalEventDuration. Each type of
      interaction has its own budget.
    </summary>
  </metric>
  <metric
      name="InteractiveTiming.WorstUserInteractionLatencyOverBudget.MaxEventDuration">
    <obsolete>
      Deprecated March 2022 for
      SlowUserInteractionLatency.HighPercentile2.MaxEventDuration
    </obsolete>
    <summary>
      The maximum value of user interaction latency above budget of a page load,
      in ms. For this metric, we measure the latency of user interactions by
      Responsiveness.UserInteraction.MaxEventDuration and we deduct a budget
      from the original value. If the latency value is below the budget, it will
      be treated as 0 ms. Each type of interaction has its own budget.
    </summary>
  </metric>
  <metric
      name="InteractiveTiming.WorstUserInteractionLatencyOverBudget.TotalEventDuration">
    <obsolete>
      Deprecated March 2022 for
      SlowUserInteractionLatency.HighPercentile2.MaxEventDuration
    </obsolete>
    <summary>
      The maximum value of user interaction latency above budget of a page load,
      in ms. For this metric, we measure the latency of user interactions by
      Responsiveness.UserInteraction.TotalEventDuration and we reduct a budget
      from the original value. If the latency value is below the budget, it will
      be treated as 0 ms. Each type of interaction has its own budget.
    </summary>
  </metric>
  <metric name="IsCrossProcessNavigation">
    <owner>altimin@chromium.org</owner>
    <owner>arthursonzogni@chromium.org</owner>
    <summary>
      Whether the navigation resulted in the main frame being hosted in a
      different renderer process than the current document or not.
    </summary>
  </metric>
  <metric name="IsExistingBookmark" enum="Boolean">
    <summary>
      Marked true if the page was already bookmarked when the navigation
      committed.
    </summary>
  </metric>
  <metric name="IsExistingPartOfTabGroup" enum="Boolean">
    <summary>
      Marked true if the page was already part of a tab group when the
      navigation committed.
    </summary>
  </metric>
  <metric name="IsNewBookmark" enum="Boolean">
    <summary>
      Roughly: measures if the page was newly bookmarked. Specifically: this is
      marked true if the page was not bookmarked when the navigation committed,
      and is bookmarked at the end of the page lifetime.

      Note, this means this boolean is mutually exclusive with
      IsExistingBookmark.

      Also note, this means that a page that is bookmarked, and then
      sebsequently un-bookmarked is counted as false.
    </summary>
  </metric>
  <metric name="IsNTPCustomLink" enum="Boolean">
    <summary>
      Marked true if the page has been explicitly added (by the user) to the
      list of custom links displayed in the NTP. Links added to the NTP by
      History TopSites don't count for this. Always false on Android, because
      Android does not have NTP custom links.
    </summary>
  </metric>
  <metric name="IsPlacedInTabGroup" enum="Boolean">
    <summary>
      Roughly: measures if the page was added to a tab group. Specifically: this
      is marked true if the page was not part of a tab group when the navigation
      committed, and is part of a tab group at the end of the page lifetime.

      Note, this means this boolean is mutually exclusive with
      IsExistingPartOfTabGroup.

      Also note, this means that a page that is added, and then sebsequently
      removed from a tab group is counted as false.
    </summary>
  </metric>
  <metric name="IsScopedSearchLikeNavigation" enum="Boolean">
    <summary>
      Marked true if the page was eligible for a scoped search when the
      navigation committed.
    </summary>
  </metric>
  <metric name="IsSignedExchangeInnerResponse">
    <obsolete>
      Migrated to the PageLoad.SignedExchange event. The presence of that event
      indicates the associated source was served via signed exchange.
    </obsolete>
    <summary>
      Set to 1 if the main resource is an inner response of a signed exchange.
    </summary>
  </metric>
  <metric
      name="LayoutInstability.AverageCumulativeShiftScore.SessionWindow.Gap5000ms">
    <obsolete>
      Deprecated 06/2021.
    </obsolete>
    <summary>
      Measures the average cumulative layout shift (bit.ly/cls-explainer) that
      has occurred in a session window. The gap between two consecutive shifts
      in a window is not bigger than 5000ms. This metric's integral value is
      100x the fractional cumulative layout shift score described in the
      explainer.
    </summary>
  </metric>
  <metric name="LayoutInstability.CumulativeShiftScore">
    <summary>
      Deprecated as of 04/23. It is still reported, but most users should use
      PageLoad.LayoutInstability.MaxCumulativeShiftScore.SessionWindow.Gap1000ms.Max5000ms.

      Measures the cumulative layout shift (bit.ly/lsm-explainer) that has
      occurred on the page (including all subframes) during the session. This
      metric's integral value is 100x the fractional cumulative layout shift
      score described in the explainer. Stable since M79; previous versions are
      experimental and subject to fluctuation between releases. Log of major
      changes: http://bit.ly/chrome-speed-metrics-changelog
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.country,profile.system_ram"/>
        <index fields="profile.is_dominant_version"/>
        <index fields="profile.is_latest_version"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="LayoutInstability.CumulativeShiftScore.BeforeInputOrScroll">
    <summary>
      Measures the cumulative layout shift (bit.ly/lsm-explainer) that has
      occurred on the page (including all subframes) during the session, before
      any user input or scroll (in any frame). This metric's integral value is
      100x the fractional cumulative layout shift score described in the
      explainer.
    </summary>
  </metric>
  <metric name="LayoutInstability.CumulativeShiftScore.MainFrame">
    <summary>
      Measures the cumulative layout shift (bit.ly/lsm-explainer) that has
      occurred in the main frame during the session. This metric's integral
      value is 100x the fractional cumulative layout shift score described in
      the explainer.
    </summary>
  </metric>
  <metric
      name="LayoutInstability.CumulativeShiftScore.MainFrame.BeforeInputOrScroll">
    <summary>
      Measures the cumulative layout shift (bit.ly/lsm-explainer) that has
      occurred in the main frame during the session, before any user input or
      scroll. This metric's integral value is 100x the fractional cumulative
      layout shift score described in the explainer.
    </summary>
  </metric>
  <metric
      name="LayoutInstability.MaxCumulativeShiftScore.SessionWindow.Gap1000ms">
    <obsolete>
      Deprecated 06/2021.
    </obsolete>
    <summary>
      Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that
      has occurred in a session window. The gap between two consecutive shifts
      in a window is not bigger than 1000ms. This metric's integral value is
      100x the fractional cumulative layout shift score described in the
      explainer.
    </summary>
  </metric>
  <metric
      name="LayoutInstability.MaxCumulativeShiftScore.SessionWindow.Gap1000ms.Max5000ms">
    <summary>
      Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that
      has occurred in a session window. The gap between two consecutive shifts
      in a window is not bigger than 1000ms and the maximum window size is
      5000ms. This metric's integral value is 100x the fractional cumulative
      layout shift score described in the explainer.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric
      name="LayoutInstability.MaxCumulativeShiftScore.SessionWindowByInputs.Gap1000ms.Max5000ms">
    <obsolete>
      Deprecated 06/2021.
    </obsolete>
    <summary>
      Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that
      has occurred in a session window. The gap between two consecutive shifts
      in a window is not bigger than 1000ms or segmented by a user input. The
      maximum window size is 5000ms. This metric's integral value is 100x the
      fractional cumulative layout shift score described in the explainer.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric
      name="LayoutInstability.MaxCumulativeShiftScore.SlidingWindow.Duration1000ms">
    <obsolete>
      Deprecated 06/2021.
    </obsolete>
    <summary>
      Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that
      has occurred in a 1000ms sliding window. This metric's integral value is
      100x the fractional cumulative layout shift score described in the
      explainer.
    </summary>
  </metric>
  <metric
      name="LayoutInstability.MaxCumulativeShiftScore.SlidingWindow.Duration300ms">
    <obsolete>
      Deprecated 06/2021.
    </obsolete>
    <summary>
      Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that
      has occurred in a 300ms sliding window. This metric's integral value is
      100x the fractional cumulative layout shift score described in the
      explainer.
    </summary>
  </metric>
  <metric name="LayoutStability.JankScore">
    <obsolete>
      Removed July 2019 in favor of LayoutInstability.CumulativeShiftScore.
    </obsolete>
    <summary>
      Measures the amount of layout jank (bit.ly/lsm-explainer) that has
      occurred on the page (including all subframes) during the session. This
      metric's integral value is 100x the fractional jank score described in the
      explainer.
    </summary>
  </metric>
  <metric name="LayoutStability.JankScore.MainFrame">
    <obsolete>
      Removed July 2019 in favor of
      LayoutInstability.CumulativeShiftScore.MainFrame.
    </obsolete>
    <summary>
      Measures the amount of layout jank (bit.ly/lsm-explainer) that has
      occurred in the main frame during the session. This metric's integral
      value is 100x the fractional jank score described in the explainer.
    </summary>
  </metric>
  <metric name="LayoutStability.JankScore.MainFrame.BeforeInputOrScroll">
    <obsolete>
      Removed July 2019 in favor of
      LayoutInstability.CumulativeShiftScore.MainFrame.BeforeInputOrScroll.
    </obsolete>
    <summary>
      Measures the amount of layout jank (bit.ly/lsm-explainer) that has
      occurred in the main frame during the session, before any user input or
      document scroll. This metric's integral value is 100x the fractional jank
      score described in the explainer.
    </summary>
  </metric>
  <metric name="MainDocumentSequenceNumber">
    <owner>altimin@chromium.org</owner>
    <owner>arthursonzogni@chromium.org</owner>
    <summary>
      An id for the main frame's document associated with the current
      navigation. It doesn't change for same-document navigations and when
      navigating back to the same document. Unique during the browsing session.
    </summary>
  </metric>
  <metric name="MainFrameResource.ConnectDelay">
    <summary>
      The duration between the start of the connection establishment to the end
      of the connection establishment to the origin of the main frame request.
      In ms.
    </summary>
  </metric>
  <metric name="MainFrameResource.DNSDelay">
    <summary>
      The duration between the start of the DNS resolution to the end for the
      origin of the main frame request. In ms.
    </summary>
  </metric>
  <metric name="MainFrameResource.HttpProtocolScheme">
    <summary>
      HTTP Protocol scheme of the connection using which the main frame response
      was fetched. Recorded as HttpProtocolScheme enum in
      tools/metrics/histograms/enum.xml.
    </summary>
  </metric>
  <metric name="MainFrameResource.NavigationStartToReceiveHeadersStart">
    <summary>
      The duration from the start of the navigation to the start of the response
      headers being received. In ms.
    </summary>
  </metric>
  <metric name="MainFrameResource.NavigationStartToRequestStart">
    <summary>
      The duration from the start of the navigation to the start of the main
      frame request. This includes the time to process any redirects on the main
      frame request. In ms.
    </summary>
  </metric>
  <metric name="MainFrameResource.RedirectCount">
    <summary>
      The number of main frame redirects that occurred before commit. Unset if
      there were no redirects.
    </summary>
  </metric>
  <metric name="MainFrameResource.RequestHadCookies" enum="Boolean">
    <summary>
      A boolean indicating if any mainpage request in the redirect chain or
      committed request had cookies set on it. Only set when a query result was
      received from the cookie manager before event recording.
    </summary>
  </metric>
  <metric name="MainFrameResource.RequestHasNoStore" enum="Boolean">
    <summary>
      A boolean indicating if any mainpage resource has a 'Cache-control:
      no-store' response header. Recorded only for main frame request.
    </summary>
  </metric>
  <metric name="MainFrameResource.RequestStartToReceiveHeadersEnd">
    <summary>
      The duration from when the request was started to the time when its
      response headers were received. Recorded only for the main frame request.
      In ms.
    </summary>
  </metric>
  <metric name="MainFrameResource.RequestStartToSendStart">
    <summary>
      The duration from when the request was started to the time when its
      request headers were sent. Recorded only for the main frame request. In
      ms.
    </summary>
  </metric>
  <metric name="MainFrameResource.SendStartToReceiveHeadersEnd">
    <summary>
      The duration from when the request headers were sent to when its response
      headers were received. Recorded only for the main frame request. In ms.
    </summary>
  </metric>
  <metric name="MainFrameResource.SocketReused">
    <summary>
      True if the socket was reused when establishing connection to the origin
      of the main frame request.
    </summary>
  </metric>
  <metric name="Navigation.PageEndReason">
    <obsolete>
      Deprecated May 2020 in favor of Navigation.PageEndReason2.
    </obsolete>
    <summary>
      The |page_load_metrics::PageEndReason| for the main frame navigation of
      this page load.
    </summary>
  </metric>
  <metric name="Navigation.PageEndReason2" enum="PageEndReason">
    <obsolete>
      Deprecated Jan 2021 in favor of Navigation.PageEndReason3.
    </obsolete>
    <summary>
      The |page_load_metrics::PageEndReason| for the main frame navigation of
      this page load. Replaced Navigation.PageEndReason at the end of May 2020
      to reduce occurrences of page_load_metrics::PageEndReason::END_NONE by
      setting the value to page_load_metrics::PageEndReason::END_HIDDEN when the
      metric is recorded after the page became hidden.
    </summary>
  </metric>
  <metric name="Navigation.PageEndReason3" enum="PageEndReason">
    <summary>
      The |page_load_metrics::PageEndReason| for the main frame navigation of
      this page load. Replaced Navigation.PageEndReason2 on January 2021 to get
      rid of END_HIDDEN and use END_APP_BACKGROUND on cases where the metrics
      are flushed and the app enters the background.
    </summary>
  </metric>
  <metric name="Navigation.PageTransition">
    <summary>
      The |ui::PageTransition| for the main frame navigation of this page load.
    </summary>
  </metric>
  <metric name="NavigationEntryOffset">
    <owner>altimin@chromium.org</owner>
    <owner>arthursonzogni@chromium.org</owner>
    <summary>
      Difference between the last committed navigation entry index before and
      after the commit of this navigation.
    </summary>
  </metric>
  <metric name="Net.CacheBytes">
    <obsolete>
      Deprecated 06/2019 in favor of Net.CacheBytes2.
    </obsolete>
    <summary>
      The total number of body bytes loaded from cache for all resources on the
      page. This is rounded down to the nearest exponential bucket (with a
      bucket spacing factor of 1.3).
    </summary>
  </metric>
  <metric name="Net.CacheBytes2">
    <summary>
      The total number of body bytes loaded from cache for all resources on the
      page. This includes the http and memory cache. This is rounded down to the
      nearest exponential bucket (with a bucket spacing factor of 1.3).
    </summary>
  </metric>
  <metric name="Net.DownstreamKbpsEstimate.OnNavigationStart">
    <owner>tbansal@chromium.org</owner>
    <summary>
      The downstream throughput (in kilobits per second) for this page load, at
      the time the navigation for this page load was initiated.
    </summary>
  </metric>
  <metric name="Net.EffectiveConnectionType.OnNavigationStart">
    <obsolete>
      Deprecated 7/2017 in favor of
      Net.EffectiveConnectionType2.OnNavigationStart.
    </obsolete>
    <summary>
      The |net::EffectiveConnectionType| at the time the navigation for this
      page load was initiated.
    </summary>
  </metric>
  <metric name="Net.EffectiveConnectionType2.OnNavigationStart">
    <summary>
      The |SystemProfileProto::Network::EffectiveConnectionType| at the time the
      navigation for this page load was initiated.
    </summary>
  </metric>
  <metric name="Net.ErrorCode.OnFailedProvisionalLoad">
    <summary>
      The |net::Error| code for this page load. Only logged for failed
      provisional navigations.
    </summary>
  </metric>
  <metric name="Net.HttpResponseCode">
    <summary>
      The HTTP response code (e.g., 200, 404, etc.) associated with the main
      frame page load.
    </summary>
  </metric>
  <metric name="Net.HttpRttEstimate.OnNavigationStart">
    <summary>
      The HTTP round trip time estimate for this page load, at the time the
      navigation for this page load was initiated.
    </summary>
  </metric>
  <metric name="Net.ImageBytes">
    <obsolete>
      Deprecated 09/2021 in favor of Net.ImageBytes2.
    </obsolete>
    <summary>
      The total number of bytes loaded from the network for images on the page.
      This is rounded down to the nearest exponential bucket (with a bucket
      spacing factor of 1.3). On mobile this only records bytes up until the
      page/app is backgrounded.
    </summary>
  </metric>
  <metric name="Net.ImageBytes2">
    <summary>
      The total number of bytes loaded from the network for images on the page.
      This is rounded down to the nearest exponential bucket (with a bucket
      spacing factor of 1.3). On mobile this only records bytes up until the
      page/app is backgrounded.
    </summary>
  </metric>
  <metric name="Net.ImageSubframeBytes">
    <obsolete>
      Deprecated 09/2021 in favor of Net.ImageSubframeBytes2.
    </obsolete>
    <summary>
      The total number of bytes loaded from the network for images on the
      subframes of the page. This is rounded down to the nearest exponential
      bucket (with a bucket spacing factor of 1.3). On mobile this only records
      bytes up until the page/app is backgrounded.
    </summary>
  </metric>
  <metric name="Net.ImageSubframeBytes2">
    <summary>
      The total number of bytes loaded from the network for images on the
      subframes of the page. This is rounded down to the nearest exponential
      bucket (with a bucket spacing factor of 1.3). On mobile this only records
      bytes up until the page/app is backgrounded.
    </summary>
  </metric>
  <metric name="Net.JavaScriptBytes">
    <obsolete>
      Deprecated 09/2021 in favor of Net.JavaScriptBytes2.
    </obsolete>
    <summary>
      The sum of decoded body lengths of all JavaScript resources that completed
      loading on the page. This is rounded down to the nearest exponential
      bucket (with a bucket spacing factor of 10). On mobile this only records
      bytes up until the page/app is backgrounded.
    </summary>
  </metric>
  <metric name="Net.JavaScriptBytes2">
    <summary>
      The sum of decoded body lengths of all JavaScript resources that completed
      loading on the page. This is rounded down to the nearest exponential
      bucket (with a bucket spacing factor of 1.3). On mobile this only records
      bytes up until the page/app is backgrounded.
    </summary>
  </metric>
  <metric name="Net.JavaScriptMaxBytes">
    <obsolete>
      Deprecated 09/2021 in favor of Net.JavaScriptMaxBytes2.
    </obsolete>
    <summary>
      The max of decoded body lengths of all JavaScript resources that completed
      loading on the page. This is rounded down to the nearest exponential
      bucket (with a bucket spacing factor of 10). On mobile this only records
      bytes up until the page/app is backgrounded.
    </summary>
  </metric>
  <metric name="Net.JavaScriptMaxBytes2">
    <summary>
      The max of decoded body lengths of all JavaScript resources that completed
      loading on the page. This is rounded down to the nearest exponential
      bucket (with a bucket spacing factor of 1.3). On mobile this only records
      bytes up until the page/app is backgrounded.
    </summary>
  </metric>
  <metric name="Net.MediaBytes">
    <obsolete>
      Deprecated 09/2021 in favor of Net.MediaBytes2.
    </obsolete>
    <summary>
      The total number of bytes loaded from the network for media (video, audio)
      on the page. This is rounded down to the nearest exponential bucket (with
      a bucket spacing factor of 1.3). On mobile this only records bytes up
      until the page/app is backgrounded.
    </summary>
  </metric>
  <metric name="Net.MediaBytes2">
    <summary>
      The total number of bytes loaded from the network for media (video, audio)
      on the page. This is rounded down to the nearest exponential bucket (with
      a bucket spacing factor of 1.3). On mobile this only records bytes up
      until the page/app is backgrounded.
    </summary>
  </metric>
  <metric name="Net.NetworkBytes">
    <obsolete>
      Deprecated 03/2019 in favor of Net.NetworkBytes2.
    </obsolete>
    <summary>
      The total number of body bytes loaded from the network for all resources
      on the page. This is rounded down to the nearest exponential bucket (with
      a bucket spacing factor of 1.3).
    </summary>
  </metric>
  <metric name="Net.NetworkBytes2">
    <summary>
      The total number of bytes loaded from the network for all resources on the
      page, including incomplete resources and headers. This is rounded down to
      the nearest exponential bucket (with a bucket spacing factor of 1.3). On
      mobile this only records bytes up until the page/app is backgrounded.
    </summary>
  </metric>
  <metric name="Net.TransportRttEstimate.OnNavigationStart">
    <summary>
      The transport round trip time estimate for this page load, at the time the
      navigation for this page load was initiated.
    </summary>
  </metric>
  <metric name="OmniboxUrlCopied" enum="Boolean">
    <summary>
      Marked true if the user copied the page's URL from the omnibox at any time
      for this page load.
    </summary>
  </metric>
  <metric name="PageTiming.ForegroundDuration">
    <summary>
      For page loads that start in the foreground, measures the duration of time
      in milliseconds until one of the following events occurs: the load of the
      main resource fails, the page load is stopped, the tab hosting the page is
      closed, the render process hosting the page goes away, a new navigation
      which later commits is initiated in the same tab, or the tab hosting the
      page is backgrounded. This metric has a very long tail, for pages that
      spend a long period of time in the foreground. As such, use of the mean or
      tail values are not recommended.
    </summary>
  </metric>
  <metric name="PageTiming.NavigationToFailedProvisionalLoad">
    <summary>
      Measures the time in milliseconds from navigation timing's navigation
      start to the time the provisional load failed. Only measures provisional
      loads that failed in the foreground.
    </summary>
  </metric>
  <metric name="PageTiming.TotalForegroundDuration">
    <summary>
      The total amount of time the page spent in the foreground, in
      milliseconds. Note that this metric adds all foreground durations
      occurring for the page. For example: if the page starts foregrounded
      during 1 second, then goes to the background for a while, then is
      foregrounded again for 2 seconds, and then is unloaded, this metric
      reports 3 seconds. To see metrics about consecutive foreground sessions,
      see the PageForegroundSession event instead. This metric is recorded at
      the end of each page load. As usual with PageLoad metrics, we consider app
      backgrounding on Android to be the end of page load as well as the app
      could be evicted by Android anytime after that happens.
    </summary>
  </metric>
  <metric name="PageTiming.UserTimingMarkFullyLoaded">
    <summary>
      When the page UserTiming mark API is called with the standard
      'mark_fully_loaded' name to mark that the page is fully loaded. If the
      mark is called more than once, the last is used.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="PageTiming.UserTimingMarkFullyVisible">
    <summary>
      When the page UserTiming mark API is called with the standard
      'mark_fully_visible' name to mark that the page is fully visible. If the
      mark is called more than once, the last is used.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="PageTiming.UserTimingMarkInteractive">
    <summary>
      When the page UserTiming mark API is called with the standard
      'mark_interactive' name to mark that the page is interactive. If the mark
      is called more than once, the last is used.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="PageVisitFinalStatus" enum="PageVisitFinalStatus">
    <summary>
      Determines the final status for this page load. That is, records whether
      the page was never foregrounded, was foregrounded but did not reach FCP,
      or did reach FCP. The metric is recorded at the end of each page load. As
      usual with PageLoad metrics, we consider app backgrounding on Android to
      be the end of page load as well as the app could be evicted by Android
      anytime after that happens.
    </summary>
  </metric>
  <metric name="PaintTiming.LargestContentfulPaintBPP"
      enum="BitsPerPixelExponential">
    <summary>
      Measures the ratio of image file size (in bits) to displayed pixels for
      the LCP candidate. Bucketed into roughly exponential intervals to account
      for the wide range of encountered values (less than 1:100000 to greater
      than 10000:1). This metric is recorded whenever the LCP candidate is an
      image, and omitted when it is text.
    </summary>
  </metric>
  <metric name="PaintTiming.LargestContentfulPaintImageLoadEnd">
    <summary>
      Measures the time in milliseconds from navigation timing's navigation
      start to the time when the LCP element(image) finishes loading. For
      animated images, this is when the image resource finishes loading
      completely, not the first frame time. See web.dev/optimize-lcp for more
      details. This metric is not recorded when the LCP element is text or
      video.
    </summary>
  </metric>
  <metric name="PaintTiming.LargestContentfulPaintImageLoadStart">
    <summary>
      Measures the time in milliseconds from navigation timing's navigation
      start to the time when the LCP element(image) starts loading. See
      web.dev/optimize-lcp for more details. This metric is not recorded when
      the LCP element is text or video.
    </summary>
  </metric>
  <metric name="PaintTiming.LargestContentfulPaintRequestPriority"
      enum="NetRequestPriority">
    <summary>
      Resource loading priority used for the LCP candidate. This metric is
      recorded whenever the LCP candidate is an image, and omitted when it is
      text or video.
    </summary>
  </metric>
  <metric name="PaintTiming.LargestContentfulPaintType">
    <summary>
      Indicates that type of the LargestContentfulPaint candidate. This value is
      a packed set of flags, defined in
      third_party/blink/public/common/performance/largest_contentful_paint_type.h
    </summary>
  </metric>
  <metric name="PaintTiming.NavigationToExperimentalLargestContentfulPaint">
    <obsolete>
      Replaced by PaintTiming.NavigationToLargestContentfulPaint2 on Oct 2020.
    </obsolete>
    <summary>
      Measures the time in milliseconds from navigation timing's navigation
      start to the time when the page first paints the largest content (text or
      image) within viewport, across all frames. Differs from
      PaintTiming.NavigationToLargestContentfulPaint in that this experimental
      version includes content that has been removed.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.country,profile.system_ram"/>
        <index fields="profile.is_dominant_version"/>
        <index fields="profile.is_latest_version"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric
      name="PaintTiming.NavigationToExperimentalLargestContentfulPaint.MainFrame">
    <obsolete>
      Replaced by PaintTiming.NavigationToLargestContentfulPaint2.MainFrame on
      Oct 2020.
    </obsolete>
    <summary>
      Measures the time in milliseconds from navigation timing's navigation
      start to the time when the page first paints the largest content (text or
      image) within viewport, in the main frame. Differs from
      PaintTiming.NavigationToLargestContentfulPaint.MainFrame in that this
      experimental version includes content that has been removed.
    </summary>
  </metric>
  <metric name="PaintTiming.NavigationToFirstContentfulPaint">
    <summary>
      Measures the time in milliseconds from navigation timing's navigation
      start to the time when the page first paints content. A contentful paint
      includes a paint of text, image, SVG, or canvas. Log of major changes:
      http://bit.ly/chrome-speed-metrics-changelog
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.country,profile.system_ram"/>
        <index fields="profile.gender"/>
        <index fields="profile.gender,profile.generation"/>
        <index fields="profile.generation"/>
        <index fields="profile.is_dominant_version"/>
        <index fields="profile.is_latest_version"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="PaintTiming.NavigationToFirstPaint">
    <summary>
      Measures the time in milliseconds from navigation timing's navigation
      start to the time the first paint is performed.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="PaintTiming.NavigationToLargestContentfulPaint">
    <obsolete>
      Replaced by PaintTiming.NavigationToLargestContentfulPaint2. No longer
      reported from Nov 2021.
    </obsolete>
    <summary>
      Measures the time in milliseconds from navigation timing's navigation
      start to the time when the page first paints the largest content (text or
      image) within viewport, across all frames. See http://bit.ly/fcp_plus_plus
      for more details. Stable since M79; previous versions are experimental and
      subject to fluctuation between releases. Log of major changes:
      http://bit.ly/chrome-speed-metrics-changelog Note: Will be replaced by
      PaintTiming.NavigationToLargestContentfulPaint2.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.country,profile.system_ram"/>
        <index fields="profile.is_dominant_version"/>
        <index fields="profile.is_latest_version"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="PaintTiming.NavigationToLargestContentfulPaint.MainFrame">
    <obsolete>
      Replaced by PaintTiming.NavigationToLargestContentfulPaint2.MainFrame. No
      longer reported from Nov 2021.
    </obsolete>
    <summary>
      Measures the time in milliseconds from navigation timing's navigation
      start to the time when the page first paints the largest content (text or
      image) within viewport, in the main frame. See http://bit.ly/fcp_plus_plus
      for more details. Note: Will be replaced by
      PaintTiming.NavigationToLargestContentfulPaint2.MainFrame.
    </summary>
  </metric>
  <metric name="PaintTiming.NavigationToLargestContentfulPaint2">
    <summary>
      Measures the time in milliseconds from navigation timing's navigation
      start to the time when the page first paints the largest content (text or
      image) within viewport, across all frames. See http://bit.ly/fcp_plus_plus
      for more details. Log of major changes:
      http://bit.ly/chrome-speed-metrics-changelog. Version 2 differs from the
      first version in that it includes content that has been removed from the
      page.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.country,profile.system_ram"/>
        <index fields="profile.is_dominant_version"/>
        <index fields="profile.is_latest_version"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric
      name="PaintTiming.NavigationToLargestContentfulPaint2.CrossSiteSubFrame">
    <summary>
      Similar to PaintTiming.NavigationToLargestContentfulPaint2, this measures
      the time in milliseconds from the navigation start of the top-level frame
      to the time when the page first paints the largest content (text or image)
      in the cross-site subframe which is the top candidate of largest
      contentful paint. This metric is computed separately from the page-level
      LCP, it's recorded even in page loads where the page-level LCP is not that
      cross-site LCP.
    </summary>
  </metric>
  <metric name="PaintTiming.NavigationToLargestContentfulPaint2.MainFrame">
    <summary>
      Measures the time in milliseconds from navigation timing's navigation
      start to the time when the page first paints the largest content (text or
      image) within viewport, in the main frame. Includes content that has been
      removed from the page. See http://bit.ly/fcp_plus_plus for more details.
    </summary>
  </metric>
  <metric name="PaintTiming.NavigationToLargestContentfulPaint2AtFirstOnHidden">
    <summary>
      Measures the time in milliseconds from navigation timing's navigation
      start to the time when the page first paints the largest content (text or
      image) within viewport, across all frames. Recorded at the point when a
      page which has been opened in the foreground is moved to the background
      for the first time. See http://bit.ly/fcp_plus_plus for more details. Log
      of major changes: http://bit.ly/chrome-speed-metrics-changelog. This
      metric is trying to record the LCP values which are not able to be
      recorded in PaintTiming.NavigationToLargestContentfulPaint2 for some
      reasons.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.country,profile.system_ram"/>
        <index fields="profile.is_dominant_version"/>
        <index fields="profile.is_latest_version"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="ParseTiming.NavigationToParseStart">
    <summary>
      Measures the time in milliseconds from navigation timing's navigation
      start to the time the parser started, for main frame documents.
    </summary>
  </metric>
  <metric name="RefreshRateThrottled" enum="Boolean">
    <summary>
      Records whether the refresh rate is throttled (capped to 30Hz) by Power
      Saver Mode for this Page Load, when the navigation starts. It is possible
      but very unlikely for this to change mid navigation, for instance due to a
      change by the user in settings or the battery being recharged above 20%.
    </summary>
  </metric>
  <metric name="SiteEngagementScore">
    <owner>mcrouse@chromium.org</owner>
    <owner>tbansal@chromium.org</owner>
    <summary>
      Measures the Site Engagement Score for the committed URL rounded to the
      nearest 10.
    </summary>
  </metric>
  <metric name="SiteInstanceRenderProcessAssignment"
      enum="SiteInstanceProcessAssignment">
    <summary>
      Records how the main frame's site instance was assigned to a renderer
      process.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SoftNavigationCount">
    <summary>
      Number of soft navigations detected by heuristics. See
      https://bit.ly/soft-navigation

      Soft navigations are JS-driven same-document navigations that are using
      the history API or the new Navigation API, triggered by a user gesture and
      meaningfully modify the DOM, replacing the previous content with new one.
    </summary>
  </metric>
  <metric name="ThirdPartyCookieBlockingEnabledForSite" enum="Boolean">
    <owner>dullweber@chromium.org</owner>
    <owner>huanzhong@chromium.org</owner>
    <summary>
      Records whether third party cookie blocking was enabled for a site. Only
      recorded for users who enabled the cookie controls ui.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="WasCached">
    <summary>
      Set to 1 if the main resource was served from cache.
    </summary>
  </metric>
  <metric name="WasDiscarded" enum="Boolean">
    <summary>
      Records whether the Page Load is the result of the page having previously
      been discarded because of performance interventions or critical memory
      pressure.
    </summary>
  </metric>
</event>

<event name="PageLoad.CacheTransparencyEnabled" singular="True">
  <owner>nidhijaju@chromium.org</owner>
  <owner>ricea@chromium.org</owner>
  <summary>
    Recorded for page loads where Cache Transparency is enabled.
  </summary>
</event>

<event name="PageLoad.FromGoogleSearch" singular="True">
  <owner>sullivan@chromium.org</owner>
  <owner>mushan@chromium.org</owner>
  <summary>
    Recorded for page loads that were navigated to via Google Search.
  </summary>
  <metric name="GoogleSearchMode" enum="GoogleSearchMode">
    <summary>
      Google Search mode used by the user. This corresponds to the tab (e.g. web
      result, image results, video results, etc.) the user is on. This
      information is extracted from the tbm query parameter on the Search URL.
    </summary>
  </metric>
</event>

<event name="PageLoad.Internal" singular="True">
  <owner>npm@chromium.org</owner>
  <owner>speed-metrics-dev@chromium.org</owner>
  <summary>
    Debugging metrics for the PageLoad event that do not require the same amount
    of sampling.
  </summary>
  <metric name="PaintTiming.ExperimentalLargestContentfulPaint.ContentType"
      enum="LargestContentType">
    <obsolete>
      Replaced by PaintTiming.LargestContentfulPaint.ContentType. No longer
      reported from Nov 2021.
    </obsolete>
    <summary>
      Records whether the page's experimental version of largest contentful
      paint, whose timestamp is measured by
      PageLoad.PaintTiming.NavigationToLargestContentfulPaint, comes from text
      or image. This value is sampled and not on the PageLoad event, so it is
      not always recorded whenever
      PageLoad.PaintTiming.NavigationToLargestContentfulPaint is recorded.
    </summary>
  </metric>
  <metric
      name="PaintTiming.ExperimentalLargestContentfulPaint.TerminationState"
      enum="LargestContentfulPaint.TerminationState">
    <obsolete>
      Replaced by PaintTiming.LargestContentfulPaint.TerminationState. No longer
      reported from Nov 2021.
    </obsolete>
    <summary>
      Records the state of the experimental largest contentful paint algorithm
      at the time in which the browser attempts to record
      PageLoad.PaintTiming.NavigationToLargestContentfulPaint. This state
      depends on whether there was an experimental largest contentful paint
      candidate or not and the foreground state of the page. This value is
      sampled and not on the PageLoad event, so it is not always recorded
      whenever the browser attempts to record
      PageLoad.PaintTiming.NavigationToLargestContentfulPaint.
    </summary>
  </metric>
  <metric name="PaintTiming.LargestContentfulPaint.ContentType"
      enum="LargestContentType">
    <summary>
      Records whether the page's largest contentful paint, whose timestamp is
      measured by PageLoad.PaintTiming.NavigationToLargestContentfulPaint2,
      comes from text or image. This value is sampled and not on the PageLoad
      event, so it is not always recorded whenever
      PageLoad.PaintTiming.NavigationToLargestContentfulPaint2 is recorded.
    </summary>
  </metric>
  <metric name="PaintTiming.LargestContentfulPaint.TerminationState"
      enum="LargestContentfulPaint.TerminationState">
    <summary>
      Records the state of the largest contentful paint algorithm at the time in
      which the browser attempts to record
      PageLoad.PaintTiming.NavigationToLargestContentfulPaint2. This state
      depends on whether there was a largest contentful paint candidate or not
      and the foreground state of the page. This value is sampled and not on the
      PageLoad event, so it is not always recorded whenever the browser attempts
      to record PageLoad.PaintTiming.NavigationToLargestContentfulPaint2.
    </summary>
  </metric>
</event>

<event name="PageLoad.PervasivePayloadsEnabled" singular="True">
  <owner>nidhijaju@chromium.org</owner>
  <owner>ricea@chromium.org</owner>
  <summary>
    Recorded for page loads where the pervasive payloads list is inputted to
    Chrome.
  </summary>
</event>

<event name="PageLoad.ServiceWorkerControlled" singular="True">
  <owner>wanderview@chromium.org</owner>
  <owner>asamidoi@chromium.org</owner>
  <summary>
    Recorded for page loads controlled by a service worker.
  </summary>
</event>

<event name="PageLoad.SignedExchange" singular="True">
  <owner>horo@chromium.org</owner>
  <summary>
    Recorded for page loads which main resource is an inner response of a signed
    exchange.
  </summary>
  <metric name="ServedFromGoogleCache">
    <summary>
      Set to 1 if the main resource was served from Google's cache server.
    </summary>
  </metric>
</event>

<event name="PageLoadCapping" singular="True">
  <obsolete>
    Deprecated as of 3/2019.
  </obsolete>
  <owner>ryansturm@chromium.org</owner>
  <summary>
    Metrics related to PageLoadCapping that are recorded using the same UKM IDs
    as PageLoad.
  </summary>
  <metric name="FinalState">
    <summary>
      Set to 1 when the InfoBar was shown, but not acted upon. Set to 2 when the
      page was paused, but not resumed. Set to 3 when the page was resumed. If
      the InfoBar was not shown, this metrics is not recorded.
    </summary>
  </metric>
</event>

<event name="PageLoadInitiatorForAdTagging" singular="True">
  <owner>yaoxia@chromium.org</owner>
  <owner>jkarlin@chromium.org</owner>
  <summary>
    Metrics about the initiator context of a page load (e.g. whether certain
    condition was true and/or what triggered the page load). Recorded when a
    page commits. The metrics are specific to ad related conditions or purposes.
  </summary>
  <metric name="FromAdClick" enum="Boolean">
    <summary>
      Whether the page was opened due to a click on an ad.
    </summary>
  </metric>
  <metric name="FromUser" enum="Boolean">
    <summary>
      Whether the navigation occurred due to a user action. This includes
      omnibox navigations as well as renderer initiated navigations with user
      activation.
    </summary>
  </metric>
</event>

<event name="PageWithPassword">
  <owner>battre@chromium.org</owner>
  <summary>
    Metrics about websites that contain password forms and the user's
    interactions with them. No events are created for pages that don't contain
    password forms.
  </summary>
  <metric name="FormManagerAvailable">
    <summary>
      Records whether Chrome was sufficiently aware of forms during various
      stages of saving a credential on the site, or whether saving was aborted
      due to absence of the corresponding form manager. Values correspond to the
      enum PasswordManagerMetricsRecorder::FormManagerAvailable.
    </summary>
  </metric>
  <metric name="PageLevelUserAction">
    <summary>
      Records if the user interacts with the password manager in a way that
      cannot (reliably) be attributed to a specific PasswordFormManager. Values
      correspond to the enum
      PasswordManagerMetricsRecorder::PageLevelUserAction.
    </summary>
  </metric>
  <metric name="ProvisionalSaveFailure">
    <summary>
      Records a provisional save failure in case the password manager cannot
      offer to save a credential. Recorded values correspond to the enum
      PasswordManagerMetricsRecorder::ProvisionalSaveFailure.
    </summary>
  </metric>
  <metric name="UserModifiedPasswordField">
    <summary>
      Records a 1 for every page on which a user has modified a password text
      field - regardless of how many password fields a page contains or the user
      modifies.
    </summary>
  </metric>
</event>

<event name="PaintPreviewCapture" singular="True">
  <owner>ckitagawa@chromium.org</owner>
  <owner>fredmello@chromium.org</owner>
  <owner>mahmoudi@chromium.org</owner>
  <owner>vollick@chromium.org</owner>
  <summary>
    Metrics related to the performance of capturing Paint Previews.
  </summary>
  <metric name="BlinkCaptureTime">
    <summary>
      The amount of time spent painting in Blink to record a Paint Preview of
      the main frame.
    </summary>
  </metric>
  <metric name="CompressedOnDiskSize">
    <summary>
      The compressed on-disk size in KB of the captured artifacts. This is
      rounded down to the nearest exponential bucket (with a bucket ratio of
      1.3).
    </summary>
  </metric>
</event>

<event name="PasswordForm">
  <owner>battre@chromium.org</owner>
  <summary>
    Metrics about password forms on websites and the user's interactions with
    them. A separate event is generated for each password form discovered on a
    site.
  </summary>
  <metric name="Context.FormSignature">
    <summary>
      Records a low entropy hash of the form signature in order to be able to
      distinguish two forms on the same site.
    </summary>
  </metric>
  <metric name="DynamicFormChanges">
    <summary>
      Records a bitmask of password form changes after the first time this form
      is seen by Password Manager. Recorded once per a form when the form is
      removed from DOM. Bit 0 - changes in number of fields, bit 1 - changes in
      fields renderer ids, bit 2 - changes in autocomplete attributes, bit 3 -
      changes in form control types, bit 4 - changes in field names.
    </summary>
  </metric>
  <metric name="Fill.FirstFillingResultInRenderer"
      enum="PasswordManagerFirstRendererFillingResult">
    <summary>
      Records whether the PasswordAutofillAgent in the renderer manages to fill
      credentials as instructed by the browser or records a failure reason
      otherwise. Only the outcome of the first attempt to fill is recorded.

      This is replicated as PasswordManager.FirstFillingResultInRenderer in UMA.
    </summary>
  </metric>
  <metric name="Fill.FirstWaitForUsernameReason"
      enum="PasswordManagerFirstWaitForUsernameReason">
    <summary>
      This metric records why the browser instructs the renderer not to fill the
      credentials on page load but to wait for the user to confirm the
      credential to be filled. Only the value of the first decision to fill is
      recorded.

      This is replicated as PasswordManager.FirstWaitForUsernameReason in UMA.
    </summary>
  </metric>
  <metric name="FillOnLoad">
    <summary>
      Deprecated in November 2018, because the decision this metric supported
      was made. Records the comparison of the old and new decision about filling
      a form on load. Should only be logged for fillig with non-PSL matched
      credentials, in non-Incognito mode. Values are from
      password_manager::PasswordFormMetricsRecorder::FillOnLoad.
    </summary>
  </metric>
  <metric name="Generation.GeneratedPassword" enum="Boolean">
    <summary>
      Records '1' if the user has generated a password on this form.
    </summary>
  </metric>
  <metric name="Generation.GeneratedPasswordModified" enum="Boolean">
    <summary>
      Records '1' if the user has modified a generated a password on this form.
    </summary>
  </metric>
  <metric name="Generation.PopupShown" enum="PasswordGenerationPopupShown">
    <summary>
      Records an entry if (and only if) a popup was shown.
    </summary>
  </metric>
  <metric name="Generation.SpecPriority">
    <obsolete>
      Deprecated 09/2019.
    </obsolete>
    <summary>
      Reports the priority of a PasswordGenerationRequirementsSpec for a
      generated password. This can be used for debugging as a 0 means that no
      spec was used, a 10 means that the spec came from autofill and was crowd
      sourced, a 20 means that it was overridden per domain and a 30 means that
      is was overridden for the form.
    </summary>
  </metric>
  <metric name="ManagerFill.Action">
    <summary>
      Records for each password form (and HTTP auth), whether the password
      manager has filled/provided credentials. Recorded values correspond to the
      enum ManagerAutofillEvent.
    </summary>
  </metric>
  <metric name="ManagerFill.Assistance" enum="PasswordManagerFillingAssistance">
    <summary>
      Records for each successful submission the degree to which the user has
      been assisted by the password manager.

      This is replicated as PasswordManager.FillingAssistance in UMA.
    </summary>
  </metric>
  <metric name="ParsingComparison">
    <obsolete>
      Deprecated 09/2019.
    </obsolete>
    <summary>
      Records comparison result of old and new password form parsing algorithms.
      Metric is recorded on a password form detection. Recorded values
      correspond to the enum
      password_manager::PasswordFormMetricsRecorder::ParsingComparisonResult.
    </summary>
  </metric>
  <metric name="ParsingOnSavingDifference">
    <obsolete>
      Deprecated 09/2019.
    </obsolete>
    <summary>
      Records the comparison of the old and new password form parsing for
      saving. Multiple values from the
      password_manager::PasswordFormMetricsRecorder::ParsingOnSavingDifference
      bitmask can be combined.
    </summary>
  </metric>
  <metric name="ReadonlyWhenFilling">
    <summary>
      Records the readonly status encoded with parsing success after parsing for
      filling. The |value| is constructed as follows: The least significant bit
      says whether parsing succeeded (1) or not (0). The rest, shifted by one
      bit to the right is the FormDataParser::ReadonlyPasswordFields
      representation of the readonly status.
    </summary>
  </metric>
  <metric name="ReadonlyWhenSaving">
    <summary>
      Records the readonly status encoded with parsing success after parsing for
      creating pending credentials. The |value| is constructed the same way as
      for ReadonlyWhenFilling.
    </summary>
  </metric>
  <metric name="Saving.Prompt.Interaction" enum="PasswordBubbleDismissalReason">
    <summary>
      Records how the user interacted with a saving prompt.
    </summary>
  </metric>
  <metric name="Saving.Prompt.Shown" enum="Boolean">
    <summary>
      Records, for each password form seen by the password manager, whether the
      user was shown a prompt that asked for permission to save new credentials.
      In case a store() via the Credential Management API, a virtual password
      form is created, for which this metric is recorded.
    </summary>
  </metric>
  <metric name="Saving.Prompt.Trigger" enum="PasswordBubbleTrigger">
    <summary>
      Records the trigger of each password save bubble that was shown to the
      user to ask for permission to save new credentials.
    </summary>
  </metric>
  <metric name="Saving.ShowedManualFallbackForSaving">
    <summary>
      Records if a manual fallback for saving option was shown to the user (on
      Android this is recorded, even though the UI does not exist at the
      moment). This is a bit mask. 1 means a prompt was shown, 2 means the
      prompt was due to a generated password, 4 means the prompt was due to an
      update.
    </summary>
  </metric>
  <metric name="Submission.Indicator" enum="SubmissionIndicatorEvent">
    <summary>
      Records the event that led the password manager to believe the submission
      was successful. Metrics is recorded only when the password is saved.
    </summary>
  </metric>
  <metric name="Submission.Observed" enum="Boolean">
    <summary>
      Records whether a submission of a password form has been observered. The
      values 0 and 1 correspond to false and true respectively.
    </summary>
  </metric>
  <metric name="Submission.SubmissionResult"
      enum="PasswordFormSubmissionResult">
    <summary>
      Records the outcome of a password form submission.
    </summary>
  </metric>
  <metric name="Submission.SubmittedFormType" enum="PasswordFormType">
    <summary>
      Records the classification of a form at submission time.

      This is replicated as PasswordManager.SubmittedFormType in UMA.
    </summary>
  </metric>
  <metric name="SuppressedAccount.Generated.HTTPSNotHTTP">
    <obsolete>
      Deprecated 03/2019.
    </obsolete>
    <summary>
      Records, for each password form seen by the password manager, whether
      there were `suppressed` credentials, meaning stored credentials that were
      not filled, that were suppressed because they were stored for an HTTPS
      origin while the password form was seen on an HTTP origin. If there were
      such credentials, the histogram also records whether the username and
      password of such suppressed credentials matched those submitted. This
      recording happens only for credentials that were originally auto-generated
      (as opposed to user typed). Recorded values correspond to the enum
      SuppressedAccountExistence.
    </summary>
  </metric>
  <metric name="SuppressedAccount.Generated.PSLMatching">
    <obsolete>
      Deprecated 03/2019.
    </obsolete>
    <summary>
      Records, for each password form seen by the password manager, whether
      there were `suppressed` credentials, meaning stored credentials that were
      not filled, that were suppressed because they were for an origin that was
      only PSL-matching the origin of the observed form (see the suffix
      description for the possible classes of such near-matches). If there were
      such credentials, the histogram also records whether the username and
      password of such suppressed credentials matched those submitted. This
      recording happens only for credentials that were originally auto-generated
      (as opposed to user typed). Recorded values correspond to the enum
      SuppressedAccountExistence.
    </summary>
  </metric>
  <metric name="SuppressedAccount.Generated.SameOrganizationName">
    <obsolete>
      Deprecated 03/2019.
    </obsolete>
    <summary>
      Records, for each password form seen by the password manager, whether
      there were `suppressed` credentials, meaning stored credentials that were
      not filled, that were suppressed because they were for an origin that was
      only matching the visited origin if the TLD is stripped. If there were
      such credentials, the histogram also records whether the username and
      password of such suppressed credentials matched those submitted. This
      recording happens only for credentials that were originally auto-generated
      (as opposed to user typed). Recorded values correspond to the enum
      SuppressedAccountExistence.
    </summary>
  </metric>
  <metric name="SuppressedAccount.Manual.HTTPSNotHTTP">
    <obsolete>
      Deprecated 03/2019.
    </obsolete>
    <summary>
      Records, for each password form seen by the password manager, whether
      there were `suppressed` credentials, meaning stored credentials that were
      not filled, that were suppressed because they were stored for an HTTPS
      origin while the password form was seen on an HTTP origin. If there were
      such credentials, the histogram also records whether the username and
      password of such suppressed credentials matched those submitted. This
      recording happens only for credentials that were originally entered by the
      user (as opposed to auto-generated). Recorded values correspond to the
      enum SuppressedAccountExistence.
    </summary>
  </metric>
  <metric name="SuppressedAccount.Manual.PSLMatching">
    <obsolete>
      Deprecated 03/2019.
    </obsolete>
    <summary>
      Records, for each password form seen by the password manager, whether
      there were `suppressed` credentials, meaning stored credentials that were
      not filled, that were suppressed because they were for an origin that was
      only PSL-matching the origin of the observed form (see the suffix
      description for the possible classes of such near-matches). If there were
      such credentials, the histogram also records whether the username and
      password of such suppressed credentials matched those submitted. This
      recording happens only for credentials that were originally entered by the
      user (as opposed to auto-generated). Recorded values correspond to the
      enum SuppressedAccountExistence.
    </summary>
  </metric>
  <metric name="SuppressedAccount.Manual.SameOrganizationName">
    <obsolete>
      Deprecated 03/2019.
    </obsolete>
    <summary>
      Records, for each password form seen by the password manager, whether
      there were `suppressed` credentials, meaning stored credentials that were
      not filled, that were suppressed because they were for an origin that was
      only matching the visited origin if the TLD is stripped. If there were
      such credentials, the histogram also records whether the username and
      password of such suppressed credentials matched those submitted. This
      recording happens only for credentials that were originally entered by the
      user (as opposed to auto-generated). Recorded values correspond to the
      enum SuppressedAccountExistence.
    </summary>
  </metric>
  <metric name="Updating.Prompt.Interaction"
      enum="PasswordBubbleDismissalReason">
    <summary>
      Records how the user interacted with an updating prompt.
    </summary>
  </metric>
  <metric name="Updating.Prompt.Shown" enum="Boolean">
    <summary>
      Records, for each password form seen by the password manager, whether the
      user was shown a prompt that asked for permission to update existing
      credentials.
    </summary>
  </metric>
  <metric name="Updating.Prompt.Trigger" enum="PasswordBubbleTrigger">
    <summary>
      Records the trigger of each password update bubble that was shown to the
      user to ask for permission to update existing credentials.
    </summary>
  </metric>
  <metric name="User.Action">
    <obsolete>
      Deprecated. Use new user actions (&quot;User.Action....&quot;) instead.
    </obsolete>
    <summary>
      Records what the user does with all UI entry points of the password
      manager UI, like bubbles, context menus, forms, form fields, etc. in
      relation to a given form. Recorded values correspond to the enum
      PasswordFormMetricsRecorder::DetailedUserAction. In contrast to
      User.ActionSimplified, this metric is intended to be extended over time.
    </summary>
  </metric>
  <metric name="User.Action.CorrectedUsernameInForm">
    <summary>
      Counts how many times the user corrected a username in a password form.
      This is only populated if events happened.
    </summary>
  </metric>
  <metric name="User.Action.EditedUsernameInBubble">
    <summary>
      Counts how many times the user edited a username in a password save/update
      bubble. This is only populated if events happened.
    </summary>
  </metric>
  <metric name="User.Action.SelectedDifferentPasswordInBubble">
    <summary>
      Counts how many times the user selected a different password in a
      save/update bubble. This is only populated if events happened.
    </summary>
  </metric>
  <metric name="User.Action.TriggeredManualFallbackForSaving">
    <summary>
      Counts how many times the user triggered the manual fallback for password
      saving. This is only populated if events happened.
    </summary>
  </metric>
  <metric name="User.Action.TriggeredManualFallbackForUpdating">
    <obsolete>
      Deprecated. Use TriggeredManualFallbackForSaving instead.
    </obsolete>
    <summary>
      Counts how many times the user triggered the manual fallback for password
      updating. This is only populated if events happened.
    </summary>
  </metric>
  <metric name="User.ActionSimplified">
    <obsolete>
      Deprecated as of 12/11/2019.
    </obsolete>
    <summary>
      Records what the user does with a form. Recorded values correspond to the
      enum password_manager::UserAction.
    </summary>
  </metric>
</event>

<event name="PasswordManager.LeakWarningDialog">
  <owner>jkeitel@google.com</owner>
  <owner>chrome-duplex@google.com</owner>
  <summary>
    Metrics related to leak warnings shown on login and password reset. Leak
    warning dialogs in Chrome aim to inform users about leaked credentials and
    advise to change them. We collect type of the dialog that is shown and the
    response of the user to it.
  </summary>
  <metric name="PasswordLeakDetectionDialogDismissalReason"
      enum="PasswordLeakDetectionDialogDismissalReason">
    <summary>
      Records the response to the password leak dialog.
    </summary>
  </metric>
  <metric name="PasswordLeakDetectionDialogType"
      enum="PasswordLeakDetectionDialogType">
    <summary>
      Records the type of the password leak dialog.
    </summary>
  </metric>
</event>

<event name="PasswordManager.PasswordChangeFlowDuration">
  <owner>kolos@chromium.org</owner>
  <owner>jkeitel@google.com</owner>
  <summary>
    Metrics related to password change flows. Chrome offers users several entry
    points for password change flows, e.g. from Password Checkup in Settings or
    on a leak warning dialog during sign in with compromised credentials. We
    collect the duration of and the success rate of such password change flows.
  </summary>
  <metric name="Duration">
    <summary>
      The time that passed during the start of the flow and the end of the flow
      in seconds.
    </summary>
  </metric>
  <metric name="EndEvent"
      enum="PasswordManager.PasswordChangeSuccessTracker.EndEvent">
    <summary>
      Records how the flow was ended, e.g. whether it ended with a generated
      password from a manual flow, a password reset link, etc.
    </summary>
  </metric>
  <metric name="EntryPoint"
      enum="PasswordManager.PasswordChangeSuccessTracker.EntryPoint">
    <summary>
      Records the entry point of the password change flow, e.g. whether it was
      from settings or during login.
    </summary>
  </metric>
  <metric name="StartEvent"
      enum="PasswordManager.PasswordChangeSuccessTracker.StartEvent">
    <summary>
      Records how the flow was started, e.g. whether it was a manual from
      settings, a manual flow will a well-known/.change-password URL, etc.
    </summary>
  </metric>
</event>

<event name="PasswordManager.PasswordChangeTriggered">
  <owner>brunobraga@google.com</owner>
  <owner>chrome-duplex@google.com</owner>
  <summary>
    Metrics related to password change. The Password Checkup in Chrome Settings
    aims to help users find their leaked passwords. After getting list of
    compromised passwords, user can trigger password change.
  </summary>
  <metric name="PasswordChangeType" enum="PasswordChangeType">
    <summary>
      Records what type of password change the user triggers.
    </summary>
  </metric>
</event>

<event name="PasswordManager.PasswordFillingIOS">
  <owner>theocristea@google.com</owner>
  <owner>kazinova@google.com</owner>
  <owner>vsemeniuk@google.com</owner>
  <summary>
    Records password filling for IOS. The metric records whether the password
    filling is successful upon suggestion click.
  </summary>
  <metric name="FillingSuccess" enum="BooleanSuccess">
    <summary>
      A boolean indicating success or failure.
    </summary>
  </metric>
</event>

<event name="PasswordManager.WellKnownChangePasswordResult">
  <owner>kazinova@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Metrics related to the usage and support of .well-known/change-password. The
    .well-known/change-password standard is defined to redirect to the sites
    change password form. We collect whether a site supports the standard or
    not. https://wicg.github.io/change-password-url/
  </summary>
  <metric name="WellKnownChangePasswordResult"
      enum="WellKnownChangePasswordResult">
    <summary>
      Records if a site supports .well-known/change-password and if a url
      override was used or not.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="PaymentApp.CheckoutEvents">
  <owner>rouslan@chromium.org</owner>
  <owner>web-payments-team@google.com</owner>
  <summary>
    Records checkout events as well as completion status for the invoked payment
    app when its origin is shown inside the payment handler modal window. This
    metric uses the specific PAYMENT_APP_ID ukm_source_id which is generated
    from the app's origin.
  </summary>
  <metric name="CompletionStatus" enum="PaymentRequestFlowCompletionStatus">
    <summary>
      How the Payment Request ended. This metric will only get recorded if a
      non-autofill payment app gets invoked to handle the request.
    </summary>
  </metric>
  <metric name="Events">
    <summary>
      Bitfield representing the events that occurred during the Payment Request.
      This metric will only get recorded if a non-autofill payment app gets
      invoked to handle the request. Values defined in the Event enum of
      components/payments/core/journey_logger.h.
    </summary>
  </metric>
  <metric name="Events2">
    <summary>
      The 2.0 version of Events. Bitfield representing the events that occurred
      during the Payment Request. This metric will only get recorded if a
      non-autofill payment app gets invoked to handle the request. Values
      defined in the Event2 enum of components/payments/core/journey_logger.h.
    </summary>
  </metric>
</event>

<event name="PaymentRequest.CheckoutEvents">
  <owner>rouslan@chromium.org</owner>
  <owner>web-payments-team@google.com</owner>
  <metric name="CompletionStatus">
    <summary>
      How the Payment Request ended. Values defined in the CompletionStatus enum
      of components/payments/core/journey_logger.h.
    </summary>
  </metric>
  <metric name="Events">
    <summary>
      Bitfield representing the events that occurred during the Payment Request.
      Values defined in the Event enum of
      components/payments/core/journey_logger.h.
    </summary>
  </metric>
  <metric name="Events2">
    <summary>
      The 2.0 version of Events. Bitfield representing the events that occurred
      during the Payment Request. Values defined in the Event2 enum of
      components/payments/core/journey_logger.h.
    </summary>
  </metric>
</event>

<event name="PaymentRequest.TransactionAmount">
  <owner>rouslan@chromium.org</owner>
  <owner>web-payments-team@google.com</owner>
  <metric name="Category">
    <summary>
      Tranaction size can be zero, micro, or regular. Values defined in the
      TransactionSize enum of components/payments/core/journey_logger.h.
    </summary>
  </metric>
  <metric name="CompletionStatus" enum="Boolean">
    <summary>
      Whether the transaction has been triggered or completed.
    </summary>
  </metric>
</event>

<event name="Pepper.Broker" singular="True">
  <owner>raymes@chromium.org</owner>
  <summary>
    Event recorded when a flash instance connects to the broker, resulting in a
    channel being opened to the broker process.
  </summary>
</event>

<event name="PerfectHeuristics" singular="True">
  <obsolete>
    Implementation for these experiments were removed in M94.
  </obsolete>
  <owner>dom@chromium.org</owner>
  <owner>chrome-loading@google.com</owner>
  <summary>
    Metrics recorded for the various Perfect Heuristics experiments being run.
  </summary>
  <metric name="delay_async_script_execution_before_finished_parsing"
      enum="Boolean">
    <summary>
      Set to 1 when blink::ScriptRunner sees an async script before the
      associated document has finished parsing.
    </summary>
  </metric>
  <metric name="DelayCompetingLowPriorityRequests" enum="Boolean">
    <summary>
      Set to 1 when blink::ResourceLoadScheduler delays competing low priority
      requests. See https://crbug.com/1112515 for details.
    </summary>
  </metric>
</event>

<event name="PerformanceAPI.LongAnimationFrame">
  <owner>nrosenthal@chromium.org</owner>
  <summary>
    This event is associated with the LongAnimationFrame Web Platform API. The
    metrics are recorded when a long animation frame is detected and reported to
    the page. For more details see https://crbug.com/1392685.
  </summary>
  <metric name="DidPause" enum="Boolean">
    <summary>
      True if there was a pause (sync XHR, dialog) during the long frame.
    </summary>
  </metric>
  <metric name="Duration.DelayDefer">
    <summary>
      A positive or negative duration in milliseconds, representing the time
      between the desired time for rendering the frame and rendering it in
      practice. Positive means delayed, negative means deferred.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Duration.EffectiveBlocking">
    <summary>
      The duration in milliseconds, representing the time the LoAF was blocking.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Duration.LongScript.JSCompilation">
    <summary>
      The total duration of long-script JS compilation, in milliseconds.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Duration.LongScript.JSExecution">
    <summary>
      The total duration of long-script JS execution, not including compilation,
      in milliseconds.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Duration.LongScript.JSExecution.EventListeners">
    <summary>
      The total duration spent in event listeners (e.g. onclick).
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Duration.LongScript.JSExecution.PromiseHandlers">
    <summary>
      The total duration spent in promise resolve/reject tasks.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Duration.LongScript.JSExecution.ScriptBlocks">
    <summary>
      The total duration spent in script blocks (script element, import)
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Duration.LongScript.JSExecution.UserCallbacks">
    <summary>
      The total duration spent in user callbacks (e.g. requestAnimationFrame).
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Duration.StyleAndLayout.Forced">
    <summary>
      The total duration of forced style and layout in long scripts.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Duration.StyleAndLayout.RenderPhase">
    <summary>
      The total duration of the style and layout lifecycle phase, not including
      forced style and layout.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Duration.Total">
    <summary>
      The duration of the long animation frame in milliseconds. Mirrors the
      value reported in PerformanceEntry.duration.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="PerformanceAPI.LongTask">
  <owner>hpayer@chromium.org</owner>
  <owner>mlippautz@chromium.org</owner>
  <owner>ulan@chromium.org</owner>
  <summary>
    This event is associated with the LongTask Web Platform API. The metrics are
    recorded when a long task is detected and reported to the page. For more
    details see the design doc linked in https://crbug.com/1173527.
  </summary>
  <metric name="Duration">
    <summary>
      The duration of the long task in microseconds. Mirrors the value reported
      in PerformanceEntry.duration.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Duration.V8.Execute">
    <summary>
      The total time in microseconds that is V8 spent in main-thread V8,
      including JS-time, but without time spent in callbacks to blink.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Duration.V8.GC">
    <summary>
      The total time in microseconds that V8 spent collecting garbage within the
      long task.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Duration.V8.GC.Full.Atomic">
    <summary>
      The total time in microseconds that V8 spent in the atomic pause of the
      full garbage collector within the long task.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Duration.V8.GC.Full.Incremental">
    <summary>
      The total time in microseconds that V8 spent in the incremental pause of
      the full garbage collector within the long task.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Duration.V8.GC.Young">
    <summary>
      The total time in microseconds that V8 spent in the young garbage
      collector within the long task.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="StartTime">
    <summary>
      The duration in millseconds between the document navigation start and the
      long task start. Mirrors the value reported in PerformanceEntry.startTime.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="PerformanceAPI.Memory">
  <owner>hpayer@chromium.org</owner>
  <owner>mlippautz@chromium.org</owner>
  <owner>ulan@chromium.org</owner>
  <summary>
    This event is associated with the performance.measureUserAgentSpecificMemory
    API. The metrics are recorded when the memory measurement is reported to the
    page. All values represent memory consumption in KB.
  </summary>
  <metric name="Dom">
    <summary>
      The total DOM memory measured in KB.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="JavaScript">
    <summary>
      The total JavaScript memory measured in KB.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="JavaScript.DedicatedWorker">
    <summary>
      The total JavaScript memory in the DedicatedWorker scope measured in KB.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Shared">
    <summary>
      The total shared memory measured in KB.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="PerformanceAPI.Memory.Legacy">
  <owner>hpayer@chromium.org</owner>
  <owner>mlippautz@chromium.org</owner>
  <owner>ulan@chromium.org</owner>
  <summary>
    This event is associated with the performance.memory API. The metrics are
    recorded when the memory measurement is reported to the page. All values
    represent memory consumption in KB.
  </summary>
  <metric name="JavaScript">
    <summary>
      The JavaScript memory (usedJSHeapSize) measured in KB.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="PerformanceManager.PageResourceUsage">
  <owner>anthonyvd@chromium.org</owner>
  <owner>joenotcharles@google.com</owner>
  <summary>
    Metrics detailing the estimated resources used by pages. The resources of a
    renderer process are allocated to all pages hosted in that process using the
    algorithm in performance_manager::ProcessMetricsDecorator. An event is
    collected for each open page every 5 minutes.
  </summary>
  <metric name="PrivateFootprintEstimate">
    <summary>
      The estimated private footprint of the page, in kilobytes.
    </summary>
  </metric>
  <metric name="ResidentSetSizeEstimate">
    <summary>
      The estimated resident set size of the page, in kilobytes.
    </summary>
  </metric>
</event>

<event name="PerformanceManager.PageTimelineState">
  <owner>anthonyvd@chromium.org</owner>
  <owner>spvw@chromium.org</owner>
  <summary>
    Metrics detailing the lifecycle state of tabs over the course of the
    execution of the browser. One slice is collected on a heartbeat every approx
    100 minutes on average (but dependent on PRNG). A slice is a collection of
    PageTimelineState UKM events. One PageTimelineState is recorded for each
    browser tab when a slice is collected.
  </summary>
  <metric name="BatterySaverMode" enum="Boolean">
    <summary>
      True if Batter Saver Mode is enabled at the time this event is recorded.
    </summary>
  </metric>
  <metric name="ChangedFaviconOrTitleInBackground" enum="Boolean">
    <summary>
      True if this page has been observed to change its favicon or title when in
      the background.
    </summary>
  </metric>
  <metric name="CurrentState" enum="PageState">
    <summary>
      The state the tab was in when the slice was recorded.
    </summary>
  </metric>
  <metric name="HasNotificationPermission" enum="Boolean">
    <summary>
      True if this page has been granted the notification permission.
    </summary>
  </metric>
  <metric name="HighEfficiencyMode" enum="Boolean">
    <summary>
      True if High Efficiency Mode is enabled at the time this event is
      recorded.
    </summary>
  </metric>
  <metric name="IsActiveTab" enum="Boolean">
    <summary>
      True if this page is the active tab in its tab strip.
    </summary>
  </metric>
  <metric name="IsCapturingMedia" enum="Boolean">
    <summary>
      True if this page is capturing media (audio/video/screen).
    </summary>
  </metric>
  <metric name="IsConnectedToDevice" enum="Boolean">
    <summary>
      True if this page is connected to a BT or USB device.
    </summary>
  </metric>
  <metric name="IsPlayingAudio" enum="Boolean">
    <summary>
      True if this page is playing audio.
    </summary>
  </metric>
  <metric name="PrivateFootprint">
    <summary>
      The total memory footprint of this page at the moment the sample was
      recorded, in kilobytes.
    </summary>
  </metric>
  <metric name="ResidentSetSize">
    <summary>
      The total resident set size of this page at the moment the sample was
      recorded, in kilobytes.
    </summary>
  </metric>
  <metric name="SliceId">
    <summary>
      A strictly increasing ID used to order slices in relation to each other.
      This is not zero for the first slice, but rather is a randomly chosen
      number to make it more difficult to derive exact browser uptime.

      A &quot;slice&quot; is a collection of PageTimelineStates recorded at the
      same time.
    </summary>
  </metric>
  <metric name="TabId">
    <summary>
      A monotonically increasing generated id assigned to a tab, enabling
      analysis of a tab's lifecycle across several slices. This is necessary
      because a URL isn't sufficient to identify a tab: multiple tabs can be
      open for the same URL, and a tab containing foo.com and be closed, with
      another re-opened between two slice snapshots.
    </summary>
  </metric>
  <metric name="TimeInCurrentState">
    <summary>
      The time in milliseconds spent in the current state. Exponentially
      bucketed.
    </summary>
  </metric>
  <metric name="TimeSinceCreation">
    <summary>
      Time in milliseconds since this tab was created. Exponentially bucketed.
    </summary>
  </metric>
  <metric name="TimeSinceLastSlice">
    <summary>
      The time in milliseconds since the last slice was recorded. Exponentially
      bucketed.
    </summary>
  </metric>
  <metric name="TotalForegroundTime">
    <summary>
      Cumulative time in milliseconds spent in foreground by this tab since its
      creation. Exponentially bucketed.
    </summary>
  </metric>
</event>

<event name="PeriodicBackgroundSyncEventCompleted">
  <owner>nator@chromium.org</owner>
  <owner>rayankans@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    A website can register to periodically update itself in the background using
    a service worker. Updates can be done in response to the periodicsync event.
    Logged when a periodicsync event completes and returns a status. We collect
    information about retries of this event.
  </summary>
  <metric name="MaxAttempts">
    <summary>
      Integer value of the maximum number of allowed retries.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="NumAttempts">
    <summary>
      Integer value of the number of retries / sync events dispatched.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Status" enum="ServiceWorkerEventStatus">
    <summary>
      The enum value of the completion status, defined in
      blink::ServiceWorkerStatusCode.
    </summary>
  </metric>
</event>

<event name="PeriodicBackgroundSyncRegistered">
  <owner>nator@chromium.org</owner>
  <owner>rayankans@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    A website can register to periodically update itself in the background using
    a service worker. Updates can be done in response to the periodicsync event
    after a periodic Background Sync registration has been created. Logged when
    a periodic Background Sync registration is created. We collect information
    about this registration request.
  </summary>
  <metric name="IsReregistered" enum="Boolean">
    <summary>
      Boolean for whether a registration with this tag has already been created.
    </summary>
  </metric>
  <metric name="MinIntervalMs">
    <summary>
      Integer value of the minimum interval, in milliseconds, of periodicsync
      events requested by the origin for this registration. This number is
      exponentially bucketed and uses the UKM GetExponentialBucketMin method
      with a value of 2.0 for spacing.
    </summary>
  </metric>
</event>

<event name="Permission">
  <owner>timloh@chromium.org</owner>
  <summary>
    Metrics for a user's permission actions, logged when a permission prompt is
    resolved or when a permission is revoked. Grouped (microphone+camera)
    permission prompts are reported separately.
  </summary>
  <metric name="Action">
    <summary>
      An enum of type PermissionAction. One of GRANTED, DENIED, DISMISSED or
      IGNORED.
    </summary>
  </metric>
  <metric name="Gesture">
    <summary>
      An enum of type PermissionRequestGestureType, whether the prompt was
      initiated by a user gesture.
    </summary>
  </metric>
  <metric name="PermissionAutoRevocationHistory"
      enum="PermissionAutoRevocationHistory">
    <summary>
      An enum of type PermissionAutoRevocationHistory, representing whether the
      permission has been automatically revoked in the past at least once.
    </summary>
  </metric>
  <metric name="PermissionType">
    <summary>
      An enum of type ContentSettingsType.
    </summary>
  </metric>
  <metric name="PredictionsApiResponse.GrantLikelihood"
      enum="PredictionGrantLikelihood">
    <summary>
      An enum of type PermissionUmaUtil::PredictionGrantLikelihood describing
      the likelihood returned by the Web Permission Predictions Service, if the
      service was successfully queried.
    </summary>
  </metric>
  <metric name="PredictionsApiResponse.Heldback" enum="Boolean">
    <summary>
      A boolean that records whether the response by the permissions prediction
      service was held back.
    </summary>
  </metric>
  <metric name="PriorDismissals">
    <summary>
      The number of dismissed prompts for the given (origin, permission) pair,
      capped at 10 dismissals.
    </summary>
  </metric>
  <metric name="PriorIgnores">
    <summary>
      The number of ignored prompts for the given (origin, permission) pair,
      capped at 10 ignores.
    </summary>
  </metric>
  <metric name="PromptDisposition">
    <summary>
      An enum of type PermissionPromptDisposition. The UI used to display a
      permission prompt, if any.
    </summary>
  </metric>
  <metric name="PromptDispositionReason"
      enum="PermissionPromptDispositionReason">
    <summary>
      An enum of type PermissionPromptDispositionReason. The reason why the
      particular prompt disposition was used, if any.
    </summary>
  </metric>
  <metric name="SatisfiedAdaptiveTriggers">
    <summary>
      A bitmask consisting of flags defined in enum type AdaptiveTriggers. A bit
      is set if the corresponding adaptive triggering condition has been
      satisfied at least once in the past for the user. This metric is not
      recorded for users who don't have the activation dry run enabled.
    </summary>
  </metric>
  <metric name="Source">
    <summary>
      An enum of type PermissionSourceUI. The UI surface for this action.
    </summary>
  </metric>
  <metric name="Stats.AllPrompts.Count">
    <summary>
      Total number of prompts shown to the user in the last 28 days. The count
      is bucketed. The bucket minimums being 20, 15, 12, 10, 9, 8, 7, 6, 5, 4
      and 0. The correct bucket is the first one that is smaller or equal to the
      prompt count.
    </summary>
  </metric>
  <metric name="Stats.AllPrompts.DenyRate">
    <summary>
      What percentage of prompts from the last 28 days did the user deny.
      Aggregated across all origins, all PermissionTypes and all
      PromptDisposition. Rounded to the nearest 10%.
    </summary>
  </metric>
  <metric name="Stats.AllPrompts.DismissRate">
    <summary>
      What percentage of prompts from the last 28 days did the user dismiss.
      Aggregated across all origins, all PermissionTypes and all
      PromptDisposition. Rounded to the nearest 10%.
    </summary>
  </metric>
  <metric name="Stats.AllPrompts.GrantRate">
    <summary>
      What percentage of prompts from the last 28 days did the user grant.
      Aggregated across all origins, all PermissionTypes and all
      PromptDisposition. Rounded to the nearest 10%.
    </summary>
  </metric>
  <metric name="Stats.AllPrompts.IgnoreRate">
    <summary>
      What percentage of prompts from the last 28 days did the user ignore.
      Aggregated across all origins, all PermissionTypes and all
      PromptDisposition. Rounded to the nearest 10%.
    </summary>
  </metric>
  <metric name="Stats.AllPromptsOfType.Count">
    <summary>
      Total number of prompts shown to the user in the last 28 days for the
      currently requested permission type. The count is bucketed. The bucket
      minimums being 20, 15, 12, 10, 9, 8, 7, 6, 5, 4 and 0. The correct bucket
      is the first one that is smaller or equal to the prompt count.
    </summary>
  </metric>
  <metric name="Stats.AllPromptsOfType.DenyRate">
    <summary>
      What percentage of prompts from the last 28 days did the user deny.
      Aggregated across all origins, the current requested PermissionType and
      all PromptDisposition. Rounded to the nearest 10%.
    </summary>
  </metric>
  <metric name="Stats.AllPromptsOfType.DismissRate">
    <summary>
      What percentage of prompts from the last 28 days did the user dismiss.
      Aggregated across all origins, the current requested PermissionType and
      all PromptDisposition. Rounded to the nearest 10%.
    </summary>
  </metric>
  <metric name="Stats.AllPromptsOfType.GrantRate">
    <summary>
      What percentage of prompts from the last 28 days did the user grant.
      Aggregated across all origins, the current requested PermissionType and
      all PromptDisposition. Rounded to the nearest 10%.
    </summary>
  </metric>
  <metric name="Stats.AllPromptsOfType.IgnoreRate">
    <summary>
      What percentage of prompts from the last 28 days did the user ignore.
      Aggregated across all origins, the current requested PermissionType and
      all PromptDisposition. Rounded to the nearest 10%.
    </summary>
  </metric>
  <metric name="Stats.LoudPrompts.Count">
    <summary>
      Total number of loud UI prompts shown to the user in the last 28 days. The
      count is bucketed. The bucket minimums being 20, 15, 12, 10, 9, 8, 7, 6, 5
      ,4 and 0. The correct bucket is the first one that is smaller or equal to
      the prompt count.
    </summary>
  </metric>
  <metric name="Stats.LoudPrompts.DenyRate">
    <summary>
      What percentage of prompts from the last 28 days did the user deny.
      Aggregated across all origins, all PermissionTypes and loud UI
      PromptDispositions only. Rounded to the nearest 10%.
    </summary>
  </metric>
  <metric name="Stats.LoudPrompts.DismissRate">
    <summary>
      What percentage of prompts from the last 28 days did the user dismiss.
      Aggregated across all origins, all PermissionTypes and loud UI
      PromptDispositions only. Rounded to the nearest 10%.
    </summary>
  </metric>
  <metric name="Stats.LoudPrompts.GrantRate">
    <summary>
      What percentage of prompts from the last 28 days did the user grant.
      Aggregated across all origins, all PermissionTypes and loud UI
      PromptDispositions only. Rounded to the nearest 10%.
    </summary>
  </metric>
  <metric name="Stats.LoudPrompts.IgnoreRate">
    <summary>
      What percentage of prompts from the last 28 days did the user ignore.
      Aggregated across all origins, all PermissionTypes and loud UI
      PromptDispositions only. Rounded to the nearest 10%.
    </summary>
  </metric>
  <metric name="Stats.LoudPromptsOfType.Count">
    <summary>
      Total number of loud UI prompts shown to the user in the last 28 days for
      the currently requested permission type. The count is bucketed. The bucket
      minimums being 20, 15, 12, 10, 9, 8, 7, 6, 5, 4 and 0. The correct bucket
      is the first one that is smaller or equal to the prompt count.
    </summary>
  </metric>
  <metric name="Stats.LoudPromptsOfType.DenyRate">
    <summary>
      What percentage of prompts from the last 28 days did the user deny.
      Aggregated across all origins, currently requested PermissionType and loud
      UI PromptDispositions only. Rounded to the nearest 10%.
    </summary>
  </metric>
  <metric name="Stats.LoudPromptsOfType.DismissRate">
    <summary>
      What percentage of prompts from the last 28 days did the user dismiss.
      Aggregated across all origins, currently requested PermissionType and loud
      UI PromptDispositions only. Rounded to the nearest 10%.
    </summary>
  </metric>
  <metric name="Stats.LoudPromptsOfType.GrantRate">
    <summary>
      What percentage of prompts from the last 28 days did the user grant.
      Aggregated across all origins, currently requested PermissionType and loud
      UI PromptDispositions only. Rounded to the nearest 10%.
    </summary>
  </metric>
  <metric name="Stats.LoudPromptsOfType.IgnoreRate">
    <summary>
      What percentage of prompts from the last 28 days did the user ignore.
      Aggregated across all origins, currently requested PermissionType and loud
      UI PromptDispositions only. Rounded to the nearest 10%.
    </summary>
  </metric>
  <metric name="TimeToDecision">
    <summary>
      Time (in milliseconds) taken by the user to make a decision on a
      permission prompt after it was displayed, if at all. Ignoring a prompt
      doesn't count as a decision.
    </summary>
  </metric>
</event>

<event name="PermissionUsage">
  <owner>engedy@chromium.org</owner>
  <owner>ravjit@chromium.org</owner>
  <owner>permissions-dev@chromium.org</owner>
  <summary>
    Metrics for usage of capabilities gated behind permission prompts. One event
    is recorded per permission type for each page load that uses that permission
    type.
  </summary>
  <metric name="PermissionType">
    <summary>
      An enum of type ContentSettingsType.
    </summary>
  </metric>
</event>

<event name="Plugins.FlashInstance">
  <owner>tommycli@chromium.org</owner>
  <summary>
    Recorded when a Flash object instance is created.
  </summary>
</event>

<event name="Popup.Closed">
  <owner>csharrison@chromium.org</owner>
  <owner>jkarlin@chromium.org</owner>
  <summary>
    A popup window was closed.
  </summary>
  <metric name="EngagementTime">
    <summary>
      The time (in ms, rounded down to the nearest power of 2) a popup
      WebContents is visible / foregrounded, until it is closed. Keyed by the
      popup opener's URL (not the URL of the popup).
    </summary>
  </metric>
  <metric name="NumActivationInteractions">
    <summary>
      Integer value representing how many mouse down, touch start user, or raw
      key down interactions the popup had. This is capped at 50.
    </summary>
  </metric>
  <metric name="NumGestureScrollBeginInteractions">
    <summary>
      Integer value representing how many gesture scroll begin user interactions
      the popup had. This is capped at 50.
    </summary>
  </metric>
  <metric name="NumInteractions">
    <summary>
      Integer value representing how many user interactions the popup had. This
      is capped at 100. See IsUserInteractionInputType in web_contents_impl for
      what an interaction is. Currently it is a mouse, scroll begin, touch
      start, or raw key down event.
    </summary>
  </metric>
  <metric name="RedirectCount">
    <summary>
      The number of redirects taken by the pop-up's initial navigation. This
      does not include javascript navigations initiated by the opening document
      for the pop-up.
    </summary>
  </metric>
  <metric name="SafeBrowsingStatus" enum="PopupSafeBrowsingStatus">
    <summary>
      The site's safe browsing status if the pop-up's navigation commits.
    </summary>
  </metric>
  <metric name="Trusted">
    <summary>
      Boolean value representing whether the popup was opened via some trusted
      event (e.g. context menu, ctrl-click, etc).
    </summary>
  </metric>
  <metric name="UserInitiatedClose">
    <summary>
      Boolean value to represent whether the popup was closed by user gesture.
    </summary>
  </metric>
  <metric name="WindowOpenDisposition" enum="WindowOpenDisposition">
    <summary>
      The UI window open disposition used when creating the web contents of the
      pop-up. Set by the browser process when the pop up tracker is created.
    </summary>
  </metric>
</event>

<event name="Popup.Page" singular="True">
  <owner>justinmiron@google.com</owner>
  <summary>
    Page level pop-up statistics.
  </summary>
  <metric name="Allowed" enum="Boolean">
    <summary>
      Whether a user has, explicitly, allowed all popups on the last committed
      url of a page. The user's site level popup content setting is queried when
      a page that opened a popup is destroyed. Only emitted when at least one
      popup has been opened and the last committed page url is valid.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="Portal.Activate">
  <owner>lfg@chromium.org</owner>
  <summary>
    A portal was activated. A portal activation enables a seamless transition
    between different pages. See the portals explainer for more details:
    https://github.com/WICG/portals/blob/master/README.md.
  </summary>
  <metric name="PaintTiming.PortalActivationToFirstPaint">
    <summary>
      When this page load happened inside a Portal, this metrics records the
      time in milliseconds between the portal activation and the first paint
      after activation.
    </summary>
  </metric>
  <metric name="PortalActivation">
    <summary>
      Measures the time between LCP and the portal activation. Uses exponential
      bucketing with a spacing of 2, with the units in milliseconds.
    </summary>
  </metric>
  <metric name="PortalActivationBeforeLCP" enum="Boolean">
    <summary>
      Indicates whether the portal activation happened before or after the
      largest contentful paint.
    </summary>
  </metric>
</event>

<event name="PostMessage.Incoming.FirstPartyToFirstParty.DifferentBucket">
  <owner>arichiv@chromium.org</owner>
  <owner>miketaylr@chromium.org</owner>
  <summary>
    A top level frame received an incoming postMessage event from another top
    level frame with a different storage key and a different origin.
  </summary>
  <metric name="SourceFrameSourceId">
    <summary>
      The UKM source ID of the postMessage event's source frame, as an integer.
    </summary>
  </metric>
</event>

<event name="PostMessage.Incoming.FirstPartyToFirstParty.SameBucket">
  <owner>arichiv@chromium.org</owner>
  <owner>miketaylr@chromium.org</owner>
  <summary>
    A top level frame received an incoming postMessage event from another top
    level frame with the same storage key.
  </summary>
  <metric name="SourceFrameSourceId">
    <summary>
      The UKM source ID of the postMessage event's source frame, as an integer.
    </summary>
  </metric>
</event>

<event
    name="PostMessage.Incoming.FirstPartyToThirdParty.DifferentBucket.DifferentOrigin">
  <owner>arichiv@chromium.org</owner>
  <owner>miketaylr@chromium.org</owner>
  <summary>
    A child frame received an incoming postMessage event from a top level frame
    with a different storage key and a different origin.
  </summary>
  <metric name="SourceFrameSourceId">
    <summary>
      The UKM source ID of the postMessage event's source frame, as an integer.
    </summary>
  </metric>
</event>

<event
    name="PostMessage.Incoming.FirstPartyToThirdParty.DifferentBucket.SameOrigin">
  <owner>arichiv@chromium.org</owner>
  <owner>miketaylr@chromium.org</owner>
  <summary>
    A child frame received an incoming postMessage event from a top level frame
    with a different storage key and the same origin.
  </summary>
  <metric name="SourceFrameSourceId">
    <summary>
      The UKM source ID of the postMessage event's source frame, as an integer.
    </summary>
  </metric>
</event>

<event name="PostMessage.Incoming.Frame">
  <owner>arichiv@chromium.org</owner>
  <owner>miketaylr@chromium.org</owner>
  <summary>
    The frame received an incoming postMessage event. This is recorded only for
    postMessage events sent between frames in the same renderer process.
  </summary>
  <metric name="SourceFrameSourceId">
    <summary>
      The UKM source ID of the postMessage event's source frame, as an integer.
    </summary>
  </metric>
</event>

<event name="PostMessage.Incoming.Opaque">
  <owner>arichiv@chromium.org</owner>
  <owner>miketaylr@chromium.org</owner>
  <summary>
    A frame received an incoming postMessage event from another frame where
    either of their origins or top level origins are opaque.
  </summary>
  <metric name="SourceFrameSourceId">
    <summary>
      The UKM source ID of the postMessage event's source frame, as an integer.
    </summary>
  </metric>
</event>

<event name="PostMessage.Incoming.Page">
  <owner>arichiv@chromium.org</owner>
  <owner>miketaylr@chromium.org</owner>
  <summary>
    A frame on the page received an incoming postMessage event. This is recorded
    only for postMessage events sent between frames in different renderer
    processes.
  </summary>
  <metric name="SourcePageSourceId">
    <summary>
      The UKM source ID of the postMessage event's source page, as an integer.
    </summary>
  </metric>
</event>

<event
    name="PostMessage.Incoming.ThirdPartyToFirstParty.DifferentBucket.DifferentOrigin">
  <owner>arichiv@chromium.org</owner>
  <owner>miketaylr@chromium.org</owner>
  <summary>
    A top level frame received an incoming postMessage event from a child frame
    with a different storage key and a different origin.
  </summary>
  <metric name="SourceFrameSourceId">
    <summary>
      The UKM source ID of the postMessage event's source frame, as an integer.
    </summary>
  </metric>
</event>

<event
    name="PostMessage.Incoming.ThirdPartyToFirstParty.DifferentBucket.SameOrigin">
  <owner>arichiv@chromium.org</owner>
  <owner>miketaylr@chromium.org</owner>
  <summary>
    A top level frame received an incoming postMessage event from a child frame
    with a different storage key and the same origin.
  </summary>
  <metric name="SourceFrameSourceId">
    <summary>
      The UKM source ID of the postMessage event's source frame, as an integer.
    </summary>
  </metric>
</event>

<event
    name="PostMessage.Incoming.ThirdPartyToThirdParty.DifferentBucket.DifferentOrigin">
  <owner>arichiv@chromium.org</owner>
  <owner>miketaylr@chromium.org</owner>
  <summary>
    A child frame received an incoming postMessage event from another child
    frame with a different storage key and a different origin.
  </summary>
  <metric name="SourceFrameSourceId">
    <summary>
      The UKM source ID of the postMessage event's source frame, as an integer.
    </summary>
  </metric>
</event>

<event
    name="PostMessage.Incoming.ThirdPartyToThirdParty.DifferentBucket.SameOrigin">
  <owner>arichiv@chromium.org</owner>
  <owner>miketaylr@chromium.org</owner>
  <summary>
    A child frame received an incoming postMessage event from another child
    frame with a different storage key and the same origin.
  </summary>
  <metric name="SourceFrameSourceId">
    <summary>
      The UKM source ID of the postMessage event's source frame, as an integer.
    </summary>
  </metric>
</event>

<event name="PostMessage.Incoming.ThirdPartyToThirdParty.SameBucket">
  <owner>arichiv@chromium.org</owner>
  <owner>miketaylr@chromium.org</owner>
  <summary>
    A child frame received an incoming postMessage event from another child
    frame with the same storage key.
  </summary>
  <metric name="SourceFrameSourceId">
    <summary>
      The UKM source ID of the postMessage event's source frame, as an integer.
    </summary>
  </metric>
</event>

<event name="PowerUsageScenariosIntervalData">
  <owner>fdoray@chromium.org</owner>
  <owner>sebmarchand@chromium.org</owner>
  <owner>chrome-catan@google.com</owner>
  <summary>
    Metrics to measure power consumption in key usage scenarios, as well as the
    time spent in each scenario. These metrics are reported for a fixed interval
    of time, the duration of this interval is recorded in the
    IntervalDurationSeconds metric.

    The events aren't tied to a specific URL, a timer independent of any load
    event runs in Chrome and report these events at regular intervals. All the
    metrics associated to this event are for the last interval. The URL attached
    to the event is the one that has been visible for the longest time during
    the interval, the exact visibility duration for this URL during the interval
    is reported in the URLVisibilityTimeSeconds metric.

    e.g., at T-0 an interval ends and this event is emitted, a new interval then
    starts. During the interval the users spends 75% of his time watching a
    fullscreen video on https://foo.com with 10 tabs opened in background. Just
    before the end of the interval the user closes all the tabs but one. An
    event will be emitted for https://foo.com at T+X with the following metrics:
    IntervalDurationSeconds: X in seconds; URLVisibilityTimeSeconds: 0.75 * X in
    seconds; FullscreenVideoSingleMonitorSeconds: 0.75 * X in seconds;
    MaxTabCount: 10; TabClosed: 9; ... (not all metrics are listed here because
    it'd be too long, but in practice all the metrics are reported for each
    interval).

    This is reported on Mac and Windows. See go/chrome_power_use_per_scenario
    for more details.
  </summary>
  <metric name="BatteryDischargeMode" enum="BatteryDischargeMode">
    <summary>
      Battery discharge mode describing whether BatteryDischargeRate could be
      reported or not, and why. Recorded as enum BatteryDischargeMode in
      //tools/metrics/histograms/enums.xml.
    </summary>
  </metric>
  <metric name="BatteryDischargeRate">
    <summary>
      Battery discharge rate per minute, with 1/10000 of full charge resolution,
      example: - Battery capacity = 4000 mAh; - Battery charge at the beginning
      of the interval: 3900 mAh; - Battery charge at the end of the interval:
      3700 mAh; - Discharge proportion: (3900-3700) / 4000 = 0.05 - Reported
      value: 500.
    </summary>
  </metric>
  <metric name="BrowserShuttingDown" enum="Boolean">
    <summary>
      Indicates if the browser is shutting down when this event is reported.
    </summary>
  </metric>
  <metric name="CPUTimeMs">
    <summary>
      The CPU time spent executing code, across all Chrome processes in the
      interval. This can exceed 100% in multi-thread processes running on
      multi-core systems.
    </summary>
  </metric>
  <metric name="DeviceSleptDuringInterval" enum="Boolean">
    <summary>
      Whether or not the device has been sleeping at any point during the
      interval.
    </summary>
  </metric>
  <metric name="EnergyImpactScore">
    <summary>
      Sum of the energy impact score for all Chrome processes (Mac-only).
    </summary>
  </metric>
  <metric name="FullscreenVideoSingleMonitorSeconds">
    <summary>
      Time spent playing video in fullscreen, single-monitor. In seconds. This
      includes video for any tabs during the interval.
    </summary>
  </metric>
  <metric name="IdleWakeUps">
    <summary>
      Sum of idle-wakeups for all Chrome processes (Mac-only).
    </summary>
  </metric>
  <metric name="IntervalDurationSeconds">
    <summary>
      The interval duration, in seconds.
    </summary>
  </metric>
  <metric name="MainScreenBrightnessPercent">
    <obsolete>
      Removed 02/2022 because it's not actively used.
    </obsolete>
    <summary>
      The brightness of the main screen in percent or -1 if not available.
      Samples have a 20% granularity, e.g. 65% will report as 60%.
    </summary>
  </metric>
  <metric name="MaxTabCount">
    <summary>
      The maximum number of tabs that existed at the same time during the
      interval.
    </summary>
  </metric>
  <metric name="MaxVisibleWindowCount">
    <summary>
      The maximum number of windows that have been visible at the same time.
    </summary>
  </metric>
  <metric name="OriginVisibilityTimeSeconds">
    <summary>
      The visibility time for the origin of the URL associated with this event,
      in seconds. This can differ from URLVisibilityTimeSeconds if there's
      multiple tabs loaded with the same URL that are visible during the
      interval. E.g. if there's one tab loaded with foo.com/a visible for 1
      second during the interval and one loaded with foo.com/b visible for 2
      seconds the report will have URLVisibilityTimeSeconds = 2 seconds and
      OriginVisibilityTimeSeconds = 3 seconds. This can also exceed the interval
      duration (e.g. 2 visibles tab with loaded the same origin during the
      entire interval).
    </summary>
  </metric>
  <metric name="PackageExits">
    <summary>
      Sum of package exits from all Chrome processes (Mac-only).
    </summary>
  </metric>
  <metric name="PlayingAudioSeconds">
    <summary>
      The time spent playing audio in at least one tab, in seconds.
    </summary>
  </metric>
  <metric name="TabClosed">
    <summary>
      The number of tabs that have been closed during the interval.
    </summary>
  </metric>
  <metric name="TimePlayingVideoInVisibleTab">
    <summary>
      The time spent playing video in at least one visible tab, in seconds.
    </summary>
  </metric>
  <metric name="TimeSinceInteractionWithBrowserSeconds">
    <summary>
      The time since the last interaction with the browser when this event gets
      recorded, in seconds.
    </summary>
  </metric>
  <metric name="TimeSinceInteractionWithSystemSeconds">
    <summary>
      The time since the last interaction with the system when this event gets
      recorded, in seconds.
    </summary>
  </metric>
  <metric name="TimeWithOpenWebRTCConnectionSeconds">
    <summary>
      The time spent with at least one opened WebRTC connection, in seconds.
    </summary>
  </metric>
  <metric name="TopLevelNavigationEvents">
    <summary>
      Number of main frame different-document navigations.
    </summary>
  </metric>
  <metric name="UptimeSeconds">
    <summary>
      Elapsed time since Chrome has started, in seconds.
    </summary>
  </metric>
  <metric name="URLVisibilityTimeSeconds">
    <summary>
      The visibility time for the URL associated with this event, in seconds.
    </summary>
  </metric>
  <metric name="UserInteractionCount">
    <summary>
      Number of user interaction (scroll, click or typing) during the interval.
    </summary>
  </metric>
  <metric name="VideoCaptureSeconds">
    <summary>
      The time spent capturing video in at least one tab, in seconds.
    </summary>
  </metric>
</event>

<event name="PrefetchProxy" singular="True">
  <owner>curranmax@chromium.org</owner>
  <owner>ryansturm@chromium.org</owner>
  <owner>spelchat@chromium.org</owner>
  <summary>
    Metrics related to the privacy-preserving prefetch proxy.
  </summary>
  <metric name="count_css_js_loaded_cache_before_fcp">
    <obsolete>
      Deprecated March 2022.
    </obsolete>
    <summary>
      The number of CSS or JS files that were loaded from the cache before first
      contentful paint, with a maximum of 10. Always set when this event is
      recorded.
    </summary>
  </metric>
  <metric name="count_css_js_loaded_network_before_fcp">
    <obsolete>
      Deprecated March 2022.
    </obsolete>
    <summary>
      The number of CSS or JS files that were loaded from the network before
      FCP, with a maximum of 10. Always set when this event is recorded.
    </summary>
  </metric>
  <metric name="days_since_last_visit_to_origin">
    <summary>
      The number of days since the user has last visited any page on this
      origin, either during a redirect or a committed page. Records -1 if the
      origin has never been visited before. Metrics for origins that have been
      visited before are capped at 180 then exponentially bucketed into 10
      buckets with values (1,2,3,5,9,15,25,42,70,119). Only set when a query
      result was received from the history service before event recording.
    </summary>
  </metric>
  <metric name="mainpage_request_had_cookies" enum="Boolean">
    <obsolete>
      Replaced by PageLoad.MainFrameResource.RequestHadCookies in M92.
    </obsolete>
    <summary>
      A boolean indicating if any mainpage request in the redirect chain or
      committed request had cookies set on it. Only set when a query result was
      received from the cookie manager before event recording.
    </summary>
  </metric>
  <metric name="ordered_eligible_pages_bitmask">
    <obsolete>
      Deprecated March 2022.
    </obsolete>
    <summary>
      Which links on the Google Search Page were eligible to be prefetched where
      the Nth-LSB is set if the Nth page is eligible.
    </summary>
  </metric>
  <metric name="prefetch_attempted_count">
    <summary>
      The number of pages on the Google Search Result Page that were attempted
      to be prefetched.
    </summary>
  </metric>
  <metric name="prefetch_eligible_count">
    <summary>
      The number of pages on the Google Search Result page that were eligible to
      be prefetched.
    </summary>
  </metric>
  <metric name="prefetch_successful_count">
    <summary>
      The number of pages on the Google Search Result Page that were
      successfully prefetched.
    </summary>
  </metric>
  <metric name="prefetch_usage">
    <obsolete>
      Replaced by PrefetchProxy.AfterSRPClick.SRPClickPrefetchStatus in M84.
    </obsolete>
    <summary>
      This enum records if a cached prefetch page was used, and its probe
      status, when the user navigates off the Google Search Result Page. Not set
      if there was no prefetch. Values: Prefetch used, no probe = 0. Prefetch
      used, successful probe = 1. Prefetch not used, failed probe = 2.
    </summary>
  </metric>
</event>

<event name="PrefetchProxy.AfterSRPClick" singular="True">
  <owner>curranmax@chromium.org</owner>
  <owner>ryansturm@chromium.org</owner>
  <owner>spelchat@chromium.org</owner>
  <summary>
    Metrics related to the privacy-preserving prefetch proxy on the page load
    after the SRP. Recorded only for eligible users on the first mainframe
    user-initiated page load immediately after a Google Search Result Page (SRP)
    which Chrome parsed and may have prefetched links.
  </summary>
  <metric name="ClickedLinkSRPPosition">
    <summary>
      When a user clicks on a Google SRP link, this int records which position
      the clicked link was in. Recorded only when the user navigates to a Google
      SRP link.
    </summary>
  </metric>
  <metric name="PrefetchHeaderLatencyMs">
    <summary>
      Time between the prefetch request was sent and the time the response
      headers were received. Unset if the headers have not been received by the
      time the user navigated to the current page.
    </summary>
  </metric>
  <metric name="PrivatePrefetch">
    <summary>
      This is 1 if the prefetched resource was prefetched via the private
      prefetch proxy. This is not logged otherwise.
    </summary>
  </metric>
  <metric name="ProbeLatencyMs">
    <summary>
      How long the network probe blocked commit in milliseconds. Recorded only
      when a probe was required.
    </summary>
  </metric>
  <metric name="SameTabAsPrefetchingTab">
    <summary>
      This is 1 if the page load matching the prefetch was in the same
      WebContents as the page that triggerd the prefetch. This is not logged
      otherwise.
    </summary>
  </metric>
  <metric name="SRPClickPrefetchStatus" enum="PrefetchProxyPrefetchStatus">
    <summary>
      The outcome of the prefetch eligibility check and possible attempt to
      prefetch the resource. The prefetched url is always the committed URL of
      the page. See |PrefetchProxyPrefetchStatus| for a mapping of enum values
      and their meanings.
    </summary>
  </metric>
  <metric name="SRPPrefetchEligibleCount">
    <summary>
      The number of links from the SRP page (the previous page load) that were
      eligible for prefetch. Always set when this event is recorded.
    </summary>
  </metric>
</event>

<event name="PrefetchProxy.PrefetchedResource">
  <owner>curranmax@chromium.org</owner>
  <owner>ryansturm@chromium.org</owner>
  <owner>spelchat@chromium.org</owner>
  <summary>
    Each event corresponds to a single resource, either mainframe or
    subresource, that was prefetched during an Isolated Prerender. Logged one or
    many times on a Google Search Result Page for eligible users.
  </summary>
  <metric name="DataLength">
    <summary>
      The bucketed number of bytes that transited the network to prefetch this
      resource. Only set when the resource was prefetched.
    </summary>
  </metric>
  <metric name="FetchDurationMS">
    <summary>
      The number of milliseconds that the prefetch took from start to
      completion. Only set when the resource was prefetched.
    </summary>
  </metric>
  <metric name="ISPFilteringStatus" enum="IsolatedPrerenderISPFilteringStatus">
    <summary>
      How ISP filtering interacted with the mainframe resource if it was
      navigated to. Only set when LinkClicked is true.
    </summary>
  </metric>
  <metric name="LinkClicked" enum="Boolean">
    <summary>
      Whether the mainframe was navigated to. Always set when the event is
      recorded, even on subresources which take the value from their
      corresponding mainframe.
    </summary>
  </metric>
  <metric name="LinkPosition">
    <summary>
      The location in the original navigation prediction of where the mainframe
      url was. Always set when the event is recorded, even on subresources which
      take the value from their corresponding mainframe.
    </summary>
  </metric>
  <metric name="NavigationStartToFetchStartMS">
    <summary>
      The number of milliseconds between the start of the navigation and the
      start of the prefetch request. Only set when the resource was attempted to
      be prefetched.
    </summary>
  </metric>
  <metric name="ResourceType" enum="IsolatedPrerenderPrefetchResourceType">
    <summary>
      The type of resource that was prefetched, either mainframe or subresource.
      Always set when the event is recorded.
    </summary>
  </metric>
  <metric name="Status" enum="PrefetchProxyPrefetchStatus">
    <summary>
      The outcome of the prefetch eligibility check and possible attempt to
      prefetch the resource and reuse it. See |PrefetchProxyPrefetchStatus| for
      a mapping of enum values and their meanings. Always set when the event is
      recorded.
    </summary>
  </metric>
</event>

<event name="Preloading.AnchorInteraction">
  <owner>jacobstanley@google.com</owner>
  <owner>curranmax@chromium.org</owner>
  <owner>chrome-brapp-loading@google.com</owner>
  <summary>
    Logged once for each preconnection request sent to the browser in response
    to the user interacting with an anchor element. Associated with the Source
    ID of the page triggering the preconnection.
  </summary>
  <metric name="AnchorElementPreloaderType" enum="AnchorElementPreloaderType">
    <summary>
      One event for each preload operation that was triggered on the current
      page.
    </summary>
  </metric>
</event>

<event name="Preloading.Attempt">
  <owner>sreejakshetty@chromium.org</owner>
  <owner>spelchat@chromium.org</owner>
  <owner>chrome-brapp-loading@google.com</owner>
  <summary>
    This event is logged for each preloading attempt i.e., for preloading
    features like Preresolve, Preconnect, Prerender, Prefetch, and others when
    the user navigates or when the WebContents is being destroyed.

    Associated with the Source ID of the page user navigates to. Contains
    information about the type of attempt, its eligibility, triggering outcome,
    failure reason and whether the attempt was triggered accurately or not.

    Note that this event is sampled based on the PreloadingConfig feature
    configuration (in addition to the normal UKM sampling mechanism). The
    sampling rate for each event (which may vary for different preloading
    features) is logged in the SamplingLikelihood field.
  </summary>
  <metric name="AccurateTriggering" enum="Boolean">
    <summary>
      Whether the preloading operation was triggered accurately for the
      predicted URL (regardless of the eligibility, failures, etc.). Set to true
      if the user navigated to the predicted URL.
    </summary>
  </metric>
  <metric name="Eligibility">
    <summary>
      Eligibility status of preloading operation for the prediction. Values are
      from the Chrome enum content::PreloadingEligibility.
    </summary>
  </metric>
  <metric name="FailureReason">
    <summary>
      Reason why the preloading operation failed. Values are from the enum
      specific to the preloading type.
    </summary>
  </metric>
  <metric name="HoldbackStatus">
    <summary>
      The outcome of the holdback check. This is not part of eligibility status
      to make clarify that this check needs to happen after we are done
      verifying the eligibility of a preloading attempt. In general, eligibility
      checks can be reordered, but the holdback check always needs to come after
      verifying that the preloading attempt was eligible.
    </summary>
  </metric>
  <metric name="PreloadingPredictor">
    <summary>
      The type of preloading predictor which made the prediction. Values are
      from the Chrome enum content::PreloadingPredictor or
      ChromePreloadingPredictor.
    </summary>
  </metric>
  <metric name="PreloadingType">
    <summary>
      The type of preloading operation used for the preloading attempt. Values
      are from the Chrome enum content::PreloadingType.
    </summary>
  </metric>
  <metric name="ReadyTime">
    <summary>
      The amount of time the attempt took to reach a state in which it is ready
      to be used for the next navigation, in milliseconds. Note: currently only
      Prefetch, Prerender and NoStatePrefetch have a ready state. This field is
      only meaningful to these three types of preloading.
    </summary>
  </metric>
  <metric name="SamplingLikelihood">
    <summary>
      The sampling rate of this particular event multiplied by 1,000,000
      (because we cannot log floating point values in UKM). A value of 1,000,000
      means that the event had a 100% chance of being sampled, whereas a value
      of one means that the event had a one-in-a-millon chance of being sampled.
      The sampling rate for preloading attempts is set via field trial through
      the PreloadingConfig feature. The logged value just represents the
      configuration used for that preloading attempt.
    </summary>
  </metric>
  <metric name="TimeToNextNavigation">
    <summary>
      The amount of time the attempt took to reach the next navigation, in
      milliseconds. This can happen multiple times, but only the first is
      recorded.
    </summary>
  </metric>
  <metric name="TriggeringOutcome">
    <summary>
      Specifies whether the preloading attempt triggered and was used for the
      next navigation. Values are from the Chrome enum
      content::PreloadingTriggeringOutcome.
    </summary>
  </metric>
</event>

<event name="Preloading.Attempt.PreviousPrimaryPage">
  <owner>sreejakshetty@chromium.org</owner>
  <owner>spelchat@chromium.org</owner>
  <owner>chrome-brapp-loading@google.com</owner>
  <summary>
    This is same as Preloading.Attempt but UKM is associated with the primary
    triggering page (if exists) and logged when the user navigates away or when
    the WebContents is being destroyed.

    Associated with the Source ID of the WebContents primary page where the
    preloading attempt is triggered (user navigates from). All the metrics data
    are similar to Preloading.Attempt and please see the comments for more
    details.

    Note that this event is sampled based on the PreloadingConfig feature
    configuration (in addition to the normal UKM sampling mechanism). The
    sampling rate for each event (which may vary for different preloading
    features) is logged in the SamplingLikelihood field.
  </summary>
  <metric name="AccurateTriggering" enum="Boolean">
    <summary>
      Whether the preloading operation was triggered accurately (regardless of
      the eligibility, holdback, failures, etc.).

      Set to true if the user navigated to the predicted URL.
    </summary>
  </metric>
  <metric name="Eligibility">
    <summary>
      Eligibility status of preloading operation for the prediction.
    </summary>
  </metric>
  <metric name="FailureReason">
    <summary>
      Reason why the preloading operation failed.
    </summary>
  </metric>
  <metric name="HoldbackStatus">
    <summary>
      The outcome of the holdback check. This is not part of eligibility status
      to make clarify that this check needs to happen after we are done
      verifying the eligibility of a preloading attempt. In general, eligibility
      checks can be reordered, but the holdback check always needs to come after
      verifying that the preloading attempt was eligible.
    </summary>
  </metric>
  <metric name="PreloadingPredictor">
    <summary>
      The type of predictor that made the prediction. Values are from either
      content::PreloadingPredictor or ChromePreloadingPredictor.
    </summary>
  </metric>
  <metric name="PreloadingType">
    <summary>
      The type of preloading operation used for the preloading attempt.
    </summary>
  </metric>
  <metric name="ReadyTime">
    <summary>
      The amount of time the attempt took to reach a state in which it is ready
      to be used for the next navigation, in milliseconds. Note: currently only
      Prefetch, Prerender and NoStatePrefetch have a ready state. This field is
      only meaningful to these three types of preloading.
    </summary>
  </metric>
  <metric name="SamplingLikelihood">
    <summary>
      The sampling rate of this particular event multiplied by 1,000,000
      (because we cannot log floating point values in UKM). A value of 1,000,000
      means that the event had a 100% chance of being sampled, whereas a value
      of one means that the event had a one-in-a-millon chance of being sampled.
      The sampling rate for preloading attempts is set via field trial through
      the PreloadingConfig feature. The logged value just represents the
      configuration used for that preloading attempt.
    </summary>
  </metric>
  <metric name="TimeToNextNavigation">
    <summary>
      The amount of time the attempt took to reach the next navigation, in
      milliseconds. This can happen multiple times, but only the first is
      recorded.
    </summary>
  </metric>
  <metric name="TriggeringOutcome">
    <summary>
      Specifies whether the preloading triggered and was used for the next
      navigation.
    </summary>
  </metric>
</event>

<event name="Preloading.Prediction">
  <owner>sreejakshetty@chromium.org</owner>
  <owner>spelchat@chromium.org</owner>
  <owner>chrome-brapp-loading@google.com</owner>
  <summary>
    This event is logged for each preloading prediction and metrics related to
    the preloading predictors like OmniboxDirectURLInput, Speculation Rules and
    others when the navigation is finished or when the WebContents is being
    destroyed.

    Associated with the Source ID of the page user navigates to. Contains
    information about the type of the predictor, its confidence value and
    whether the prediction ended up being correct.
  </summary>
  <metric name="AccuratePrediction" enum="Boolean">
    <summary>
      Whether the user navigated to the predicted URL.
    </summary>
  </metric>
  <metric name="Confidence">
    <summary>
      The confidence percentage of predictor's correct prediction for
      preloading.
    </summary>
  </metric>
  <metric name="PreloadingPredictor">
    <summary>
      The type of preloading predictor that made the prediction. Values are from
      content::PreloadingPredictor or ChromePreloadingPredictor.
    </summary>
  </metric>
  <metric name="TimeToNextNavigation">
    <summary>
      The amount of time the prediction took to reach the next navigation, in
      milliseconds. This can happen multiple times, but only the first is
      recorded.
    </summary>
  </metric>
</event>

<event name="Preloading.Prediction.PreviousPrimaryPage">
  <owner>sreejakshetty@chromium.org</owner>
  <owner>spelchat@chromium.org</owner>
  <owner>chrome-brapp-loading@google.com</owner>
  <summary>
    This is the same as Preloading.Prediction but UKM is associated with the
    WebContents primary triggering page (if exists) and logged when the user
    navigates away or when the WebContents is being destroyed.

    Associated with the Source ID of the primary page where the preloading
    prediction is triggered (user navigates from). All the metrics data are
    similar to Preloading.Prediction and please see the comments for more
    details.
  </summary>
  <metric name="AccuratePrediction" enum="Boolean">
    <summary>
      Whether the user navigated to the predicted URL.
    </summary>
  </metric>
  <metric name="Confidence">
    <summary>
      The confidence percentage of predictor's correct prediction for
      preloading.
    </summary>
  </metric>
  <metric name="PreloadingPredictor">
    <summary>
      The type of preloading predictor which made the preloading prediction.
      Values are from content::PreloadingPredictor or ChromePreloadingPredictor.
    </summary>
  </metric>
  <metric name="TimeToNextNavigation">
    <summary>
      The amount of time the prediction took to reach the next navigation, in
      milliseconds. This can happen multiple times, but only the first is
      recorded.
    </summary>
  </metric>
</event>

<event name="PrerenderPageLoad" singular="True">
  <owner>ksakamoto@chromium.org</owner>
  <owner>nhiroki@chromium.org</owner>
  <summary>
    Metrics related to Prerender2
    (https://docs.google.com/document/d/1P2VKCLpmnNm_cRAjUeE-bqLL0bslL_zKqiNeCzNom_w/edit?usp=sharing).
  </summary>
  <metric name="FinalStatus" enum="PrerenderHostFinalStatus">
    <summary>
      A status of a prerendering attempt. Recorded as enum
      PrerenderHostFinalStatus in //tools/metrics/histograms/enums.xml.

      This is replicated as Prerender.Experimental.PrerenderHostFinalStatus.* in
      UMA.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric
      name="InteractiveTiming.AverageUserInteractionLatencyOverBudget.MaxEventDuration">
    <summary>
      The average value of user interaction latency above budget of a
      prerendered page after it is successfully activated, in ms. For this
      metric, we measure the latency of user interactions by
      Responsiveness.UserInteraction.MaxEventDuration and we deduct a budget
      from the original value. If the latency value is below the budget, it will
      be treated as 0 ms. Each type of interaction has its own budget.
    </summary>
  </metric>
  <metric name="InteractiveTiming.FirstInputDelay4">
    <summary>
      The duration between the hardware timestamp and the start of event
      processing on the main thread for the first meaningful input. Recorded on
      the prerender activation.
    </summary>
  </metric>
  <metric name="InteractiveTiming.NumInteractions">
    <summary>
      The number of distinct user interactions on a prerendered page after it is
      successfully activated. See definition of user interaction:
      https://web.dev/better-responsiveness-metric/#group-events-into-interactions
    </summary>
  </metric>
  <metric
      name="InteractiveTiming.UserInteractionLatency.HighPercentile2.MaxEventDuration">
    <summary>
      An approximation of a high percentile of user interaction latency of a
      prerendered page after it is successfully activated, in ms. For this
      metric, we measure the latency of user interactions by
      Responsiveness.UserInteraction.MaxEventDuration.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.country,profile.system_ram"/>
        <index fields="profile.is_dominant_version"/>
        <index fields="profile.is_latest_version"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="InteractiveTiming.WorstUserInteractionLatency.MaxEventDuration">
    <summary>
      The maximum value of user interaction latency of a prerendered page after
      it is successfully activated, in ms. For this metric, we measure the
      latency of user interactions by
      Responsiveness.UserInteraction.MaxEventDuration.
    </summary>
  </metric>
  <metric
      name="LayoutInstability.MaxCumulativeShiftScore.SessionWindow.Gap1000ms.Max5000ms">
    <summary>
      Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that
      has occurred on the prerendered page that is successfully activated in a
      session window. The gap between two consecutive shifts in a window is not
      bigger than 1000ms and the maximum window size is 5000ms. This metric's
      integral value is 100x the fractional cumulative layout shift score
      described in the explainer.
    </summary>
  </metric>
  <metric name="MainFrameResource.RequestHasNoStore" enum="Boolean">
    <summary>
      A boolean indicating if any prerender activation page load mainpage
      resource has a 'Cache-control: no-store' response header. Recorded only
      for main frame request.
    </summary>
  </metric>
  <metric name="PageEndReason" enum="PageEndReason">
    <obsolete>
      Removed March 2023.
    </obsolete>
    <summary>
      The |page_load_metrics::PageEndReason| for the prerender's activation.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Timing.ActivationToFirstContentfulPaint">
    <summary>
      The duration in milliseconds from time of activation navigation start to
      the time when the page first paints content. A contentful paint includes a
      paint of text, image, SVG, or canvas.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Timing.ActivationToLargestContentfulPaint">
    <summary>
      The duration in milliseconds from time of activation navigation start to
      the time when the page first paints the largest content (text or image)
      within viewport, across all frames.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Timing.NavigationToActivation">
    <summary>
      The duration in milliseconds from the start of initial prerendering
      navigation to the start of activation navigation. This corresponds to the
      activationStart attribute of PerformanceNavigationTiming.
    </summary>
  </metric>
  <metric name="TriggeredPrerender" enum="Boolean">
    <summary>
      A boolean that is set to true if the page triggered prerendering.

      Unlike other PrerenderPageLoad metrics, this is recorded not for
      prerendered page loads, but for page loads that initiated prerender.
    </summary>
  </metric>
  <metric name="WasPrerendered" enum="Boolean">
    <summary>
      A boolean that is set to true if the page was prerendered and later
      activated. Cancelled prerender page loads are not logged.
    </summary>
  </metric>
</event>

<event name="Presentation.StartResult">
  <owner>muyaoxu@google.com</owner>
  <owner>openscreen-eng@google.com</owner>
  <summary>
    Records when users start a Presentation and receive a response from the
    receiver. Android only. The following failures are not recorded because they
    don't represent an actual error: (1)
    PresentationErrorType::PRESENTATION_REQUEST_CANCELLED This error is created
    when users close the dialog without starting a Presentation. (2)
    PresentationErrorType::NO_PRESENTATION_FOUND This error might happen when a
    website implementing CastSDK try to join a route every time the page loads.
  </summary>
  <metric name="PresentationRequest" enum="Boolean">
    <summary>
      Records whether the users' request to start a Presentation with a
      &quot;cast:&quot; presentation URL succeed.
    </summary>
  </metric>
  <metric name="RemotePlayback" enum="Boolean">
    <summary>
      Records whether the users' request to start a Presentation through
      RemotePlayback succeed.
    </summary>
  </metric>
</event>

<event name="Previews" singular="True">
  <obsolete>
    Obsoleted 01/2022.
  </obsolete>
  <owner>ryansturm@chromium.org</owner>
  <summary>
    Previews related metrics associated with a page load. See
    //components/previews/.
  </summary>
  <metric name="client_lofi">
    <obsolete>
      Deprecated June 2019
    </obsolete>
    <summary>
      Set to 1 when a user is shown a client lo-fi image in a page load.
    </summary>
  </metric>
  <metric name="coin_flip_result">
    <obsolete>
      Replaced by the PreviewsCoinFlip event in M78.
    </obsolete>
    <summary>
      Set to 0 if there was no attempted preview for this page load, or the coin
      flip holdback is disabled in this session. Set to 1 if a preview was
      attempted and was allowed to proceed by the coin flip. Set to 2 if a
      preview would have been attempted but was held back by the coin flip. Note
      that a non-zero value in this field implies previews_likely.
    </summary>
  </metric>
  <metric name="defer_all_script" enum="Boolean">
    <obsolete>
      Deprecated Feb 2021.
    </obsolete>
    <summary>
      Set to 1 when a user is shown a DeferAllScript preview on a page load.
    </summary>
  </metric>
  <metric name="defer_all_script_eligibility_reason"
      enum="PreviewsEligibilityReason">
    <obsolete>
      Deprecated Feb 2021.
    </obsolete>
    <summary>
      Set to the value of the last known reason a DeferAllScript preview was not
      eligible on this page load. The value of this metric corresponds to the
      PreviewsEligibilityReason enum. This metric is only set when it is
      non-zero.
    </summary>
  </metric>
  <metric name="lite_page">
    <summary>
      Set to 1 when a user is shown a lite page in page load.
    </summary>
  </metric>
  <metric name="lite_page_redirect">
    <obsolete>
      Removed in M84.
    </obsolete>
    <summary>
      Set to 1 when a user is shown a lite page redirect in page load.
    </summary>
  </metric>
  <metric name="lite_page_redirect_eligibility_reason">
    <obsolete>
      Removed in M84.
    </obsolete>
    <summary>
      Set to the value of the last known reason a Lite Page Redirect preview was
      not eligible on this page load. The value of this metric corresponds to
      the PreviewsEligibilityReason enum. This metric is only set when it is
      non-zero.
    </summary>
  </metric>
  <metric name="navigation_restart_penalty">
    <obsolete>
      Feature removed in M79.
    </obsolete>
    <summary>
      Set to the number of milliseconds spent restarting navigations when a Lite
      Page Redirect preview is attempted, whether or not it is committed, during
      the page load.
    </summary>
  </metric>
  <metric name="noscript">
    <obsolete>
      Deprecated December 2020.
    </obsolete>
    <summary>
      Set to 1 when a user is shown a NoScript preview on a page load.
    </summary>
  </metric>
  <metric name="noscript_eligibility_reason">
    <obsolete>
      Deprecated December 2020.
    </obsolete>
    <summary>
      Set to the value of the last known reason a NoScript preview was not
      eligible on this page load. The value of this metric corresponds to the
      PreviewsEligibilityReason enum. This metric is only set when it is
      non-zero.
    </summary>
  </metric>
  <metric name="offline_eligibility_reason">
    <obsolete>
      Deprecated December 2020.
    </obsolete>
    <summary>
      Set to the value of the last known reason an Offline preview was not
      eligible on this page load. The value of this metric corresponds to the
      PreviewsEligibilityReason enum. This metric is only set when it is
      non-zero.
    </summary>
  </metric>
  <metric name="offline_preview">
    <obsolete>
      Deprecated December 2020.
    </obsolete>
    <summary>
      Set to 1 when a user is shown an offline preview page in page load.
    </summary>
  </metric>
  <metric name="opt_out">
    <obsolete>
      Deprecated Feb 2021.
    </obsolete>
    <summary>
      Set to 1 when a user clicks &quot;Show Original&quot; on a preview page
      load using the infobar. Set to 2 when a user opts out of a Preview using
      the omnibox.
    </summary>
  </metric>
  <metric name="origin_opt_out">
    <obsolete>
      Deprecated Feb 2021.
    </obsolete>
    <summary>
      Set to 1 when previews were enabled but no preview was attempted because
      the origin provided a Cache-Control:no-transform header in the main frame
      response. This is a directive from the origin to not perform any
      transformation so in the context of the Previews feature, it is an opt-out
      by the origin site (rather than the user).
    </summary>
  </metric>
  <metric name="previews_likely">
    <obsolete>
      Deprecated Feb 2021.
    </obsolete>
    <summary>
      Set to 1 when a preview will be attempted for this page load. Otherwise
      this is not set. This does not imply that a preview will be committed,
      only that one will be attempted. This is set to 1 even if this page load
      is impacted by the coin flip holdback.
    </summary>
  </metric>
  <metric name="proxy_lite_page_eligibility_reason">
    <obsolete>
      Deprecated Feb 2021.
    </obsolete>
    <summary>
      Set to the value of the last known reason a Data Reduction Proxy Lite Page
      preview was not eligible on this page load. The value of this metric
      corresponds to the PreviewsEligibilityReason enum. This metric is only set
      when it is non-zero.
    </summary>
  </metric>
  <metric name="resource_loading_hints">
    <obsolete>
      Deprecated December 2020.
    </obsolete>
    <summary>
      Set to 1 when a user is shown a resource loading hints based preview on a
      page load.
    </summary>
  </metric>
  <metric name="resource_loading_hints_eligibility_reason">
    <obsolete>
      Deprecated December 2020.
    </obsolete>
    <summary>
      Set to the value of the last known reason a Resource Loading Hints preview
      was not eligible on this page load. The value of this metric corresponds
      to the PreviewsEligibilityReason enum. This metric is only set when it is
      non-zero.
    </summary>
  </metric>
  <metric name="save_data_enabled">
    <summary>
      Set to 1 if the data saver feature was enabled in Chrome at the time of
      the page commit.
    </summary>
  </metric>
  <metric name="server_lofi">
    <obsolete>
      Deprecated June 2019
    </obsolete>
    <summary>
      Set to 1 when a user is shown a server lo-fi image in a page load.
    </summary>
  </metric>
</event>

<event name="PreviewsCoinFlip" singular="True">
  <obsolete>
    Deprecated Feb 2021.
  </obsolete>
  <owner>robertogden@chromium.org</owner>
  <summary>
    Coin flip experiment metrics associated with a Preview page load. See
    //components/previews/. This is recorded as a separate event from Previews
    so that it can be recorded earlier than commit which happens in some cases.
  </summary>
  <metric name="coin_flip_result" enum="PreviewsCoinFlipResult">
    <obsolete>
      Deprecated Feb 2021.
    </obsolete>
    <summary>
      Set to 0 if there was no attempted preview for this page load, or the coin
      flip holdback is disabled in this session. Set to 1 if a preview was
      attempted and was allowed to proceed by the coin flip. Set to 2 if a
      preview would have been attempted but was held back by the coin flip. Note
      that a non-zero value in this field implies previews_likely.
    </summary>
  </metric>
</event>

<event name="PreviewsDeferAllScript" singular="True">
  <obsolete>
    Deprecated Feb 2021.
  </obsolete>
  <owner>dougarnett@chromium.org</owner>
  <summary>
    Metrics associated with the intervention of deferring the execution of
    synchronous script (typically due to a DeferAllScript Preview). This is
    recorded when the HTML parsing of a mainframe has completed.
  </summary>
  <metric name="force_deferred_scripts_mainframe">
    <obsolete>
      Deprecated Feb 2021.
    </obsolete>
    <summary>
      The total number of mainframe scripts (inline and external) whose
      execution was force deferred (i.e., that otherwise would have been render
      blocking).
    </summary>
  </metric>
  <metric name="force_deferred_scripts_mainframe_external">
    <obsolete>
      Deprecated Feb 2021.
    </obsolete>
    <summary>
      The total number of mainframe external scripts whose execution was force
      deferred (i.e., that otherwise would have been render blocking).
    </summary>
  </metric>
</event>

<event name="PreviewsResourceLoadingHints" singular="True">
  <obsolete>
    Deprecated Feb 2021.
  </obsolete>
  <owner>jegray@chromium.org</owner>
  <summary>
    Metrics associated with loading a resource loading hints based preview. This
    is recorded when the URL's document finishes loading. See
    //components/previews/.
  </summary>
  <metric name="blocked_high_priority">
    <summary>
      The number of high priority resource requests that were blocked by the
      resource loading hints based preview while the URL's document was loading.
    </summary>
  </metric>
  <metric name="blocked_low_priority">
    <summary>
      The number of low priority resource requests that were blocked by the
      resource loading hints based preview while the URL's document was loading.
    </summary>
  </metric>
  <metric name="blocked_medium_priority">
    <summary>
      The number of medium priority resource requests that were blocked by the
      resource loading hints based preview while the URL's document was loading.
    </summary>
  </metric>
  <metric name="blocked_very_high_priority">
    <summary>
      The number of very high priority resource requests that were blocked by
      the resource loading hints based preview while the URL's document was
      loading.
    </summary>
  </metric>
  <metric name="blocked_very_low_priority">
    <summary>
      The number of very low priority resource requests that were blocked by the
      resource loading hints based preview while the URL's document was loading.
    </summary>
  </metric>
  <metric name="patterns_to_block_total">
    <summary>
      The total number of patterns to block included in the resource loading
      hints based preview.
    </summary>
  </metric>
  <metric name="patterns_to_block_used">
    <summary>
      The number of patterns that blocked at least one resource request in the
      resource loading hints based preview while the URL's document was loading.
    </summary>
  </metric>
</event>

<event name="PublicImageCompressionDataUse">
  <obsolete>
    Obsoleted 01/2022.
  </obsolete>
  <owner>rajendrant@chromium.org</owner>
  <owner>mcrouse@chromium.org</owner>
  <summary>
    Records coverage metrics for https image compression. The network data use
    of images is recorded with breakdown of whether the image was compressible
    by redirecting to optimized version, or if not the reason for its
    ineligblity is recorded. The bytes are rounded down to the exponential
    bucket with factor of 1.3.
  </summary>
  <metric name="CompressibleImageBytes">
    <summary>
      Total image bytes that can be compressed, by redirecting to optimized
      versions to save data.
    </summary>
  </metric>
  <metric name="IneligibleImageHintsUnavailableAndMissingInHintsBytes">
    <summary>
      Total bytes of images that were ineligible to be compressed due to the
      image hint list was not retrieved in time before the image fetch started,
      and the image URL was not in the hint list as well, which finished
      fetching later.
    </summary>
  </metric>
  <metric name="IneligibleImageHintsUnavailableButCompressibleBytes">
    <summary>
      Total bytes of images that were ineligible to be compressed due to the
      image hint list was not retrieved in time before the image fetch started,
      but the image URL was found in the hint list, which finished fetching
      later.
    </summary>
  </metric>
  <metric name="IneligibleImageHintsUnavailableBytes">
    <summary>
      Total bytes of images that were ineligible to be compressed due to the
      image hint list was not retrieved within within certain time limit of
      navigation start.
    </summary>
  </metric>
  <metric name="IneligibleMissingInImageHintsBytes">
    <summary>
      Total bytes of images that were ineligible to be compressed due to the
      image URL not exist in the image hint list.
    </summary>
  </metric>
  <metric name="IneligibleOtherImageBytes">
    <summary>
      Total bytes of images that were ineligible to be compressed due to other
      reasons not listed here, such as subframe images, non img element,
      javascript initiated image, etc.
    </summary>
  </metric>
</event>

<event name="PublicImageCompressionImageLoad">
  <obsolete>
    Obsoleted Jan 2022.
  </obsolete>
  <owner>rajendrant@chromium.org</owner>
  <owner>mcrouse@chromium.org</owner>
  <summary>
    Records image loading and network data use metrics for https image
    compression. Recorded when an image request completes with successful
    compression or fails and fetches original image. The bytes are rounded down
    to the exponential bucket with factor of 1.3.
  </summary>
  <metric name="CompressionPercentage">
    <summary>
      The compression percent of this image recorded if the image has been
      compressed: (1-compressed_bytes/original_bytes)*100%
    </summary>
  </metric>
  <metric name="NavigationToRequestSent">
    <summary>
      The duration in milliseconds from time of navigation start to the time the
      image request was sent to the origin or compression server.
    </summary>
  </metric>
  <metric name="NavigationToRequestStart">
    <summary>
      The duration in milliseconds from time of navigation start to the time the
      image request started.
    </summary>
  </metric>
  <metric name="NavigationToResponseReceived">
    <summary>
      The duration in milliseconds from time of navigation start to the time the
      image response headers were received.
    </summary>
  </metric>
  <metric name="OriginalBytes">
    <summary>
      The original size of the image before compression. For compressed images
      this is the original size retrieved from response headers. For
      non-compressed images this is the network bytes.
    </summary>
  </metric>
  <metric name="RedirectResult" enum="SubresourceRedirectRedirectResult">
    <summary>
      Enumerates the different results possible for subresource redirection,
      such as redirectable or different reasons of ineligibility.
    </summary>
  </metric>
  <metric name="RobotsRulesFetchLatency">
    <summary>
      The duration in milliseconds to fetch the robots rules. Recorded for each
      image that goes through the robots rules check.
    </summary>
  </metric>
</event>

<event name="PWA.Visit" singular="True">
  <owner>yfriedman@chromium.org</owner>
  <owner>hartmanng@chromium.org</owner>
  <owner>pkotwicz@chromium.org</owner>
  <summary>
    PWA usage metrics recorded during a user's interaction with the site.
  </summary>
  <metric name="LaunchSource" enum="LaunchFromHomeScreenSource">
    <summary>
      Launch source of the WebAPK (tap from homescreen, WebShareTarget,
      deeplink, etc).
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="WebAPKableSiteVisit" enum="Boolean">
    <summary>
      Recorded every time a non-installed &quot;WebAPKable&quot; site is
      visited.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="ReaderModeActivated" singular="True">
  <owner>gilmanmh@google.com</owner>
  <owner>kjbooker@google.com</owner>
  <owner>dtseng@chromium.org</owner>
  <summary>
    Recorded after a user activates Reader Mode for a given page.
  </summary>
  <metric name="ActivatedViaOmnibox" enum="Boolean">
    <summary>
      Whether the user activated Reader Mode via the omnibox badge.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="ReaderModeReceivedDistillability">
  <owner>gilmanmh@google.com</owner>
  <owner>kjbooker@google.com</owner>
  <owner>dtseng@chromium.org</owner>
  <summary>
    Recorded when the Reader Mode badge receives a result from the
    distillability service.
  </summary>
  <metric name="IsPageDistillable" enum="Boolean">
    <summary>
      Whether the distillability service determined the page to be distillable,
      i.e. likely to render well in Reader Mode.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="RendererSchedulerTask">
  <owner>altimin@chromium.org</owner>
  <summary>
    Sampled task from the renderer main thread. Sample rate is controlled
    dynamically. See
    blink::scheduler::MainThreadSchedulerImpl::ShouldRecordTaskUkm.
  </summary>
  <metric name="FrameStatus">
    <summary>
      Frame status of the frame associated with the context of this task. See
      blink::scheduler::FrameStatus for the values of this enum.
    </summary>
  </metric>
  <metric name="IsOOPIF">
    <summary>
      Whether the frame which the task is associated with is an out-of-process
      iframe. Boolean encoded as an integer (0/1).
    </summary>
  </metric>
  <metric name="PageSchedulers">
    <summary>
      Number of page schedulers in this process. If the value equals one, global
      per-process tasks can be attributed to the URL.
    </summary>
  </metric>
  <metric name="QueueType">
    <summary>
      Type of the task queue which this task was posted to. See
      blink::scheduler::MainThreadTaskQueue::TaskType for the values of this
      enum.
    </summary>
  </metric>
  <metric name="RendererAudible">
    <summary>
      Whether renderer was playing audio when this task was completed. Boolean,
      encoded as an integer (0/1).
    </summary>
  </metric>
  <metric name="RendererBackgrounded">
    <summary>
      Whether renderer was backgrounded when this task was completed. Boolean,
      encoded as an integer (0/1).
    </summary>
  </metric>
  <metric name="RendererHidden">
    <summary>
      Whether renderer was hidden when this task was completed. Boolean, encoded
      as an integer (0/1).
    </summary>
  </metric>
  <metric name="SecondsSinceBackgrounded">
    <summary>
      Seconds since the renderer was backgrounded, recorded when the task was
      completed. Only set if the renderer is backgrounded.
    </summary>
  </metric>
  <metric name="TaskCPUDuration">
    <summary>
      CPU duration of this task in microseconds.
    </summary>
  </metric>
  <metric name="TaskDuration">
    <summary>
      Duration of this task in microseconds.
    </summary>
  </metric>
  <metric name="TaskType">
    <summary>
      blink::TaskType for the current task.
    </summary>
  </metric>
  <metric name="ThreadType">
    <summary>
      blink::ThreadType for the thread the current task was executed on.
    </summary>
  </metric>
  <metric name="UseCase">
    <summary>
      MainThreadSchedulerImpl's UseCase when this task was completed. See
      blink::scheduler::UseCase for the values of this enum.
    </summary>
  </metric>
  <metric name="Version">
    <summary>
      The version of this metric, which is used to track the actual set of
      values present across different builds and channels. Hardcoded into the
      binary and incremented each time a new field is added or existing is
      changed. Integer.
    </summary>
  </metric>
</event>

<event name="RenderViewContextMenu.Used">
  <owner>juanmojica@google.com</owner>
  <owner>benwgold@google.com</owner>
  <summary>
    Metric recorded when a context menu item is selected. This is currently only
    recorded for Lens context menu items.
  </summary>
  <metric name="SelectedMenuItem" enum="RenderViewContextMenuItem">
    <summary>
      The menu item selected by the user on the context menu.
    </summary>
  </metric>
</event>

<event name="Responsiveness.UserInteraction">
  <owner>mmocny@chromium.org</owner>
  <owner>sullivan@chromium.org</owner>
  <owner>speed-metrics-dev@chromium.org</owner>
  <summary>
    Metrics that are associated with user interactions and recorded when users
    interact with web pages. Currently we are interested in keyboard, tap, click
    and drag. A user interaction often encompasses multiple input events. For
    keyboard interactions, we only care about keydown and keyup. For tap, click
    and drag, we only measure pointerdown, pointerup and click.
  </summary>
  <metric name="InteractionType" enum="UserInteractionType">
    <summary>
      The type of the user interaction that triggered input event sequence, not
      the input event type. It can be keyboard, tap, click or drag.
    </summary>
  </metric>
  <metric name="MaxEventDuration">
    <summary>
      The longest input event duration within the user interaction. The unit of
      duration is ms. For example, if a user pressed a key, we can get a keydown
      and a keyup. If the duration(keydown) &gt; duration(keyup), the value of
      this metric will be duration(keydown).
    </summary>
  </metric>
  <metric name="TotalEventDuration">
    <summary>
      The sum of input event durations within the user interaction without
      double counting the overlap. The unit of duration is ms. For example, if a
      user pressed a key, we can get a keydown and a keyup. The value of this
      metric will be duration(keydown) + duration(keyup) -
      duration(intersection(keydown, keyup)).
    </summary>
  </metric>
</event>

<event name="ResponsivenessMeasurement">
  <owner>npm@chromium.org</owner>
  <owner>tdresser@chromium.org</owner>
  <summary>
    Responsiveness metrics recorded once every 5 seconds.
  </summary>
  <metric name="ExpectedTaskQueueingDuration">
    <obsolete>
      Removed June 2020.
    </obsolete>
    <summary>
      Duration in MS for expected task queueing duration. The metric reflects
      the responsiveness of a tab. A lower value means the tab will respond to
      inputs faster. This metric is equal to
      RendererScheduler.ExpectedTaskQueueingDuration of the main frame process.
    </summary>
  </metric>
</event>

<event name="SalientImageAvailability" singular="True">
  <owner>chrome-intelligence-core@google.com</owner>
  <owner>tbansal@chromium.org</owner>
  <summary>
    Metrics on the salient image of the page, one record per page load commit
    and has an annotation calculated on it.
  </summary>
  <metric name="ImageAvailability"
      enum="OptimizationGuideSalientImageAvailability">
    <summary>
      Records whether salient image was available or not for this page, the
      source of the salient image and why it was unavailable.
    </summary>
  </metric>
</event>

<event name="SameSiteDifferentSchemeRequest">
  <owner>bingler@chromium.org</owner>
  <metric name="SameSiteContextWithSchemes" enum="SameSiteCookieContext">
    <obsolete>
      Removed Apr 2020 as this metric doesn't capture the correct information.
      https://crbug.com/1066231
    </obsolete>
    <summary>
      An enum that records the type of same-site context if a cookie marked with
      SameSite=Lax or SameSite=Strict is sent across schemes on a request. E.x.:
      An http site making a request to an https site.
    </summary>
  </metric>
</event>

<event name="SameSiteDifferentSchemeResponse">
  <owner>bingler@chromium.org</owner>
  <metric name="SameSiteContextWithSchemes" enum="SameSiteCookieContext">
    <obsolete>
      Removed Apr 2020 as this metric doesn't capture the correct information.
      https://crbug.com/1066231
    </obsolete>
    <summary>
      An enum that records the type of same-site context if a cookie marked with
      SameSite=Lax or SameSite=Strict is set across schemes on a response. E.x.:
      An http site returning a response to an https site.
    </summary>
  </metric>
</event>

<event name="SamesiteRedirectContextDowngrade">
  <owner>bingler@chromium.org</owner>
  <summary>
    A collection of metrics which are recorded for cookies whose inclusion would
    be changed if the redirect chain was considered in their same-site
    calculation. This change in inclusion is because the same-site context would
    &quot;downgrade&quot; from a more permissive context to a less permissive
    context, one which may not allow a cookie's inclusion.
  </summary>
  <metric name="AgePerCookie">
    <summary>
      Records the age of the cookies, in minutes, for cookies which are being
      read (on a requset or via JS). The value rounded down to the exponential
      bucket with factor of 2.0.
    </summary>
  </metric>
  <metric name="SamesiteValueReadPerCookie" enum="SameSiteCookieValue">
    <summary>
      Records the SameSite value of the cookie for cookies which are being read
      (on a request or via JS).
    </summary>
  </metric>
  <metric name="SamesiteValueWritePerCookie" enum="SameSiteCookieValue">
    <summary>
      Records the SameSite value of the cookie for cookies which are being
      written (on a response or via JS).
    </summary>
  </metric>
</event>

<event name="SchemefulSameSiteContextDowngrade">
  <owner>bingler@chromium.org</owner>
  <metric name="RequestPerCookie"
      enum="SameSiteCookieContextBreakingDowngradeWithSecureness">
    <summary>
      An enum which records the type of schemeful same-site downgrade applied to
      a cookie which is being sent on a request along with the secureness of the
      origin the cookie is attempting to be sent to. This is recorded once per
      cookie when the cookie is included in the request or if the cookie
      excluded due to insufficient same-site context only. Cookies that meet the
      above conditions but without a downgrade warning are not recorded.
    </summary>
  </metric>
  <metric name="ResponsePerCookie"
      enum="SameSiteCookieContextBreakingDowngradeWithSecureness">
    <summary>
      An enum which records the type of schemeful same-site downgrade applied to
      a cookie which is being set by a response along with the secureness of the
      origin that is attempting to set the cookie. This is recorded once per
      cookie when the cookie is allowed to be set or if the cookie is ignored
      due to insufficient same-site context only. Cookies that meet the above
      conditions but without a downgrade warning are not recorded.
    </summary>
  </metric>
</event>

<event name="ScreenBrightness">
  <owner>pdyson@chromium.org</owner>
  <summary>
    Collects metrics periodically and on screen brightness change.
  </summary>
  <metric name="BatteryPercent">
    <summary>
      Percentage of battery, rounded down to a multiple of 5%, i.e. [0, 5%) is
      mapped to 0, [5%, 10%) is mapped to 5 etc.
    </summary>
  </metric>
  <metric name="Brightness">
    <summary>
      Screen percentage brightness. between 0 and 100.
    </summary>
  </metric>
  <metric name="DayOfWeek">
    <summary>
      An enum representing the of the week that the data was logged, defined in
      |ash::power::ml::ScreenBrightnessEvent::Features::ActivityData::
      DayOfWeek|.
    </summary>
  </metric>
  <metric name="DeviceMode">
    <summary>
      An enum representing the mode of the device, defined in
      |ash::power::ml::ScreenBrightnessEvent::Features::EnvData:DeviceMode|
    </summary>
  </metric>
  <metric name="HourOfDay">
    <summary>
      The hour of the day when the data is logged. Hours since midnight in the
      local time zone.
    </summary>
  </metric>
  <metric name="IsAutoclickEnabled">
    <summary>
      Boolean value to represent whether the auto click is currently enabled.
    </summary>
  </metric>
  <metric name="IsBrailleDisplayConnected">
    <summary>
      Boolean value to represent whether the braille display is currently
      enabled.
    </summary>
  </metric>
  <metric name="IsCaretHighlightEnabled">
    <summary>
      Boolean value to represent whether the caret highlight is currently
      enabled.
    </summary>
  </metric>
  <metric name="IsCursorHighlightEnabled">
    <summary>
      Boolean value to represent whether the cursor highlight is currently
      enabled.
    </summary>
  </metric>
  <metric name="IsFocusHighlightEnabled">
    <summary>
      Boolean value to represent whether the focus highlight is currently
      enabled.
    </summary>
  </metric>
  <metric name="IsHighContrastEnabled">
    <summary>
      Boolean value to represent whether the high contrast is currently enabled.
    </summary>
  </metric>
  <metric name="IsLargeCursorEnabled">
    <summary>
      Boolean value to represent whether the large cursor is currently enabled.
    </summary>
  </metric>
  <metric name="IsMagnifierEnabled">
    <summary>
      Boolean value to represent whether the full screen magnifier is currently
      enabled.
    </summary>
  </metric>
  <metric name="IsMonoAudioEnabled">
    <summary>
      Boolean value to represent whether the mono audio is currently enabled.
    </summary>
  </metric>
  <metric name="IsSelectToSpeakEnabled">
    <summary>
      Boolean value to represent whether select to speak is currently enabled.
    </summary>
  </metric>
  <metric name="IsSpokenFeedbackEnabled">
    <summary>
      Boolean value to represent whether the spoken feedback is currently
      enabled.
    </summary>
  </metric>
  <metric name="IsSwitchAccessEnabled">
    <summary>
      Boolean value to represent whether Switch Access is currently enabled.
    </summary>
  </metric>
  <metric name="IsVideoPlaying">
    <summary>
      Boolean value to represent whether video is currently playing.
    </summary>
  </metric>
  <metric name="IsVirtualKeyboardEnabled">
    <summary>
      Boolean value to represent whether the virtual keyboard is currently
      enabled.
    </summary>
  </metric>
  <metric name="LastActivityTimeSec">
    <summary>
      Time between the last activity and when the data was logged. A duration
      timestamp in seconds.
    </summary>
  </metric>
  <metric name="NightLightTemperaturePercent">
    <summary>
      The temperature percentage of night light screen color adjustment when
      night light is on. Ranges from 0 to 100.
    </summary>
  </metric>
  <metric name="NumRecentKeyEvents">
    <summary>
      The number of keyboard events in the last hour.
    </summary>
  </metric>
  <metric name="NumRecentMouseEvents">
    <summary>
      The number of mouse events in the last hour.
    </summary>
  </metric>
  <metric name="NumRecentStylusEvents">
    <summary>
      The number of stylus events in the last hour.
    </summary>
  </metric>
  <metric name="NumRecentTouchEvents">
    <summary>
      The number of touch events in the last hour.
    </summary>
  </metric>
  <metric name="OnBattery">
    <summary>
      Boolean value to represent whether the device is currently on battery
      power.
    </summary>
  </metric>
  <metric name="PreviousBrightness">
    <summary>
      The brightness of the screen prior to the time at which the current event
      was logged.
    </summary>
  </metric>
  <metric name="Reason">
    <summary>
      The reason that the event is logged. Values are enumerated in
      |ash::power::ml::ScreenBrightnessEvent::Event::Reason|.
    </summary>
  </metric>
  <metric name="RecentTimeActiveSec">
    <summary>
      How long the user has been active. A duration timestamp in seconds.
    </summary>
  </metric>
  <metric name="SequenceId">
    <summary>
      The ID of this event in the current session.
    </summary>
  </metric>
  <metric name="TimeSinceLastEventSec">
    <summary>
      Time in seconds since last time an event was logged.
    </summary>
  </metric>
</event>

<event name="Security.SafetyTip">
  <owner>jdeblasio@chromium.org</owner>
  <owner>enamelites@google.com</owner>
  <owner>beggs@google.com</owner>
  <summary>
    Collected when any safety tip heuristic triggers, regardless of whether the
    Safety Tip UI is shown.
  </summary>
  <metric name="SafetyTipInteraction" enum="SafetyTipInteraction">
    <summary>
      How the user interacted with the UI, if applicable.
    </summary>
  </metric>
  <metric name="SafetyTipStatus" enum="SafetyTipStatus">
    <summary>
      The final reported Safety Tip status.
    </summary>
  </metric>
  <metric name="TriggeredKeywordsHeuristics" enum="Boolean">
    <summary>
      Whether the sensitive keywords heuristic triggered.
    </summary>
  </metric>
  <metric name="TriggeredLookalikeHeuristics" enum="Boolean">
    <summary>
      Whether the lookalike keywords heuristic triggered.
    </summary>
  </metric>
  <metric name="TriggeredServerSideBlocklist" enum="Boolean">
    <summary>
      Whether the server-side blocklist heuristic triggered.
    </summary>
  </metric>
  <metric name="UserPreviouslyIgnored" enum="Boolean">
    <summary>
      Whether the user had already ignored a safety tip warning for this page in
      the past, meaning no tip was shown.
    </summary>
  </metric>
</event>

<event name="Security.SiteEngagement">
  <owner>cthomp@chromium.org</owner>
  <owner>enamelites@google.com</owner>
  <summary>
    Site engagement score behavior for a page with a given Security Level.
  </summary>
  <metric name="FinalSecurityLevel">
    <summary>
      The final SecurityLevel of the page before it is closed or another
      navigation occurs. Based on the enum security_state::SecurityLevel.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="InitialSecurityLevel">
    <summary>
      The initial SecurityLevel of the page when the navigation commits. Based
      on the enum security_state::SecurityLevel.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SafetyTipStatus" enum="SafetyTipStatus">
    <summary>
      The Safety Tip status of the page when the navigation commits, after the
      reputation check finishes.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="ScoreDelta">
    <summary>
      The change in Site Engagement score for the page before it is closed or
      another navigation occurs compared to the score from when the navigation
      committed. Score is between 0.0 and 100.0; delta is between -100.0 and
      100.0. Rounded to the nearest integer.
    </summary>
  </metric>
  <metric name="ScoreFinal">
    <summary>
      The final Site Engagement score for the page before it is closed or
      another navigation occurs. Score is between 0.0 and 100.0; this metric is
      rounded down to a multiple of 10 to limit granularity.
    </summary>
  </metric>
</event>

<event name="Segmentation.ModelExecution">
  <owner>nyquist@chromium.org</owner>
  <owner>qinmin@chromium.org</owner>
  <owner>ssid@chromium.org</owner>
  <summary>
    Input and output tensors for executing the ML model identified by
    optimization targets and version. The input tensors can come from UMA or
    UKM, with or without aggregation. Check model metadata for more information
    about each tensor. Since all the ML tensors are floats, they are encoded
    into int64 and will be decoded later during model training. This metric is
    recorded after an ML model is executed, and the actual result is collected.
  </summary>
  <metric name="ActualResult">
    <summary>
      UMA or UKM metrics related to the features affected by the ML model, with
      or without aggregation, after running the features as instructed by the ML
      model. For example, this can be the 7 day total button clicks after an ML
      model decides to show it. No encoding is used as this is normally a count
      or sum of a UMA/UKM metric.
    </summary>
  </metric>
  <metric name="ActualResult2">
    <summary>
      The 2nd UMA or UKM metrics related to the features affected by the ML
      model, with or without aggregation, after running the features as
      instructed by the ML model. No encoding is used.
    </summary>
  </metric>
  <metric name="ActualResult3">
    <summary>
      The 3rd UMA or UKM metrics related to the features affected by the ML
      model, with or without aggregation, after running the features as
      instructed by the ML model. No encoding is used.
    </summary>
  </metric>
  <metric name="ActualResult4">
    <summary>
      The 4th UMA or UKM metrics related to the features affected by the ML
      model, with or without aggregation, after running the features as
      instructed by the ML model. No encoding is used.
    </summary>
  </metric>
  <metric name="ActualResult5">
    <summary>
      The 5th UMA or UKM metrics related to the features affected by the ML
      model, with or without aggregation, after running the features as
      instructed by the ML model. No encoding is used.
    </summary>
  </metric>
  <metric name="ActualResult6">
    <summary>
      The 6th UMA or UKM metrics related to the features affected by the ML
      model, with or without aggregation, after running the features as
      instructed by the ML model. No encoding is used.
    </summary>
  </metric>
  <metric name="Input0">
    <summary>
      The input tensor at index 0 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input1">
    <summary>
      The input tensor at index 1 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input10">
    <summary>
      The input tensor at index 10 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input11">
    <summary>
      The input tensor at index 11 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input12">
    <summary>
      The input tensor at index 12 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input13">
    <summary>
      The input tensor at index 13 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input14">
    <summary>
      The input tensor at index 14 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input15">
    <summary>
      The input tensor at index 15 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input16">
    <summary>
      The input tensor at index 16 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input17">
    <summary>
      The input tensor at index 17 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input18">
    <summary>
      The input tensor at index 18 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input19">
    <summary>
      The input tensor at index 19 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input2">
    <summary>
      The input tensor at index 2 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input20">
    <summary>
      The input tensor at index 20 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input21">
    <summary>
      The input tensor at index 21 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input22">
    <summary>
      The input tensor at index 22 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input23">
    <summary>
      The input tensor at index 23 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input24">
    <summary>
      The input tensor at index 24 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input25">
    <summary>
      The input tensor at index 25 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input26">
    <summary>
      The input tensor at index 26 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input27">
    <summary>
      The input tensor at index 27 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input28">
    <summary>
      The input tensor at index 28 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input29">
    <summary>
      The input tensor at index 29 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input3">
    <summary>
      The input tensor at index 3 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input30">
    <summary>
      The input tensor at index 30 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input31">
    <summary>
      The input tensor at index 31 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input32">
    <summary>
      The input tensor at index 32 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input33">
    <summary>
      The input tensor at index 33 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input34">
    <summary>
      The input tensor at index 34 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input35">
    <summary>
      The input tensor at index 35 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input36">
    <summary>
      The input tensor at index 36 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input37">
    <summary>
      The input tensor at index 37 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input38">
    <summary>
      The input tensor at index 38 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input39">
    <summary>
      The input tensor at index 39 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input4">
    <summary>
      The input tensor at index 4 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input40">
    <summary>
      The input tensor at index 40 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input41">
    <summary>
      The input tensor at index 41 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input42">
    <summary>
      The input tensor at index 42 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input43">
    <summary>
      The input tensor at index 43 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input44">
    <summary>
      The input tensor at index 44 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input45">
    <summary>
      The input tensor at index 45 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input46">
    <summary>
      The input tensor at index 46 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input47">
    <summary>
      The input tensor at index 47 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input48">
    <summary>
      The input tensor at index 48 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input49">
    <summary>
      The input tensor at index 49 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input5">
    <summary>
      The input tensor at index 5 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input6">
    <summary>
      The input tensor at index 6 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input7">
    <summary>
      The input tensor at index 7 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input8">
    <summary>
      The input tensor at index 8 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="Input9">
    <summary>
      The input tensor at index 9 represented in IEEE 754 double precision.
    </summary>
  </metric>
  <metric name="ModelVersion">
    <summary>
      The version of the ML model used for execution. May not be a counter int.
    </summary>
  </metric>
  <metric name="OptimizationTarget">
    <summary>
      The OptimizationTarget associated with the ML model. This is an enum for
      classifying different ML models. It represents what an model is trying to
      optimize.
    </summary>
  </metric>
  <metric name="OutputDelaySec">
    <summary>
      The time from last segment selection to when the UKM is recorded, in
      seconds.
    </summary>
  </metric>
  <metric name="PredictionResult">
    <summary>
      Predicted result from executing the ML model. This is normally a score for
      determining whether to show a particular feature. The value is a floating
      number between 0 to 1 and encoded into IEEE 754 double precision here.
      This is being deprecated. Use PredictionResult1 instead. Will add
      deprecated flag once all the code are start using PredictionResult1.
    </summary>
  </metric>
  <metric name="PredictionResult1">
    <summary>
      The 1st output when inferencing the ML model with input data. The value is
      a floating number between 0 to 1 and encoded into IEEE 754 double
      precision here.
    </summary>
  </metric>
  <metric name="PredictionResult10">
    <summary>
      The 10th output when inferencing the ML model with input data. The value
      is a floating number between 0 to 1 and encoded into IEEE 754 double
      precision here.
    </summary>
  </metric>
  <metric name="PredictionResult2">
    <summary>
      The 2nd output when inferencing the ML model with input data. The value is
      a floating number between 0 to 1 and encoded into IEEE 754 double
      precision here.
    </summary>
  </metric>
  <metric name="PredictionResult3">
    <summary>
      The 3rd output when inferencing the ML model with input data. The value is
      a floating number between 0 to 1 and encoded into IEEE 754 double
      precision here.
    </summary>
  </metric>
  <metric name="PredictionResult4">
    <summary>
      The 4th output when inferencing the ML model with input data. The value is
      a floating number between 0 to 1 and encoded into IEEE 754 double
      precision here.
    </summary>
  </metric>
  <metric name="PredictionResult5">
    <summary>
      The 5th output when inferencing the ML model with input data. The value is
      a floating number between 0 to 1 and encoded into IEEE 754 double
      precision here.
    </summary>
  </metric>
  <metric name="PredictionResult6">
    <summary>
      The 6th output when inferencing the ML model with input data. The value is
      a floating number between 0 to 1 and encoded into IEEE 754 double
      precision here.
    </summary>
  </metric>
  <metric name="PredictionResult7">
    <summary>
      The 7th output when inferencing the ML model with input data. The value is
      a floating number between 0 to 1 and encoded into IEEE 754 double
      precision here.
    </summary>
  </metric>
  <metric name="PredictionResult8">
    <summary>
      The 8th output when inferencing the ML model with input data. The value is
      a floating number between 0 to 1 and encoded into IEEE 754 double
      precision here.
    </summary>
  </metric>
  <metric name="PredictionResult9">
    <summary>
      The 9th output when inferencing the ML model with input data. The value is
      a floating number between 0 to 1 and encoded into IEEE 754 double
      precision here.
    </summary>
  </metric>
  <metric name="SelectionResult">
    <summary>
      The OptimizationTarget of the last selected segment before UKM is
      recorded. Some features might have several ML models with them. This
      metric records which model is currently selected for the feature.
    </summary>
  </metric>
</event>

<event name="ServiceWorker.OnLoad">
  <owner>yyanagisawa@chromium.org</owner>
  <owner>chrome-worker@google.com</owner>
  <summary>
    Events taken at the end of the loading pages controlled by the service
    workers. It means that the metrics is recorded only if the loading is
    successfully completed.
  </summary>
  <metric name="AudioFallback">
    <summary>
      True if there are network fallback sub-resources of audios in the page.
      (boolean value. true: 1 or false: 0)
    </summary>
  </metric>
  <metric name="AudioHandled">
    <summary>
      True if there are service workers handling sub-resource loads of audios in
      the page. (boolean value. true: 1 or false: 0)
    </summary>
  </metric>
  <metric name="CSSStyleSheetFallback">
    <summary>
      True if there are network fallback sub-resources of CSSStyleSheet in the
      page. (boolean value. true: 1 or false: 0)
    </summary>
  </metric>
  <metric name="CSSStyleSheetHandled">
    <summary>
      True if there are service workers handling sub-resource loads of
      CSSStyleSheet in the page. (boolean value. true: 1 or false: 0)
    </summary>
  </metric>
  <metric name="FontFallback">
    <summary>
      True if there are network fallback sub-resources of CSSStyleSheet in the
      page. (boolean value. true: 1 or false: 0)
    </summary>
  </metric>
  <metric name="FontHandled">
    <summary>
      True if there are service workers handling sub-resource loads of fonts in
      the page. (boolean value. true: 1 or false: 0)
    </summary>
  </metric>
  <metric name="ImageFallback">
    <summary>
      True if there are network fallback sub-resources of images in the page.
      (boolean value. true: 1 or false: 0)
    </summary>
  </metric>
  <metric name="ImageHandled">
    <summary>
      True if there are service workers handling sub-resource loads of images in
      the page. (boolean value. true: 1 or false: 0)
    </summary>
  </metric>
  <metric name="LinkPrefetchFallback">
    <summary>
      True if there are network fallback sub-resources of link prefetches in the
      page. (boolean value. true: 1 or false: 0)
    </summary>
  </metric>
  <metric name="LinkPrefetchHandled">
    <summary>
      True if there are service workers handling sub-resource loads of link
      prefetches in the page. (boolean value. true: 1 or false: 0)
    </summary>
  </metric>
  <metric name="MainAndSubResourceLoadLocation"
      enum="ServiceWorkerResourceLoadStatus">
    <summary>
      Enum value to represent how main / sub resource are loaded.
    </summary>
  </metric>
  <metric name="ManifestFallback">
    <summary>
      True if there are network fallback sub-resources of manifests in the page.
      (boolean value. true: 1 or false: 0)
    </summary>
  </metric>
  <metric name="ManifestHandled">
    <summary>
      True if there are service workers handling sub-resource loads of manifests
      in the page. (boolean value. true: 1 or false: 0)
    </summary>
  </metric>
  <metric name="ScriptFallback">
    <summary>
      True if there are network fallback sub-resources of CSSStyleSheet in the
      page. (boolean value. true: 1 or false: 0)
    </summary>
  </metric>
  <metric name="ScriptHandled">
    <summary>
      True if there are service workers handling sub-resource loads of scripts
      in the page. (boolean value. true: 1 or false: 0)
    </summary>
  </metric>
  <metric name="SpeculationRulesFallback">
    <summary>
      True if there are network fallback sub-resources of speculation rules in
      the page. (boolean value. true: 1 or false: 0)
    </summary>
  </metric>
  <metric name="SpeculationRulesHandled">
    <summary>
      True if there are service workers handling sub-resource loads of
      speculation rules in the page. (boolean value. true: 1 or false: 0)
    </summary>
  </metric>
  <metric name="SubResourceFallbackRatio">
    <summary>
      An integer ratio (0 - 100) to represent the ratio of network fallbacks
      from the total subresource load.
    </summary>
  </metric>
  <metric name="SVGDocumentFallback">
    <summary>
      True if there are network fallback sub-resources of SVG documents in the
      page. (boolean value. true: 1 or false: 0)
    </summary>
  </metric>
  <metric name="SVGDocumentHandled">
    <summary>
      True if there are service workers handling sub-resource loads of SVG
      documents in the page. (boolean value. true: 1 or false: 0)
    </summary>
  </metric>
  <metric name="TextTrackFallback">
    <summary>
      True if there are network fallback sub-resources of text tracks in the
      page. (boolean value. true: 1 or false: 0)
    </summary>
  </metric>
  <metric name="TextTrackHandled">
    <summary>
      True if there are service workers handling sub-resource loads of text
      tracks in the page. (boolean value. true: 1 or false: 0)
    </summary>
  </metric>
  <metric name="TotalSubResourceFallback">
    <summary>
      The number of network fallbacks during sub resource load. This is rounded
      down to the nearest exponential bucket (with a bucket ratio on 1.15).
    </summary>
  </metric>
  <metric name="TotalSubResourceLoad">
    <summary>
      The number of all sub resource load of the page controlled by the service
      worker. This is rounded down to the nearest exponential bucket (with a
      bucket ratio on 1.15).
    </summary>
  </metric>
  <metric name="VideoFallback">
    <summary>
      True if there are network fallback sub-resources of videos in the page.
      (boolean value. true: 1 or false: 0)
    </summary>
  </metric>
  <metric name="VideoHandled">
    <summary>
      True if there are service workers handling sub-resource loads of videos in
      the page. (boolean value. true: 1 or false: 0)
    </summary>
  </metric>
  <metric name="XSLStyleSheetFallback">
    <summary>
      True if there are network fallback sub-resources of XSLStyleSheet in the
      page. (boolean value. true: 1 or false: 0)
    </summary>
  </metric>
  <metric name="XSLStyleSheetHandled">
    <summary>
      True if there are service workers handling sub-resource loads of
      XSLStyleSheet in the page. (boolean value. true: 1 or false: 0)
    </summary>
  </metric>
</event>

<event name="SharedHighlights.LinkGenerated">
  <owner>jeffreycohen@chromium.org</owner>
  <owner>chrome-creation@google.com</owner>
  <summary>
    Event representing the user action of selecting a piece of text on a page
    and selecting the option to create a link which would contain the necessary
    text fragment information to link back to this specific part of the page.
  </summary>
  <metric name="Error" enum="LinkGenerationError">
    <summary>
      Record the type of error which prevented a successful link generation.
      Only recorded if the link creation failed.
    </summary>
  </metric>
  <metric name="Success" enum="Boolean">
    <summary>
      Whether the generation of a link with text fragments was successful or
      not.
    </summary>
  </metric>
</event>

<event name="SharedHighlights.LinkGenerated.Requested">
  <owner>jeffreycohen@chromium.org</owner>
  <owner>chrome-creation@google.com</owner>
  <summary>
    Event representing the user action of selecting a piece of text on a page
    and selecting the option to create a link which would contain the necessary
    text fragment information to link back to this specific part of the page.
  </summary>
  <metric name="Error" enum="LinkGenerationError">
    <summary>
      Record the type of error which prevented offering link to text to user.
      Only recorded if the link was not offered to the user.
    </summary>
  </metric>
  <metric name="Success" enum="Boolean">
    <summary>
      Whether the link with text fragments was successful offered to the user or
      not.
    </summary>
  </metric>
</event>

<event name="SharedHighlights.LinkOpened" singular="true">
  <owner>jeffreycohen@chromium.org</owner>
  <owner>chrome-creation@google.com</owner>
  <summary>
    Event representing the browser action of highlighting (incl. scroll-to) text
    fragments that were part of the URL. This happens only once during page
    load.
  </summary>
  <metric name="Source" enum="TextFragmentLinkOpenSource">
    <summary>
      Record the type of source for the current navigation, which has text
      fragments. At the moment, this maps to identifying whether the source is a
      known search engine or not.
    </summary>
  </metric>
  <metric name="Success" enum="Boolean">
    <summary>
      Whether the highlighting of a set of text fragments was a complete success
      or not.
    </summary>
  </metric>
</event>

<event name="Sharing.ClickToCall">
  <owner>knollr@chromium.org</owner>
  <summary>
    Collected when a user finishes a Click to Call journey.
  </summary>
  <metric name="EntryPoint" enum="SharingClickToCallEntryPoint">
    <summary>
      Specifies the entry point of the user journey (i.e. left click, right
      click, text selection).
    </summary>
  </metric>
  <metric name="HasApps" enum="Boolean">
    <summary>
      Boolean value indicating whether any (&gt;0) apps are available that the
      call could be sent to.
    </summary>
  </metric>
  <metric name="HasDevices" enum="Boolean">
    <summary>
      Boolean value indicating whether any (&gt;0) devices are available that
      the call could be sent to. These belong to the same account and are
      running Android.
    </summary>
  </metric>
  <metric name="Selection" enum="SharingClickToCallSelection">
    <summary>
      Whether the user selected a device, an app or nothing (i.e. dismissal) in
      the user interface. For some entry points this might always be the same
      value (e.g. right clicks always select devices).
    </summary>
  </metric>
</event>

<event name="Shopping.AddToCartDetection">
  <owner>wychen@chromium.org</owner>
  <owner>yuezhanggg@chromium.org</owner>
  <summary>
    Metrics related to DOM-based AddToCart button detection in ChromeCart.
  </summary>
  <metric name="HeuristicsExecutionTime">
    <summary>
      Logged when DOM-based AddToCart button detection heuristic is executed and
      records the execution time. This is expressed in microseconds.
    </summary>
  </metric>
</event>

<event name="Shopping.CartExtraction">
  <owner>wychen@chromium.org</owner>
  <owner>yuezhanggg@chromium.org</owner>
  <summary>
    Metrics related to performance of cart content extraction in ChromeCart.
  </summary>
  <metric name="ExtractionElapsedTime">
    <summary>
      Logged when cart content extraction is executed for ChromeCart and records
      the elapsed time within the JavaScript, so script parsing/compilation time
      is excluded. Shopping.CartExtraction.ExtractionExecutionTime is measured
      in native, and is the end-to-end elapsed time. This is expressed in
      milliseconds.
    </summary>
  </metric>
  <metric name="ExtractionExecutionTime">
    <summary>
      Logged when cart content extraction is executed for ChromeCart and records
      the elapsed time between the start and the end of the extraction
      JavaScript request execution. This includes script parsing/compilation
      time and sleeping time. This is expressed in milliseconds.
    </summary>
  </metric>
  <metric name="ExtractionLongestTaskTime">
    <summary>
      Logged when cart content extraction is executed for ChromeCart and records
      the time span of the longest task blocking the main thread of the renderer
      process. This is expressed in milliseconds.
    </summary>
  </metric>
  <metric name="ExtractionTimedOut" enum="Boolean">
    <summary>
      Logged when cart content extraction is executed for ChromeCart and records
      whether the cart content extraction has timed out.
    </summary>
  </metric>
  <metric name="ExtractionTotalTasksTime">
    <summary>
      Logged when cart content extraction is executed for ChromeCart and records
      the time spent on execution, excluding sleeping time. This is expressed in
      milliseconds.
    </summary>
  </metric>
</event>

<event name="Shopping.ChromeCart">
  <owner>wychen@chromium.org</owner>
  <owner>yuezhanggg@chromium.org</owner>
  <summary>
    Metrics related to Chrome cart module in Chrome NTP.
  </summary>
  <metric name="VisitCart" enum="Boolean">
    <summary>
      Always true. Recorded when users have visited cart page from Chrome cart
      module.
    </summary>
  </metric>
</event>

<event name="Shopping.FormSubmitted">
  <owner>wychen@chromium.org</owner>
  <owner>yuezhanggg@chromium.org</owner>
  <summary>
    Recorded when user submits a form.
  </summary>
  <metric name="IsTransaction" enum="Boolean">
    <summary>
      Whether the form submission is a shopping transaction. This has 50% chance
      randomized.
    </summary>
  </metric>
</event>

<event name="Shopping.MerchantTrust.DataAvailable">
  <owner>zhiyuancai@chromium.org</owner>
  <owner>ayman@chromium.org</owner>
  <summary>
    Recorded when user finishes a navigation while the merchant trust data is
    available.
  </summary>
  <metric name="DataAvailable" enum="Boolean">
    <summary>
      A boolean signaling that data is available. Only records true values.
    </summary>
  </metric>
</event>

<event name="Shopping.MerchantTrust.MessageClicked">
  <owner>zhiyuancai@chromium.org</owner>
  <owner>ayman@chromium.org</owner>
  <summary>
    Recorded when a merchant trust message is clicked by the user.
  </summary>
  <metric name="HasOccurred" enum="Boolean">
    <summary>
      A boolean signaling that message is clicked. Only records true values.
    </summary>
  </metric>
</event>

<event name="Shopping.MerchantTrust.MessageSeen">
  <owner>zhiyuancai@chromium.org</owner>
  <owner>ayman@chromium.org</owner>
  <summary>
    Recorded when a merchant trust message is displayed to the user.
  </summary>
  <metric name="HasOccurred" enum="Boolean">
    <summary>
      A boolean signaling that message is displayed. Only records true values.
    </summary>
  </metric>
</event>

<event name="Shopping.MerchantTrust.RowClicked">
  <owner>zhiyuancai@chromium.org</owner>
  <owner>ayman@chromium.org</owner>
  <summary>
    Recorded when a store info row in trusted surface is clicked by the user.
  </summary>
  <metric name="HasOccurred" enum="Boolean">
    <summary>
      A boolean signaling that store info row is clicked. Only records true
      values.
    </summary>
  </metric>
</event>

<event name="Shopping.MerchantTrust.RowSeen">
  <owner>zhiyuancai@chromium.org</owner>
  <owner>ayman@chromium.org</owner>
  <summary>
    Recorded when a store info row in trusted surface is displayed to the user.
  </summary>
  <metric name="HasOccurred" enum="Boolean">
    <summary>
      A boolean signaling that store info row is displayed. Only records true
      values.
    </summary>
  </metric>
</event>

<event name="Shopping.WillSendRequest">
  <owner>wychen@chromium.org</owner>
  <owner>yuezhanggg@chromium.org</owner>
  <summary>
    Recorded when an XHR is about to be sent.
  </summary>
  <metric name="IsAddToCart" enum="Boolean">
    <summary>
      Whether the XHR is to add a product to a shopping cart. This has 50%
      chance randomized.
    </summary>
  </metric>
</event>

<event name="SiteIsolation.XSD.Browser.Blocked">
  <obsolete>
    Removed in June 2019 / M77. Some old data has been saved in a
    Google-internal doc at go/xsdb-ukm-results (ask owners below for access).
  </obsolete>
  <owner>creis@chromium.org</owner>
  <owner>chrome-site-isolation@google.com</owner>
  <summary>
    Resource request response was blocked by the cross-site document blocking
    logic in the browser process.
  </summary>
  <metric name="CanonicalMimeType">
    <summary>
      Classification of the Content-Type HTTP response header into one of the
      blockable document flavours: html, xml, json, plain.
    </summary>
  </metric>
  <metric name="ContentLengthWasZero">
    <summary>
      ContentLengthWasZero=1 if Content-Length was available and equal to 0.
      ContentLengthWasZero=0 otherwise.
    </summary>
  </metric>
  <metric name="ContentResourceType">
    <summary>
      content::ResourceType of the blocked resource (e.g. image / script / xhr /
      etc.).
    </summary>
  </metric>
  <metric name="HttpResponseCode">
    <summary>
      The HTTP response code (e.g. 200 or 404) associated with the blocked
      resource request.
    </summary>
  </metric>
  <metric name="NeededSniffing">
    <summary>
      Whether the HTTP response needed sniffing to confirm its MIME type.
    </summary>
  </metric>
</event>

<event name="SmartCharging">
  <owner>thanhdng@chromium.org</owner>
  <owner>jiameng@chromium.org</owner>
  <summary>
    Records user activities that are related to charging such as battery
    percentage, time, device type, etc.
  </summary>
  <metric name="BatteryPercentage">
    <summary>
      Percentage of the battery.
    </summary>
  </metric>
  <metric name="BatteryPercentageBeforeLastCharge">
    <summary>
      The percentage of the battery at the beginning of the last charge.
    </summary>
  </metric>
  <metric name="BatteryPercentageOfLastCharge">
    <summary>
      The percentage of the battery that the last charge reached.
    </summary>
  </metric>
  <metric name="DayOfMonth">
    <summary>
      Event's day of the month (e.g. 1-31) in local time zone.
    </summary>
  </metric>
  <metric name="DayOfWeek" enum="DayOfWeek">
    <summary>
      Event's day of the week in local time zone. Sunday is 0.
    </summary>
  </metric>
  <metric name="DeviceMode">
    <summary>
      Mode of the device (e.g. closed lid, tablet).
    </summary>
  </metric>
  <metric name="DeviceType">
    <summary>
      Type of the device (e.g. laptop, tablet).
    </summary>
  </metric>
  <metric name="DurationOfLastCharge">
    <summary>
      Duratioin of the last time the device was charged in minutes.
    </summary>
  </metric>
  <metric name="DurationRecentAudioPlaying">
    <summary>
      Duration of audio playing in the last 30 minutes (bucketized and in
      minutes).
    </summary>
  </metric>
  <metric name="DurationRecentVideoPlaying">
    <summary>
      Duration of video playing in the last 30 minutes (bucketized and in
      minutes).
    </summary>
  </metric>
  <metric name="EventId">
    <summary>
      A unique number that represent order of an event.
    </summary>
  </metric>
  <metric name="HaltFromLastCharge" enum="Boolean">
    <summary>
      Whether there's any shutdown/suspend actions between the last charge and
      current event.
    </summary>
  </metric>
  <metric name="IsCharging" enum="Boolean">
    <summary>
      Whether the device is being charged or not.
    </summary>
  </metric>
  <metric name="Month" enum="Month">
    <summary>
      Event's month (e.g. Jan-Dec) in local time zone. January is 1.
    </summary>
  </metric>
  <metric name="NumRecentKeyEvents">
    <summary>
      Number of key events in past 30 minutes.
    </summary>
  </metric>
  <metric name="NumRecentMouseEvents">
    <summary>
      Number of mouse events in past 30 minutes.
    </summary>
  </metric>
  <metric name="NumRecentStylusEvents">
    <summary>
      Number of stylus events in past 30 minutes.
    </summary>
  </metric>
  <metric name="NumRecentTouchEvents">
    <summary>
      Number of touch events in past 30 minutes.
    </summary>
  </metric>
  <metric name="Reason" enum="SmartChargingReason">
    <summary>
      Reason for the logging of an event.
    </summary>
  </metric>
  <metric name="ScreenBrightnessPercent">
    <summary>
      Brightness of the screen in percent.
    </summary>
  </metric>
  <metric name="TimeOfTheDay">
    <summary>
      Time of the event in minutes since midnight in the local time zone.
    </summary>
  </metric>
  <metric name="TimeSinceLastCharge">
    <summary>
      Time since the last time user unplugged the charger in minutes.
    </summary>
  </metric>
  <metric name="TimezoneDifferenceFromLastCharge">
    <summary>
      Timezone difference from the last charge. It is equal to current_timezone
      - timezone_from_last_charge. The valid range of time zone value will be
      -12 (UTC -12:00) to +14 (UTC +14:00).
    </summary>
  </metric>
  <metric name="Voltage">
    <summary>
      Charge voltage in mV.
    </summary>
  </metric>
</event>

<event name="SMSReceiver">
  <owner>goto@chromium.org</owner>
  <owner>reillyg@chromium.org</owner>
  <owner>ayui@chromium.org</owner>
  <owner>yigu@chromium.org</owner>
  <summary>
    Records performance metrics for SMSReceiver API.
  </summary>
  <metric name="IsCrossOriginFrame" enum="Boolean">
    <summary>
      Flag indicating whether the report comes from a cross-origin frame or not.
    </summary>
  </metric>
  <metric name="Outcome" enum="WebOTPServiceOutcome">
    <summary>
      Records the result of a call to the SmsReceiver API.
    </summary>
  </metric>
  <metric name="SmsParsingStatus" enum="SmsParsingStatus">
    <summary>
      Records the status of parsing an incoming SMS when using the WebOTP API.
      It records one sample per incoming SMS.
    </summary>
  </metric>
  <metric name="TimeSmsReceiveMs">
    <summary>
      Records the duration from when the API is called to when an SMS has been
      successfully received.
    </summary>
  </metric>
  <metric name="TimeSuccessMs">
    <summary>
      Records the duration from when the API is called to when the user presses
      &quot;Allow&quot; to pass the incoming SMS to the site and proceed with
      the SMS verification flow.
    </summary>
  </metric>
  <metric name="TimeUserCancelMs">
    <summary>
      Records the duration from when the API is called to when the user presses
      &quot;Deny&quot; to terminate the SMS verification flow.
    </summary>
  </metric>
</event>

<event name="SSL.MixedContentShown">
  <obsolete>
    Replaced by SSL.MixedContentShown2. Removed in 03/2021.
  </obsolete>
  <owner>carlosil@chromium.org</owner>
  <summary>
    Logged when mixed content is displayed on a site.
  </summary>
  <metric name="Type">
    <summary>
      A value of the MixedContentType enum, detailing the type of mixed content
      included on the site.
    </summary>
  </metric>
</event>

<event name="SSL.MixedContentShown2">
  <owner>carlosil@chromium.org</owner>
  <owner>estark@chromium.org</owner>
  <summary>
    Logged when mixed content is loaded, differentiated by blockable,
    optionally-blockable mixed content, and mixed forms. Also tracks when a site
    with a valid certificate loads a subresource with an invalid certificate.
    Replaced SSL.MixedContentShown.
  </summary>
  <metric name="Type">
    <summary>
      A value of the MixedContentType enum, detailing the type of mixed content
      included on the site.
    </summary>
  </metric>
</event>

<event name="SubframeDownload">
  <obsolete>
    Deprecated as of 03/2019.
  </obsolete>
  <owner>yaoxia@chromium.org</owner>
  <summary>
    Measurement for subframe download. It is only recorded for downloads
    originated from navigations or from HTML anchor download attributes.
  </summary>
  <metric name="HasGesture">
    <summary>
      A boolean denoting whether the download involves a transient user gesture.
    </summary>
  </metric>
  <metric name="HasSandbox">
    <summary>
      A boolean denoting whether the download occurs in a sandboxed browsing
      context.
    </summary>
  </metric>
  <metric name="IsAdFrame">
    <summary>
      A boolean denoting whether the download occurs in an ad subframe.
    </summary>
  </metric>
  <metric name="IsCrossOrigin">
    <summary>
      A boolean denoting whether the download occurs in a subframe x-origin to
      the top frame.
    </summary>
  </metric>
</event>

<event name="SubresourceFilter" singular="True">
  <owner>csharrison@chromium.org</owner>
  <summary>
    Recorded for page loads where subresource filtering policy was evaluated.
  </summary>
  <metric name="ActivationDecision">
    <summary>
      Enum that records the policy decision to activate subresource filtering
      for a page load. 0 = Unknown, 1 = Activated, 2 = Disabled, 3 = Deprecated
      value, 4 = URL whitelisted, 5 = Activation conditions not met. 'Activated'
      indicates that subresource filtering was activated. All other reasons
      indicate that subresource filtering was not activated.
    </summary>
  </metric>
  <metric name="DryRun">
    <summary>
      Records '1' if subresource filtering was activated in dry run mode. In dry
      run mode, subresource filtering policy is evaluated against resources
      loaded on the page, but subresource filtering is not actually applied.
    </summary>
  </metric>
  <metric name="EnforcementRedirectPosition">
    <summary>
      An enum denoting where in the redirect chain there was a URL that matched
      one of the subresource_filter activation lists, and wasn't marked as
      warning. See subresource_filter::RedirectPosition for values.
    </summary>
  </metric>
</event>

<event name="SubresourceRedirect.PublicSrcVideoCompression">
  <owner>rajendrant@chromium.org</owner>
  <owner>mcrouse@chromium.org</owner>
  <summary>
    Records coverage information for src videos. Recorded once for every src
    video that is fetched from network.
  </summary>
  <metric name="FullContentLength">
    <summary>
      The full content length of the video retrieved from the first range
      request for the resource. This full content length represents the total
      bytes when the entire video is played. The bytes are rounded down to the
      exponential bucket with factor of 1.3.
    </summary>
  </metric>
  <metric name="SubresourceRedirectResult"
      enum="SubresourceRedirectRedirectResult">
    <summary>
      Enumerates the different results possible for subresource redirection,
      such as redirectable or different reasons of ineligibility.
    </summary>
  </metric>
</event>

<event name="Tab.RendererOOM">
  <owner>ssid@chromium.org</owner>
  <summary>
    Metrics about renderer OOM, recorded for each detected OOM of renderer
    process.
  </summary>
  <metric name="TimeSinceLastNavigation">
    <summary>
      Duration in MS from when the main frame navigation was triggered to when
      the tab crashed with OOM. Recorded only on Windows, Android and Chrome OS.
      We do not have a way to detect OOMs reliably on Linux and Mac.
    </summary>
  </metric>
</event>

<event name="Tab.Screenshot">
  <owner>sayman@chromium.org</owner>
  <summary>
    User took one or more screenshots of a page.
  </summary>
  <metric name="HasOccurred" enum="Boolean">
    <summary>
      A boolean signaling that the event has occurred; only records true values.
    </summary>
  </metric>
</event>

<event name="TabManager.Background.FirstAlertFired">
  <owner>chrisha@chromium.org</owner>
  <owner>lpy@chromium.org</owner>
  <summary>
    Collects the duration in MS from when the tab is backgrounded to when a
    JavaScript alert is fired. Only recorded when the tab is in the background.
  </summary>
  <metric name="IsMainFrame">
    <summary>
      Indicates whether the alert is fired from main frame.
    </summary>
  </metric>
  <metric name="TimeFromBackgrounded">
    <summary>
      Duration in MS from when the tab is backgrounded to when alert is fired.
    </summary>
  </metric>
</event>

<event name="TabManager.Background.FirstAudioStarts">
  <owner>chrisha@chromium.org</owner>
  <owner>lpy@chromium.org</owner>
  <summary>
    Collects the duration in MS from when the tab is backgrounded to when audio
    starts to play. Only recorded when the tab is in the background.
  </summary>
  <metric name="IsMainFrame">
    <summary>
      Indicates whether the audio stream belongs to the main frame.
    </summary>
  </metric>
  <metric name="TimeFromBackgrounded">
    <summary>
      Duration in MS from when the tab is backgrounded to when audio starts to
      play.
    </summary>
  </metric>
</event>

<event name="TabManager.Background.FirstFaviconUpdated">
  <owner>chrisha@chromium.org</owner>
  <owner>lpy@chromium.org</owner>
  <summary>
    Collects the duration in MS from when the tab is backgrounded to when the
    favicon is updated. Only recorded when the tab is in the background.
  </summary>
  <metric name="TimeFromBackgrounded">
    <summary>
      Duration in MS from when the tab is backgrounded to when the favicon is
      updated.
    </summary>
  </metric>
</event>

<event name="TabManager.Background.FirstNonPersistentNotificationCreated">
  <owner>chrisha@chromium.org</owner>
  <owner>lpy@chromium.org</owner>
  <summary/>
  <metric name="IsMainFrame">
    <summary>
      Indicates whether the notification creation is from the main frame.
    </summary>
  </metric>
  <metric name="TimeFromBackgrounded">
    <summary>
      Duration in MS from when the tab is backgrounded to when a non-persistent
      notification is created.
    </summary>
  </metric>
</event>

<event name="TabManager.Background.FirstTitleUpdated">
  <owner>chrisha@chromium.org</owner>
  <owner>lpy@chromium.org</owner>
  <summary>
    Collects the duration in MS from when the tab is backgrounded to when the
    title is updated. Only recorded when the tab is in the background.
  </summary>
  <metric name="TimeFromBackgrounded">
    <summary>
      Duration in MS from when the tab is backgrounded to when the title is
      updated.
    </summary>
  </metric>
</event>

<event name="TabManager.Background.ForegroundedOrClosed">
  <owner>chrisha@chromium.org</owner>
  <summary>
    Collects the duration in MS from when the tab is backgrounded to when it is
    brought to foreground or closed.
  </summary>
  <metric name="IsDiscarded">
    <summary>
      Boolean value indicating whether or not the tab is discarded since it was
      backgrounded.
    </summary>
  </metric>
  <metric name="IsForegrounded">
    <summary>
      Boolean value indicating whether or not it's triggered because the tab is
      brought to foreground again.
    </summary>
  </metric>
  <metric name="LabelId">
    <summary>
      An int64 random number generated when TabManager.TabMetric is logged. The
      same number is also logged here, so that feature label can be paired.
    </summary>
  </metric>
  <metric name="MRUIndex">
    <obsolete>
      Deprecated 10/2019 in favor MRUIndex in TabMetrics.
    </obsolete>
    <summary>
      Index of the tab in most-recently-used order. A value of N means there are
      N tabs more recently used than the one that is being foregrounded or
      closed.
    </summary>
  </metric>
  <metric name="SequenceId">
    <obsolete>
      Deprecated 11/2018 in favor LabelId.
    </obsolete>
    <summary>
      This metric is obsolete in 11/2018 in favor of LabelId for pairing with
      Tabmanager.TabMetrics event. The sequence of this event and
      TabManager.TabMetrics event in the current session. Incremented by 1 each
      time one of the two events is logged to provide an ordering of events.
    </summary>
  </metric>
  <metric name="TimeFromBackgrounded">
    <summary>
      Duration in MS from when the tab is backgrounded to when it is brought to
      foreground or closed.
    </summary>
  </metric>
  <metric name="TotalTabCount">
    <obsolete>
      Deprecated 10/2019 in favor TotalTabCount in TabMetrics.
    </obsolete>
    <summary>
      Total number of tabs open across all non-incognito browser windows. Helps
      contextualize the MRUIndex value.
    </summary>
  </metric>
</event>

<event
    name="TabManager.BackgroundTabOpening.ForegroundTab.ExpectedTaskQueueingDurationInfo">
  <obsolete>
    Removed June 2020.
  </obsolete>
  <owner>chrisha@chromium.org</owner>
  <summary>
    Collects the expected queueing duration of tasks and metadata for the
    foreground tab during a background tab opening session (the duration of time
    from when the browser starts to open background tabs until the time the
    browser has finished loading those tabs or otherwise decided to stop loading
    them). The event is not recorded when the session overlaps with session
    restore. This event is sampled when there is only one backgrounded loading
    or pending tab and all events are collected when there are 2 or more
    backgrounded loading or pending tabs. In this way, we cap the volume while
    keeping all interesting data. Therefore, aggregated tab counts over multiple
    events are invalid.
  </summary>
  <metric name="BackgroundTabLoadingCount">
    <summary>
      Number of background tabs that are loading.
    </summary>
  </metric>
  <metric name="BackgroundTabOpeningSessionId">
    <summary>
      The ID of this background tab opening session.
    </summary>
  </metric>
  <metric name="BackgroundTabPendingCount">
    <summary>
      Number of background tabs that are pending.
    </summary>
  </metric>
  <metric name="ExpectedTaskQueueingDuration">
    <summary>
      Duration in MS for expected task queueing duration. The metric reflects
      the responsiveness of a tab. A lower value means the tab will respond to
      inputs faster. This metric is equal to
      RendererScheduler.ExpectedTaskQueueingDuration. It is emitted once for all
      tasks in each 1000-ms window.
    </summary>
  </metric>
  <metric name="SequenceId">
    <summary>
      The ID of this event's sequence in current background tab opening session.
    </summary>
  </metric>
  <metric name="SystemTabCount">
    <summary>
      Number of all tabs of the system, which includes all browser windows.
    </summary>
  </metric>
</event>

<event name="TabManager.Experimental.BackgroundTabOpening.TabSwitchLoadStopped"
    singular="True">
  <obsolete>
    Removed 11/2022 because it wasn't actively used.
  </obsolete>
  <owner>zhenw@chromium.org</owner>
  <summary>
    Collects data when a tab is switched to from another tab and then finishes
    loading in the foreground during a background tab opening session (the
    duration of time from when the browser starts to open background tabs until
    the time the browser has finished loading those tabs or otherwise decided to
    stop loading them). The event is only recorded when a tab is switched to
    from another tab within the same tabstrip. As a result, the initial
    foreground tab is not included in this event since it was not switched to
    from another tab. The event is not recorded when the session overlaps with
    session restore.
  </summary>
  <metric name="BackgroundTabLoadingCount">
    <summary>
      Number of background tabs that are loading.
    </summary>
  </metric>
  <metric name="BackgroundTabOpeningSessionId">
    <summary>
      The ID of this background tab opening session.
    </summary>
  </metric>
  <metric name="BackgroundTabPendingCount">
    <summary>
      Number of background tabs that are pending.
    </summary>
  </metric>
  <metric name="SequenceId">
    <summary>
      The ID of this event's sequence in current background tab opening session.
    </summary>
  </metric>
  <metric name="SystemTabCount">
    <summary>
      Number of all tabs of the system, which includes all browser windows.
    </summary>
  </metric>
  <metric name="TabSwitchLoadTime">
    <summary>
      Tab switch load time in MS. It is defined as the time between when the
      user switches to a backround tab, and the time when that tab finishes
      loading in the foreground. If the user switches away before the tab
      finishes loading, a metric will not be recorded unless the user switches
      back, in which case the tab switch load time is measured from that point
      in time.
    </summary>
  </metric>
</event>

<event name="TabManager.Experimental.SessionRestore.ForegroundTab.PageLoad"
    singular="True">
  <obsolete>
    Removed 11/2022 because it wasn't actively used.
  </obsolete>
  <owner>zhenw@chromium.org</owner>
  <summary>
    Collects the tab counts for the foreground tab page load during session
    restore. The event is not recorded when the session overlaps with background
    tab opening. This event should be combined with PageLoad event for analysis.
  </summary>
  <metric name="SessionRestoreTabCount">
    <summary>
      Number of tabs that are restored.
    </summary>
  </metric>
  <metric name="SystemTabCount">
    <summary>
      Number of all tabs of the system, which includes all browser windows.
    </summary>
  </metric>
</event>

<event name="TabManager.Experimental.SessionRestore.TabSwitchLoadStopped"
    singular="True">
  <owner>zhenw@chromium.org</owner>
  <summary>
    Collects data when a tab is switched to from another tab and then finishes
    loading in the foreground during session restore The event is only recorded
    when a tab is switched to from another tab within the same tabstrip. As a
    result, the initial foreground tab is not included in this event since it
    was not switched to from another tab. The event is not recorded when the
    session overlaps with background tab opening.
  </summary>
  <metric name="SequenceId">
    <summary>
      The ID of this event's sequence in current session restore session.
    </summary>
  </metric>
  <metric name="SessionRestoreSessionId">
    <summary>
      The ID of this session restore session.
    </summary>
  </metric>
  <metric name="SessionRestoreTabCount">
    <summary>
      Number of tabs that are restored.
    </summary>
  </metric>
  <metric name="SystemTabCount">
    <summary>
      Number of all tabs of the system, which includes all browser windows.
    </summary>
  </metric>
  <metric name="TabSwitchLoadTime">
    <summary>
      Tab switch load time in MS. It is defined as the time between when the
      user switches to a background tab, and the time when that tab finishes
      loading in the foreground. If the user switches away before the tab
      finishes loading, a metric will not be recorded unless the user switches
      back, in which case the tab switch load time is measured from that point
      in time.
    </summary>
  </metric>
</event>

<event name="TabManager.LifecycleStateChange">
  <owner>chrisha@chromium.org</owner>
  <owner>fdoray@chromium.org</owner>
  <summary>
    Collects information about when and why a lifecycle state change was
    attempted, and information about the outcome of the attempt.
  </summary>
  <metric name="FailureGlobalBlacklist" enum="Boolean">
    <obsolete>
      Deprecated 06/2020. Replaced with FailureGlobalDisallowlist.
    </obsolete>
    <summary>
      Boolean indicating that the tab was explicitly opted out of the
      intervention via the global disallowlist.
    </summary>
  </metric>
  <metric name="FailureGlobalDisallowlist" enum="Boolean">
    <summary>
      Boolean indicating that the tab was explicitly opted out of the
      intervention via the global disallowlist.
    </summary>
  </metric>
  <metric name="FailureHeuristicAudio" enum="Boolean">
    <summary>
      Boolean indicating that the intervention was disallowed because the origin
      has historically been observed emitting audio while in the background.
    </summary>
  </metric>
  <metric name="FailureHeuristicFavicon" enum="Boolean">
    <summary>
      Boolean indicating that the intervention was disallowed because the origin
      has historically been observed updating its favicon while in the
      background.
    </summary>
  </metric>
  <metric name="FailureHeuristicInsufficientObservation" enum="Boolean">
    <summary>
      Boolean indicating that the site is still being observed locally in order
      to determine which features are in use. In the meantime, it is protected
      from this intervention.
    </summary>
  </metric>
  <metric name="FailureHeuristicNotifications" enum="Boolean">
    <summary>
      Boolean indicating that the intervention was disallowed because the origin
      has historically been observed making use of notifications while in the
      background.
    </summary>
  </metric>
  <metric name="FailureHeuristicTitle" enum="Boolean">
    <summary>
      Boolean indicating that the intervention was disallowed because the origin
      has historically been observed updating its tab title while in the
      background.
    </summary>
  </metric>
  <metric name="FailureLifecyclesEnterprisePolicyOptOut" enum="Boolean">
    <summary>
      Boolean indicating that the browser was explicitly opted out of the
      intervention via enterprise policy.
    </summary>
  </metric>
  <metric name="FailureLifecyclesFeaturePolicyOptOut">
    <obsolete>
      Deprecated 08/2019. Replaced with FailureOriginTrialOptOut.
    </obsolete>
    <summary>
      Boolean indicating that the tab explicitly opted out of the intervention
      via feature policy.
    </summary>
  </metric>
  <metric name="FailureLiveStateCapturing" enum="Boolean">
    <summary>
      Boolean indicating that the intervention was disallowed because the tab is
      currently capturing user media (making use of webcam or microphone, for
      example).
    </summary>
  </metric>
  <metric name="FailureLiveStateDesktopCapture" enum="Boolean">
    <summary>
      Boolean indicating that the intervention was disallowed because the tab is
      currently capturing a window or screen.
    </summary>
  </metric>
  <metric name="FailureLiveStateDevToolsOpen" enum="Boolean">
    <summary>
      Boolean indicating that the intervention was disallowed because the tab is
      currently using DevTools.
    </summary>
  </metric>
  <metric name="FailureLiveStateExtensionDisallowed" enum="Boolean">
    <summary>
      Boolean indicating that the intervention was disallowed by an extension.
    </summary>
  </metric>
  <metric name="FailureLiveStateFormEntry" enum="Boolean">
    <summary>
      Boolean indicating that the intervention was disallowed because the tab
      currently contains text form entry.
    </summary>
  </metric>
  <metric name="FailureLiveStateHasNotificationsPermission" enum="Boolean">
    <summary>
      Boolean indicating that the intervention was disallowed because the tab
      has the permission to use notifications.
    </summary>
  </metric>
  <metric name="FailureLiveStateIsPDF" enum="Boolean">
    <summary>
      Boolean indicating that the intervention was disallowed because the tab is
      currently hosting a PDF.
    </summary>
  </metric>
  <metric name="FailureLiveStateMirroring" enum="Boolean">
    <summary>
      Boolean indicating that the intervention was disallowed because the tab is
      currently being mirrored (casting its contents, for example).
    </summary>
  </metric>
  <metric name="FailureLiveStatePlayingAudio" enum="Boolean">
    <summary>
      Boolean indicating that the intervention was disallowed because the tab is
      currently playing audio.
    </summary>
  </metric>
  <metric name="FailureLiveStateSharingBrowsingInstance" enum="Boolean">
    <summary>
      Boolean indicating that the intervention was disallowed because the tab is
      sharing its BrowsingInstance with at least one other tab.
    </summary>
  </metric>
  <metric name="FailureLiveStateUsingBluetooth" enum="Boolean">
    <summary>
      Boolean indicating that the intervention was disallowed because the tab is
      currently connected to at least one bluetooth device.
    </summary>
  </metric>
  <metric name="FailureLiveStateUsingIndexedDBLock" enum="Boolean">
    <summary>
      Boolean indicating that the intervention was disallowed because the tab is
      currently holding at least one IndexedDB lock.
    </summary>
  </metric>
  <metric name="FailureLiveStateUsingWebLock" enum="Boolean">
    <summary>
      Boolean indicating that the intervention was disallowed because the tab is
      currently holding at least one WebLock.
    </summary>
  </metric>
  <metric name="FailureLiveStateUsingWebSockets" enum="Boolean">
    <summary>
      Boolean indicating that the intervention was disallowed because the tab is
      currently using WebSockets.
    </summary>
  </metric>
  <metric name="FailureLiveStateUsingWebUSB" enum="Boolean">
    <summary>
      Boolean indicating that the intervention was disallowed because the tab is
      currently using WebUSB.
    </summary>
  </metric>
  <metric name="FailureLiveStateVisible" enum="Boolean">
    <summary>
      Boolean indicating that the intervention was disallowed because the tab is
      currently visible.
    </summary>
  </metric>
  <metric name="FailureLiveWebApp" enum="Boolean">
    <summary>
      Boolean indicating that the intervention was disallowed because the tab is
      a web application window.
    </summary>
  </metric>
  <metric name="FailureOriginTrialOptOut" enum="Boolean">
    <summary>
      Boolean indicating that the tab explicitly opted out of the intervention
      via origin trial.
    </summary>
  </metric>
  <metric name="FailureOriginTrialUnknown" enum="Boolean">
    <summary>
      Boolean indicating that the tab did not report its origin trial
      opt-in/opt-out yet.
    </summary>
  </metric>
  <metric name="LifecycleStateChangeReason">
    <summary>
      The reason the lifecycle state change was attempted. This corresponds to
      the LifecycleStateChangeReason enumeration in lifecycle_unit_state.mojom.
    </summary>
  </metric>
  <metric name="NewLifecycleState">
    <summary>
      The lifecycle state the tab will be in after the state change. Corresponds
      to a value from the LifecycleUnitState enum defined in
      lifecycle_unit_state.mojom.
    </summary>
  </metric>
  <metric name="OldLifecycleState">
    <summary>
      The lifecycle state the tab was in prior to the state change. Corresponds
      to a value from the LifecycleUnitState enum defined in
      lifecycle_unit_state.mojom.
    </summary>
  </metric>
  <metric name="Outcome" enum="Boolean">
    <summary>
      Whether or not the state change was successful. The various Failure and
      Success booleans encode the actual reasons for this outcome. Note that
      multiple success and failure reasons may be encoded for a single decision.
      The presence of any failure bit indicates a negative outcome. If only
      success bits are present the outcome is positive.
    </summary>
  </metric>
  <metric name="SuccessGlobalAllowlist" enum="Boolean">
    <summary>
      Boolean indicating that the tab was explicitly opted in to the
      intervention via the global allowlist.
    </summary>
  </metric>
  <metric name="SuccessGlobalWhitelist" enum="Boolean">
    <obsolete>
      Deprecated 06/2020. Replaced with SuccessGlobalAllowlist.
    </obsolete>
    <summary>
      Boolean indicating that the tab was explicitly opted in to the
      intervention via the global allowlist.
    </summary>
  </metric>
  <metric name="SuccessHeuristic" enum="Boolean">
    <summary>
      Boolean indicating that the tab was deemed safe for the intervention via
      local observations and heuristics.
    </summary>
  </metric>
  <metric name="SuccessLifecyclesFeaturePolicyOptIn">
    <obsolete>
      Deprecated 08/2019. Replaced with SuccessOriginTrialOptIn.
    </obsolete>
    <summary>
      Boolean indicating that the tab explicitly opted in to the intervention
      via feature policy.
    </summary>
  </metric>
  <metric name="SuccessOriginTrialOptIn" enum="Boolean">
    <summary>
      Boolean indicating that the tab explicitly opted in to the intervention
      via origin trial.
    </summary>
  </metric>
  <metric name="TimeSinceNavigationMs">
    <summary>
      The time elapsed (in milliseconds) since the top-level navigation was
      committed that loaded this tab's content.
    </summary>
  </metric>
  <metric name="TimeSinceVisibilityStateChangeMs">
    <summary>
      The amount of time that has passed (in milliseconds) since the last
      visibility state change.
    </summary>
  </metric>
  <metric name="TransitionForced" enum="Boolean">
    <summary>
      This is set if the transition to the new lifecycle state was forced by the
      browser because the content took too long to respond to the lifecycle
      event.
    </summary>
  </metric>
  <metric name="VisibilityState">
    <summary>
      The current visibility state. This is an integer value corresponding to
      the enumeration in content/public/browser/visibility.h.
    </summary>
  </metric>
</event>

<event
    name="TabManager.SessionRestore.ForegroundTab.ExpectedTaskQueueingDurationInfo">
  <owner>zhenw@chromium.org</owner>
  <summary>
    Collects the expected queueing duration of tasks and metadata for the
    foreground tab during session restore. The event is not recorded when the
    session overlaps with background tab opening. The event is not recorded when
    there is only one restored tab, in which case, there is no background
    restored tab and we are not interested at that. In this way, we cap the
    volume while keeping all interesting data.
  </summary>
  <metric name="ExpectedTaskQueueingDuration">
    <summary>
      Duration in MS for expected task queueing duration. The metric reflects
      the responsiveness of a tab. A lower value means the tab will respond to
      inputs faster. This metric is equal to
      RendererScheduler.ExpectedTaskQueueingDuration. It is emitted once for all
      tasks in each 1000-ms window.
    </summary>
  </metric>
  <metric name="SequenceId">
    <summary>
      The ID of this event's sequence in current session restore session.
    </summary>
  </metric>
  <metric name="SessionRestoreSessionId">
    <summary>
      The ID of this session restore session.
    </summary>
  </metric>
  <metric name="SessionRestoreTabCount">
    <summary>
      Number of tabs that are restored.
    </summary>
  </metric>
  <metric name="SystemTabCount">
    <summary>
      Number of all tabs of the system, which includes all browser windows.
    </summary>
  </metric>
</event>

<event name="TabManager.TabLifetime" singular="True">
  <owner>chrisha@chromium.org</owner>
  <summary>
    Collected when a tab is closed, at most once per source.
  </summary>
  <metric name="TimeSinceNavigation">
    <summary>
      The time when the tab was closed, expressed as the amount of time in MS
      that has elapsed since the main frame navigation providing the content of
      the tab.
    </summary>
  </metric>
</event>

<event name="TabManager.TabMetrics">
  <owner>michaelpg@chromium.org</owner>
  <summary>
    Collects tab information for a tab after navigations, activations and close
    events.
  </summary>
  <metric name="ContentType">
    <summary>
      Obsolete. Enumeration for the MIME type of the page. Values are enumerated
      in metrics::TabMetricsEvent::ContentType.
    </summary>
  </metric>
  <metric name="DefaultProtocolHandler">
    <summary>
      Obsolete. Schemes that a page from this page's origin is the default
      protocol handler for, meaning the user has chosen to accept (or the
      handler was preinstalled by Chrome). The metric is repeated, occurring for
      each such protocol handler, and uses values from
      metrics::TabMetricsEvent::Scheme.
    </summary>
  </metric>
  <metric name="HasBeforeUnloadHandler">
    <summary>
      Boolean value indicating whether the page has a beforeunload JavaScript
      event handler.
    </summary>
  </metric>
  <metric name="HasFormEntry">
    <summary>
      Boolean value indicating whether the page has any user-input text.
    </summary>
  </metric>
  <metric name="IsExtensionProtected">
    <summary>
      Obsolete. True if an extension has marked this tab as non-discardable via
      the chrome.tabs.update() extension API.
    </summary>
  </metric>
  <metric name="IsPinned">
    <summary>
      Boolean value indicating whether the tab is pinned in the tabstrip.
    </summary>
  </metric>
  <metric name="KeyEventCount">
    <summary>
      Number of key events that were sent to the page.
    </summary>
  </metric>
  <metric name="LabelId">
    <summary>
      An int64 random number generated at logging time. The same number will
      also be logged to the TabManager.Background.ForegroundedOrClosed event, so
      that feature label can be paired.
    </summary>
  </metric>
  <metric name="MouseEventCount">
    <summary>
      Number of mouse events that were sent to the page.
    </summary>
  </metric>
  <metric name="MRUIndex">
    <summary>
      Index of the tab in most-recently-used order. A value of N means there are
      N tabs more recently used than the one that is being foregrounded or
      closed.
    </summary>
  </metric>
  <metric name="NavigationEntryCount">
    <summary>
      Number of navigation entries in the tab's NavigationController.
      Corresponds to the size of the tab's back/forward list.
    </summary>
  </metric>
  <metric name="NumReactivationBefore">
    <summary>
      Number of reactivations that this tab had till now.
    </summary>
  </metric>
  <metric name="PageTransitionCoreType">
    <summary>
      Type of the page transition for this navigation. Uses the core values from
      ui::PageTransition.
    </summary>
  </metric>
  <metric name="PageTransitionFromAddressBar">
    <summary>
      True if the page transition came from interacting with the address bar,
      such as by typing a URL or performing a search.
    </summary>
  </metric>
  <metric name="PageTransitionIsRedirect">
    <summary>
      True if the page transition type is a redirect, in which case the
      PageTransition type may not be accurate.
    </summary>
  </metric>
  <metric name="QueryId">
    <summary>
      An int64 random number generated at query time of
      TabManager::GetSortedLifecycleUnitsFromTabRanker. Tabs with the same
      QueryId will be later on combined in one full list for further analysis.
    </summary>
  </metric>
  <metric name="SequenceId">
    <obsolete>
      Deprecated 11/2018 in favor LabelId.
    </obsolete>
    <summary>
      This metric is obsolete in 11/2018 in favor of LabelId for pairing with
      Tabmanager.ForegroundedOrClosed event. The sequence of this event and
      TabManager.ForegroundedOrClosed event in the current session. Incremented
      by 1 each time one of the two events is logged to provide an ordering of
      events.
    </summary>
  </metric>
  <metric name="SiteEngagementScore">
    <summary>
      Site engagement score in the range [0, 100], rounded down to a multiple of
      10 to limit granularity.
    </summary>
  </metric>
  <metric name="TimeFromBackgrounded">
    <summary>
      Duration in MS from when the tab is backgrounded to when it is brought to
      foreground or closed.
    </summary>
  </metric>
  <metric name="TotalTabCount">
    <summary>
      Total number of tabs open across all non-incognito browser windows. Helps
      contextualize the MRUIndex value.
    </summary>
  </metric>
  <metric name="TouchEventCount">
    <summary>
      Number of touch events that were sent to the page.
    </summary>
  </metric>
  <metric name="WasRecentlyAudible">
    <summary>
      Boolean value indicating whether the tab has played audio within the last
      two seconds.
    </summary>
  </metric>
  <metric name="WindowId">
    <obsolete>
      Deprecated 11/2018 in favor of putting window features directly in this
      event.
    </obsolete>
    <summary>
      WindowId of the WindowMetrics entry corresponding to the browser window
      containing this tab. This metrics is not populated from 11/2018 because we
      don't need to join this event with other WindowMetrics any more.
    </summary>
  </metric>
  <metric name="WindowIsActive">
    <summary>
      Boolean value indicating whether the window is the active (frontmost)
      window.
    </summary>
  </metric>
  <metric name="WindowShowState">
    <summary>
      Enumeration of the window show state, such as fullscreen or minimized.
      Values are enumerated in metrics::WindowMetricsEvent::ShowState.
    </summary>
  </metric>
  <metric name="WindowTabCount">
    <summary>
      Number of tabs in the tab strip. Rounded down to the nearest exponential
      bucket (with a bucket spacing factor of 1.5). Will be 1 for windows with
      only one top-level WebContents, such as app windows.
    </summary>
  </metric>
  <metric name="WindowType">
    <summary>
      Enumeration for the type of the window. Values are enumerated in
      metrics::WindowMetricsEvent::Type.
    </summary>
  </metric>
</event>

<event name="TabManager.WindowMetrics">
  <owner>michaelpg@chromium.org</owner>
  <summary>
    Collects information about a browser or app window to associate with the
    TabManager.TabMetrics entries for tabs in that window.
  </summary>
  <metric name="IsActive">
    <summary>
      Whether the window is the active (frontmost) window.
    </summary>
  </metric>
  <metric name="ShowState">
    <summary>
      Enumeration of the window show state, such as fullscreen or minimized.
      Values are enumerated in metrics::WindowMetricsEvent::ShowState.
    </summary>
  </metric>
  <metric name="TabCount">
    <summary>
      Number of tabs in the tab strip. Rounded down to the nearest exponential
      bucket (with a bucket spacing factor of 1.5). Will be 1 for windows with
      only one top-level WebContents, such as app windows.
    </summary>
  </metric>
  <metric name="Type">
    <summary>
      Enumeration for the type of the window. Values are enumerated in
      metrics::WindowMetricsEvent::Type.
    </summary>
  </metric>
  <metric name="WindowId">
    <summary>
      Session ID of the browser or app window this entry represents, unique for
      the browsing session.
    </summary>
  </metric>
</event>

<event name="TopToolbar.Share">
  <owner>nyquist@chromium.org</owner>
  <owner>ssid@chromium.org</owner>
  <summary>
    User pressed the 'Share' in the top toolbar, which shares the current URL.
  </summary>
  <metric name="HasOccurred" enum="Boolean">
    <summary>
      A boolean signaling that the event has occurred; only records true values.
    </summary>
  </metric>
</event>

<event name="TouchToFill.Shown">
  <owner>kazinova@google.com</owner>
  <owner>fhorschig@chromium.org</owner>
  <owner>kolos@chromium.org</owner>
  <summary>
    Recorded when a user takes an action on the Touch To Fill sheet.
  </summary>
  <metric name="UserAction" enum="TouchToFill.UserAction">
    <summary>
      The action a user took when interacting with the Touch To Fill sheet.
    </summary>
  </metric>
</event>

<event name="TouchToFill.SubmissionReadiness">
  <owner>kolos@chromium.org</owner>
  <owner>fhorschig@chromium.org</owner>
  <summary>
    Recorded when the Touch To Fill sheet is shown to the user.
  </summary>
  <metric name="SubmissionReadiness" enum="TouchToFill.SubmissionReadiness">
    <summary>
      A given form's state (e.g. there are empty fields in the form, or there
      are only two fields and they both are filled by Chrome) that indicates
      whether the form is ready for submission. Recorded when a Touch To Fill
      sheet is shown for that form.
    </summary>
  </metric>
</event>

<event name="TouchToFill.TimeToSuccessfulLogin">
  <owner>kolos@chromium.org</owner>
  <owner>fhorschig@chromium.org</owner>
  <summary>
    Recorded when a successful login is detected after filling by the Touch To
    Fill.
  </summary>
  <metric name="TimeToSuccessfulLogin">
    <summary>
      The time in milliseconds between filling by the Touch To Fill and a
      successful submission (To ensure filling and submitting correspond to each
      other, the usernames should coincide and the timestamps should be within
      one minute. A successful login after a failed submission or manual typing
      is not reported). Used to compare the times when automated submission is
      enabled and disabled. Thus, we measure the time saved for a user. Recorded
      when the password manager detects that the login was successful.
    </summary>
  </metric>
</event>

<event name="Translate">
  <owner>hamelphi@chromium.org</owner>
  <summary>
    Metrics related to a Translate event. These metrics are described in
    TranslateEventProto.
  </summary>
  <metric name="AcceptCount"/>
  <metric name="Country"/>
  <metric name="DeclineCount"/>
  <metric name="EventType"/>
  <metric name="IgnoreCount"/>
  <metric name="RankerResponse"/>
  <metric name="RankerVersion"/>
  <metric name="SourceLanguage" semantic_type="ST_DEMOGRAPHIC_INFO"/>
  <metric name="TargetLanguage" semantic_type="ST_DEMOGRAPHIC_INFO"/>
</event>

<event name="TranslatePageLoad">
  <owner>curranmax@chromium.org</owner>
  <owner>megjablon@chromium.org</owner>
  <owner>chrome-language@google.com</owner>
  <summary>
    Summary of the user's interaction with Translate from the beginning of the
    page load to when the event is recorded. This event is recorded when a page
    load is completed and every time that Chrome is backgrounded during the
    course of the page load. This means we can record multiple events for a
    single page load, but it guarantees that we will still record data in
    instances where the user backgrounds then kills Chrome.
  </summary>
  <metric name="FinalSourceLanguage" semantic_type="ST_DEMOGRAPHIC_INFO"
      enum="LocaleCodeISO639">
    <summary>
      The source language at the time the event is recorded. In most cases this
      will match the initial source language, but the user can change the source
      language manually if they want. Note that the semantic_type attribute is
      included in order to remain consistent with the previous Translate UKM
      proto.
    </summary>
  </metric>
  <metric name="FinalState" enum="TranslateState">
    <summary>
      At the time this event is recorded, the state of Translate. This includes
      whether the page is translated or not and if no UI is shown, just the
      omnibox icon is shown, or the full translate UI is shown.
    </summary>
  </metric>
  <metric name="FinalTargetLanguage" semantic_type="ST_DEMOGRAPHIC_INFO"
      enum="LocaleCodeISO639">
    <summary>
      The target language at the time the event is recorded. In most cases this
      will match the initial target language, but the user can change the target
      language manually if they want. Note that the semantic_type attribute is
      included in order to remain consistent with the previous Translate UKM
      proto.
    </summary>
  </metric>
  <metric name="FirstTranslateError" enum="TranslateError">
    <summary>
      The first error to occur within Translate for this page load.
    </summary>
  </metric>
  <metric name="FirstUIInteraction" enum="TranslateUIInteraction">
    <summary>
      The user's first interaction with the Translate UI.
    </summary>
  </metric>
  <metric name="HTMLContentLanguage" semantic_type="ST_DEMOGRAPHIC_INFO"
      enum="LocaleCodeISO639">
    <summary>
      The HTML language content attribute specified by the document. Note that
      the semantic_type attribute is included in order to remain consistent with
      the previous Translate UKM proto.
    </summary>
  </metric>
  <metric name="HTMLDocumentLanguage" semantic_type="ST_DEMOGRAPHIC_INFO"
      enum="LocaleCodeISO639">
    <summary>
      The HTML language attribute specified by the document. Note that the
      semantic_type attribute is included in order to remain consistent with the
      previous Translate UKM proto.
    </summary>
  </metric>
  <metric name="InitialSourceLanguage" semantic_type="ST_DEMOGRAPHIC_INFO"
      enum="LocaleCodeISO639">
    <summary>
      The initial source language that Translate determines for the page. Note
      that the semantic_type attribute is included in order to remain consistent
      with the previous Translate UKM proto.
    </summary>
  </metric>
  <metric name="InitialSourceLanguageInContentLanguages" enum="Boolean">
    <summary>
      Whether or not the initial source language is in the user's never
      translate language list. By default the UI language, languages the user
      has translated to, and languages added to the content languages are on the
      never tranlsate list. However, users can add or remove languages manually
      as well.
    </summary>
  </metric>
  <metric name="InitialState" enum="TranslateState">
    <summary>
      At the beginning of the page load, the state of Translate. This includes
      whether the page is translated or not and if no UI is shown, just the
      omnibox icon is shown, or the full translate UI is shown.
    </summary>
  </metric>
  <metric name="InitialTargetLanguage" semantic_type="ST_DEMOGRAPHIC_INFO"
      enum="LocaleCodeISO639">
    <summary>
      The initial target language that Translate thinks it should translate to.
      Note that the semantic_type attribute is included in order to remain
      consistent with the previous Translate UKM proto.
    </summary>
  </metric>
  <metric name="MaxTimeToTranslate">
    <summary>
      Across all translations during this page load, the maximum amount of time
      (in milliseconds) it took to translate the page.
    </summary>
  </metric>
  <metric name="ModelDetectedLanguage" semantic_type="ST_DEMOGRAPHIC_INFO"
      enum="LocaleCodeISO639">
    <summary>
      The language that was estimated by the language model based on the page's
      content. Note that the semantic_type attribute is included in order to
      remain consistent with the previous Translate UKM proto.
    </summary>
  </metric>
  <metric name="ModelDetectionReliabilityScore">
    <summary>
      The score, or confidence, of the language detection model's prediction
      about the language of the page content. The score is between 0 and 100,
      higher means more confident.
    </summary>
  </metric>
  <metric name="NumReversions">
    <summary>
      The number of times a translation was reverted.
    </summary>
  </metric>
  <metric name="NumTargetLanguageChanges">
    <summary>
      The number of times that the target language was changed by the user over
      the course of this page load.
    </summary>
  </metric>
  <metric name="NumTranslateErrors">
    <summary>
      The number of errors to occur within Translate for this page load.
    </summary>
  </metric>
  <metric name="NumTranslations">
    <summary>
      The number of times the page was translated.
    </summary>
  </metric>
  <metric name="NumUIInteractions">
    <summary>
      The number of times that the user interacts with the Translate UI.
    </summary>
  </metric>
  <metric name="RankerDecision" enum="TranslateRankerDecision">
    <summary>
      Decision of the Ranker whether to show the UI or not.
    </summary>
  </metric>
  <metric name="RankerVersion">
    <summary>
      Version of Ranker used for this page load.
    </summary>
  </metric>
  <metric name="SequenceNumber">
    <summary>
      In case multiple events are logged for one page load, we track the
      sequence in the order each event is logged.
    </summary>
  </metric>
  <metric name="TotalTimeNotTranslated">
    <summary>
      The amount of time (in seconds) this page was in the foreground and not
      translated.
    </summary>
  </metric>
  <metric name="TotalTimeTranslated">
    <summary>
      The amount of time (in seconds) this page was in the foreground and
      translated.
    </summary>
  </metric>
  <metric name="TriggerDecision" enum="TranslateTriggerDecision">
    <summary>
      The highest priority trigger that determined the initial state of
      Translate for this page load.
    </summary>
  </metric>
  <metric name="WasContentEmpty" enum="Boolean">
    <summary>
      Whether the page content used to detect the page language was empty or
      not.
    </summary>
  </metric>
</event>

<event name="TrustedWebActivity.LocationDelegation" singular="True">
  <owner>eirage@chromium.org</owner>
  <owner>peconn@chromium.org</owner>
  <summary>
    Records when a site running in Trusted Web Activity requests geolocation.
  </summary>
  <metric name="Enrolled" enum="Boolean">
    <summary>
      Whether the Trusted Web Activity client app enrolled location delegation.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="TrustedWebActivity.Open" singular="True">
  <owner>peconn@chromium.org</owner>
  <summary>
    Collected when a page is opened in a Trusted Web Activity.
  </summary>
  <metric name="HasOccurred" enum="Boolean">
    <summary>
      A boolean signaling that the event has occurred (typically only records
      true values).
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="TrustedWebActivity.QualityEnforcementViolation" singular="True">
  <owner>eirage@chromium.org</owner>
  <owner>peconn@chromium.org</owner>
  <summary>
    Records when Trusted Web Activity launches or navigates to a site that
    violates the quality criteria.
  </summary>
  <metric name="ViolationType"
      enum="TrustedWebActivityQualityEnforcementViolationType">
    <summary>
      An enum that records the type of the quality criteria.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="Unload" singular="True">
  <owner>kdillon@chromium.org</owner>
  <summary>
    Metrics associated with a unloading in preparation for a navigation.
  </summary>
  <metric name="BeforeUnloadDuration">
    <summary>
      Measures the time in milliseconds of running the beforeunload handlers for
      a page. If the beforeunloads are dispatched from the browser, this reports
      the longest running one since these handlers will be run in parallel when
      the page has frames in different processes. If the navigation is renderer
      initiated, it will be the duration of running beforeunload handlers in the
      navigating frame and its local descendants in the renderer plus any
      latency caused by dispatching beforeunloads to remote frames from the
      browser.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="BeforeUnloadQueueingDuration">
    <summary>
      Measures the time in milliseconds from when the browser sends the request
      to run beforeunload to the renderer to when the renderer begins
      dispatching the handlers. For browser-initiated navigations, we report the
      queueing duration of the beforeunloads that took the longest since they
      are dispatched in parallel to remote and local frames. For renderer-
      initiated navigations this metric will only be filled in if we dispatched
      beforeunloads from the browser to remote frames which we had to wait on.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="BeforeUnloadToCommit.CrossProcess">
    <summary>
      Measures the time in milliseconds from when the browser sends the request
      to dispatch before unload handlers (for browser-intitated navigations) or
      from when the renderer started running before unload handlers (for
      renderer-initiated navigations) to when the commit navigation was sent to
      the renderer process. For cross-process navigations this represents the
      total amount of time the navigation is blocked since it was initiated.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="BeforeUnloadToCommit.SameProcess">
    <summary>
      Measures the time in milliseconds from when the browser sends the request
      to dispatch before unload handlers (for browser-intitated navigations) or
      from when the renderer started running before unload handlers (for
      renderer-initiated navigations) to when the navigation was committed. For
      same-process navigations this represents the total amount of time the
      navigation is blocked since it was initiated.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="UnloadDuration">
    <summary>
      Measures the time in milliseconds to run the unload handlers in the old
      document where the navigation was committed. Only records for same-process
      navigations since there are no unload handlers to be run in the new
      process during a cross-process navigation.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="UnloadQueueingDuration">
    <summary>
      Measures the time in milliseconds from when the browser sends the commit
      navigation request to the renderer to when the renderer dispatches unload
      events. Only records for same-process navigations since unload handlers
      are run in a different process for cross-process navigations.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="UserActivity">
  <owner>jiameng@chromium.org</owner>
  <summary>
    Collects user activity events after staying idle for a short period of time.
  </summary>
  <metric name="BatteryPercent">
    <summary>
      Percentage of battery, bucketed to 5 percents, i.e. [0, 5%) is mapped to
      0, [5%, 10%) is mapped to 5 etc.
    </summary>
  </metric>
  <metric name="DeviceManagement">
    <summary>
      An enum representing whether the device is managed, defined in
      |ash::power::ml::UserActivityEvent::Features::ManagementType|.
    </summary>
  </metric>
  <metric name="DeviceMode">
    <summary>
      An enum representing the mode of the device, defined in
      |ash::power::ml::UserActivityEvent::Features::DeviceMode|
    </summary>
  </metric>
  <metric name="DeviceType">
    <summary>
      An enum representing the type of the device, defined in
      |ash::power::ml::UserActivityEvent::Features::DeviceType|
    </summary>
  </metric>
  <metric name="EventLogDuration">
    <summary>
      Time taken in seconds from when we start logging the features to the
      moment when the event type is known and we finish logging the complete
      event.
    </summary>
  </metric>
  <metric name="EventReason">
    <summary>
      An enum representing the reason of the event, defined in
      |ash::power::ml::UserActivityEvent::Event::Reason|.
    </summary>
  </metric>
  <metric name="EventType">
    <summary>
      An enum representing the type of the event, defined in
      |ash::power::ml::UserActivityEvent::Event::Type|.
    </summary>
  </metric>
  <metric name="KeyEventsInLastHour">
    <summary>
      The number of key events reported as user activity in the last hour. This
      is bucketized so that it is recorded precisely when it is in [0, 99],
      rounded to nearest 100 when it is in [100, 999] and rounded to nearest
      1000 when it is in [1000, 9999]. It is capped at 10000.
    </summary>
  </metric>
  <metric name="LastActivityDay">
    <summary>
      An enum representing the last activity day of the week, defined in
      |ash::power::ml::UserActivityEvent::Features::DayOfWeek|.
    </summary>
  </metric>
  <metric name="LastActivityTime">
    <summary>
      Last activity time as hours since midnight in the local time zone.
    </summary>
  </metric>
  <metric name="LastUserActivityTime">
    <summary>
      Last user activity time as hours since midnight in the local time zone.
    </summary>
  </metric>
  <metric name="ModelApplied">
    <summary>
      A boolean value whether model prediction is applied in the screen-dim
      decision. False means powerd dims the screen regardless of the model
      prediction.
    </summary>
  </metric>
  <metric name="ModelDecisionThreshold">
    <summary>
      A threhold in the range of [0, 100]. Higher threshold makes screen-dim
      less likely.
    </summary>
  </metric>
  <metric name="ModelInactivityScore">
    <summary>
      Probability that user will remain inactive as predicted by the model. It
      is in the range of [0, 100]. If score is less than the decision threshold,
      dim will be deferred.
    </summary>
  </metric>
  <metric name="ModelResponse">
    <summary>
      Whether the model recommends the screen dim should be deferred (NO_DIM) or
      allowed (DIM), or encountered an error (MODEL_ERROR).
    </summary>
  </metric>
  <metric name="MouseEventsInLastHour">
    <summary>
      The number of mouse events reported as user activity in the last hour.
      This is bucketized so that it is recorded precisely when it is in [0, 99],
      rounded to nearest 100 when it is in [100, 999] and rounded to nearest
      1000 when it is in [1000, 9999]. It is capped at 10000.
    </summary>
  </metric>
  <metric name="OnBattery">
    <summary>
      Boolean value to represent whether the device is currently on battery
      power.
    </summary>
  </metric>
  <metric name="PreviousNegativeActionsCount">
    <summary>
      Number of times user reactivated, not including the current event.
    </summary>
  </metric>
  <metric name="PreviousPositiveActionsCount">
    <summary>
      Number of times user has remained idle, not including the current event.
    </summary>
  </metric>
  <metric name="RecentTimeActive">
    <summary>
      Duration of activity in seconds up to last activity.
    </summary>
  </metric>
  <metric name="RecentVideoPlayingTime">
    <summary>
      Recent video playing time in seconds.
    </summary>
  </metric>
  <metric name="ScreenDimDelay">
    <summary>
      Delay after which the screen will be dimmed in seconds.
    </summary>
  </metric>
  <metric name="ScreenDimmedInitially">
    <summary>
      Whether screen was dimmed at the start of the event.
    </summary>
  </metric>
  <metric name="ScreenDimOccurred">
    <summary>
      Whether screen dim occurred due to inactivity timeout.
    </summary>
  </metric>
  <metric name="ScreenDimToOffDelay">
    <summary>
      Delay after which the screen will be turned off in seconds, as measured
      from screen is dimmed. If dim is disabled, it is the delay from the start
      of inactivity.
    </summary>
  </metric>
  <metric name="ScreenLockedInitially">
    <summary>
      Whether screen was locked at the start of the event.
    </summary>
  </metric>
  <metric name="ScreenLockOccurred">
    <summary>
      Whether screen lock occurred.
    </summary>
  </metric>
  <metric name="ScreenOffInitially">
    <summary>
      Whether screen was off at the start of the event.
    </summary>
  </metric>
  <metric name="ScreenOffOccurred">
    <summary>
      Whether screen off occurred due to inactivity timeout.
    </summary>
  </metric>
  <metric name="SequenceId">
    <summary>
      The ID of this event in the current session.
    </summary>
  </metric>
  <metric name="TimeSinceLastKey">
    <summary>
      Time from last key event in seconds.
    </summary>
  </metric>
  <metric name="TimeSinceLastMouse">
    <summary>
      Time from last mouse event in seconds.
    </summary>
  </metric>
  <metric name="TimeSinceLastTouch">
    <summary>
      Time from last touch event in seconds.
    </summary>
  </metric>
  <metric name="TimeSinceLastVideoEnded">
    <summary>
      Time from the end of the last video playing in seconds.
    </summary>
  </metric>
  <metric name="TouchEventsInLastHour">
    <summary>
      The number of touch events reported as user activity in the last hour.
      This is bucketized so that it is recorded precisely when it is in [0, 99],
      rounded to nearest 100 when it is in [100, 999] and rounded to nearest
      1000 when it is in [1000, 9999]. It is capped at 10000.
    </summary>
  </metric>
</event>

<event name="UserActivityId">
  <owner>jiameng@chromium.org</owner>
  <summary>
    Records an activity that happened while a page was open.
  </summary>
  <metric name="ActivityId">
    <summary>
      The ID of the activity that happened while a page was open.
    </summary>
  </metric>
  <metric name="ContentType">
    <summary>
      Enumeration for the MIME type of the page. Values are enumerated in
      metrics::TabMetricsEvent::ContentType.
    </summary>
  </metric>
  <metric name="HasFormEntry">
    <summary>
      Boolean value indicating whether the page has any user-input text.
    </summary>
  </metric>
  <metric name="IsActive">
    <summary>
      Boolean value representing whether this tab is selected in its containing
      browser.
    </summary>
  </metric>
  <metric name="IsBrowserFocused">
    <summary>
      Boolean value representing whether the containing browser is in focus.
    </summary>
  </metric>
  <metric name="IsBrowserVisible">
    <summary>
      Boolean value representing whether the containing browser is visible.
    </summary>
  </metric>
  <metric name="IsTopmostBrowser">
    <summary>
      Boolean value representing whether the containing browser is the topmost
      one on the screen.
    </summary>
  </metric>
  <metric name="SiteEngagementScore">
    <summary>
      Site engagement score in the range [0, 100], rounded down to a multiple of
      10 to limit granularity.
    </summary>
  </metric>
</event>

<event name="UserPerceivedPageVisit" singular="True">
  <owner>djw@chromium.org</owner>
  <owner>altimin@chromium.org</owner>
  <summary>
    Metrics related to a page visit as a user perceives it, regardless of how
    the page was visited. More metrics may be associated with a particular page
    visit, these can be found in specific UKM events with the same UKM source
    ID. Currently the methods of visiting a page that will populate this event
    are: 'normal' page load (more metrics in the PageLoad event), Back-Forward
    Cache Restore (more metrics in the HistoryNavigation event), and AMP
    documents (more metrics in the AmpPageLoad event)
  </summary>
  <metric name="NotCountedForCoreWebVitals" enum="Boolean">
    <summary>
      Determines if this page visit event should be counted towards calculations
      involving Core Web Vitals. If true, this page visit event should not be
      counted. If false or NULL, the page visit event should be considered.
      Currently this is determined by checking the mime-type of the page visit
      event.
    </summary>
  </metric>
  <metric name="PageVisitFinalStatus" enum="PageVisitFinalStatus">
    <summary>
      Determines the final status for this page visit. That is, records whether
      the page was never foregrounded, was foregrounded but did not reach FCP,
      or did reach FCP. The metric is recorded at the end of each page visit.
      App backgrounding on Android to is considered to be the end of page visit
      as well, as the app could be evicted by Android anytime after that
      happens.
    </summary>
  </metric>
  <metric name="UserInitiated" enum="Boolean">
    <summary>
      True if this page visit was initiated by user input. For renderer
      navigations, only true if the code can trace back to the original input
      event - there are cases where this known not to be possible.
    </summary>
  </metric>
</event>

<event name="UserSettingsEvent">
  <obsolete>
    Removed 3/2023
  </obsolete>
  <owner>wrong@chromium.org</owner>
  <owner>jiameng@chromium.org</owner>
  <summary>
    Contains information about user activities relating to settings changes.
  </summary>
  <metric name="AccessibilityId" enum="AccessibilityId">
    <summary>
      The accessibility setting that was changed.
    </summary>
  </metric>
  <metric name="BatteryPercentage">
    <summary>
      Battery percentage from 0 to 100.
    </summary>
  </metric>
  <metric name="Country">
    <summary>
      Country ID at install, corresponding to the value used by
      src/components/country_codes/country_codes.h.
    </summary>
  </metric>
  <metric name="CurrentValue">
    <summary>
      Value of the setting after the change.
    </summary>
  </metric>
  <metric name="DayOfWeek" enum="DayOfWeek">
    <summary>
      Day of the week of the settings change.
    </summary>
  </metric>
  <metric name="DeviceMode" enum="DeviceMode">
    <summary>
      The current device mode, such as clamshell or tablet.
    </summary>
  </metric>
  <metric name="DeviceOrientation" enum="DeviceOrientation">
    <summary>
      The current orientation of the device.
    </summary>
  </metric>
  <metric name="EventId">
    <summary>
      Randomly generated ID that links together settings events that occurred at
      the same time.
    </summary>
  </metric>
  <metric name="HasNightLightSchedule" enum="Boolean">
    <summary>
      A boolean indicating whether the user has set up a night light schedule.
    </summary>
  </metric>
  <metric name="HasWifiSecurity" enum="Boolean">
    <summary>
      A boolean indicating whether or not the current wifi network has security.
      Only populated upon connection to a wifi network.
    </summary>
  </metric>
  <metric name="HourOfDay">
    <summary>
      Time in hours since midnight in the local time zone.
    </summary>
  </metric>
  <metric name="IsAfterSunset" enum="Boolean">
    <summary>
      A boolean, true if it is after sunset and before sunrise in the local
      time.
    </summary>
  </metric>
  <metric name="IsCharging" enum="Boolean">
    <summary>
      A boolean indicating whether the device is charging.
    </summary>
  </metric>
  <metric name="IsFromSearch" enum="Boolean">
    <summary>
      A boolean indicating whether or not search was used to navigate to the
      setting.
    </summary>
  </metric>
  <metric name="IsPairedBluetoothDevice" enum="Boolean">
    <summary>
      A boolean indicating whether or not the current bluetooth device was
      already paired. Only populated upon connection to a bluetooth device.
    </summary>
  </metric>
  <metric name="IsPlayingAudio" enum="Boolean">
    <summary>
      A boolean indicating whether the device is playing audio.
    </summary>
  </metric>
  <metric name="IsPlayingVideo" enum="Boolean">
    <summary>
      A boolean indicating whether the device is playing video.
    </summary>
  </metric>
  <metric name="IsRecentlyFullscreen" enum="Boolean">
    <summary>
      A boolean indicating whether the device has been in fullscreen mode in the
      last 5 minutes.
    </summary>
  </metric>
  <metric name="IsRecentlyPresenting" enum="Boolean">
    <summary>
      A boolean indicating whether the device has been presenting in the last 5
      minutes.
    </summary>
  </metric>
  <metric name="NetworkStatus" enum="NetworkStatus">
    <summary>
      Internet connection status of the device.
    </summary>
  </metric>
  <metric name="PreviousValue">
    <summary>
      Value of the setting before the change.
    </summary>
  </metric>
  <metric name="SettingId" enum="SettingId">
    <summary>
      The setting that was changed.
    </summary>
  </metric>
  <metric name="SettingType" enum="SettingType">
    <summary>
      Where the settings event originated from.
    </summary>
  </metric>
  <metric name="SignalStrength">
    <summary>
      The signal strength for the connected network. Only populated upon
      connection to a wifi or cellular network.
    </summary>
  </metric>
  <metric name="TimeSinceLastSettingsChange">
    <summary>
      Time in minutes since the last settings change.
    </summary>
  </metric>
  <metric name="UsedCellularInSession" enum="Boolean">
    <summary>
      A boolean indicating whether the user has connected to a cellular network
      in the current session.
    </summary>
  </metric>
</event>

<event name="V8.Wasm.ModuleCompiled">
  <owner>ecmziegler@chromium.org</owner>
  <summary>
    Records information on baseline compilation of WebAssembly modules and its
    resource consumption.
  </summary>
  <metric name="Async" enum="Boolean">
    <summary>
      The compilation was running asynchronously.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.form_factor"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Cached" enum="Boolean">
    <summary>
      The compilation was re-using already cached native module code instead of
      JIT compiling it.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.form_factor"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="CodeSize">
    <summary>
      The size of the native module code in bytes after baseline compilation
      finished.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.form_factor"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Deserialized" enum="Boolean">
    <summary>
      The compilation was deserializing the native module code from the disk
      cache instead of JIT compiling it.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.form_factor"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Lazy" enum="Boolean">
    <summary>
      The lazy compilation flag was enabled and therefore not all functions
      might have been compiled.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.form_factor"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="LiftoffBailoutCount">
    <summary>
      The number of functions that Liftoff could not compile and that therefore
      needed to be compiled by TurboFan.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.form_factor"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Streamed" enum="Boolean">
    <summary>
      The wire bytes were streamed while compiling.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.form_factor"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Success" enum="Boolean">
    <summary>
      The module was successfully compiled.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="WallClockDuration">
    <summary>
      The total time the compilation took in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.form_factor"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="WallClockTime">
    <obsolete>
      Removed 11/2020
    </obsolete>
    <summary>
      The total time the compilation took in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.form_factor"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="V8.Wasm.ModuleDecoded">
  <owner>ecmziegler@chromium.org</owner>
  <summary>
    Records information on WebAssembly modules included in websites.
  </summary>
  <metric name="FunctionCount">
    <summary>
      Number of declared functions in this module.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.form_factor"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="ModuleSize">
    <summary>
      The size of the wire bytes of the module.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.form_factor"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Streamed" enum="Boolean">
    <summary>
      The wire bytes were streamed while decoding.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.form_factor"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Success" enum="Boolean">
    <summary>
      The module was successfully decoded.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="WallClockDuration">
    <summary>
      The total time the decoding took in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.form_factor"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="WallClockTime">
    <obsolete>
      Removed 11/2020
    </obsolete>
    <summary>
      The total time the compilation took in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.form_factor"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="V8.Wasm.ModuleInstantiated">
  <owner>ecmziegler@chromium.org</owner>
  <summary>
    Records information on instantiation of WebAssembly modules and its resource
    consumption.
  </summary>
  <metric name="ImportedFunctionCount">
    <summary>
      The number of functions imported by the module.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.form_factor"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Success" enum="Boolean">
    <summary>
      The module was successfully instantiated.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="WallClockDuration">
    <summary>
      The total time the instantiation took in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.form_factor"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="WallClockTime">
    <obsolete>
      Removed 11/2020
    </obsolete>
    <summary>
      The total time the compilation took in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.form_factor"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="V8.Wasm.ModuleTieredUp">
  <owner>ecmziegler@chromium.org</owner>
  <summary>
    Records information on top-tier compilation of WebAssembly modules and its
    resource consumption.
  </summary>
  <metric name="CodeSize">
    <summary>
      The size of the native module code in bytes after top-tier compilation
      finished.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.form_factor"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Lazy" enum="Boolean">
    <summary>
      The lazy compilation flag was enabled and therefore not all functions
      might have been compiled.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.form_factor"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="WallClockDuration">
    <summary>
      The total time the compilation took in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.form_factor"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="WallClockTime">
    <obsolete>
      Removed 11/2020
    </obsolete>
    <summary>
      The total time the compilation took in microseconds.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.form_factor"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="V8CompileHints.Version4">
  <owner>marja@chromium.org</owner>
  <owner>v8-loading@google.com</owner>
  <summary>
    Data about which JavaScript functions are compiled. The collected data is
    obfuscated to not reveal script URLs. The data is split into separate
    int64s.
  </summary>
  <metric name="Data0"/>
  <metric name="Data1"/>
  <metric name="Data10"/>
  <metric name="Data100"/>
  <metric name="Data1000"/>
  <metric name="Data1001"/>
  <metric name="Data1002"/>
  <metric name="Data1003"/>
  <metric name="Data1004"/>
  <metric name="Data1005"/>
  <metric name="Data1006"/>
  <metric name="Data1007"/>
  <metric name="Data1008"/>
  <metric name="Data1009"/>
  <metric name="Data101"/>
  <metric name="Data1010"/>
  <metric name="Data1011"/>
  <metric name="Data1012"/>
  <metric name="Data1013"/>
  <metric name="Data1014"/>
  <metric name="Data1015"/>
  <metric name="Data1016"/>
  <metric name="Data1017"/>
  <metric name="Data1018"/>
  <metric name="Data1019"/>
  <metric name="Data102"/>
  <metric name="Data1020"/>
  <metric name="Data1021"/>
  <metric name="Data1022"/>
  <metric name="Data1023"/>
  <metric name="Data103"/>
  <metric name="Data104"/>
  <metric name="Data105"/>
  <metric name="Data106"/>
  <metric name="Data107"/>
  <metric name="Data108"/>
  <metric name="Data109"/>
  <metric name="Data11"/>
  <metric name="Data110"/>
  <metric name="Data111"/>
  <metric name="Data112"/>
  <metric name="Data113"/>
  <metric name="Data114"/>
  <metric name="Data115"/>
  <metric name="Data116"/>
  <metric name="Data117"/>
  <metric name="Data118"/>
  <metric name="Data119"/>
  <metric name="Data12"/>
  <metric name="Data120"/>
  <metric name="Data121"/>
  <metric name="Data122"/>
  <metric name="Data123"/>
  <metric name="Data124"/>
  <metric name="Data125"/>
  <metric name="Data126"/>
  <metric name="Data127"/>
  <metric name="Data128"/>
  <metric name="Data129"/>
  <metric name="Data13"/>
  <metric name="Data130"/>
  <metric name="Data131"/>
  <metric name="Data132"/>
  <metric name="Data133"/>
  <metric name="Data134"/>
  <metric name="Data135"/>
  <metric name="Data136"/>
  <metric name="Data137"/>
  <metric name="Data138"/>
  <metric name="Data139"/>
  <metric name="Data14"/>
  <metric name="Data140"/>
  <metric name="Data141"/>
  <metric name="Data142"/>
  <metric name="Data143"/>
  <metric name="Data144"/>
  <metric name="Data145"/>
  <metric name="Data146"/>
  <metric name="Data147"/>
  <metric name="Data148"/>
  <metric name="Data149"/>
  <metric name="Data15"/>
  <metric name="Data150"/>
  <metric name="Data151"/>
  <metric name="Data152"/>
  <metric name="Data153"/>
  <metric name="Data154"/>
  <metric name="Data155"/>
  <metric name="Data156"/>
  <metric name="Data157"/>
  <metric name="Data158"/>
  <metric name="Data159"/>
  <metric name="Data16"/>
  <metric name="Data160"/>
  <metric name="Data161"/>
  <metric name="Data162"/>
  <metric name="Data163"/>
  <metric name="Data164"/>
  <metric name="Data165"/>
  <metric name="Data166"/>
  <metric name="Data167"/>
  <metric name="Data168"/>
  <metric name="Data169"/>
  <metric name="Data17"/>
  <metric name="Data170"/>
  <metric name="Data171"/>
  <metric name="Data172"/>
  <metric name="Data173"/>
  <metric name="Data174"/>
  <metric name="Data175"/>
  <metric name="Data176"/>
  <metric name="Data177"/>
  <metric name="Data178"/>
  <metric name="Data179"/>
  <metric name="Data18"/>
  <metric name="Data180"/>
  <metric name="Data181"/>
  <metric name="Data182"/>
  <metric name="Data183"/>
  <metric name="Data184"/>
  <metric name="Data185"/>
  <metric name="Data186"/>
  <metric name="Data187"/>
  <metric name="Data188"/>
  <metric name="Data189"/>
  <metric name="Data19"/>
  <metric name="Data190"/>
  <metric name="Data191"/>
  <metric name="Data192"/>
  <metric name="Data193"/>
  <metric name="Data194"/>
  <metric name="Data195"/>
  <metric name="Data196"/>
  <metric name="Data197"/>
  <metric name="Data198"/>
  <metric name="Data199"/>
  <metric name="Data2"/>
  <metric name="Data20"/>
  <metric name="Data200"/>
  <metric name="Data201"/>
  <metric name="Data202"/>
  <metric name="Data203"/>
  <metric name="Data204"/>
  <metric name="Data205"/>
  <metric name="Data206"/>
  <metric name="Data207"/>
  <metric name="Data208"/>
  <metric name="Data209"/>
  <metric name="Data21"/>
  <metric name="Data210"/>
  <metric name="Data211"/>
  <metric name="Data212"/>
  <metric name="Data213"/>
  <metric name="Data214"/>
  <metric name="Data215"/>
  <metric name="Data216"/>
  <metric name="Data217"/>
  <metric name="Data218"/>
  <metric name="Data219"/>
  <metric name="Data22"/>
  <metric name="Data220"/>
  <metric name="Data221"/>
  <metric name="Data222"/>
  <metric name="Data223"/>
  <metric name="Data224"/>
  <metric name="Data225"/>
  <metric name="Data226"/>
  <metric name="Data227"/>
  <metric name="Data228"/>
  <metric name="Data229"/>
  <metric name="Data23"/>
  <metric name="Data230"/>
  <metric name="Data231"/>
  <metric name="Data232"/>
  <metric name="Data233"/>
  <metric name="Data234"/>
  <metric name="Data235"/>
  <metric name="Data236"/>
  <metric name="Data237"/>
  <metric name="Data238"/>
  <metric name="Data239"/>
  <metric name="Data24"/>
  <metric name="Data240"/>
  <metric name="Data241"/>
  <metric name="Data242"/>
  <metric name="Data243"/>
  <metric name="Data244"/>
  <metric name="Data245"/>
  <metric name="Data246"/>
  <metric name="Data247"/>
  <metric name="Data248"/>
  <metric name="Data249"/>
  <metric name="Data25"/>
  <metric name="Data250"/>
  <metric name="Data251"/>
  <metric name="Data252"/>
  <metric name="Data253"/>
  <metric name="Data254"/>
  <metric name="Data255"/>
  <metric name="Data256"/>
  <metric name="Data257"/>
  <metric name="Data258"/>
  <metric name="Data259"/>
  <metric name="Data26"/>
  <metric name="Data260"/>
  <metric name="Data261"/>
  <metric name="Data262"/>
  <metric name="Data263"/>
  <metric name="Data264"/>
  <metric name="Data265"/>
  <metric name="Data266"/>
  <metric name="Data267"/>
  <metric name="Data268"/>
  <metric name="Data269"/>
  <metric name="Data27"/>
  <metric name="Data270"/>
  <metric name="Data271"/>
  <metric name="Data272"/>
  <metric name="Data273"/>
  <metric name="Data274"/>
  <metric name="Data275"/>
  <metric name="Data276"/>
  <metric name="Data277"/>
  <metric name="Data278"/>
  <metric name="Data279"/>
  <metric name="Data28"/>
  <metric name="Data280"/>
  <metric name="Data281"/>
  <metric name="Data282"/>
  <metric name="Data283"/>
  <metric name="Data284"/>
  <metric name="Data285"/>
  <metric name="Data286"/>
  <metric name="Data287"/>
  <metric name="Data288"/>
  <metric name="Data289"/>
  <metric name="Data29"/>
  <metric name="Data290"/>
  <metric name="Data291"/>
  <metric name="Data292"/>
  <metric name="Data293"/>
  <metric name="Data294"/>
  <metric name="Data295"/>
  <metric name="Data296"/>
  <metric name="Data297"/>
  <metric name="Data298"/>
  <metric name="Data299"/>
  <metric name="Data3"/>
  <metric name="Data30"/>
  <metric name="Data300"/>
  <metric name="Data301"/>
  <metric name="Data302"/>
  <metric name="Data303"/>
  <metric name="Data304"/>
  <metric name="Data305"/>
  <metric name="Data306"/>
  <metric name="Data307"/>
  <metric name="Data308"/>
  <metric name="Data309"/>
  <metric name="Data31"/>
  <metric name="Data310"/>
  <metric name="Data311"/>
  <metric name="Data312"/>
  <metric name="Data313"/>
  <metric name="Data314"/>
  <metric name="Data315"/>
  <metric name="Data316"/>
  <metric name="Data317"/>
  <metric name="Data318"/>
  <metric name="Data319"/>
  <metric name="Data32"/>
  <metric name="Data320"/>
  <metric name="Data321"/>
  <metric name="Data322"/>
  <metric name="Data323"/>
  <metric name="Data324"/>
  <metric name="Data325"/>
  <metric name="Data326"/>
  <metric name="Data327"/>
  <metric name="Data328"/>
  <metric name="Data329"/>
  <metric name="Data33"/>
  <metric name="Data330"/>
  <metric name="Data331"/>
  <metric name="Data332"/>
  <metric name="Data333"/>
  <metric name="Data334"/>
  <metric name="Data335"/>
  <metric name="Data336"/>
  <metric name="Data337"/>
  <metric name="Data338"/>
  <metric name="Data339"/>
  <metric name="Data34"/>
  <metric name="Data340"/>
  <metric name="Data341"/>
  <metric name="Data342"/>
  <metric name="Data343"/>
  <metric name="Data344"/>
  <metric name="Data345"/>
  <metric name="Data346"/>
  <metric name="Data347"/>
  <metric name="Data348"/>
  <metric name="Data349"/>
  <metric name="Data35"/>
  <metric name="Data350"/>
  <metric name="Data351"/>
  <metric name="Data352"/>
  <metric name="Data353"/>
  <metric name="Data354"/>
  <metric name="Data355"/>
  <metric name="Data356"/>
  <metric name="Data357"/>
  <metric name="Data358"/>
  <metric name="Data359"/>
  <metric name="Data36"/>
  <metric name="Data360"/>
  <metric name="Data361"/>
  <metric name="Data362"/>
  <metric name="Data363"/>
  <metric name="Data364"/>
  <metric name="Data365"/>
  <metric name="Data366"/>
  <metric name="Data367"/>
  <metric name="Data368"/>
  <metric name="Data369"/>
  <metric name="Data37"/>
  <metric name="Data370"/>
  <metric name="Data371"/>
  <metric name="Data372"/>
  <metric name="Data373"/>
  <metric name="Data374"/>
  <metric name="Data375"/>
  <metric name="Data376"/>
  <metric name="Data377"/>
  <metric name="Data378"/>
  <metric name="Data379"/>
  <metric name="Data38"/>
  <metric name="Data380"/>
  <metric name="Data381"/>
  <metric name="Data382"/>
  <metric name="Data383"/>
  <metric name="Data384"/>
  <metric name="Data385"/>
  <metric name="Data386"/>
  <metric name="Data387"/>
  <metric name="Data388"/>
  <metric name="Data389"/>
  <metric name="Data39"/>
  <metric name="Data390"/>
  <metric name="Data391"/>
  <metric name="Data392"/>
  <metric name="Data393"/>
  <metric name="Data394"/>
  <metric name="Data395"/>
  <metric name="Data396"/>
  <metric name="Data397"/>
  <metric name="Data398"/>
  <metric name="Data399"/>
  <metric name="Data4"/>
  <metric name="Data40"/>
  <metric name="Data400"/>
  <metric name="Data401"/>
  <metric name="Data402"/>
  <metric name="Data403"/>
  <metric name="Data404"/>
  <metric name="Data405"/>
  <metric name="Data406"/>
  <metric name="Data407"/>
  <metric name="Data408"/>
  <metric name="Data409"/>
  <metric name="Data41"/>
  <metric name="Data410"/>
  <metric name="Data411"/>
  <metric name="Data412"/>
  <metric name="Data413"/>
  <metric name="Data414"/>
  <metric name="Data415"/>
  <metric name="Data416"/>
  <metric name="Data417"/>
  <metric name="Data418"/>
  <metric name="Data419"/>
  <metric name="Data42"/>
  <metric name="Data420"/>
  <metric name="Data421"/>
  <metric name="Data422"/>
  <metric name="Data423"/>
  <metric name="Data424"/>
  <metric name="Data425"/>
  <metric name="Data426"/>
  <metric name="Data427"/>
  <metric name="Data428"/>
  <metric name="Data429"/>
  <metric name="Data43"/>
  <metric name="Data430"/>
  <metric name="Data431"/>
  <metric name="Data432"/>
  <metric name="Data433"/>
  <metric name="Data434"/>
  <metric name="Data435"/>
  <metric name="Data436"/>
  <metric name="Data437"/>
  <metric name="Data438"/>
  <metric name="Data439"/>
  <metric name="Data44"/>
  <metric name="Data440"/>
  <metric name="Data441"/>
  <metric name="Data442"/>
  <metric name="Data443"/>
  <metric name="Data444"/>
  <metric name="Data445"/>
  <metric name="Data446"/>
  <metric name="Data447"/>
  <metric name="Data448"/>
  <metric name="Data449"/>
  <metric name="Data45"/>
  <metric name="Data450"/>
  <metric name="Data451"/>
  <metric name="Data452"/>
  <metric name="Data453"/>
  <metric name="Data454"/>
  <metric name="Data455"/>
  <metric name="Data456"/>
  <metric name="Data457"/>
  <metric name="Data458"/>
  <metric name="Data459"/>
  <metric name="Data46"/>
  <metric name="Data460"/>
  <metric name="Data461"/>
  <metric name="Data462"/>
  <metric name="Data463"/>
  <metric name="Data464"/>
  <metric name="Data465"/>
  <metric name="Data466"/>
  <metric name="Data467"/>
  <metric name="Data468"/>
  <metric name="Data469"/>
  <metric name="Data47"/>
  <metric name="Data470"/>
  <metric name="Data471"/>
  <metric name="Data472"/>
  <metric name="Data473"/>
  <metric name="Data474"/>
  <metric name="Data475"/>
  <metric name="Data476"/>
  <metric name="Data477"/>
  <metric name="Data478"/>
  <metric name="Data479"/>
  <metric name="Data48"/>
  <metric name="Data480"/>
  <metric name="Data481"/>
  <metric name="Data482"/>
  <metric name="Data483"/>
  <metric name="Data484"/>
  <metric name="Data485"/>
  <metric name="Data486"/>
  <metric name="Data487"/>
  <metric name="Data488"/>
  <metric name="Data489"/>
  <metric name="Data49"/>
  <metric name="Data490"/>
  <metric name="Data491"/>
  <metric name="Data492"/>
  <metric name="Data493"/>
  <metric name="Data494"/>
  <metric name="Data495"/>
  <metric name="Data496"/>
  <metric name="Data497"/>
  <metric name="Data498"/>
  <metric name="Data499"/>
  <metric name="Data5"/>
  <metric name="Data50"/>
  <metric name="Data500"/>
  <metric name="Data501"/>
  <metric name="Data502"/>
  <metric name="Data503"/>
  <metric name="Data504"/>
  <metric name="Data505"/>
  <metric name="Data506"/>
  <metric name="Data507"/>
  <metric name="Data508"/>
  <metric name="Data509"/>
  <metric name="Data51"/>
  <metric name="Data510"/>
  <metric name="Data511"/>
  <metric name="Data512"/>
  <metric name="Data513"/>
  <metric name="Data514"/>
  <metric name="Data515"/>
  <metric name="Data516"/>
  <metric name="Data517"/>
  <metric name="Data518"/>
  <metric name="Data519"/>
  <metric name="Data52"/>
  <metric name="Data520"/>
  <metric name="Data521"/>
  <metric name="Data522"/>
  <metric name="Data523"/>
  <metric name="Data524"/>
  <metric name="Data525"/>
  <metric name="Data526"/>
  <metric name="Data527"/>
  <metric name="Data528"/>
  <metric name="Data529"/>
  <metric name="Data53"/>
  <metric name="Data530"/>
  <metric name="Data531"/>
  <metric name="Data532"/>
  <metric name="Data533"/>
  <metric name="Data534"/>
  <metric name="Data535"/>
  <metric name="Data536"/>
  <metric name="Data537"/>
  <metric name="Data538"/>
  <metric name="Data539"/>
  <metric name="Data54"/>
  <metric name="Data540"/>
  <metric name="Data541"/>
  <metric name="Data542"/>
  <metric name="Data543"/>
  <metric name="Data544"/>
  <metric name="Data545"/>
  <metric name="Data546"/>
  <metric name="Data547"/>
  <metric name="Data548"/>
  <metric name="Data549"/>
  <metric name="Data55"/>
  <metric name="Data550"/>
  <metric name="Data551"/>
  <metric name="Data552"/>
  <metric name="Data553"/>
  <metric name="Data554"/>
  <metric name="Data555"/>
  <metric name="Data556"/>
  <metric name="Data557"/>
  <metric name="Data558"/>
  <metric name="Data559"/>
  <metric name="Data56"/>
  <metric name="Data560"/>
  <metric name="Data561"/>
  <metric name="Data562"/>
  <metric name="Data563"/>
  <metric name="Data564"/>
  <metric name="Data565"/>
  <metric name="Data566"/>
  <metric name="Data567"/>
  <metric name="Data568"/>
  <metric name="Data569"/>
  <metric name="Data57"/>
  <metric name="Data570"/>
  <metric name="Data571"/>
  <metric name="Data572"/>
  <metric name="Data573"/>
  <metric name="Data574"/>
  <metric name="Data575"/>
  <metric name="Data576"/>
  <metric name="Data577"/>
  <metric name="Data578"/>
  <metric name="Data579"/>
  <metric name="Data58"/>
  <metric name="Data580"/>
  <metric name="Data581"/>
  <metric name="Data582"/>
  <metric name="Data583"/>
  <metric name="Data584"/>
  <metric name="Data585"/>
  <metric name="Data586"/>
  <metric name="Data587"/>
  <metric name="Data588"/>
  <metric name="Data589"/>
  <metric name="Data59"/>
  <metric name="Data590"/>
  <metric name="Data591"/>
  <metric name="Data592"/>
  <metric name="Data593"/>
  <metric name="Data594"/>
  <metric name="Data595"/>
  <metric name="Data596"/>
  <metric name="Data597"/>
  <metric name="Data598"/>
  <metric name="Data599"/>
  <metric name="Data6"/>
  <metric name="Data60"/>
  <metric name="Data600"/>
  <metric name="Data601"/>
  <metric name="Data602"/>
  <metric name="Data603"/>
  <metric name="Data604"/>
  <metric name="Data605"/>
  <metric name="Data606"/>
  <metric name="Data607"/>
  <metric name="Data608"/>
  <metric name="Data609"/>
  <metric name="Data61"/>
  <metric name="Data610"/>
  <metric name="Data611"/>
  <metric name="Data612"/>
  <metric name="Data613"/>
  <metric name="Data614"/>
  <metric name="Data615"/>
  <metric name="Data616"/>
  <metric name="Data617"/>
  <metric name="Data618"/>
  <metric name="Data619"/>
  <metric name="Data62"/>
  <metric name="Data620"/>
  <metric name="Data621"/>
  <metric name="Data622"/>
  <metric name="Data623"/>
  <metric name="Data624"/>
  <metric name="Data625"/>
  <metric name="Data626"/>
  <metric name="Data627"/>
  <metric name="Data628"/>
  <metric name="Data629"/>
  <metric name="Data63"/>
  <metric name="Data630"/>
  <metric name="Data631"/>
  <metric name="Data632"/>
  <metric name="Data633"/>
  <metric name="Data634"/>
  <metric name="Data635"/>
  <metric name="Data636"/>
  <metric name="Data637"/>
  <metric name="Data638"/>
  <metric name="Data639"/>
  <metric name="Data64"/>
  <metric name="Data640"/>
  <metric name="Data641"/>
  <metric name="Data642"/>
  <metric name="Data643"/>
  <metric name="Data644"/>
  <metric name="Data645"/>
  <metric name="Data646"/>
  <metric name="Data647"/>
  <metric name="Data648"/>
  <metric name="Data649"/>
  <metric name="Data65"/>
  <metric name="Data650"/>
  <metric name="Data651"/>
  <metric name="Data652"/>
  <metric name="Data653"/>
  <metric name="Data654"/>
  <metric name="Data655"/>
  <metric name="Data656"/>
  <metric name="Data657"/>
  <metric name="Data658"/>
  <metric name="Data659"/>
  <metric name="Data66"/>
  <metric name="Data660"/>
  <metric name="Data661"/>
  <metric name="Data662"/>
  <metric name="Data663"/>
  <metric name="Data664"/>
  <metric name="Data665"/>
  <metric name="Data666"/>
  <metric name="Data667"/>
  <metric name="Data668"/>
  <metric name="Data669"/>
  <metric name="Data67"/>
  <metric name="Data670"/>
  <metric name="Data671"/>
  <metric name="Data672"/>
  <metric name="Data673"/>
  <metric name="Data674"/>
  <metric name="Data675"/>
  <metric name="Data676"/>
  <metric name="Data677"/>
  <metric name="Data678"/>
  <metric name="Data679"/>
  <metric name="Data68"/>
  <metric name="Data680"/>
  <metric name="Data681"/>
  <metric name="Data682"/>
  <metric name="Data683"/>
  <metric name="Data684"/>
  <metric name="Data685"/>
  <metric name="Data686"/>
  <metric name="Data687"/>
  <metric name="Data688"/>
  <metric name="Data689"/>
  <metric name="Data69"/>
  <metric name="Data690"/>
  <metric name="Data691"/>
  <metric name="Data692"/>
  <metric name="Data693"/>
  <metric name="Data694"/>
  <metric name="Data695"/>
  <metric name="Data696"/>
  <metric name="Data697"/>
  <metric name="Data698"/>
  <metric name="Data699"/>
  <metric name="Data7"/>
  <metric name="Data70"/>
  <metric name="Data700"/>
  <metric name="Data701"/>
  <metric name="Data702"/>
  <metric name="Data703"/>
  <metric name="Data704"/>
  <metric name="Data705"/>
  <metric name="Data706"/>
  <metric name="Data707"/>
  <metric name="Data708"/>
  <metric name="Data709"/>
  <metric name="Data71"/>
  <metric name="Data710"/>
  <metric name="Data711"/>
  <metric name="Data712"/>
  <metric name="Data713"/>
  <metric name="Data714"/>
  <metric name="Data715"/>
  <metric name="Data716"/>
  <metric name="Data717"/>
  <metric name="Data718"/>
  <metric name="Data719"/>
  <metric name="Data72"/>
  <metric name="Data720"/>
  <metric name="Data721"/>
  <metric name="Data722"/>
  <metric name="Data723"/>
  <metric name="Data724"/>
  <metric name="Data725"/>
  <metric name="Data726"/>
  <metric name="Data727"/>
  <metric name="Data728"/>
  <metric name="Data729"/>
  <metric name="Data73"/>
  <metric name="Data730"/>
  <metric name="Data731"/>
  <metric name="Data732"/>
  <metric name="Data733"/>
  <metric name="Data734"/>
  <metric name="Data735"/>
  <metric name="Data736"/>
  <metric name="Data737"/>
  <metric name="Data738"/>
  <metric name="Data739"/>
  <metric name="Data74"/>
  <metric name="Data740"/>
  <metric name="Data741"/>
  <metric name="Data742"/>
  <metric name="Data743"/>
  <metric name="Data744"/>
  <metric name="Data745"/>
  <metric name="Data746"/>
  <metric name="Data747"/>
  <metric name="Data748"/>
  <metric name="Data749"/>
  <metric name="Data75"/>
  <metric name="Data750"/>
  <metric name="Data751"/>
  <metric name="Data752"/>
  <metric name="Data753"/>
  <metric name="Data754"/>
  <metric name="Data755"/>
  <metric name="Data756"/>
  <metric name="Data757"/>
  <metric name="Data758"/>
  <metric name="Data759"/>
  <metric name="Data76"/>
  <metric name="Data760"/>
  <metric name="Data761"/>
  <metric name="Data762"/>
  <metric name="Data763"/>
  <metric name="Data764"/>
  <metric name="Data765"/>
  <metric name="Data766"/>
  <metric name="Data767"/>
  <metric name="Data768"/>
  <metric name="Data769"/>
  <metric name="Data77"/>
  <metric name="Data770"/>
  <metric name="Data771"/>
  <metric name="Data772"/>
  <metric name="Data773"/>
  <metric name="Data774"/>
  <metric name="Data775"/>
  <metric name="Data776"/>
  <metric name="Data777"/>
  <metric name="Data778"/>
  <metric name="Data779"/>
  <metric name="Data78"/>
  <metric name="Data780"/>
  <metric name="Data781"/>
  <metric name="Data782"/>
  <metric name="Data783"/>
  <metric name="Data784"/>
  <metric name="Data785"/>
  <metric name="Data786"/>
  <metric name="Data787"/>
  <metric name="Data788"/>
  <metric name="Data789"/>
  <metric name="Data79"/>
  <metric name="Data790"/>
  <metric name="Data791"/>
  <metric name="Data792"/>
  <metric name="Data793"/>
  <metric name="Data794"/>
  <metric name="Data795"/>
  <metric name="Data796"/>
  <metric name="Data797"/>
  <metric name="Data798"/>
  <metric name="Data799"/>
  <metric name="Data8"/>
  <metric name="Data80"/>
  <metric name="Data800"/>
  <metric name="Data801"/>
  <metric name="Data802"/>
  <metric name="Data803"/>
  <metric name="Data804"/>
  <metric name="Data805"/>
  <metric name="Data806"/>
  <metric name="Data807"/>
  <metric name="Data808"/>
  <metric name="Data809"/>
  <metric name="Data81"/>
  <metric name="Data810"/>
  <metric name="Data811"/>
  <metric name="Data812"/>
  <metric name="Data813"/>
  <metric name="Data814"/>
  <metric name="Data815"/>
  <metric name="Data816"/>
  <metric name="Data817"/>
  <metric name="Data818"/>
  <metric name="Data819"/>
  <metric name="Data82"/>
  <metric name="Data820"/>
  <metric name="Data821"/>
  <metric name="Data822"/>
  <metric name="Data823"/>
  <metric name="Data824"/>
  <metric name="Data825"/>
  <metric name="Data826"/>
  <metric name="Data827"/>
  <metric name="Data828"/>
  <metric name="Data829"/>
  <metric name="Data83"/>
  <metric name="Data830"/>
  <metric name="Data831"/>
  <metric name="Data832"/>
  <metric name="Data833"/>
  <metric name="Data834"/>
  <metric name="Data835"/>
  <metric name="Data836"/>
  <metric name="Data837"/>
  <metric name="Data838"/>
  <metric name="Data839"/>
  <metric name="Data84"/>
  <metric name="Data840"/>
  <metric name="Data841"/>
  <metric name="Data842"/>
  <metric name="Data843"/>
  <metric name="Data844"/>
  <metric name="Data845"/>
  <metric name="Data846"/>
  <metric name="Data847"/>
  <metric name="Data848"/>
  <metric name="Data849"/>
  <metric name="Data85"/>
  <metric name="Data850"/>
  <metric name="Data851"/>
  <metric name="Data852"/>
  <metric name="Data853"/>
  <metric name="Data854"/>
  <metric name="Data855"/>
  <metric name="Data856"/>
  <metric name="Data857"/>
  <metric name="Data858"/>
  <metric name="Data859"/>
  <metric name="Data86"/>
  <metric name="Data860"/>
  <metric name="Data861"/>
  <metric name="Data862"/>
  <metric name="Data863"/>
  <metric name="Data864"/>
  <metric name="Data865"/>
  <metric name="Data866"/>
  <metric name="Data867"/>
  <metric name="Data868"/>
  <metric name="Data869"/>
  <metric name="Data87"/>
  <metric name="Data870"/>
  <metric name="Data871"/>
  <metric name="Data872"/>
  <metric name="Data873"/>
  <metric name="Data874"/>
  <metric name="Data875"/>
  <metric name="Data876"/>
  <metric name="Data877"/>
  <metric name="Data878"/>
  <metric name="Data879"/>
  <metric name="Data88"/>
  <metric name="Data880"/>
  <metric name="Data881"/>
  <metric name="Data882"/>
  <metric name="Data883"/>
  <metric name="Data884"/>
  <metric name="Data885"/>
  <metric name="Data886"/>
  <metric name="Data887"/>
  <metric name="Data888"/>
  <metric name="Data889"/>
  <metric name="Data89"/>
  <metric name="Data890"/>
  <metric name="Data891"/>
  <metric name="Data892"/>
  <metric name="Data893"/>
  <metric name="Data894"/>
  <metric name="Data895"/>
  <metric name="Data896"/>
  <metric name="Data897"/>
  <metric name="Data898"/>
  <metric name="Data899"/>
  <metric name="Data9"/>
  <metric name="Data90"/>
  <metric name="Data900"/>
  <metric name="Data901"/>
  <metric name="Data902"/>
  <metric name="Data903"/>
  <metric name="Data904"/>
  <metric name="Data905"/>
  <metric name="Data906"/>
  <metric name="Data907"/>
  <metric name="Data908"/>
  <metric name="Data909"/>
  <metric name="Data91"/>
  <metric name="Data910"/>
  <metric name="Data911"/>
  <metric name="Data912"/>
  <metric name="Data913"/>
  <metric name="Data914"/>
  <metric name="Data915"/>
  <metric name="Data916"/>
  <metric name="Data917"/>
  <metric name="Data918"/>
  <metric name="Data919"/>
  <metric name="Data92"/>
  <metric name="Data920"/>
  <metric name="Data921"/>
  <metric name="Data922"/>
  <metric name="Data923"/>
  <metric name="Data924"/>
  <metric name="Data925"/>
  <metric name="Data926"/>
  <metric name="Data927"/>
  <metric name="Data928"/>
  <metric name="Data929"/>
  <metric name="Data93"/>
  <metric name="Data930"/>
  <metric name="Data931"/>
  <metric name="Data932"/>
  <metric name="Data933"/>
  <metric name="Data934"/>
  <metric name="Data935"/>
  <metric name="Data936"/>
  <metric name="Data937"/>
  <metric name="Data938"/>
  <metric name="Data939"/>
  <metric name="Data94"/>
  <metric name="Data940"/>
  <metric name="Data941"/>
  <metric name="Data942"/>
  <metric name="Data943"/>
  <metric name="Data944"/>
  <metric name="Data945"/>
  <metric name="Data946"/>
  <metric name="Data947"/>
  <metric name="Data948"/>
  <metric name="Data949"/>
  <metric name="Data95"/>
  <metric name="Data950"/>
  <metric name="Data951"/>
  <metric name="Data952"/>
  <metric name="Data953"/>
  <metric name="Data954"/>
  <metric name="Data955"/>
  <metric name="Data956"/>
  <metric name="Data957"/>
  <metric name="Data958"/>
  <metric name="Data959"/>
  <metric name="Data96"/>
  <metric name="Data960"/>
  <metric name="Data961"/>
  <metric name="Data962"/>
  <metric name="Data963"/>
  <metric name="Data964"/>
  <metric name="Data965"/>
  <metric name="Data966"/>
  <metric name="Data967"/>
  <metric name="Data968"/>
  <metric name="Data969"/>
  <metric name="Data97"/>
  <metric name="Data970"/>
  <metric name="Data971"/>
  <metric name="Data972"/>
  <metric name="Data973"/>
  <metric name="Data974"/>
  <metric name="Data975"/>
  <metric name="Data976"/>
  <metric name="Data977"/>
  <metric name="Data978"/>
  <metric name="Data979"/>
  <metric name="Data98"/>
  <metric name="Data980"/>
  <metric name="Data981"/>
  <metric name="Data982"/>
  <metric name="Data983"/>
  <metric name="Data984"/>
  <metric name="Data985"/>
  <metric name="Data986"/>
  <metric name="Data987"/>
  <metric name="Data988"/>
  <metric name="Data989"/>
  <metric name="Data99"/>
  <metric name="Data990"/>
  <metric name="Data991"/>
  <metric name="Data992"/>
  <metric name="Data993"/>
  <metric name="Data994"/>
  <metric name="Data995"/>
  <metric name="Data996"/>
  <metric name="Data997"/>
  <metric name="Data998"/>
  <metric name="Data999"/>
</event>

<event name="VirtualKeyboard.Open">
  <owner>shend@chromium.org</owner>
  <summary>
    Collects the used input types with the Virtual Keyboard.
  </summary>
  <metric name="TextInputType">
    <summary>
      Type of a input field which the user is trying to use the Virtual Keyboard
      on.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.form_factor"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="WebAPK.Install" singular="True">
  <owner>yfriedman@chromium.org</owner>
  <owner>hartmanng@chromium.org</owner>
  <owner>pkotwicz@chromium.org</owner>
  <summary>
    WebAPK usage metrics recorded on Install.
  </summary>
  <metric name="AppVersion">
    <summary>
      WebAPK app version that the user is installing.
    </summary>
    <aggregation>
      <history>
        <index fields="metrics.Distributor"/>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Distributor" enum="WebApkDistributor">
    <summary>
      Distribution source of the WebAPK (browser, device policy, etc).
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Install" enum="Boolean">
    <summary>
      Recorded when this WebAPK is installed.
    </summary>
    <aggregation>
      <history>
        <index fields="metrics.Distributor"/>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="WebAPK.SessionEnd" singular="True">
  <owner>yfriedman@chromium.org</owner>
  <owner>hartmanng@chromium.org</owner>
  <owner>pkotwicz@chromium.org</owner>
  <summary>
    WebAPK usage metrics recorded when the WebAPK is backgrounded.
  </summary>
  <metric name="AppVersion">
    <summary>
      WebAPK app version that the user has installed.
    </summary>
    <aggregation>
      <history>
        <index fields="metrics.Distributor"/>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Distributor" enum="WebApkDistributor">
    <summary>
      Distribution source of the WebAPK (browser, device policy, etc).
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SessionDuration">
    <summary>
      How long the user spent inside the WebAPK, in milliseconds. This will use
      exponential bucketing (ie, count in 10s of milliseconds at first, then
      100s, then seconds, 10s of seconds, minutes, 10 minutes, hours, 10 hours,
      days, weeks, years.)
    </summary>
    <aggregation>
      <history>
        <index fields="metrics.Distributor"/>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="WebAPK.Uninstall" singular="True">
  <owner>yfriedman@chromium.org</owner>
  <owner>hartmanng@chromium.org</owner>
  <owner>pkotwicz@chromium.org</owner>
  <summary>
    WebAPK usage metrics recorded on Uninstall.
  </summary>
  <metric name="AppVersion">
    <summary>
      WebAPK app version that the user has installed.
    </summary>
    <aggregation>
      <history>
        <index fields="metrics.Distributor"/>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Distributor" enum="WebApkDistributor">
    <summary>
      Distribution source of the WebAPK (browser, device policy, etc).
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="InstalledDuration">
    <summary>
      How long between Install and Uninstall of a particular WebAPK, in seconds.
      This will use exponential bucketing (ie, count in seconds at first, then
      10s of seconds, minutes, 10 minutes, hours, 10 hours, days, weeks, years.)
    </summary>
    <aggregation>
      <history>
        <index fields="metrics.Distributor"/>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="LifetimeLaunches" enum="WebApkLifetimeLaunchCount">
    <summary>
      Records how many times the WebAPK was launched between install and
      uninstall (in coarse buckets).
    </summary>
    <aggregation>
      <history>
        <index fields="metrics.Distributor"/>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Uninstall" enum="Boolean">
    <summary>
      Recorded when this WebAPK is uninstalled.
    </summary>
    <aggregation>
      <history>
        <index fields="metrics.Distributor"/>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="WebAPK.Visit" singular="True">
  <owner>yfriedman@chromium.org</owner>
  <owner>hartmanng@chromium.org</owner>
  <owner>pkotwicz@chromium.org</owner>
  <summary>
    WebAPK usage metrics recorded during a user's interaction with the site.
  </summary>
  <metric name="AppVersion">
    <summary>
      WebAPK app version that the user has installed.
    </summary>
    <aggregation>
      <history>
        <index fields="metrics.Distributor"/>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Distributor" enum="WebApkDistributor">
    <summary>
      Distribution source of the WebAPK (browser, device policy, etc).
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Launch" enum="Boolean">
    <summary>
      Recorded every time this WebAPK is launched.
    </summary>
    <aggregation>
      <history>
        <index fields="metrics.Distributor"/>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="LaunchSource" enum="LaunchFromHomeScreenSource">
    <summary>
      Launch source of the WebAPK.
    </summary>
    <aggregation>
      <history>
        <index fields="metrics.Distributor"/>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="Webapp.AddToHomeScreen">
  <owner>eirage@chromium.org&gt;</owner>
  <owner>hartmanng@chromium.org</owner>
  <owner>mwi-team-core@google.com</owner>
  <summary>
    A2HS usage metrics recorded when users started the add to home screen flow
    on Android.
  </summary>
  <metric name="DisplayMode" enum="WebAppDisplayMode">
    <summary>
      Records the display mode of the added Webapp.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="SameAsManifestStartUrl" enum="Boolean">
    <summary>
      Record whether `start_url` for the Shortcuts is the same as the current
      page url.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="ShortcutReason" enum="InstallableStatusCode">
    <summary>
      Record an StatusCode for why this site is not WebAPK compatible.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="WebApp.DailyInteraction">
  <owner>glenrob@chromium.org</owner>
  <owner>benwells@chromium.org</owner>
  <summary>
    Features of a web app recorded at most once per day if a user interacted
    with the web app. Recorded for installed and/or promotable (installable) web
    apps unless noted otherwise on the metric. Keyed by start_url of the app.
    Note: Changed in Feb 2023 to only record when App sync is enabled.
  </summary>
  <metric name="BackgroundDuration">
    <summary>
      Records the total duration (seconds, bucketed) that the app was open in
      the background in the last calendar day. Summed during the day and emitted
      if the date changes. Recorded only for installed web apps that are
      currently open in a web app window, and all preinstalled web apps.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="CapturesLinks" enum="Boolean">
    <summary>
      Whether the user has enabled link capturing to open in-scope links in the
      app window. Recorded only for installed web apps that are currently open
      in a web app window, and all preinstalled web apps.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="DisplayMode" enum="WebAppDisplayMode">
    <summary>
      Effective display mode of the web app (may be set by a manifest and
      manifest may be overridden by the user).
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="ForegroundDuration">
    <summary>
      Records the total duration (seconds, bucketed) that the app was open in
      the foreground in the last calendar day. Summed during the day and emitted
      if the date changes. Recorded only for installed web apps that are
      currently open in a web app window, and all preinstalled web apps.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Installed" enum="Boolean">
    <summary>
      Whether the web app is installed.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="InstallSource" enum="WebappInstallSource">
    <summary>
      Install source of the web app (omnibox, menu item, policy, etc).
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="NumSessions">
    <summary>
      Records the total number of times the app was focused in the foreground in
      the last calendar day. Recorded only for installed web apps that are
      currently open in a web app window, and all preinstalled web apps.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="PreinstalledWindowExperimentHasLaunchedBefore" enum="Boolean">
    <summary>
      Records whether the user has launched this preinstalled app before the
      preinstalled app window vs tab experiment started. Recorded only if the
      user was eligible for the experiment, which is new Chrome OS users.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="PreinstalledWindowExperimentUserGroup"
      enum="WebAppPreinstalledWindowExperimentUserGroup">
    <summary>
      Records the user group that the user is in, for an experiment on opening
      preinstalled apps in windows vs tabs. Recorded only if the user was
      eligible for the experiment, which is new Chrome OS users.
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Promotable" enum="Boolean">
    <summary>
      Whether the web app is currently considered 'promotable' (passes Chrome
      checks to be considered an installable web app).
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Used" enum="Boolean">
    <summary>
      Records that the web app was used. Always true (or the event would not
      have been emitted for this WebApp).
    </summary>
    <aggregation>
      <history>
        <index fields="profile.country"/>
        <index fields="profile.form_factor"/>
        <index fields="profile.system_ram"/>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="WebOTPImpact">
  <owner>yigu@chromium.org</owner>
  <owner>goto@chromium.org</owner>
  <owner>web-identity@google.com</owner>
  <summary>
    Records in the browser process when a document is destroyed.
  </summary>
  <metric name="PhoneCollection" enum="PhoneCollectionState">
    <summary>
      Records whether a document collected phone number, and/or used WebOTP,
      and/or used OneTimeCode (OTC) during its lifecycle.
    </summary>
  </metric>
</event>

<event name="WebRTC.AddressHarvesting">
  <owner>hta@chromium.org</owner>
  <summary>
    Collects usage patterns that may indicate attempts to gather users' IP
    addresses. A heuristic in the webrtc library tries to detect usages that may
    indicate attempts to gather users' IP addresses rather than setting up
    communication via WebRTC, and reports possible attempts.
  </summary>
  <metric name="UsagePattern">
    <summary>
      The usage pattern detected (an int encoding bit values). The bits are
      defined in third_party/webrtc/pc/peerconnection.h, in the
      &quot;PeerConnection::UsageEvent&quot; enum.
    </summary>
  </metric>
</event>

<event name="WebRTC.ComplexSdp">
  <owner>hbos@chromium.org</owner>
  <owner>guidou@chromium.org</owner>
  <summary>
    Logged when an application uses complex SDP in a WebRTC PeerConnection or
    experiences an error attempting to parse SDP. Such cases will result in
    errors if the application assumes the wrong default SDP format. This is an
    important concern during the transition of the default SDP format from Plan
    B to Unified Plan.
  </summary>
  <metric name="Category">
    <summary>
      A value that represents how complex/unparsable SDP is used. The categories
      are defined in blink::ComplexSdpCategory.
    </summary>
  </metric>
</event>

<event name="Worker.ClientAdded">
  <owner>cfredric@google.com</owner>
  <summary>
    Recorded when a client connects to an existing SharedWorker or
    ServiceWorker; records the source IDs of the client (which may be a document
    or another worker), and the type of the worker being connected to. In the
    case of a ServiceWorker, this is recorded for each worker-client pair that
    could communicate (whether or not they actually do) and this is only
    recorded once the client is execution ready. Note also that emission can be
    caused by the creation of a new ServiceWorker or a new ServiceWorker client.
  </summary>
  <metric name="ClientSourceId">
    <summary>
      The UKM source ID of the connecting client, as an integer.
    </summary>
  </metric>
  <metric name="WorkerType" enum="WorkerType">
    <summary>
      The type of the worker that was connected to.
    </summary>
  </metric>
</event>

<event name="XR.PageSession" singular="True">
  <obsolete>
    Removed 2/2020
  </obsolete>
  <owner>xr-dev@chromium.org</owner>
  <summary>
    Records properties of page use in XR, including VR browsing and WebXR
    presentation.
  </summary>
  <metric name="Duration">
    <summary>
      The approximate amount of time the user spends on a page in XR in seconds.
      Times are reported accurately when low, for example, under a minute, and
      get rounded to minutes and then hours as they get larger. This is done by
      SessionTracker::GetRoundedDurationInSeconds.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="EnteredFullscreen" enum="Boolean">
    <summary>
      A boolean that is set to 1 if the user requested fullscreen while in XR on
      some element on the page.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="EnteredVROnPageReason" enum="VRStartReason">
    <summary>
      An enum that indicates that the user entered VR on this page and what
      triggered the entry into VR, where 1 means VR was entered through headset
      activation, and 2 means that request presentation triggered the entry into
      VR.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="TimeOnPage">
    <obsolete>
      Deprecated.
    </obsolete>
    <summary>
      Deprecated.
    </summary>
  </metric>
  <metric name="WasOmniboxNavigation" enum="Boolean">
    <summary>
      A boolean that is set to 1 if this page was entered into the omnibox,
      either manually or using autocomplete.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="WasVoiceSearchNavigation" enum="Boolean">
    <summary>
      A boolean that is set to 1 if this page was specifically requested and
      recognized by a voice search.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="XR.WebXR" singular="True">
  <owner>billorr@chromium.org</owner>
  <owner>xr-dev@chromium.org</owner>
  <summary>
    Records information about WebXR methods that were used in a single
    navigation. The event will be recorded as the WebXR functions are called -
    since the event is singular, the data that will eventualy be sent will
    contain a union of metrics that were set in an event.
  </summary>
  <metric name="DidGetGamepads">
    <obsolete>
      Deprecated in M75.
    </obsolete>
    <summary>
      Boolean value that indicates that the Gamepad API was used on a WebXR
      site.
    </summary>
  </metric>
  <metric name="DidGetXRInputSources" enum="Boolean">
    <summary>
      Boolean value that indicates that the WebXR input API was used.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="DidRequestAvailableDevices" enum="Boolean">
    <summary>
      Boolean value that indicates that the API to enumerate devices was called.
      This API is only exposed through WebVR.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="DidRequestPose" enum="Boolean">
    <summary>
      Boolean value that indicates that poses were requested.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="DidRequestPresentation" enum="Boolean">
    <summary>
      Boolean value that indicates that presentation was requested.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="DidUseNavigatorXR" enum="Boolean">
    <summary>
      Boolean value that indicates that the WebXR Device API was used.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="ReturnedDevice" enum="Boolean">
    <summary>
      Boolean value that indicates that a device was returned by the API to
      enumerate devices. This API is only exposed through WebVR.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="ReturnedPresentationCapableDevice" enum="Boolean">
    <summary>
      Boolean value that indicates that a device was returned by the API to
      enumerate devices, and that the device supports presentation.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="XR.WebXR.PresentationSession">
  <obsolete>
    Deprecated 5/2019
  </obsolete>
  <owner>xr-dev@chromium.org</owner>
  <summary>
    Records data for a presentation session, where WebXR is running an exclusive
    presentation to some device.
  </summary>
  <metric name="Duration">
    <summary>
      The approximate amount of time the user spends in presentation in seconds.
      Times are reported accurately when low, for example, under a minute, and
      get rounded to minutes and then hours as they get larger. This is done by
      SessionTracker::GetRoundedDurationInSeconds.
    </summary>
  </metric>
  <metric name="StartAction">
    <summary>
      An enum value to track specifically how the user got into XR presentation.
      See `vr::PresentationStartAction` for enum type declaration. 0: Other,
      catch all. 1: RequestFrom2DBrowsing, the page requested presentation while
      Chrome was in 2D mode. 2: RequestFromVRBrowsing, the page requested
      presentation while Chrome was in VR browsing mode. 3: HeadsetActivation,
      the user activated the VR headset while in 2D browsing on the page, which
      listens for headset activations to request presentation. 4: DeepLinkedApp
      (Obsolete), The page was launched in Chrome from the VR system home (e.g.,
      Daydream Home) and requested presentation.
    </summary>
  </metric>
</event>

<event name="XR.WebXR.Session">
  <owner>billorr@chromium.org</owner>
  <owner>bialpio@chromium.org</owner>
  <owner>xr-dev@chromium.org</owner>
  <owner>cassew@google.com</owner>
  <summary>
    When session ends, records data for a WebXR / WebVR session.
  </summary>
  <metric name="Duration">
    <summary>
      The approximate amount of time (in seconds) that elapsed from session
      creation to session end. Times are reported accurately when low, for
      example, under a minute, and get rounded to minutes and then hours as they
      get larger. This is done by SessionTracker::GetRoundedDurationInSeconds.
      For inline sessions, this might get pretty large.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <quantiles type="std-percentiles"/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="FeatureRequest.BoundedFloor" enum="XRFeatureRequestStatus">
    <summary>
      State of the 'bounded-floor' feature request.
    </summary>
  </metric>
  <metric name="FeatureRequest.Local" enum="XRFeatureRequestStatus">
    <summary>
      State of the 'local' feature request.
    </summary>
  </metric>
  <metric name="FeatureRequest.LocalFloor" enum="XRFeatureRequestStatus">
    <summary>
      State of the 'local-floor' feature request.
    </summary>
  </metric>
  <metric name="FeatureRequest.Unbounded" enum="XRFeatureRequestStatus">
    <summary>
      State of the 'unbounded' feature request.
    </summary>
  </metric>
  <metric name="FeatureRequest.Viewer" enum="XRFeatureRequestStatus">
    <summary>
      State of the 'viewer' feature request.
    </summary>
  </metric>
  <metric name="FeatureUse.BoundedFloor" enum="Boolean">
    <summary>
      Whether the 'bounded-floor' feature was used during this session,
      regardless of whether it was used successfully.
    </summary>
  </metric>
  <metric name="FeatureUse.Local" enum="Boolean">
    <summary>
      Whether the 'local' feature was used during this session, regardless of
      whether it was used successfully.
    </summary>
  </metric>
  <metric name="FeatureUse.LocalFloor" enum="Boolean">
    <summary>
      Whether the 'local-floor' feature was used during this session, regardless
      of whether it was used successfully.
    </summary>
  </metric>
  <metric name="FeatureUse.Unbounded" enum="Boolean">
    <summary>
      Whether the 'unbounded' feature was used during this session, regardless
      of whether it was used successfully.
    </summary>
  </metric>
  <metric name="FeatureUse.Viewer" enum="Boolean">
    <summary>
      Whether the 'viewer' feature was used during this session, regardless of
      whether it was used successfully.
    </summary>
  </metric>
  <metric name="IsLegacyWebVR" enum="Boolean">
    <obsolete>
      Removed 2/2020
    </obsolete>
    <summary>
      Boolean value indicating whether a session was created using the legacy
      WebVR API rather than WebXR.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Mode" enum="XRSessionMode">
    <summary>
      An enum value specifying WebXR session's mode. See `device::SessionMode`
      for enum type declaration. 0: Unknown, catch all. 1: Inline session. 2:
      Immersive VR session. 3: Immersive AR session.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

<event name="XR.WebXR.SessionRequest">
  <owner>xr-dev@chromium.org</owner>
  <owner>cassew@google.com</owner>
  <summary>
    Recorded when promise returned by `requestSession` gets resolved / rejected.
  </summary>
  <metric name="Feature.BoundedFloor" enum="XRFeatureRequestStatus">
    <summary>
      State of the 'bounded-floor' feature request.
    </summary>
  </metric>
  <metric name="Feature.Local" enum="XRFeatureRequestStatus">
    <summary>
      State of the 'local' feature request.
    </summary>
  </metric>
  <metric name="Feature.LocalFloor" enum="XRFeatureRequestStatus">
    <summary>
      State of the 'local-floor' feature request.
    </summary>
  </metric>
  <metric name="Feature.Unbounded" enum="XRFeatureRequestStatus">
    <summary>
      State of the 'unbounded' feature request.
    </summary>
  </metric>
  <metric name="Feature.Viewer" enum="XRFeatureRequestStatus">
    <summary>
      State of the 'viewer' feature request.
    </summary>
  </metric>
  <metric name="Mode" enum="XRSessionMode">
    <summary>
      An enum value that indicates that the `requestSession` API was called to
      request session with this mode. See `device::SessionMode` for enum type
      declaration. 0: Unknown, catch all. 1: Inline session was requested. 2:
      Immersive VR session was requested. 3: Immersive AR session was requested.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
  <metric name="Status" enum="XRSessionRequestStatus">
    <summary>
      An enum value that describes the result of the call to `requestSession`
      method. See `` for enum type declaration. 0: Success. 1: Other failure.
    </summary>
    <aggregation>
      <history>
        <statistics>
          <enumeration/>
        </statistics>
      </history>
    </aggregation>
  </metric>
</event>

</ukm-configuration>
