<!--
Copyright 2021 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 content creation
histograms along with a detailed description for each histogram. It includes
histograms for the following features:
  - Shared Highlighting
  - Note Creation

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

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

<histogram-configuration>

<histograms>

<variants name="TextFragmentSource">
<!-- Should be synced with TextFragmentLinkOpenSource in enums.xml. -->

  <variant name=".SearchEngine" summary="the default search engine."/>
  <variant name=".Unknown" summary="unknown but not the default search engine"/>
</variants>

<histogram name="NoteCreation.CreationStatus" enum="BooleanCreated"
    expires_after="2023-09-17">
  <owner>sebsg@chromium.org</owner>
  <owner>chrome-creation@google.com</owner>
  <summary>
    Records whether user created a note when they were in the creation flow of
    the feature.
  </summary>
</histogram>

<histogram name="NoteCreation.Funnel" enum="NoteCreationFunnel"
    expires_after="2023-09-03">
  <owner>sebsg@chromium.org</owner>
  <owner>chrome-creation@google.com</owner>
  <summary>
    Records the different states of the funnel that a user goes through in the
    note creation feature.
  </summary>
</histogram>

<histogram name="NoteCreation.NoteShared" enum="BooleanShared"
    expires_after="2023-06-25">
  <owner>sebsg@chromium.org</owner>
  <owner>chrome-creation@google.com</owner>
  <summary>Records whether the created note was shared or not.</summary>
</histogram>

<histogram name="NoteCreation.NumberOfTemplateChanges"
    units="Number of changes" expires_after="2023-06-25">
  <owner>sebsg@chromium.org</owner>
  <owner>chrome-creation@google.com</owner>
  <summary>
    Records the number of times the user changed templates when creating a note.
  </summary>
</histogram>

<histogram name="NoteCreation.SelectedDynamicTemplateID" units="count"
    expires_after="2023-04-23">
  <obsolete>
    Removed 2023-03
  </obsolete>
  <owner>graysonlafleur@google.com</owner>
  <owner>chrome-creation@google.com</owner>
  <summary>
    Records the ID of the template selected. Recorded only for dynamic templates
    while NoteCreation.SelectedTemplate records selected template based on an
    enum of hardcoded template IDs. This will replace
    NoteCreation.SelectedTemplate.
  </summary>
</histogram>

<histogram name="NoteCreation.SelectedDynamicTemplateIndex" units="count"
    expires_after="2023-04-23">
  <obsolete>
    Removed 2023-03
  </obsolete>
  <owner>graysonlafleur@google.com</owner>
  <owner>chrome-creation@google.com</owner>
  <summary>
    Records the index of the template selected. Recorded only for dynamic
    templates. Since we will no longer use an enum of template IDs, we will also
    record the index of the template the user selects so that we can detect
    where exactly the template was in the carousel.
  </summary>
</histogram>

<histogram name="NoteCreation.SelectedTemplate" enum="NoteTemplate"
    expires_after="2023-09-17">
  <owner>sebsg@chromium.org</owner>
  <owner>chrome-creation@google.com</owner>
  <summary>
    Records which template the user selected when creating their note.
  </summary>
</histogram>

<histogram name="NoteCreation.ShareDestination" enum="NoteShareDestination"
    expires_after="2023-06-25">
  <owner>sebsg@chromium.org</owner>
  <owner>chrome-creation@google.com</owner>
  <summary>
    Records the destination type (first or third party) for the shared note.
  </summary>
</histogram>

<histogram name="NoteCreation.TimeTo{action}" units="ms"
    expires_after="2023-06-25">
  <owner>sebsg@chromium.org</owner>
  <owner>chrome-creation@google.com</owner>
  <summary>
    Records the amount of time taken to accomplish {action} from the time the
    creation flow was started.
  </summary>
  <token key="action">
    <variant name=".DismissCreationDialog"
        summary="The user dismissed the creation dialog."/>
    <variant name=".DismissShare"
        summary="The user dismissed the sharing dialog for their newly
                 created note."/>
    <variant name=".SelectTemplate"
        summary="The user selected a template for their note, completing the
                 creation flow."/>
    <variant name=".ShareCreation"
        summary="The user shared their newly created note."/>
  </token>
</histogram>

<histogram name="SharedHighlights.AndroidShareSheet.SharedState"
    enum="LinkGenerationSharedStatus" expires_after="2023-08-27">
  <owner>sebsg@chromium.org</owner>
  <owner>jeffreycohen@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <summary>
    Records the status of the link generation when a user shares content using
    the feature on Android.
  </summary>
</histogram>

<histogram name="SharedHighlights.AsyncTask.Iterations" units="iterations"
    expires_after="2023-01-01">
  <owner>jeffreycohen@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <summary>
    Indicates number of iterations it took for AsyncFindBuffer to finish the
    search. AsyncFindBuffer is used only for validating generated text fragment
    selectors for Shared Highlighting.
  </summary>
</histogram>

<histogram name="SharedHighlights.AsyncTask.SearchDuration" units="ms"
    expires_after="2023-01-22">
  <owner>jeffreycohen@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <summary>
    Time it took in milliseconds for AsyncFindBuffer to finish the search.
    AsyncFindBuffer is used only for validating generated text fragment
    selectors for Shared Highlighting.
  </summary>
</histogram>

<histogram name="SharedHighlights.Desktop.CopiedLinkType"
    enum="LinkGenerationCopiedLinkType" expires_after="2023-09-10">
  <owner>sebsg@chromium.org</owner>
  <owner>jeffreycohen@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <summary>
    Records the type of shared highlighting link the user copied on desktop.
  </summary>
</histogram>

<histogram name="SharedHighlights.LinkGenerated.Error"
    enum="LinkGenerationError" expires_after="2023-10-22">
  <owner>jeffreycohen@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <summary>
    Records errors that caused text fragment selector generation to fail.
    Recorded for all the failed link generation runs. This histogram is a
    superset of |SharedHighlights.LinkGenerated.Error.Requested|.
  </summary>
</histogram>

<histogram name="SharedHighlights.LinkGenerated.Error.Iterations"
    units="iterations" expires_after="2023-01-15">
  <owner>jeffreycohen@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <summary>
    Indicates number of iterations it took for the unsuccessful text fragment
    selector generation run.
  </summary>
</histogram>

<histogram name="SharedHighlights.LinkGenerated.Error.Requested"
    enum="LinkGenerationError" expires_after="2023-08-27">
  <owner>jeffreycohen@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <summary>
    Records errors that caused text fragment selector generation to fail.
    Recorded only for failure cases that were requested by users.
  </summary>
</histogram>

<histogram name="SharedHighlights.LinkGenerated.Error.TimeToGenerate"
    units="ms" expires_after="2023-04-23">
  <owner>jeffreycohen@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <summary>
    Time it took in millisecons for a failed text fragment selector generation
    attempt.
  </summary>
</histogram>

<histogram name="SharedHighlights.LinkGenerated.Iterations" units="iterations"
    expires_after="2022-12-25">
  <owner>jeffreycohen@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <summary>
    Indicates number of iterations it took to successfully generate text
    fragment selector.
  </summary>
</histogram>

<histogram name="SharedHighlights.LinkGenerated.ParamLength" units="characters"
    expires_after="2022-12-18">
  <owner>jeffreycohen@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <summary>
    Number of charaters in successfully generated text fragment selector. For
    example, for #:=:text=sample%20text, it would be the
    len(&quot;sample%20text&quot;) which is 13. Recorded only when selector
    generation was successful.
  </summary>
</histogram>

<histogram name="SharedHighlights.LinkGenerated.SelectionLength"
    units="characters" expires_after="2022-08-24">
  <owner>jeffreycohen@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <summary>
    Number of characters in the user selected text, that text fragment selector
    is generated for. Recorded regardless of generation success.
  </summary>
</histogram>

<histogram name="SharedHighlights.LinkGenerated.SelectorParameters"
    enum="TextFragmentAnchorParameters" expires_after="2022-06-19">
  <owner>jeffreycohen@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <summary>
    Indicates which parameters were specified in a text fragment selector.
    Recorded only when selector generation was successful.
  </summary>
</histogram>

<histogram name="SharedHighlights.LinkGenerated.StateAtRequest"
    enum="LinkGenerationState" expires_after="2023-02-19">
  <owner>jeffreycohen@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <summary>
    Records the state of the link generation when link to text request is
    received from the browser process.
  </summary>
</histogram>

<histogram name="SharedHighlights.LinkGenerated.TimeToGenerate" units="ms"
    expires_after="2023-04-16">
  <owner>jeffreycohen@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <summary>
    How long it took in milliseconds to successfully generate text fragment
    selector.
  </summary>
</histogram>

<histogram name="SharedHighlights.LinkGenerated{Requested}"
    enum="BooleanSuccess" expires_after="2023-01-27">
  <owner>jeffreycohen@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <summary>
    Indicates whether text fragment selector generation was successful for
    {Requested}.
  </summary>
  <token key="Requested">
    <variant name="" summary="all generation cases"/>
    <variant name=".Requested"
        summary="all cases when generated selector is requested."/>
    <variant name=".RequestedAfterReady"
        summary="cases when selector is requested after its ready."/>
    <variant name=".RequestedBeforeReady"
        summary="cases when selector is requested before its ready."/>
  </token>
</histogram>

<histogram name="SharedHighlights.LinkToTextDiagnoseStatus"
    enum="LinkToTextDiagnoseStatus" expires_after="2023-02-26">
  <owner>jeffreycohen@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <summary>
    Records the status of link to text flow on Android for diagnostic purposes.
    Intended to be temporary for debug purposes.
  </summary>
</histogram>

<histogram name="SharedHighlights.ObtainReshareLink.Status"
    enum="LinkToTextReshareStatus" expires_after="2022-10-09">
  <owner>jeffreycohen@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <summary>
    Records if obtaining reshare link was successful. Otherwise, it records the
    failure reason.
  </summary>
</histogram>

<histogram name="TextFragmentAnchor.ElementIdFragmentFound" enum="Boolean"
    expires_after="2022-09-11">
  <obsolete>
    Removed 2022-05.
  </obsolete>
  <owner>bokan@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <summary>
    Whether an element-id based fragment was found in the document. Counted only
    when a fragment was specified and it wasn't parsed into a |targetText| style
    anchor.
  </summary>
</histogram>

<histogram name="TextFragmentAnchor.LinkOpenSource"
    enum="TextFragmentLinkOpenSource" expires_after="2023-09-03">
  <owner>jeffreycohen@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <summary>
    Recorded for every navigation to a link with a valid text fragment selector
    (e.g. #:=:text=SELECTOR). Indicates source type that navigation originated
    from. It only know about search engines that come from the pre-populated
    list installed with Chrome. If the user uses a search engine not on the
    list, it will be recorded as Unknown. This is even true if the user have a
    custom search engine. These custom search engines can be created by hand or
    auto-generated. In either case, it's not going to count as a search engine.
    Also, it only checks to see if the *referrer* is from a domain associated
    with search engine. If someone posts a link somewhere on a web site that
    happens to have a search engine known to Google and that links includes the
    fragment tokens, then if a user clicks that link, it'll look like it came
    from a search engine even thought they did not.
  </summary>
</histogram>

<histogram name="TextFragmentAnchor{TextFragmentSource}.AmbiguousMatch"
    enum="Boolean" expires_after="2023-06-30">
  <owner>bokan@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <summary>
    Whether we found multiple matches for a selector. Recorded when
    TextFragmentAnchor finishes searching once the page is loaded.

    Recorded from text fragment links followed from {TextFragmentSource}.
  </summary>
  <token key="TextFragmentSource" variants="TextFragmentSource"/>
</histogram>

<histogram name="TextFragmentAnchor{TextFragmentSource}.DidScrollIntoView"
    enum="Boolean" expires_after="2022-06-30">
  <obsolete>
    Removed 2022-05.
  </obsolete>
  <owner>bokan@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <summary>
    Whether the page did a non-zero scroll in order to scroll the match into
    view. Only recorded if we found a match and scrolled it into view. Recorded
    when TextFragmentAnchor finishes searching once the page is loaded.

    Recorded from text fragment links followed from {TextFragmentSource}.
  </summary>
  <token key="TextFragmentSource" variants="TextFragmentSource"/>
</histogram>

<histogram name="TextFragmentAnchor{TextFragmentSource}.DirectiveLength"
    units="characters" expires_after="2022-06-30">
  <obsolete>
    Removed 2022-05.
  </obsolete>
  <owner>bokan@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <summary>
    The raw length of the directive in the URL (e.g. spaces count as the three
    characters '%20'), regardless of how many text= terms there are. Recorded if
    there was a text directive, regardless of whether a match was found.
    Recorded when TextFragmentAnchor finishes searching once the page is loaded.

    Recorded from text fragment links followed from {TextFragmentSource}.
  </summary>
  <token key="TextFragmentSource" variants="TextFragmentSource"/>
</histogram>

<histogram name="TextFragmentAnchor{TextFragmentSource}.EndTextLength"
    units="characters" expires_after="2022-06-30">
  <obsolete>
    Removed 2022-05.
  </obsolete>
  <owner>bokan@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <summary>
    The length of the end parameter, in the case of a range match. Only recorded
    if a match was found. Recorded when TextFragmentAnchor finishes searching
    once the page is loaded.

    Recorded from text fragment links followed from {TextFragmentSource}.
  </summary>
  <token key="TextFragmentSource" variants="TextFragmentSource"/>
</histogram>

<histogram name="TextFragmentAnchor{TextFragmentSource}.ExactTextLength"
    units="characters" expires_after="2022-06-30">
  <obsolete>
    Removed 2022-05.
  </obsolete>
  <owner>bokan@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <summary>
    The length of the matched text, in the case of an exact match. Only recorded
    if a match was found. Recorded when TextFragmentAnchor finishes searching
    once the page is loaded.

    Recorded from text fragment links followed from {TextFragmentSource}.
  </summary>
  <token key="TextFragmentSource" variants="TextFragmentSource"/>
</histogram>

<histogram name="TextFragmentAnchor{TextFragmentSource}.ListItemMatch"
    enum="Boolean" expires_after="2022-06-30">
  <obsolete>
    Removed 2022-05.
  </obsolete>
  <owner>bokan@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <summary>
    Whether the match was within a list item. Only recorded for exact text
    fragments and only if a match was found. Recorded when TextFragmentAnchor
    finishes searching once the page is loaded.

    Recorded from text fragment links followed from {TextFragmentSource}.
  </summary>
  <token key="TextFragmentSource" variants="TextFragmentSource"/>
</histogram>

<histogram name="TextFragmentAnchor{TextFragmentSource}.MatchRate" units="%"
    expires_after="2023-06-30">
  <owner>bokan@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <summary>
    The percentage of selectors for which a match was found in the document.
    Recorded when TextFragmentAnchor finishes searching once the page is loaded.

    Recorded from text fragment links followed from {TextFragmentSource}.
  </summary>
  <token key="TextFragmentSource" variants="TextFragmentSource"/>
</histogram>

<histogram name="TextFragmentAnchor{TextFragmentSource}.Parameters"
    enum="TextFragmentAnchorParameters" expires_after="2022-06-30">
  <obsolete>
    Removed 2022-05.
  </obsolete>
  <owner>bokan@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <summary>
    An enum indicating which parameters were specified in the text fragment
    anchor. Only recorded if a match was found. Recorded when TextFragmentAnchor
    finishes searching once the page is loaded.

    Recorded from text fragment links followed from {TextFragmentSource}.
  </summary>
  <token key="TextFragmentSource" variants="TextFragmentSource"/>
</histogram>

<histogram name="TextFragmentAnchor{TextFragmentSource}.RangeMatchLength"
    units="characters" expires_after="2022-06-30">
  <obsolete>
    Removed 2022-05.
  </obsolete>
  <owner>bokan@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <summary>
    The length of the matched text, in the case of a range match. Only recorded
    if a match was found. Recorded when TextFragmentAnchor finishes searching
    once the page is loaded.

    Recorded from text fragment links followed from {TextFragmentSource}.
  </summary>
  <token key="TextFragmentSource" variants="TextFragmentSource"/>
</histogram>

<histogram name="TextFragmentAnchor{TextFragmentSource}.ScrollCancelled"
    enum="Boolean" expires_after="2022-06-30">
  <obsolete>
    Removed 2022-05.
  </obsolete>
  <owner>bokan@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <summary>
    Whether the scroll into view was cancelled by a user gesture or programmatic
    scroll. Recorded when TextFragmentAnchor finishes searching once the page is
    loaded.

    Recorded from text fragment links followed from {TextFragmentSource}.
  </summary>
  <token key="TextFragmentSource" variants="TextFragmentSource"/>
</histogram>

<histogram name="TextFragmentAnchor{TextFragmentSource}.SelectorCount"
    units="selectors" expires_after="2022-06-30">
  <obsolete>
    Removed 2022-05.
  </obsolete>
  <owner>bokan@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <summary>
    The number of selectors in the text fragment anchor if it is present.
    Recorded when TextFragmentAnchor finishes searching once the page is loaded.

    Recorded from text fragment links followed from {TextFragmentSource}.
  </summary>
  <token key="TextFragmentSource" variants="TextFragmentSource"/>
</histogram>

<histogram name="TextFragmentAnchor{TextFragmentSource}.SpansMultipleBlocks"
    enum="Boolean" expires_after="2022-06-30">
  <obsolete>
    Removed 2022-05.
  </obsolete>
  <owner>bokan@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <owner>input-dev@chromium.org</owner>
  <summary>
    Whether or not a range-based text fragment match crosses any block
    boundaries. That is, the start and end of the range are in different blocks
    or in the same block but contain an intervening block. Only recorded for
    range-based (start,end) text fragments. Only recorded on successful match.

    Recorded from text fragment links followed from {TextFragmentSource}.
  </summary>
  <token key="TextFragmentSource" variants="TextFragmentSource"/>
</histogram>

<histogram name="TextFragmentAnchor{TextFragmentSource}.StartTextLength"
    units="characters" expires_after="2022-06-30">
  <obsolete>
    Removed 2022-05.
  </obsolete>
  <owner>bokan@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <summary>
    The length of the start parameter, in the case of a range match. Only
    recorded if a match was found. Recorded when TextFragmentAnchor finishes
    searching once the page is loaded.

    Recorded from text fragment links followed from {TextFragmentSource}.
  </summary>
  <token key="TextFragmentSource" variants="TextFragmentSource"/>
</histogram>

<histogram name="TextFragmentAnchor{TextFragmentSource}.TableCellMatch"
    enum="Boolean" expires_after="2022-06-30">
  <obsolete>
    Removed 2022-05.
  </obsolete>
  <owner>bokan@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <summary>
    Whether the match was within a table cell. Only recorded for exact text
    fragments and only if a match was found. Recorded when TextFragmentAnchor
    finishes searching once the page is loaded.

    Recorded from text fragment links followed from {TextFragmentSource}.
  </summary>
  <token key="TextFragmentSource" variants="TextFragmentSource"/>
</histogram>

<histogram name="TextFragmentAnchor{TextFragmentSource}.TimeToScrollIntoView"
    units="ms" expires_after="2023-06-30">
  <owner>bokan@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <summary>
    The time between creating the TextFragmentAnchor (i.e. when it is parsed)
    and scrolling the target into view. Only recorded if there is a match and we
    tried to scroll it into view (it may already have been in view). Recorded
    when TextFragmentAnchor finishes searching once the page is loaded.

    Recorded from text fragment links followed from {TextFragmentSource}.
  </summary>
  <token key="TextFragmentSource" variants="TextFragmentSource"/>
</histogram>

<histogram name="TextFragmentAnchor{TextFragmentSource}.TimeToScrollToTop"
    units="ms" expires_after="2022-06-30">
  <obsolete>
    Removed 2022-05.
  </obsolete>
  <owner>bokan@chromium.org</owner>
  <owner>chrome-shared-highlighting@google.com</owner>
  <summary>
    The time between scrolling a match into view and the user scrolling back to
    the top of the page. Used as a signal for whether a match was useful. Only
    recorded if a match is scrolled into view and the user subsequently scrolled
    back to the top of the page. Recorded when TextFragmentAnchor finishes
    searching once the page is loaded.

    Recorded from text fragment links followed from {TextFragmentSource}.
  </summary>
  <token key="TextFragmentSource" variants="TextFragmentSource"/>
</histogram>

</histograms>

</histogram-configuration>
