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

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

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

<histogram-configuration>

<histograms>

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

<variants name="ApiRequestType">
  <variant name="ActivateTab"/>
  <variant name="ActivateTabWithUrl"/>
  <variant name="AttachPanel"/>
  <variant name="AutofillSuggestionDialogOnFormConfirmed"/>
  <variant name="AutofillSuggestionDialogOnFormPresented"/>
  <variant name="AutofillSuggestionDialogOnFormPreviewChanged"/>
  <variant name="CancelActions"/>
  <variant name="CaptureScreenshot"/>
  <variant name="ClosePanel"/>
  <variant name="ClosePanelAndShutdown"/>
  <variant name="CreateActorTab"/>
  <variant name="CreateSkill"/>
  <variant name="CreateTab"/>
  <variant name="CreateTask"/>
  <variant name="DeleteCapturedRegion"/>
  <variant name="DetachPanel"/>
  <variant name="DropScrollToHighlight"/>
  <variant name="EnableDragResize"/>
  <variant name="GetContextForActorFromTab"/>
  <variant name="GetContextFromFocusedTab"/>
  <variant name="GetContextFromTab"/>
  <variant name="GetImageBytesFromTab"/>
  <variant name="GetModelQualityClientId"/>
  <variant name="GetOsMicrophonePermissionStatus"/>
  <variant name="GetSkill"/>
  <variant name="GetUserProfileInfo"/>
  <variant name="GetZeroStateSuggestionsForFocusedTab"/>
  <variant name="InterruptActorTask"/>
  <variant name="JournalClear"/>
  <variant name="JournalRecordFeedback"/>
  <variant name="JournalSnapshot"/>
  <variant name="JournalStart"/>
  <variant name="JournalStop"/>
  <variant name="LogBeginAsyncEvent"/>
  <variant name="LogEndAsyncEvent"/>
  <variant name="LogInstantEvent"/>
  <variant name="MaybeRefreshUserStatus"/>
  <variant name="OnActionSubmitted"/>
  <variant name="OnClosedCaptionsShown"/>
  <variant name="OnContextUploadCompleted"/>
  <variant name="OnContextUploadStarted"/>
  <variant name="OnExperimentalTriggeringUpdate"/>
  <variant name="OnMicrophoneStatusChange"/>
  <variant name="OnModeChange"/>
  <variant name="OnOptinImpression"/>
  <variant name="OnReaction"/>
  <variant name="OnResponseRated"/>
  <variant name="OnResponseStarted"/>
  <variant name="OnResponseStopped"/>
  <variant name="OnSessionTerminated"/>
  <variant name="OnTurnCompleted"/>
  <variant name="OnUserInputSubmitted"/>
  <variant name="OpenGlicSettingsPage"/>
  <variant name="OpenOsPermissionSettingsMenu"/>
  <variant name="OpenPasswordManagerSettingsPage"/>
  <variant name="OpenPinnedTabPicker"/>
  <variant name="PauseActorTask"/>
  <variant name="PerformActions"/>
  <variant name="PinTabs"/>
  <variant name="ProcessCounterAbuseVerdict"/>
  <variant name="RecordSkillsWebClientEvent"/>
  <variant name="RefreshSignInCookies"/>
  <variant name="RegisterConversation"/>
  <variant name="ResizeWindow"/>
  <variant name="ResumeActorTask"/>
  <variant name="ScrollTo"/>
  <variant name="SetActuationOnWebSetting"/>
  <variant name="SetAudioDucking"/>
  <variant name="SetClosedCaptioningSetting"/>
  <variant name="SetContextAccessIndicator"/>
  <variant name="SetLocationPermissionState"/>
  <variant name="SetMaximumNumberOfPinnedTabs"/>
  <variant name="SetMicrophonePermissionState"/>
  <variant name="SetMinimumWidgetSize"/>
  <variant name="SetOnboardingCompleted"/>
  <variant name="SetSyntheticExperimentState"/>
  <variant name="SetTabContextPermissionState"/>
  <variant name="ShowBrowseSkillsUi"/>
  <variant name="ShowManageSkillsUi"/>
  <variant name="ShowProfilePicker"/>
  <variant name="StopActorTask"/>
  <variant name="SubscribeToCaptureRegion"/>
  <variant name="SubscribeToPageMetadata"/>
  <variant name="SubscribeToPinCandidates"/>
  <variant name="SubscribeToTabData"/>
  <variant name="SubscribeToTabFavicon"/>
  <variant name="SubscribeToZoomLevel"/>
  <variant name="SwitchConversation"/>
  <variant name="UninterruptActorTask"/>
  <variant name="UnpinAllTabs"/>
  <variant name="UnpinTabs"/>
  <variant name="UnsubscribeFromZoomLevel"/>
  <variant name="UpdateActorTaskStepProgress"/>
  <variant name="UpdateSkill"/>
  <variant name="WebClientCreated"/>
  <variant name="WebClientInitialized"/>
</variants>

<!-- LINT.ThenChange(//chrome/browser/resources/glic/glic_api_impl/request_types.ts:ApiRequestType) -->

<variants name="AttachedTabCount">
  <variant name="0" summary="0 tabs attached"/>
  <variant name="1" summary="1 tab attached"/>
  <variant name="2" summary="2 tabs attached"/>
  <variant name="3" summary="3 tabs attached"/>
  <variant name="4" summary="4 tabs attached"/>
  <variant name="5" summary="5 tabs attached"/>
  <variant name="6" summary="6 tabs attached"/>
  <variant name="7" summary="7 tabs attached"/>
  <variant name="8" summary="8 tabs attached"/>
  <variant name="9" summary="9 tabs attached"/>
  <variant name="10" summary="10 tabs attached"/>
  <variant name="MoreThan10" summary="More than 10 tabs attached"/>
</variants>

<variants name="Dimension">
  <variant name="Height" summary="height"/>
  <variant name="Width" summary="width"/>
</variants>

<variants name="EmbedderType">
  <variant name="Floaty" summary="a floating embedder"/>
  <variant name="SidePanel" summary="a side panel embedder"/>
  <variant name="Tab" summary="a tab embedder"/>
</variants>

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

<variants name="GlicInvocationSource">
  <variant name="ActorTaskIcon"/>
  <variant name="AfterSignIn"/>
  <variant name="AnchoredContextualCue"/>
  <variant name="Autofill"/>
  <variant name="AutoOpenedByContextualCue"/>
  <variant name="AutoOpenedForPdf"/>
  <variant name="CaptureRegionHotkey"/>
  <variant name="ConversationSwitch"/>
  <variant name="DaisyChainOnFollowLink"/>
  <variant name="DaisyChainOnNewTab"/>
  <variant name="DetachAttachButton"/>
  <variant name="ExperimentalTriggering"/>
  <variant name="Fre"/>
  <variant name="HandoffButton"/>
  <variant name="IndigoPageAction"/>
  <variant name="Iph"/>
  <variant name="NavigationCapture"/>
  <variant name="Nudge"/>
  <variant name="OsButton"/>
  <variant name="OsButtonMenu"/>
  <variant name="OsHotkey"/>
  <variant name="PasswordChange"/>
  <variant name="PdfSummarizeButton"/>
  <variant name="ProfilePicker"/>
  <variant name="PromotionPage"/>
  <variant name="ReshowInactive"/>
  <variant name="SharedImage"/>
  <variant name="SharedTab"/>
  <variant name="Skills"/>
  <variant name="TabContextMenu"/>
  <variant name="TabRestore"/>
  <variant name="TextSelectionNudge"/>
  <variant name="TextSelectionWidget"/>
  <variant name="ThreeDotsMenu"/>
  <variant name="ToolbarButton"/>
  <variant name="TopChromeButton"/>
  <variant name="UniversalCart"/>
  <variant name="Unsupported"/>
  <variant name="WebContentsContextMenu"/>
  <variant name="WebContinuity"/>
  <variant name="WebDragDrop"/>
  <variant name="WhatsNew"/>
  <variant name="ZeroStateAutoSummarize"/>
</variants>

<!-- LINT.ThenChange(//chrome/browser/glic/host/glic.mojom:InvocationSource) -->

<variants name="MemoryTriggerEvent">
  <variant name="CriticalPressure"
      summary="recorded upon critical memory pressure"/>
  <variant name="ModeratePressure"
      summary="recorded upon moderate memory pressure"/>
  <variant name="Periodic" summary="recorded periodically (every 30 minutes)"/>
</variants>

<variants name="PanelEvent">
  <variant name="OnClose" summary="the glic panel is closed."/>
  <variant name="OnOpen" summary="the glic panel is opened."/>
</variants>

<variants name="ProfileEnablementSuffix">
  <variant name="Startup"
      summary="recorded early in startup when the first window is opened."/>
  <variant name="SteadyState"
      summary="recorded periodically to provide a steady-state view."/>
</variants>

<variants name="Visibility">
  <variant name="Nonvisible"
      summary="the instance was not visible (e.g., pre-warmed) when the
               metric was recorded"/>
  <variant name="Visible"
      summary="the instance was visible when the metric was recorded"/>
</variants>

<variants name="WebClientMode">
  <variant name="Audio" summary="audio input mode"/>
  <variant name="Text" summary="text input mode"/>
  <variant name="Unknown" summary="an unknown mode"/>
</variants>

<variants name="WebClientModeWithAll">
  <variant name="All"/>
  <variant name="Audio"/>
  <variant name="Text"/>
</variants>

<histogram name="Glic.ActivateTabWithConversation.CandidateTabCount"
    units="tabs" expires_after="2027-06-01">
  <owner>weiguo@google.com</owner>
  <owner>chrome-synapse-team@google.com</owner>
  <summary>
    Records the number of candidate tabs (bound tabs or actor tabs) when trying
    to activate a conversation. Recorded when ActivateTabWithConversation is
    called.
  </summary>
</histogram>

<histogram name="Glic.Actor.EncryptedScreenshotUploadSuccess"
    enum="BooleanSuccess" expires_after="2027-05-30">
  <owner>weiguo@google.com</owner>
  <owner>qinmin@chromium.org</owner>
  <summary>
    Records whether uploading an RFC 8188 encrypted viewport screenshot from the
    Glic Web Client during actor actuation succeeded (valid file token returned)
    or failed (null or oversized token returned).
  </summary>
</histogram>

<histogram name="Glic.Actor.JournalEvent.{EventType}" units="ms"
    expires_after="2027-02-07">
  <owner>dtapuska@google.com</owner>
  <owner>erikchen@google.com</owner>
  <owner>chrome-synapse-team@google.com</owner>
  <summary>Recorded whenever a glic async journal event is ended.</summary>
  <token key="EventType">
    <variant name="Turn"/>
    <variant name="UploadContext"/>
    <variant name="UploadScreenshot"/>
  </token>
</histogram>

<histogram name="Glic.Actor.ManagedUserActuationEnabled" enum="BooleanEnabled"
    expires_after="2026-12-31">
  <owner>rosiey@google.com</owner>
  <owner>sauski@google.com</owner>
  <summary>
    Records the final computed enterprise policy state for Glic actuation.
    Emitted on every evaluation. Filter by &quot;Client Count&quot; to
    deduplicate.
  </summary>
</histogram>

<histogram name="Glic.AnimatedEffect.ShaderEmpty" enum="Boolean"
    expires_after="2027-02-17">
  <owner>iwells@chromium.org</owner>
  <summary>
    Recorded when the AnimatedEffectView fails to load a shader resource or the
    resource is empty. This indicates a failure to initialize the SkSL shader
    effect, leading to a fallback to a simpler non-shader effect.
  </summary>
</histogram>

<histogram name="Glic.Api.Client.ErrorDialogShown"
    enum="GlicClientErrorDialogType" expires_after="2027-04-24">
  <owner>carlosk@chromium.org</owner>
  <owner>harringtond@chromium.org</owner>
  <summary>
    Records when a client error dialog is shown, indicating the type of error.
    This may be recorded while the glic web client is in the background, and
    therefore, may or may not be seen by the user.
  </summary>
</histogram>

<histogram name="Glic.Api.Client.TransientError" enum="GoogleRpcCode"
    expires_after="2027-05-04">
  <owner>harringtond@chromium.org</owner>
  <owner>carlosk@chromium.org</owner>
  <summary>
    Records when the glic web client reports a transient error. These errors may
    be presented to the user, but may not prevent further use of Glic.
  </summary>
</histogram>

<histogram name="Glic.Api.GetImageBytesFromTab.Error"
    enum="GlicGetContextFromTabError" expires_after="2026-11-29">
  <owner>linnan@chromium.org</owner>
  <owner>shivanisha@chromium.org</owner>
  <summary>
    Records errors that occurred while attempting to retrieve image bytes from
    an arbitrary tab.
  </summary>
</histogram>

<histogram name="Glic.Api.NotifyPanelWillOpen" enum="GlicWebClientMode"
    expires_after="2027-02-07">
  <owner>carlosk@chromium.org</owner>
  <owner>harringtond@chromium.org</owner>
  <summary>
    Recorded whenever the glic web client returns from being notified that the
    panel will open. Records the active web client mode.
  </summary>
</histogram>

<histogram name="Glic.Api.ProcessCounterAbuseVerdict.Result"
    enum="GlicProcessCounterAbuseVerdictResult" expires_after="2027-06-01">
  <owner>skrakowi@google.com</owner>
  <owner>chrome-counter-abuse-alerts@google.com</owner>
  <summary>
    Records the outcome of processing a counter-abuse verdict in Glic. Recorded
    for each call to ProcessCounterAbuseVerdict, except when the feature is
    disabled, the tab/contents are not found, or the Safe Browsing service is
    unavailable.
  </summary>
</histogram>

<histogram name="Glic.Api.ProcessCounterAbuseVerdict.ThreatType"
    enum="GlicSbThreatType" expires_after="2027-06-01">
  <owner>skrakowi@google.com</owner>
  <owner>chrome-counter-abuse-alerts@google.com</owner>
  <summary>
    Records the threat type of the counter-abuse verdict when an interstitial is
    actually shown. Recorded after all filtering (URL matching,
    show_interstitial check, and allowlist check) has passed.
  </summary>
</histogram>

<histogram name="Glic.Api.RequestCounts.{ApiRequestType}"
    enum="GlicRequestEvent" expires_after="2027-02-07">
  <owner>carlosk@chromium.org</owner>
  <owner>harringtond@chromium.org</owner>
  <summary>
    Recorded whenever a glic API request event has occurred. See
    GlicRequestEvent.
  </summary>
  <token key="ApiRequestType" variants="ApiRequestType"/>
</histogram>

<histogram name="Glic.Api.RequestHostLatency.{ApiRequestType}" units="ms"
    expires_after="2027-02-07">
  <owner>carlosk@chromium.org</owner>
  <owner>harringtond@chromium.org</owner>
  <summary>
    Records the host-serving latency of glic API requests of type
    {ApiRequestType} (but only if that request returns a response). It tracks
    the time between the request being received by the host WebUI and the
    response being sent back to the web client, covering the entire time taken
    for the browser to process the request.
  </summary>
  <token key="ApiRequestType" variants="ApiRequestType"/>
</histogram>

<histogram name="Glic.Api.StatusCounts.Error" enum="GlicHostApiRequestType"
    expires_after="2027-02-07">
  <owner>carlosk@chromium.org</owner>
  <owner>harringtond@chromium.org</owner>
  <owner>birnie@google.com</owner>
  <summary>Recorded when a glic API fails with an exception.</summary>
</histogram>

<histogram name="Glic.Api.StatusCounts.Inactive" enum="GlicHostApiRequestType"
    expires_after="2027-01-24">
  <owner>carlosk@chromium.org</owner>
  <owner>harringtond@chromium.org</owner>
  <owner>birnie@google.com</owner>
  <summary>
    Recorded when a glic API is called while the client is not being shown.
    Reported regardless of whether the call was successful.
  </summary>
</histogram>

<histogram name="Glic.Api.StatusCounts.Received" enum="GlicHostApiRequestType"
    expires_after="2027-02-07">
  <owner>carlosk@chromium.org</owner>
  <owner>harringtond@chromium.org</owner>
  <owner>birnie@google.com</owner>
  <summary>
    Recorded when a glic API is called. Reported regardless of whether the call
    was successful.
  </summary>
</histogram>

<histogram name="Glic.Api.UseCounter" enum="GlicWebUseCounter"
    expires_after="2027-02-07">
  <owner>dtapuska@google.com</owner>
  <owner>kmg@google.com</owner>
  <owner>chrome-synapse-team@google.com</owner>
  <summary>
    Records a use counter histogram. Each sample represents a single
    RecordUseCounter call the front end has made.
  </summary>
</histogram>

<histogram name="Glic.Api.{TabContextOperation}.Error.{Mode}"
    enum="GlicGetContextFromTabError" expires_after="2027-02-07">
  <owner>carlosk@chromium.org</owner>
  <owner>harringtond@chromium.org</owner>
  <owner>birnie@google.com</owner>
  <owner>bokan@chromium.org</owner>
  <summary>
    Records errors that occurred while attempting to extract tab context using
    {TabContextOperation} while the web client was in {Mode}.
  </summary>
  <token key="TabContextOperation">
    <variant name="GetContextForActorFromTab"
        summary="GetContextForActorFromTab (context from an arbitrary tab for
                 an actor)"/>
    <variant name="GetContextFromFocusedTab"
        summary="GetContextFromFocusedTab (context from the focused tab)"/>
    <variant name="GetContextFromTab"
        summary="GetContextFromTab (context from an arbitrary tab)"/>
  </token>
  <token key="Mode" variants="WebClientMode"/>
</histogram>

<histogram name="Glic.Auth.CheckAuthBeforeLoadOutcome"
    enum="GlicCheckAuthBeforeLoadOutcome" expires_after="2027-04-27">
  <owner>harringtond@chromium.org</owner>
  <owner>carlosk@chromium.org</owner>
  <summary>
    Records the outcome of CheckAuthBeforeLoad in AuthController, indicating why
    cookie sync was skipped or attempted.
  </summary>
</histogram>

<histogram name="Glic.ChromeClient.MultiProfileSyntheticTrialConflictDetected"
    enum="BooleanEnabled" expires_after="2027-01-03">
  <owner>birnie@google.com</owner>
  <owner>carlosk@chromium.org</owner>
  <summary>
    Recorded when different Chrome profiles using glic attempt to register
    conflicting synthetic field trial groups in the same log file. This should
    only happen on multi profile installs that use glic on different profiles in
    quick succession. When analyzing metrics from a synthetic field trial this
    histogram will allow us to create custom queries to filter out users who may
    have contaminated logs from multiple profiles.
  </summary>
</histogram>

<histogram name="Glic.ConcurrentVisibility.Duration" units="ms"
    expires_after="2027-06-01">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the duration of a single period of Concurrent Visibility. Concurrent
    Visibility is defined as a continuous period of time where two or more Glic
    instances are visible simultaneously. Recorded when the number of visible
    instances drops below two.
  </summary>
</histogram>

<histogram name="Glic.ConcurrentVisibility.PeakCount" units="instances"
    expires_after="2027-06-01">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the maximum number of Glic instances that were visible
    simultaneously during a single period of Concurrent Visibility. Recorded
    when the period of Concurrent Visibility ends.
  </summary>
</histogram>

<histogram name="Glic.Contents.LoadCompleteTime" units="ms"
    expires_after="2027-01-03">
  <owner>acondor@google.com</owner>
  <owner>harringtond@google.com</owner>
  <summary>
    Measures the time it takes glic contents to load from the time the
    navigation commits.
  </summary>
</histogram>

<histogram name="Glic.Contents.NavigationCommitTime" units="ms"
    expires_after="2027-01-03">
  <owner>acondor@google.com</owner>
  <owner>harringtond@google.com</owner>
  <summary>
    Measures the time it takes from the Glic contents creation until the
    navigation commits.
  </summary>
</histogram>

<histogram name="Glic.CookieSynchronization.FailureByTrigger"
    enum="GlicCookieSyncTrigger" expires_after="2027-04-23">
  <owner>harringtond@chromium.org</owner>
  <owner>carlosk@chromium.org</owner>
  <summary>
    Records the trigger that initiated a failed cookie synchronization operation
    for Glic. Recorded when the multilogin operation completes with failure in
    OnAuthFinished, or when it times out in OnTimeout, for each trigger that
    requested a sync.
  </summary>
</histogram>

<histogram name="Glic.CookieSynchronization.Latency.Error" units="ms"
    expires_after="2027-04-23">
  <owner>harringtond@chromium.org</owner>
  <owner>carlosk@chromium.org</owner>
  <summary>
    Records the latency of the cookie synchronization operation for Glic when it
    fails or times out. Recorded when the multilogin operation completes with
    failure in OnAuthFinished or when it times out in OnTimeout.
  </summary>
</histogram>

<histogram name="Glic.CookieSynchronization.Latency.Success" units="ms"
    expires_after="2027-04-23">
  <owner>harringtond@chromium.org</owner>
  <owner>carlosk@chromium.org</owner>
  <summary>
    Records the latency of the cookie synchronization operation for Glic when it
    completes successfully. Recorded when the multilogin operation completes
    with success in OnAuthFinished.
  </summary>
</histogram>

<histogram name="Glic.CookieSynchronization.Result" enum="GlicCookieSyncResult"
    expires_after="2027-04-23">
  <owner>acondor@google.com</owner>
  <owner>harringtond@chromium.org</owner>
  <summary>
    Records the result of Glic cookie synchronization operation. Recorded when
    the operation completes with success or failure, or upon destruction when a
    sync is in progress.
  </summary>
</histogram>

<histogram name="Glic.CookieSynchronization.SuccessByTrigger"
    enum="GlicCookieSyncTrigger" expires_after="2027-04-23">
  <owner>harringtond@chromium.org</owner>
  <owner>carlosk@chromium.org</owner>
  <summary>
    Records the trigger that initiated a successful cookie synchronization
    operation for Glic. Recorded when the multilogin operation completes with
    success in OnAuthFinished, for each trigger that requested a sync.
  </summary>
</histogram>

<histogram name="Glic.CountryFilteringResult2" enum="GlicFilteringResult"
    expires_after="2026-11-29">
  <owner>harringtond@chromium.org</owner>
  <owner>carlosk@chromium.org</owner>
  <summary>
    Records the outcome of the country filtering check for Glic enablement.
    Recorded when GetCountryEnablement is called during profile enablement
    checks. Country enablement results use a custom caching strategy, so there
    will be less samples recorded than calls to
    GlicGlobalEnabling::IsCountryEnabled.
  </summary>
</histogram>

<histogram name="Glic.CUI.SubmitQuery.Latency{Outcome}" units="ms"
    expires_after="2027-06-15">
  <owner>dewittj@chromium.org</owner>
  <owner>glic@google.com</owner>
  <summary>
    Records the latency of submitting a query in Glic {Outcome}.
  </summary>
  <token key="Outcome">
    <variant name="" summary="regardless of the outcome"/>
    <variant name=".Abandoned"
        summary="when the interaction was abandoned by the user closing or
                 hiding the UI before the response started"/>
    <variant name=".Failed" summary="when the interaction failed"/>
    <variant name=".FailedLatency"
        summary="when the interaction succeeded but exceeded the latency
                 threshold"/>
    <variant name=".Success" summary="when the interaction succeeded"/>
  </token>
</histogram>

<histogram name="Glic.CUI.SubmitQuery.Outcome" enum="GlicCuiOutcome"
    expires_after="2027-06-15">
  <owner>dewittj@chromium.org</owner>
  <owner>glic@google.com</owner>
  <summary>Records the outcome of submitting a query in Glic.</summary>
</histogram>

<histogram name="Glic.CUI.WindowEntryPointInvocation.Latency{Outcome}"
    units="ms" expires_after="2027-06-15">
  <owner>dewittj@chromium.org</owner>
  <owner>glic@google.com</owner>
  <summary>
    Records the latency of invoking the Glic window entry point {Outcome}.
  </summary>
  <token key="Outcome">
    <variant name="" summary="regardless of the outcome"/>
    <variant name=".Abandoned"
        summary="when the invocation was abandoned by the user explicitly
                 closing the UI before it loaded"/>
    <variant name=".Failed" summary="when the invocation failed"/>
    <variant name=".FailedLatency"
        summary="when the invocation succeeded but exceeded the latency
                 threshold"/>
    <variant name=".Success" summary="when the invocation succeeded"/>
  </token>
</histogram>

<histogram name="Glic.CUI.WindowEntryPointInvocation.Outcome"
    enum="GlicCuiOutcome" expires_after="2027-06-15">
  <owner>dewittj@chromium.org</owner>
  <owner>glic@google.com</owner>
  <summary>
    Records the outcome of invoking the Glic window entry point.
  </summary>
</histogram>

<histogram name="Glic.DragAndDrop.ContentType"
    enum="GlicDragAndDropContentType" expires_after="2027-05-01">
  <owner>birnie@google.com</owner>
  <owner>glic-dev@google.com</owner>
  <summary>
    Logs the high level content type of dropped content when a web-to-Glic drop
    action occurs on the Glic panel. Helps identify what kinds of content
    formats users intend to drop.
  </summary>
</histogram>

<histogram name="Glic.DragAndDrop.ValidationResult"
    enum="GlicDragAndDropValidationResult" expires_after="2027-05-01">
  <owner>birnie@google.com</owner>
  <owner>glic-dev@google.com</owner>
  <summary>
    Tracks the validation and processing outcome of a web-to-Glic drop action,
    occurring before Glic invocation is initiated. Includes success (successful
    validation) and detailed parsing or environment validation errors. Note that
    only the first detected validation error is recorded.
  </summary>
</histogram>

<histogram name="Glic.EntryPoint.Click.{TabContext}"
    enum="GlicInvocationSource" expires_after="2027-05-30">
  <owner>haileywang@google.com</owner>
  <owner>wenyufu@google.com</owner>
  <summary>
    Recorded on Android when a user clicks on a Glic entry point (e.g., toolbar
    button or 3-dot menu). The recorded sample represents the source of the
    invocation. This metric is split by {TabContext} to distinguish whether the
    user was on the New Tab Page or another tab when they clicked the entry
    point.
  </summary>
  <token key="TabContext">
    <variant name="Ntp" summary="the New Tab Page"/>
    <variant name="Other" summary="any tab other than the New Tab Page"/>
  </token>
</histogram>

<histogram name="Glic.EntryPoint.Status" enum="GlicEntryPointStatus"
    expires_after="2027-01-31">
  <owner>sanaakbani@google.com</owner>
  <owner>iwells@google.com</owner>
  <summary>
    Recorded every 15 minutes, but only if the glic feature flag is enabled.
    This is a rough estimate of whether a user is seeing an impression of glic
    entry points. There are three entry points for glic: Tabstrip, OS, and
    Three-Dot. The entry points are only shown if a profile is eligible to use
    glic. The Three-Dot menu entry is always shown but the Tabstrip and OS
    entrypoints can be removed based on user configuration.
  </summary>
</histogram>

<histogram name="Glic.ExperimentalTriggering.IncomingMessageResult.{Channel}"
    enum="GlicExperimentalTriggeringIncomingMessageResult"
    expires_after="2027-07-21">
  <owner>nyquist@chromium.org</owner>
  <owner>qinmin@chromium.org</owner>
  <summary>
    Records the outcome or failure reason when an incoming Glic experimental
    triggering message received over {Channel} is processed by the client.
    Recorded each time a GlicExperimentalTriggering message is received on that
    channel.
  </summary>
  <token key="Channel">
    <variant name="BrowserActuatorTransport"
        summary="the browser_actuator transport layer"/>
    <variant name="SharingMessage" summary="the Sharing FCM message channel"/>
  </token>
</histogram>

<histogram name="Glic.ExperimentalTriggering.OptIn.Accepted.Version"
    enum="GlicRequiredExperimentalOptIn" expires_after="2027-05-18">
  <owner>sauski@google.com</owner>
  <owner>nyquist@chromium.org</owner>
  <summary>
    Records the version of Glic Experimental Opt-In dialog accepted by the user
    (Glic FRE, Actuation, or Experimental Triggering). Recorded when the user
    clicks the Accept button.
  </summary>
</histogram>

<histogram name="Glic.ExperimentalTriggering.OptIn.ErrorShown"
    enum="GlicExperimentalTriggeringErrorType" expires_after="2027-05-18">
  <owner>huanwu@chromium.org</owner>
  <owner>sauski@google.com</owner>
  <summary>
    Records the type of error shown to the user on the Glic Experimental
    Triggering Opt-In dialog. Recorded when the dialog transitions into an error
    state.
  </summary>
</histogram>

<histogram name="Glic.ExperimentalTriggering.OptIn.NoThanks.Version"
    enum="GlicRequiredExperimentalOptIn" expires_after="2027-05-18">
  <owner>sauski@google.com</owner>
  <owner>nyquist@chromium.org</owner>
  <summary>
    Records the version of Glic Experimental Opt-In dialog declined (No Thanks)
    by the user (Glic FRE, Actuation, or Experimental Triggering). Recorded when
    the user clicks the Reject/No Thanks button.
  </summary>
</histogram>

<histogram name="Glic.ExperimentalTriggering.OptIn.Shown.Version"
    enum="GlicRequiredExperimentalOptIn" expires_after="2027-05-18">
  <owner>sauski@google.com</owner>
  <owner>nyquist@chromium.org</owner>
  <summary>
    Records the version of Glic Experimental Opt-In dialog shown to the user
    (Glic FRE, Actuation, or Experimental Triggering). Recorded when the dialog
    is successfully shown.
  </summary>
</histogram>

<histogram name="Glic.ExperimentalTriggering.OptInDialog.ShowDuration"
    units="ms" expires_after="2027-05-19">
  <owner>sauski@google.com</owner>
  <owner>qinmin@chromium.org</owner>
  <summary>
    Records the total duration of time from when the Glic experimental
    triggering device opt-in dialog is opened until the user makes a decision or
    dismisses it, including time spent in the background.
  </summary>
</histogram>

<histogram name="Glic.ExperimentalTriggering.OptInDialog.VisibleDuration"
    units="ms" expires_after="2027-05-19">
  <owner>sauski@google.com</owner>
  <owner>qinmin@chromium.org</owner>
  <summary>
    Records the total visible duration of time that the Glic experimental
    triggering device opt-in dialog is actively shown to the user before they
    make a decision or dismiss it. Excludes time when the dialog's tab is in the
    background.
  </summary>
</histogram>

<histogram name="Glic.ExperimentalTriggering.StateOnActuationRequest"
    enum="GlicExperimentalTriggeringState" expires_after="2027-05-06">
  <owner>sauski@google.com</owner>
  <owner>qinmin@chromium.org</owner>
  <summary>
    Records the GlicExperimentalTriggeringState of the user when an experimental
    actuation request is received.
  </summary>
</histogram>

<histogram name="Glic.Focus.Settings.Shortcut.Customized" enum="BooleanEnabled"
    expires_after="2026-05-31">
  <owner>bryantchandler@chromium.org</owner>
  <owner>iwells@google.com</owner>
  <summary>
    After the user modifies the glic focus shortcut, logs a boolean that
    reflects whether a shortcut is set.

    Note: When setting a shortcut, 'disabled' will always be logged, then
    'enabled'. This is because the edit process first clears the existing value.
    If the shortcut is cleared, only a single 'disabled' log entry is generated.
  </summary>
</histogram>

<histogram name="Glic.Fre.Accept.FlowSource" enum="GlicOptInFlowSource"
    expires_after="2027-05-18">
  <owner>sauski@google.com</owner>
  <owner>perrier@chromium.org</owner>
  <summary>
    Records the onboarding flow source where the user accepted Glic opt-in.
  </summary>
</histogram>

<histogram name="Glic.Fre.Accept.InvocationSource" enum="GlicInvocationSource"
    expires_after="2027-02-07">
  <owner>erikchen@chromium.org</owner>
  <owner>wry@chromium.org</owner>
  <summary>
    Records the invocation source used to trigger the opening of the glic panel
    that led to the user accepting the Trust-First Onboarding. Recorded when the
    user accepts the Trust-First Onboarding.
  </summary>
</histogram>

<histogram name="Glic.Fre.Dismissed.FlowSource" enum="GlicOptInFlowSource"
    expires_after="2027-05-18">
  <owner>sauski@google.com</owner>
  <owner>perrier@chromium.org</owner>
  <summary>
    Records the onboarding flow source where the user dismissed Glic opt-in.
  </summary>
</histogram>

<histogram name="Glic.Fre.Dismissed.InvocationSource"
    enum="GlicInvocationSource" expires_after="2027-02-07">
  <owner>erikchen@chromium.org</owner>
  <owner>wry@chromium.org</owner>
  <summary>
    Records the invocation source used to trigger the opening of the glic panel
    that led to the user dismissing the Trust-First Onboarding. Recorded when
    the user dismisses the Trust-First Onboarding.
  </summary>
</histogram>

<histogram name="Glic.Fre.NoThanks.FlowSource" enum="GlicOptInFlowSource"
    expires_after="2027-05-18">
  <owner>sauski@google.com</owner>
  <owner>perrier@chromium.org</owner>
  <summary>
    Records the onboarding flow source where the user explicitly rejected Glic
    opt-in.
  </summary>
</histogram>

<histogram name="Glic.Fre.PanelWebUiState" enum="WebUiState"
    expires_after="2027-06-25">
  <owner>sanaakbani@google.com</owner>
  <owner>glic-dev@google.com</owner>
  <summary>
    Record the panel webui state any time it changes, but only when in the
    unconsented state.
  </summary>
</histogram>

<histogram name="Glic.Fre.PanelWebUiState.Error"
    enum="PanelWebUiStateErrorReason" expires_after="2027-06-25">
  <owner>sanaakbani@google.com</owner>
  <owner>glic-dev@google.com</owner>
  <summary>
    Records the reason the WebUi entered the error state, but only when in the
    unconsented state. Recorded just before the WebUI enters the error state.
  </summary>
</histogram>

<histogram name="Glic.Fre.PanelWebUiState.FinishState" enum="WebUiState"
    expires_after="2027-06-25">
  <owner>sanaakbani@google.com</owner>
  <owner>glic-dev@google.com</owner>
  <summary>
    Record the current state when the panel is closed, but only when in the
    unconsented state.
  </summary>
</histogram>

<histogram name="Glic.Fre.Shown.FlowSource" enum="GlicOptInFlowSource"
    expires_after="2027-05-18">
  <owner>sauski@google.com</owner>
  <owner>perrier@chromium.org</owner>
  <summary>
    Records the onboarding flow source where the user was shown the Glic opt-in.
  </summary>
</histogram>

<histogram name="Glic.Fre.Shown.InvocationSource" enum="GlicInvocationSource"
    expires_after="2027-02-07">
  <owner>erikchen@chromium.org</owner>
  <owner>wry@chromium.org</owner>
  <summary>
    Records the invocation source used to trigger the opening of the glic panel
    when the Trust-First Onboarding is shown. Recorded when the Trust-First
    Onboarding is shown.
  </summary>
</histogram>

<histogram name="Glic.Fre.TotalTime.Accepted.Onboarding" units="ms"
    expires_after="2027-02-07">
  <owner>tommasin@chromium.org</owner>
  <owner>zalmashni@google.com</owner>
  <summary>
    Records the time elapsed from when the Trust-First Onboarding flow (side
    panel) is first shown until the user accepts it (starts chat).
  </summary>
</histogram>

<histogram name="Glic.Fre.TotalTime.Dismissed.Onboarding" units="ms"
    expires_after="2027-02-07">
  <owner>tommasin@chromium.org</owner>
  <owner>zalmashni@google.com</owner>
  <summary>
    Records the time elapsed from when the Trust-First Onboarding flow (side
    panel) is first shown until it is dismissed by the user (e.g. closing the
    side panel).
  </summary>
</histogram>

<histogram name="Glic.Fre.UserInput.InvocationSource"
    enum="GlicInvocationSource" expires_after="2027-01-17">
  <owner>erikchen@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Recorded when user input is first submitted after completing the onboarding
    steps. Records the last invocation source used before user input is
    submitted.
  </summary>
</histogram>

<histogram name="Glic.FreToFirstQueryTime" units="ms"
    expires_after="2027-01-03">
  <owner>birnie@google.com</owner>
  <owner>cuianthony@google.com</owner>
  <summary>
    Records the time elapsed between the successful completion of the FRE and
    the first submitted query. This is logged only once per profile that
    accepted the FRE, when the user submits their first glic request (without
    restarting Chrome in between).
  </summary>
</histogram>

<histogram name="Glic.FreToFirstQueryTimeMax24H" units="ms"
    expires_after="2027-01-03">
  <owner>birnie@google.com</owner>
  <owner>cuianthony@google.com</owner>
  <summary>
    Records the time elapsed between the successful completion of the FRE and
    the first submitted query. This records the same information as
    Glic.FreToFirstQueryTime but here we have a max time bucket of 24 hours
    instead of 1 hour.
  </summary>
</histogram>

<histogram name="Glic.GlobalEnabling.FeatureDisabledReason.{Suffix}"
    enum="GlicFeatureDisabledReason" expires_after="2027-02-07">
  <owner>cuianthony@chromium.org</owner>
  <owner>glic@chromium.org</owner>
  <summary>
    Records specific reasons why the Glic feature is considered disabled. This
    provides a granular breakdown for clients that would otherwise simply report
    'Feature disabled' in Glic.ProfileEnablement.DisabledReason metrics.
    Multiple reasons may be recorded per client. This is {Suffix}.
  </summary>
  <token key="Suffix" variants="ProfileEnablementSuffix"/>
</histogram>

<histogram name="Glic.Host.LoadingStageDuration.{LoadingStage}" units="ms"
    expires_after="2027-01-31">
  <owner>iwells@chromium.org</owner>
  <owner>harringtond@chromium.org</owner>
  <summary>
    Records the amount of time a particular loading step took to complete.
    {LoadingStage}
  </summary>
<!-- LINT.IfChange(LoadingStage) -->

  <token key="LoadingStage">
    <variant name="AWAITING_COOKIE_SYNC"/>
    <variant name="AWAITING_NOTIFY_PANEL_WILL_OPEN"/>
    <variant name="AWAITING_PROFILE_READY"/>
    <variant name="LOADING_WEB_CLIENT"/>
  </token>
<!-- LINT.ThenChange(//chrome/browser/resources/glic/glic_app_controller.ts:LoadingStage) -->

</histogram>

<histogram name="Glic.Host.LoadingTimedOut" enum="LoadingStage"
    expires_after="2027-02-07">
  <owner>iwells@chromium.org</owner>
  <owner>harringtond@chromium.org</owner>
  <summary>
    Histogram that records which loading stage the glic host was in when loading
    timed out. Only recorded when loading fails due to timeout.
  </summary>
</histogram>

<histogram name="Glic.Host.OpenedInRegularTab" enum="Boolean"
    expires_after="2026-11-29">
  <owner>carlosk@chromium.org</owner>
  <owner>birnie@chromium.org</owner>
  <summary>
    Histogram that records whether the Glic WebUI is being opened in a regular
    browser tab (records true; expected for development purposes) instead of its
    expected container types (records false). Recorded when the web client is
    about to be notified about it being opened.
  </summary>
</histogram>

<histogram name="Glic.Host.WebClientState.{Event}"
    enum="GlicDetailedWebClientState" expires_after="2027-02-07">
  <owner>harringtond@chromium.org</owner>
  <owner>carlosk@chromium.org</owner>
  <summary>Records the web client state according to the host. {Event}</summary>
  <token key="Event">
    <variant name="AtOneMinute"
        summary="Recorded one minute after loading the webview."/>
    <variant name="OnCommit" summary="Recorded before commit on the webview."/>
    <variant name="OnDestroy"
        summary="Recorded before the webview is destroyed."/>
    <variant name="OnLoadTimeOut" summary="Recorded when loading times out."/>
  </token>
</histogram>

<histogram name="Glic.Host.WebClientUnresponsiveState"
    enum="WebClientUnresponsiveState" expires_after="2027-02-07">
  <owner>carlosk@chromium.org</owner>
  <owner>harringtond@chromium.org</owner>
  <summary>
    Tracks the detection of the web client being unresponsive and the respective
    state transitions into and out of the unresponsive state. Reported upon
    detection of unresponsiveness and unresposive state transitions.
  </summary>
</histogram>

<histogram name="Glic.Host.WebClientUnresponsiveState.Duration" units="ms"
    expires_after="2026-05-30">
  <owner>carlosk@chromium.org</owner>
  <owner>harringtond@chromium.org</owner>
  <summary>
    Records for how long the web client was kept in an unresponsive state.
    Recorded when the state is swtiching from unresponsive to any other
    supported state.
  </summary>
</histogram>

<histogram name="Glic.Host.WebView.AutoPlay" enum="WebViewAutoPlayProgress"
    expires_after="2026-08-09">
  <owner>carlosk@chromium.org</owner>
  <owner>dewittj@google.com</owner>
  <summary>
    Debug histogram that tracks the internal steps that lead to the granting of
    AutoPlay permissions to the renderer frame hosting Glic's embedded webview.
    Samples are recorded when their respective events take place.
  </summary>
</histogram>

<histogram name="Glic.Instance.AutoOpenedPanel.FirstAction.{Source}"
    enum="GlicDaisyChainFirstAction" expires_after="2026-12-31">
  <owner>birnie@google.com</owner>
  <owner>basiaz@google.com</owner>
  <summary>
    Records the first action that occurs on a tab that had side panel opened
    from various `Source`s. Recorded when a significant action occurs (tab
    closed, side panel closed, input submitted, conversation switched, daisy
    chain another tab) or records &quot;No Action&quot; when tab helper is
    destroyed before any action occurs. Only recorded for the source that
    triggered the opening.

    Tab switching and side panel closure are treated as ambiguous actions that
    trigger a 5-second timer before logging. This is to catch cases where a user
    switches tabs back and forth and then performs a more significant action
    like input submitted or conversation switched.

    This metric should eventually replace
    Glic.Instance.FirstActionInDaisyChainPanel.
  </summary>
<!-- LINT.IfChange(Source) -->

  <token key="Source">
    <variant name="ActorAddTab" summary="actor adding a new tab"/>
    <variant name="AutoOpenPdf" summary="auto-opened for a PDF"/>
    <variant name="Bookmark" summary="opening a bookmark in a new tab"/>
    <variant name="GlicContents" summary="clicking a link in the Glic panel"/>
    <variant name="LastActiveInstance"
        summary="last active instance was used when user triggered glic on an
                 unbound tab"/>
    <variant name="NewTab" summary="clicking a link that opens a new tab"/>
    <variant name="TabContents" summary="clicking a link in the main tab"/>
    <variant name="WebHandoff"
        summary="opened via navigation capture / web handoff"/>
  </token>
<!-- LINT.ThenChange(//chrome/browser/glic/service/metrics/metrics_types.h:DaisyChainSource) -->

</histogram>

<histogram name="Glic.Instance.AvgClientPrivateMemoryFootprint.{TriggerEvent}"
    units="MB" expires_after="2027-06-01">
  <owner>bryantchandler@google.com</owner>
  <owner>birnie@google.com</owner>
  <summary>
    Records the average private memory footprint of Client processes across all
    unhibernated Glic instances, {TriggerEvent}.
  </summary>
  <token key="TriggerEvent" variants="MemoryTriggerEvent"/>
</histogram>

<histogram name="Glic.Instance.AvgTotalPrivateMemoryFootprint.{TriggerEvent}"
    units="MB" expires_after="2027-06-01">
  <owner>bryantchandler@google.com</owner>
  <owner>birnie@google.com</owner>
  <summary>
    Records the average total private memory footprint of all processes across
    all unhibernated Glic instances, {TriggerEvent}.
  </summary>
  <token key="TriggerEvent" variants="MemoryTriggerEvent"/>
</histogram>

<histogram name="Glic.Instance.AvgWebUIPrivateMemoryFootprint.{TriggerEvent}"
    units="MB" expires_after="2027-06-01">
  <owner>bryantchandler@google.com</owner>
  <owner>birnie@google.com</owner>
  <summary>
    Records the average private memory footprint of WebUI processes across all
    unhibernated Glic instances, {TriggerEvent}.
  </summary>
  <token key="TriggerEvent" variants="MemoryTriggerEvent"/>
</histogram>

<histogram name="Glic.Instance.EventCounts" enum="GlicInstanceEvent"
    expires_after="2027-02-07">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records every event that happens during a Glic Instance's lifecycle. This
    histogram answers the question: What is the total number of times each event
    occurred across all Glic instances? An event is recorded each time it
    occurs.
  </summary>
</histogram>

<histogram name="Glic.Instance.Floaty.InitialMode" enum="GlicWebClientMode"
    expires_after="2027-02-07">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the initial mode (Text or Audio) when a Glic Floaty is shown.
    Recorded each time a Floaty instance is shown with a specified initial mode.
  </summary>
</histogram>

<histogram name="Glic.Instance.Floaty.OpenDuration" units="ms"
    expires_after="2027-02-07">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the duration that a Glic Floaty was open. Recorded each time a
    Floaty instance is closed.
  </summary>
</histogram>

<histogram name="Glic.Instance.Floaty.OpenSource" enum="GlicInvocationSource"
    expires_after="2027-02-07">
  <owner>basiaz@google.com</owner>
  <owner>birnie@google.com</owner>
  <summary>
    Records the source of the invocation when the Glic Floaty panel becomes
    visible for the first time after being closed. Recorded when detached from
    Side Panel, when opened directly via os button / hotkey, or when the
    conversation is switched. In M151, the default invocation source was fixed
    to no longer be the TopChromeButton.
  </summary>
</histogram>

<histogram name="Glic.Instance.Floaty.ToggleSource" enum="GlicInvocationSource"
    expires_after="2027-06-01">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the source of the invocation that caused the floaty GlicInstance to
    be toggled. Recorded each time the instance is toggled. See
    Glic.Instance.Floaty.OpenSource for the metric only including invocations
    that open Floaty. In M151, the default invocation source was fixed to no
    longer be the TopChromeButton.
  </summary>
</histogram>

<histogram name="Glic.Instance.Floaty.UserResizeEnded.{Dimension}" units="DIPs"
    expires_after="2027-01-17">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the {Dimension} of the Glic instance in DIP when the user stops
    resizing the instance showing in a floaty window.
  </summary>
  <token key="Dimension" variants="Dimension"/>
</histogram>

<histogram name="Glic.Instance.Floaty.UserResizeStarted.{Dimension}"
    units="DIPs" expires_after="2027-01-17">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the {Dimension} of the Glic instance in DIP when the user starts
    resizing the instance showing in a floaty window.
  </summary>
  <token key="Dimension" variants="Dimension"/>
</histogram>

<histogram name="Glic.Instance.HadEvent" enum="GlicInstanceEvent"
    expires_after="2027-02-07">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records events that happen during a Glic Instance's lifecycle. This
    histogram answers the question: How many instances had each event type occur
    at least once? Even if an event occurs multiple times in an instance, only
    one event is recorded per instance.
  </summary>
</histogram>

<histogram name="Glic.Instance.InitialInvocationSource"
    enum="GlicInvocationSource" expires_after="2027-06-01">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the first invocation source that was used to open a Glic instance.
    Recorded when an instance is opened for the first time. In M151, the default
    invocation source was fixed to no longer be the TopChromeButton.
  </summary>
</histogram>

<histogram name="Glic.Instance.InputModesUsed" enum="GlicInputModesUsed"
    expires_after="2027-02-14">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    The input modes that were used during the instance's lifetime. Recorded when
    the instance is destroyed. Metrics recorded on instance destruction may not
    be recorded successfully on irregular Chrome shutdowns.
  </summary>
</histogram>

<histogram name="Glic.Instance.InputSubmitted.Selection.PolylinePointCount"
    units="points" expires_after="2026-10-31">
  <owner>wusirui@google.com</owner>
  <owner>naai-xfn@google.com</owner>
  <summary>
    Recorded when user input is submitted. Counts the number of points in active
    polylines drawn by the user at the time of submission.
  </summary>
</histogram>

<histogram name="Glic.Instance.InputSubmitted.SelectionCount" units="areas"
    expires_after="2027-01-03">
  <owner>dtapuska@google.com</owner>
  <owner>liuwilliam@google.com</owner>
  <owner>naai-xfn@google.com</owner>
  <summary>
    Recorded when user input is submitted. The value is the number of active
    selection areas at the time of submission. The maximum recorded is 10.
  </summary>
</histogram>

<histogram name="Glic.Instance.LifetimeDuration" units="ms"
    expires_after="2027-02-07">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the time from when a GlicInstance is created until it is destroyed.
    Recorded when the GlicInstance is destroyed. This histogram has a max of 24
    hours.
  </summary>
</histogram>

<histogram name="Glic.Instance.LifetimeDuration.Max21Days" units="ms"
    expires_after="2027-06-01">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the time from when a GlicInstance is created until it is destroyed.
    Recorded when the GlicInstance is destroyed. This histogram has a max of 21
    days.
  </summary>
</histogram>

<histogram name="Glic.Instance.MaxConcurrentlyBoundTabs" units="count"
    expires_after="2027-02-07">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the maximum number of tabs that were simultaneously bound to a
    single GlicInstance throughout its lifetime. Recorded when the GlicInstance
    is destroyed. Metrics recorded on instance destruction may not be recorded
    successfully on irregular Chrome shutdowns.
  </summary>
</histogram>

<histogram name="Glic.Instance.MemoryUsageAtThreshold" units="MB"
    expires_after="2026-12-16">
  <owner>birnie@google.com</owner>
  <owner>bryantchandler@google.com</owner>
  <summary>
    Records the private memory footprint of the Glic instance (sum of WebUI +
    WebClient) when the hibernation memory threshold is exceeded.
  </summary>
</histogram>

<histogram name="Glic.Instance.Metrics.Error{Cause}"
    enum="GlicInstanceMetricsError" expires_after="2027-01-17">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Recorded when an unusual sequence of events is seen by glic instance metrics
    recorder. Usually replaces a real histogram event.

    Limited to the following causes: {Cause}
  </summary>
  <token key="Cause">
    <variant name="" summary="Cause not applicable"/>
    <variant name=".ByUser" summary="User stopped the response"/>
    <variant name=".Other"
        summary="Other cause (infra) for stopping the response"/>
    <variant name=".UnknownCause" summary="Unspecified stop reason"/>
  </token>
</histogram>

<histogram name="Glic.Instance.PanelPresentationTime.Inactive.{EmbedderType}"
    units="ms" expires_after="2027-08-11">
  <owner>birnie@google.com</owner>
  <owner>bryantchandler@chromium.org</owner>
  <summary>
    Measures the time from when a user toggles the Glic panel to be shown until
    the web client signals that it is ready, for panels that were backgrounded
    or closed before the client finished loading. Recorded each time an inactive
    {EmbedderType} panel finishes loading.
  </summary>
  <token key="EmbedderType" variants="EmbedderType"/>
</histogram>

<histogram name="Glic.Instance.PanelPresentationTime.{EmbedderType}" units="ms"
    expires_after="2027-01-31">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Measures the time from when a user toggles the Glic panel to be shown until
    the web client signals that it is ready. Recorded each time a {EmbedderType}
    panel is shown.
  </summary>
  <token key="EmbedderType" variants="EmbedderType"/>
</histogram>

<histogram name="Glic.Instance.Session.CreateTabCount" units="count"
    expires_after="2026-12-27">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    The number of new tabs that are created during a single Glic multi-instance
    session. Recorded when the session ends.
  </summary>
</histogram>

<histogram name="Glic.Instance.Session.Duration" units="ms"
    expires_after="2026-12-27">
  <owner>birnie@google.com</owner>
  <owner>carlosk@chromium.org</owner>
  <summary>
    Records the duration of a single Glic multi-instance session. A session
    represents a period of continuous user engagement with a single Glic
    instance. It starts after the instance has been visible for a short duration
    (to exclude accidental opens) or when the user submits input. It ends after
    a period of inactivity, being hidden for too long, or when the instance is
    destroyed. See `chrome/browser/glic/service/glic_metrics_session_manager.h`
    for more details.
  </summary>
</histogram>

<histogram name="Glic.Instance.Session.EndReason"
    enum="GlicMultiInstanceSessionEndReason" expires_after="2026-12-27">
  <owner>birnie@google.com</owner>
  <owner>carlosk@chromium.org</owner>
  <summary>
    Records the reason why a Glic multi-instance session ended. Recorded each
    time a session finishes.
  </summary>
</histogram>

<histogram name="Glic.Instance.Session.HadEvent" enum="GlicInstanceEvent"
    expires_after="2027-02-07">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records events that happen during a Glic Sessions's lifecycle. This
    histogram answers the question: How many sessions had each event type occur
    at least once? Even if an event occurs multiple times in a session, only one
    event is recorded per session.
  </summary>
</histogram>

<histogram name="Glic.Instance.Session.InputModesUsed"
    enum="GlicInputModesUsed" expires_after="2026-12-27">
  <owner>birnie@google.com</owner>
  <owner>perrier@chromium.org</owner>
  <summary>
    The input modes that were used during a Glic multi-instance session.
    Recorded when the session ends.
  </summary>
</histogram>

<histogram name="Glic.Instance.Session.MaxPinnedTabs" units="count"
    expires_after="2027-02-07">
  <owner>sanaakbani@google.com</owner>
  <owner>birnie@google.com</owner>
  <summary>
    Records the maximum number of tabs that were pinned at any time during a
    single session. This is recorded when the session finishes.
  </summary>
</histogram>

<histogram name="Glic.Instance.Session.MultipleTabsPinnedInAnyTurn"
    enum="Boolean" expires_after="2027-02-07">
  <owner>sanaakbani@google.com</owner>
  <owner>birnie@google.com</owner>
  <summary>
    Boolean histogram that logs whether multiple tabs were pinned for any input
    submitted during a single session. This is recorded when the session
    finishes.
  </summary>
</histogram>

<histogram name="Glic.Instance.Session.ToggleCount" units="count"
    expires_after="2026-12-27">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    The number of times that a single Glic session was toggled. Recorded when
    the session ends.
  </summary>
</histogram>

<histogram name="Glic.Instance.Session.TotalActiveDuration" units="ms"
    expires_after="2026-12-27">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the total time a Glic multi-instance session was active. Recorded
    when the session ends. A session is active when it is showing in an embedder
    in the active browser window.
  </summary>
</histogram>

<histogram name="Glic.Instance.Session.TotalHiddenDuration" units="ms"
    expires_after="2026-12-27">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the total time a Glic multi-instance session was hidden. Recorded
    when the session ends. A session is hidden when it is not shown in any
    embedder. This does not account for occlusion.
  </summary>
</histogram>

<histogram name="Glic.Instance.Session.TotalInactiveDuration" units="ms"
    expires_after="2026-12-27">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the total time a Glic multi-instance session was inactive. Recorded
    when the session ends. A session is inactive when it is not showing in any
    embedder of an active browser window.
  </summary>
</histogram>

<histogram name="Glic.Instance.Session.TotalVisibleDuration" units="ms"
    expires_after="2026-12-27">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the total time a Glic multi-instance session was visible. Recorded
    when the session ends. A session is visible when it is shown in any
    embedder. This does not account for occlusion.
  </summary>
</histogram>

<histogram name="Glic.Instance.Session.TurnCount" units="count"
    expires_after="2026-12-27">
  <owner>birnie@google.com</owner>
  <owner>carlosk@chromium.org</owner>
  <summary>
    The number of turns that occurred in a single Glic multi-instance session.
    Recorded when the session ends.
  </summary>
</histogram>

<histogram name="Glic.Instance.Session.UninterruptedActiveDuration" units="ms"
    expires_after="2026-12-27">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the duration of a single, uninterrupted period of time that a Glic
    multi-instance session was active. Recorded each time the session becomes
    inactive.
  </summary>
</histogram>

<histogram name="Glic.Instance.Session.UninterruptedVisibleDuration" units="ms"
    expires_after="2026-12-27">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the duration of a single, uninterrupted period of time that a Glic
    multi-instance session was visible. Recorded each time the session becomes
    hidden.
  </summary>
</histogram>

<histogram name="Glic.Instance.SessionCount" units="count"
    expires_after="2026-12-27">
  <owner>birnie@google.com</owner>
  <owner>carlosk@chromium.org</owner>
  <summary>
    The number of Glic multi-instance sessions that occurred in a single Glic
    instance's lifetime. Recorded when the instance is destroyed.
  </summary>
</histogram>

<histogram name="Glic.Instance.SidePanel.OpenDuration" units="ms"
    expires_after="2027-02-07">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the duration that a Glic Side Panel was open. Recorded each time a
    Side Panel instance is closed.
  </summary>
</histogram>

<histogram name="Glic.Instance.SidePanel.OpenSource"
    enum="GlicInvocationSource" expires_after="2027-06-01">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the source of the invocation when the Glic panel becomes visible for
    the first time after being closed. Recorded when first visible (for
    foreground and background instance creation), when popped back from Floaty,
    for a conversation switch. Background opens were not recorded before M150.
    This metric is not logged on tab switches. In M151, the default invocation
    source was fixed to no longer be the TopChromeButton.
  </summary>
</histogram>

<histogram name="Glic.Instance.SidePanel.ToggleSource"
    enum="GlicInvocationSource" expires_after="2027-06-01">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the source of the invocation that caused the side panel GlicInstance
    to be toggled. Recorded each time the instance is toggled. See
    Glic.Instance.SidePanel.OpenSource for the metric only including invocations
    that open the side panel. In M151, the default invocation source was fixed
    to no longer be the TopChromeButton.
  </summary>
</histogram>

<histogram name="Glic.Instance.TabPinTrigger" enum="GlicPinTrigger"
    expires_after="2027-01-17">
  <owner>sanaakbani@google.com</owner>
  <owner>birnie@google.com</owner>
  <summary>
    Records the trigger responsible for pinning a tab to a Glic Instance.
    Recorded each time a tab is pinned.
  </summary>
</histogram>

<histogram name="Glic.Instance.TabUnpinTrigger" enum="GlicUnpinTrigger"
    expires_after="2027-01-17">
  <owner>sanaakbani@google.com</owner>
  <owner>birnie@google.com</owner>
  <summary>
    Records the trigger responsible for unpinning a tab from a Glic Instance.
    Recorded each time a tab is unpinned.
  </summary>
</histogram>

<histogram name="Glic.Instance.TimeBetweenSessions.{Range}" units="ms"
    expires_after="2027-01-03">
  <owner>birnie@google.com</owner>
  <owner>perrier@chromium.org</owner>
  <summary>
    Records the time between the end of one Glic multi-instance session and the
    start of the next one within the same instance. Max bucket is {Range}.
  </summary>
  <token key="Range">
    <variant name="7D" summary="7 days"/>
    <variant name="24H" summary="24 hours"/>
  </token>
</histogram>

<histogram name="Glic.Instance.TimeSinceLastActive{Range}" units="ms"
    expires_after="2027-01-24">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the time elapsed since the instance was last active. This is
    measured on reactivation as the duration from the last time the instance
    became inactive to the current time of activation.
  </summary>
  <token key="Range">
    <variant name="" summary="Default range"/>
    <variant name=".7D" summary="7 day range"/>
    <variant name=".24H" summary="24 hour range"/>
  </token>
</histogram>

<histogram name="Glic.Instance.TimeSinceLastInstanceActiveOnOpen" units="ms"
    expires_after="2027-01-24">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the time elapsed since the last active Glic instance was active.
    Recorded when Glic is opened and a previous active instance exists.
  </summary>
</histogram>

<histogram name="Glic.Instance.TimeToDismissWhileLoading.{EmbedderType}"
    units="ms" expires_after="2027-08-11">
  <owner>birnie@google.com</owner>
  <owner>bryantchandler@chromium.org</owner>
  <summary>
    Measures the time from when a user toggles the Glic panel to be shown until
    the user closes, collapses, or switches away from the panel before the web
    client finishes loading. Recorded when an active {EmbedderType} panel is
    dismissed while loading.
  </summary>
  <token key="EmbedderType" variants="EmbedderType"/>
</histogram>

<histogram name="Glic.Instance.TotalActiveDuration" units="ms"
    expires_after="2027-01-03">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the total time a GlicInstance was active throughout its lifetime.
    Recorded when the GlicInstance is destroyed.
  </summary>
</histogram>

<histogram name="Glic.Instance.TotalBackgroundDuration" units="ms"
    expires_after="2027-06-01">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the total time a GlicInstance was in the background throughout its
    lifetime. Recorded when the GlicInstance is destroyed.
  </summary>
</histogram>

<histogram name="Glic.Instance.TotalHiddenDuration" units="ms"
    expires_after="2027-06-01">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the total time a GlicInstance was hidden throughout its lifetime.
    Recorded when the GlicInstance is destroyed.
  </summary>
</histogram>

<histogram name="Glic.Instance.TotalPrivateMemoryFootprint.{TriggerEvent}"
    units="MB" expires_after="2027-06-01">
  <owner>bryantchandler@google.com</owner>
  <owner>birnie@google.com</owner>
  <summary>
    Records the absolute total private memory footprint of all processes across
    all unhibernated Glic instances, {TriggerEvent}.
  </summary>
  <token key="TriggerEvent" variants="MemoryTriggerEvent"/>
</histogram>

<histogram name="Glic.Instance.TotalTabsBoundInLifetime" units="count"
    expires_after="2027-02-07">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the total number of tabs that were bound to a single GlicInstance
    throughout its lifetime. Recorded when the GlicInstance is destroyed.
    Metrics recorded on instance destruction may not be recorded successfully on
    irregular Chrome shutdowns.
  </summary>
</histogram>

<histogram name="Glic.Instance.TotalVisibleDuration" units="ms"
    expires_after="2027-01-17">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the total time a GlicInstance was visible (in the foreground)
    throughout its lifetime. Recorded when the GlicInstance is destroyed.
  </summary>
</histogram>

<histogram name="Glic.Instance.TurnCount{Profile}" units="count"
    expires_after="2027-02-14">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    The number of turns that occurred in a single Glic instance's lifetime.
    Recorded when the instance is destroyed. Metrics recorded on instance
    destruction may not be recorded successfully on irregular Chrome shutdowns.

    {Profile}
  </summary>
  <token key="Profile" variants="ProfileIndex"/>
</histogram>

<histogram name="Glic.Instance.UninterruptedActiveDuration" units="ms"
    expires_after="2027-10-04">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the duration of a single, uninterrupted period of time that a
    GlicInstance was active. Recorded each time an instance becomes inactive.
  </summary>
</histogram>

<histogram name="Glic.Instance.UninterruptedVisibleDuration" units="ms"
    expires_after="2026-12-06">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the duration of a single, uninterrupted period of time that a
    GlicInstance was visible. Recorded each time an instance becomes hidden.
  </summary>
</histogram>

<histogram name="Glic.Instance.WebUiLoadTime.{Visibility}" units="ms"
    expires_after="2027-01-03">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Measures the time it takes for the Glic WebUI to load, from the `kBeginLoad`
    state to the `kReady` state. This is recorded for both user-visible loads
    and non-visible pre-warming loads, distinguished by the {Visibility}
    variant.
  </summary>
  <token key="Visibility" variants="Visibility"/>
</histogram>

<histogram name="Glic.Instance.ZoomChangeCount" units="count"
    expires_after="2027-01-24">
  <owner>cuianthony@chromium.org</owner>
  <owner>glic-dev@google.com</owner>
  <summary>
    Records the number of times the zoom level of the Glic panel was changed
    throughout the lifetime of a single Glic instance. Recorded when the
    instance is destroyed.
  </summary>
</histogram>

<histogram name="Glic.Instances.Count.OnCreation" units="instances"
    expires_after="2027-06-01">
  <owner>bryantchandler@google.com</owner>
  <owner>glic-dev@chromium.org</owner>
  <summary>
    The total number of Glic instances. Recorded every time a new GlicInstance
    is created.
  </summary>
</histogram>

<histogram name="Glic.Instances.CountActuating.OnTaskCreation"
    units="instances" expires_after="2027-06-01">
  <owner>bryantchandler@google.com</owner>
  <owner>glic-dev@chromium.org</owner>
  <summary>
    The number of actuating Glic instances. Recorded every time an actor task is
    created.
  </summary>
</histogram>

<histogram name="Glic.Instances.CountAwake.OnContentsCreated" units="instances"
    expires_after="2027-06-01">
  <owner>bryantchandler@google.com</owner>
  <owner>glic-dev@chromium.org</owner>
  <summary>
    The number of awake Glic instances (with WebUI contents loaded). Recorded
    every time a GlicInstance has its WebUI contents created (either on initial
    creation or when waking up from hibernation).
  </summary>
</histogram>

<histogram name="Glic.Interaction.SwitchConversationTarget"
    enum="GlicSwitchConversationTarget" expires_after="2027-02-07">
  <owner>birnie@google.com</owner>
  <owner>carlosk@chromium.org</owner>
  <summary>
    Records the target of a conversation switch. Recorded each time
    SwitchConversation is called.
  </summary>
</histogram>

<histogram name="Glic.InvocationSource.{InvocationSource}.EventCounts"
    enum="GlicInstanceEvent" expires_after="2027-06-01">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records every event that happens during a Glic Instance's lifecycle broken
    down by {InvocationSource} that instance was created with. This histogram
    answers the question: What is the total number of times each event occurred
    across all Glic instances created via {InvocationSource}? An event is
    recorded each time it occurs. In M151, the default invocation source was
    fixed to no longer be the TopChromeButton.
  </summary>
  <token key="InvocationSource" variants="GlicInvocationSource"/>
</histogram>

<histogram
    name="Glic.InvocationSource.{InvocationSource}.FloatyFirstOpenDuration"
    units="ms" expires_after="2027-06-01">
  <owner>andreaxg@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the duration that a Glic Floaty window was open. Recorded for the
    first time the floaty was open for an instance without an error. In M151,
    the default invocation source was fixed to no longer be the TopChromeButton.
  </summary>
  <token key="InvocationSource" variants="GlicInvocationSource"/>
</histogram>

<histogram name="Glic.InvocationSource.{InvocationSource}.HadEvent"
    enum="GlicInstanceEvent" expires_after="2027-02-07">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records events that happen during a Glic Instance's lifecycle broken down by
    {InvocationSource} that instance was created with. This histogram answers
    the question: How many instances created via {InvocationSource} had each
    event type occur at least once? Even if an event occurs multiple times in an
    instance, only one event is recorded per instance. In M151, the default
    invocation source was fixed to no longer be the TopChromeButton.
  </summary>
  <token key="InvocationSource" variants="GlicInvocationSource"/>
</histogram>

<histogram
    name="Glic.InvocationSource.{InvocationSource}.SidePanelFirstOpenDuration"
    units="ms" expires_after="2027-02-07">
  <owner>basiaz@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the duration that a Glic Side Panel was open. Recorded for the first
    time side panel was open for an instance without an error. Switching away
    from a tab with side panel counts as closure for the purpose of this metric.
    In M151, the default invocation source was fixed to no longer be the
    TopChromeButton.
  </summary>
  <token key="InvocationSource" variants="GlicInvocationSource"/>
</histogram>

<histogram
    name="Glic.InvocationSource.{InvocationSource}.SidePanelFirstOpenDuration.{PromptStatus}"
    units="ms" expires_after="2026-12-06">
  <owner>sanaakbani@google.com</owner>
  <owner>basiaz@google.com</owner>
  <summary>
    Records the duration that a Glic Side Panel was open when opened via
    {InvocationSource}, split by whether any user prompts were submitted while
    open. Recorded when the side panel is closed or tab is switched for the
    first time.
  </summary>
  <token key="InvocationSource" variants="GlicInvocationSource"/>
  <token key="PromptStatus">
    <variant name="NoPrompts"
        summary="Recorded when 0 prompts were submitted while open."/>
    <variant name="WithPrompts"
        summary="Recorded when 1 or more prompts were submitted while open."/>
  </token>
</histogram>

<histogram
    name="Glic.InvocationSource.{InvocationSource}.SidePanelFirstOpenPromptCount"
    units="prompts" expires_after="2026-12-06">
  <owner>sanaakbani@google.com</owner>
  <owner>basiaz@google.com</owner>
  <summary>
    Records the total number of user prompts submitted while the Glic Side Panel
    is initially open when opened via {InvocationSource}. Recorded when the side
    panel is closed or tab is switched for the first time.
  </summary>
  <token key="InvocationSource" variants="GlicInvocationSource"/>
</histogram>

<histogram
    name="Glic.InvocationSource.{InvocationSource}.WebUiLoadTime.{Visibility}"
    units="ms" expires_after="2027-01-03">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Measures the time it takes for the Glic WebUI to load, from the `kBeginLoad`
    state to the `kReady` state. This is recorded for both user-visible loads
    and non-visible pre-warming loads, distinguished by the {InvocationSource}
    this instance was created with and {Visibility} variant. In M151, the
    default invocation source was fixed to no longer be the TopChromeButton.
  </summary>
  <token key="InvocationSource" variants="GlicInvocationSource"/>
  <token key="Visibility" variants="Visibility"/>
</histogram>

<histogram name="Glic.Invoke.Duration" units="ms" expires_after="2027-06-01">
  <owner>wry@chromium.org</owner>
  <owner>glic-dev@google.com</owner>
  <summary>
    Records the duration of a Glic invocation, measured from when the invocation
    handler is started until it completes (successfully or not).
  </summary>
</histogram>

<histogram name="Glic.Invoke.Duration.{InvocationSource}" units="ms"
    expires_after="2027-06-01">
  <owner>wry@chromium.org</owner>
  <owner>glic-dev@google.com</owner>
  <summary>
    Records the duration of a Glic invocation, measured from when the invocation
    handler is started until it completes (successfully or not), sliced by the
    invocation source.
  </summary>
  <token key="InvocationSource" variants="GlicInvocationSource"/>
</histogram>

<histogram name="Glic.Invoke.InvocationSource" enum="GlicInvocationSource"
    expires_after="2027-06-01">
  <owner>vollick@chromium.org</owner>
  <owner>glic-dev@google.com</owner>
  <summary>
    Records the invocation source when a Glic invocation begins. Recorded each
    time GlicInstanceCoordinatorImpl::InvokeInternal is called.
  </summary>
</histogram>

<histogram name="Glic.InvokeResult" enum="GlicInvokeResult"
    expires_after="2027-06-01">
  <owner>vollick@chromium.org</owner>
  <owner>glic-dev@google.com</owner>
  <summary>
    Records the result of a Glic invocation (success or specific error).
    Recorded when the invocation completes successfully or fails.
  </summary>
</histogram>

<histogram name="Glic.InvokeResult.{InvocationSource}" enum="GlicInvokeResult"
    expires_after="2027-06-01">
  <owner>vollick@chromium.org</owner>
  <owner>glic-dev@google.com</owner>
  <summary>
    Records the result of a Glic invocation (success or specific error) sliced
    by the invocation source. Recorded when the invocation completes
    successfully or fails.
  </summary>
  <token key="InvocationSource" variants="GlicInvocationSource"/>
</histogram>

<histogram name="Glic.LocaleFilteringResult" enum="GlicFilteringResult"
    expires_after="2026-08-01">
  <owner>harringtond@chromium.org</owner>
  <owner>carlosk@chromium.org</owner>
  <summary>
    Records the outcome of the locale filtering check for Glic enablement.
    Recorded once per call to GetLocaleEnablement, which happens once at browser
    process startup.
  </summary>
</histogram>

<histogram name="Glic.MaybeReplaceNavigation.Result" enum="Boolean"
    expires_after="2027-01-17">
  <owner>liberato@chromium.org</owner>
  <owner>chrome-bluefin@google.com</owner>
  <summary>
    Records the boolean result of calling MaybeReplaceNavigation. This is used
    to determine if a navigation was replaced with a media viewer.
  </summary>
</histogram>

<histogram name="Glic.Media.TimestampRangeCount" units="count"
    expires_after="2027-02-07">
  <owner>liberato@chromium.org</owner>
  <owner>chrome-bluefin@google.com</owner>
  <summary>
    Records the number of media timestamp ranges in the result when a speech
    recognition result is received. This can be greater than one, for example,
    around seeks. Zero means that there was no timing information, or the list
    of ranges was empty.
  </summary>
</histogram>

<histogram name="Glic.Media.TotalContextLength" units="bytes"
    expires_after="2027-01-03">
  <owner>liberato@chromium.org</owner>
  <owner>chrome-bluefin@google.com</owner>
  <summary>
    Records the total media context length for the page when media context is
    collected by glic, including any that was previously truncated for length
    restrictions.
  </summary>
</histogram>

<histogram name="Glic.Metrics.Error" enum="GlicMetricsError"
    expires_after="2026-07-26">
  <owner>dewittj@google.com</owner>
  <owner>iwells@google.com</owner>
  <owner>erikchen@chromium.org</owner>
  <summary>
    Recorded when an unusual sequence of events is seen by glic metrics
    recorder. Usually replaces a real histogram event.
  </summary>
</histogram>

<histogram name="Glic.Metrics.Error{Cause}" enum="GlicMetricsError"
    expires_after="2026-07-26">
  <owner>dewittj@google.com</owner>
  <owner>iwells@google.com</owner>
  <owner>erikchen@chromium.org</owner>
  <summary>
    Recorded when an unusual sequence of events is seen by glic metrics
    recorder, at the Response Stopped event. Usually replaces a real histogram
    event.

    Limited to the following causes: {Cause}
  </summary>
  <token key="Cause">
    <variant name=".ByUser" summary="User stopped the response"/>
    <variant name=".Other"
        summary="Other cause (infra) for stopping the response"/>
    <variant name=".UnknownCause" summary="Unspecified stop reason"/>
  </token>
</histogram>

<histogram name="Glic.NavigationCapture.{FeatureEnabledStatus}"
    enum="GeminiNavigationCaptureResult" expires_after="2027-02-14">
  <owner>andreaxg@google.com</owner>
  <owner>basiaz@google.com</owner>
  <summary>
    Records the outcome of navigation capture attempts when
    {FeatureEnabledStatus}. Logged when the NavigationThrottle evaluates a
    redirection target. Logs the first failure reason in the order they're
    checked.
  </summary>
  <token key="FeatureEnabledStatus">
    <variant name="GlicWebContinuityFeatureDisabled"
        summary="Web continuity is disabled or unavailable"/>
    <variant name="GlicWebContinuityFeatureEnabled"
        summary="Web continuity is enabled and available"/>
  </token>
</histogram>

<histogram name="Glic.Onboarding.Invoked.Status" enum="GlicOnboardingStatus"
    expires_after="2027-06-01">
  <owner>perrier@chromium.org</owner>
  <owner>glic+metrics@google.com</owner>
  <summary>
    Records the onboarding status at the time Glic is invoked. Recorded when
    Glic is invoked during onboarding. Invoked is defined as a new embedder
    being shown for a tab or Floaty. Tab switching or focus events are not
    considered invoking, but daisy chaining, conversation switching, or
    re-opening on an already bound tab are considered invoking.
  </summary>
</histogram>

<histogram name="Glic.Onboarding.OptInImpression.FlowSource"
    enum="GlicOptInFlowSource" expires_after="2027-05-18">
  <owner>sauski@google.com</owner>
  <owner>perrier@chromium.org</owner>
  <summary>Records the onboarding flow source shown to the user.</summary>
</histogram>

<histogram name="Glic.Onboarding.Profiles.Status" enum="GlicOnboardingStatus"
    expires_after="2027-06-01">
  <owner>perrier@chromium.org</owner>
  <owner>glic+metrics@google.com</owner>
  <summary>
    Records the highest onboarding status across all loaded Glic-enabled
    profiles. Recorded during periodic metrics provider session collection.
  </summary>
</histogram>

<histogram name="Glic.Onboarding.Profiles.{Status}"
    enum="GlicProfilesAllSomeNone" expires_after="2027-06-01">
  <owner>perrier@chromium.org</owner>
  <owner>glic+metrics@google.com</owner>
  <summary>
    Records the count of loaded Glic-enabled profiles that have have a status
    which includes the {Status} state. Recorded during periodic metrics provider
    session collection.
  </summary>
  <token key="Status">
    <variant name="Invoked"/>
    <variant name="OptIn"/>
    <variant name="UserSubmit"/>
  </token>
</histogram>

<histogram name="Glic.Onboarding.WebUiLoadTime.{Visibility}" units="ms"
    expires_after="2026-12-31">
  <owner>sanaakbani@google.com</owner>
  <owner>basiaz@google.com</owner>
  <summary>
    Measures the time it takes for the Glic WebUI to load, specifically for
    users in the unconsented state. This is recorded when the WebUI transitions
    to the `kReady` state.
  </summary>
  <token key="Visibility" variants="Visibility"/>
</histogram>

<histogram name="Glic.OsEntrypoint.Settings.Shortcut" enum="BooleanEnabled"
    expires_after="2027-02-07">
  <owner>agale@chromium.org</owner>
  <owner>chrome-performance-ui-sea@google.com</owner>
  <summary>
    After the user modifies the glic launcher shortcut, logs a boolean that
    reflects whether a shortcut is set.

    Note: When setting a shortcut, 'disabled' will always be logged, then
    'enabled'. This is because the edit process first clears the existing value.
    If the shortcut is cleared, only a single 'disabled' log entry is generated.
  </summary>
</histogram>

<histogram name="Glic.OsEntrypoint.Settings.ShortcutStatus"
    enum="BooleanEnabled" expires_after="2027-02-07">
  <owner>erikchen@chromium.org</owner>
  <owner>pauladedeji@google.com</owner>
  <summary>
    Rough estimate of whether a user has a shortcut set. Recorded every 15
    minutes, but only if the glic feature flag is enabled.
  </summary>
</histogram>

<histogram name="Glic.PageContextFetcher.GetAnnotatedPageContent" units="ms"
    expires_after="2027-02-07">
  <owner>carlosk@chromium.org</owner>
  <owner>harringtond@chromium.org</owner>
  <owner>erikchen@chromium.org</owner>
  <summary>
    Recorded when a page context gets annotated page content. Measure the time
    from start.
  </summary>
</histogram>

<histogram name="Glic.PageContextFetcher.GetEncodedScreenshot" units="ms"
    expires_after="2027-02-07">
  <owner>carlosk@chromium.org</owner>
  <owner>harringtond@chromium.org</owner>
  <owner>erikchen@chromium.org</owner>
  <summary>
    Recorded when a page context successfully gets a screenshot (post-encoding
    and scaling). Measure the time from start.
  </summary>
</histogram>

<histogram name="Glic.PageContextFetcher.GetEncodedScreenshot.Failure"
    units="ms" expires_after="2027-02-07">
  <owner>carlosk@chromium.org</owner>
  <owner>harringtond@chromium.org</owner>
  <owner>erikchen@chromium.org</owner>
  <summary>
    Recorded when a page context fails to get a screenshot. This includes any
    kind of error, including timeout. Measure the time from start.
  </summary>
</histogram>

<histogram name="Glic.PageContextFetcher.GetScreenshot" units="ms"
    expires_after="2027-01-03">
  <owner>carlosk@chromium.org</owner>
  <owner>harringtond@chromium.org</owner>
  <owner>erikchen@chromium.org</owner>
  <summary>
    Recorded when a page context gets screenshot (pre-encoding and scaling).
    Measure the time from start.
  </summary>
</histogram>

<histogram name="Glic.PageContextFetcher.GetScreenshotError"
    enum="CopyFromSurfaceError" expires_after="2027-01-17">
  <owner>bokan@google.com</owner>
  <owner>dtapuska@google.com</owner>
  <owner>chrome-synapse-team@google.com</owner>
  <summary>Recorded when a page gets screenshot error from Viz.</summary>
</histogram>

<histogram name="Glic.PageContextFetcher.IframeInfoAddedToAPC" enum="Boolean"
    expires_after="2027-06-01">
  <owner>ryankalla@google.com</owner>
  <owner>chrome-ai-security@google.com</owner>
  <summary>
    Recorded when a page context fetcher processes iframe data after the
    screenshot is taken and the annotated page content is generated. Records
    true if any iframe info was added to the annotated page content, and false
    otherwise.
  </summary>
</histogram>

<histogram name="Glic.PageContextFetcher.IframeInfoHasUrlOrigin" enum="Boolean"
    expires_after="2027-06-01">
  <owner>ryankalla@google.com</owner>
  <owner>chrome-ai-security@google.com</owner>
  <summary>
    Recorded for each iframe-info message that was added to the annotated page
    content. Records whether the iframe-info origin field was populated. If
    false, that means we were unable to determine the src origin of the iframe.
  </summary>
</histogram>

<histogram name="Glic.PageContextFetcher.PdfTextExtraction.Size" units="bytes"
    expires_after="2027-05-05">
  <owner>xiaochenzh@chromium.org</owner>
  <owner>sophiechang@chromium.org</owner>
  <owner>chrome-intelligence-core@google.com</owner>
  <summary>
    Records the byte size of the extracted PDF text before any truncation.
    Recorded once per successful PDF text extraction.
  </summary>
</histogram>

<histogram name="Glic.PageContextFetcher.PdfTextExtraction.Status"
    enum="PdfTextExtractionStatus" expires_after="2027-05-05">
  <owner>xiaochenzh@chromium.org</owner>
  <owner>sophiechang@chromium.org</owner>
  <owner>chrome-intelligence-core@google.com</owner>
  <summary>
    Records the status of PDF text extraction requests. Tracks whether the
    extraction was successful or failed due to reasons such as the PDF load is
    not complete. Recorded once per PDF text extraction request.
  </summary>
</histogram>

<histogram name="Glic.PageContextFetcher.PdfTextExtraction.Time" units="ms"
    expires_after="2027-05-05">
  <owner>xiaochenzh@chromium.org</owner>
  <owner>sophiechang@chromium.org</owner>
  <owner>chrome-intelligence-core@google.com</owner>
  <summary>
    Records the time taken for PDF text extraction. Recorded once per successful
    PDF text extraction.
  </summary>
</histogram>

<histogram name="Glic.PageContextFetcher.ScreenshotInfo.IframeInfo.ProtoSize"
    units="bytes" expires_after="2027-06-01">
  <owner>linnan@google.com</owner>
  <owner>chrome-ai-security@google.com</owner>
  <summary>
    Records the total serialized byte size of the individual IframeInfo messages
    inside the ScreenshotInfo. Recorded when a page context fetcher successfully
    generates the ScreenshotInfo.
  </summary>
</histogram>

<histogram name="Glic.PageContextFetcher.ScreenshotRedacted" enum="Boolean"
    expires_after="2027-01-10">
  <owner>linnan@google.com</owner>
  <owner>shivanisha@google.com</owner>
  <owner>chrome-synapse-team@google.com</owner>
  <summary>
    Recorded when a screenshot is processed for Glic. Records true if any part
    of the screenshot was redacted client-side, and false otherwise.
  </summary>
</histogram>

<histogram name="Glic.PageContextFetcher.Total" units="ms"
    expires_after="2027-01-03">
  <owner>carlosk@chromium.org</owner>
  <owner>harringtond@chromium.org</owner>
  <owner>erikchen@chromium.org</owner>
  <summary>
    Recorded when a page context fetcher finishes. Measure the time from start
    to finish.
  </summary>
</histogram>

<histogram name="Glic.PanelPresentationTime2.{InputMode}" units="ms"
    expires_after="2027-01-31">
  <owner>dewittj@google.com</owner>
  <owner>iwells@google.com</owner>
  <summary>
    After glic is triggered, measure how long it takes to show the glic panel
    using the {InputMode} mode excluding the cases that require
    re-authentication. Desktop Chrome only (Windows and Mac).
  </summary>
  <token key="InputMode" variants="WebClientModeWithAll"/>
</histogram>

<histogram name="Glic.PanelWebUi.ElapsedTimeBetweenSessions" units="seconds"
    expires_after="2027-02-07">
  <owner>fsenra@google.com</owner>
  <owner>dewittj@google.com</owner>
  <summary>
    Records the elapsed time between the current and last session. Recorded when
    the Glic panel is opened.
  </summary>
</histogram>

<histogram name="Glic.PanelWebUi.Size.Area" units="DIPs"
    expires_after="2026-05-24">
  <owner>fsenra@google.com</owner>
  <owner>dewittj@google.com</owner>
  <summary>
    Records the area of the glic panel in DIPS. Recorded every 3 minutes while
    the panel is open.
  </summary>
</histogram>

<histogram name="Glic.PanelWebUi.Size.Height" units="DIPs"
    expires_after="2026-07-26">
  <owner>fsenra@google.com</owner>
  <owner>dewittj@google.com</owner>
  <summary>
    Records the height of the glic panel in DIPS. Recorded every 3 minutes while
    the panel is open.
  </summary>
</histogram>

<histogram name="Glic.PanelWebUi.Size.Width" units="DIPs"
    expires_after="2026-07-26">
  <owner>fsenra@google.com</owner>
  <owner>dewittj@google.com</owner>
  <summary>
    Records the width of the glic panel in DIPS. Recorded every 3 minutes while
    the panel is open.
  </summary>
</histogram>

<histogram name="Glic.PanelWebUi.UserResizeEnded.Height" units="DIPs"
    expires_after="2026-07-26">
  <owner>fsenra@google.com</owner>
  <owner>iwells@google.com</owner>
  <summary>
    Records the height of the Glic panel in DIP when the user stops resizing the
    panel.
  </summary>
</histogram>

<histogram name="Glic.PanelWebUi.UserResizeEnded.Width" units="DIPs"
    expires_after="2026-07-26">
  <owner>fsenra@google.com</owner>
  <owner>iwells@google.com</owner>
  <summary>
    Records the width of the Glic panel in DIP when the user stops resizing the
    panel.
  </summary>
</histogram>

<histogram name="Glic.PanelWebUiState" enum="WebUiState"
    expires_after="2027-02-07">
  <owner>erikchen@chromium.org</owner>
  <owner>iwells@google.com</owner>
  <summary>Record the panel webui state any time it changes.</summary>
</histogram>

<histogram name="Glic.PanelWebUiState.Error" enum="PanelWebUiStateErrorReason"
    expires_after="2026-12-27">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the reason the WebUi entered the error state. Recorded just before
    the WebUI enters the error state.
  </summary>
</histogram>

<histogram name="Glic.PanelWebUiState.FinishState2" enum="WebUiState"
    expires_after="2026-07-26">
  <owner>dewittj@google.com</owner>
  <owner>iwells@google.com</owner>
  <summary>Record the current state when the panel is closed.</summary>
</histogram>

<histogram name="Glic.PanelWebUiState.FinishState3" enum="WebUiState"
    expires_after="2026-12-27">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Record the current state when the panel is closed for multi instance
    supported clients.
  </summary>
</histogram>

<histogram name="Glic.Paste.AttemptedFormat.{CopySource}"
    enum="GlicPasteFormat" expires_after="2027-01-01">
  <owner>birnie@google.com</owner>
  <owner>chrome-glic@google.com</owner>
  <summary>
    Records the format of the clipboard data when a user attempts to paste into
    the Glic UI. Recorded unconditionally upon every paste attempt into Glic.
  </summary>
  <token key="CopySource">
    <variant name="OS" summary="Copied from the OS or an external application"/>
    <variant name="Web" summary="Copied from a WebContents within Chrome"/>
  </token>
</histogram>

<histogram name="Glic.Paste.FailedEligibilityReason.{CopySource}"
    enum="GlicPasteFailedEligibilityReason" expires_after="2027-01-01">
  <owner>birnie@google.com</owner>
  <owner>chrome-glic@google.com</owner>
  <summary>
    Records the reason a paste attempt was blocked by the Glic host's clipboard
    eligibility checks. Only logged when a paste is actively denied (e.g.
    because it originated from a restricted page).
  </summary>
  <token key="CopySource">
    <variant name="OS" summary="Copied from the OS or an external application"/>
    <variant name="Web" summary="Copied from a WebContents within Chrome"/>
  </token>
</histogram>

<histogram name="Glic.PositionOnChrome.{Event}" enum="ChromeRelativePosition"
    expires_after="2026-07-26">
  <owner>andreaxg@google.com</owner>
  <owner>iwells@google.com</owner>
  <summary>
    Record the position of the glic panel's center point relative to the active
    Chrome window. Recorded when {Event}.
  </summary>
  <token key="Event" variants="PanelEvent"/>
</histogram>

<histogram name="Glic.PositionOnDisplay.{Event}" enum="DisplayPosition"
    expires_after="2026-07-26">
  <owner>andreaxg@google.com</owner>
  <owner>iwells@google.com</owner>
  <summary>
    Record the position of the glic panel relative to the current display where
    it's shown. The value Unknown is not expected to be recorded but is a
    backup. Recorded when {Event}.
  </summary>
  <token key="Event" variants="PanelEvent"/>
</histogram>

<histogram name="Glic.Preferences.{Preference}" enum="BooleanEnabled"
    expires_after="2027-02-07">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Recorded when the GlicKeyedService for a profile is created. Recorded once
    per profile initialization. This logs whether the setting to {Preference} is
    enabled.
  </summary>
  <token key="Preference">
    <variant name="ActuationOnWeb" summary="let Chrome auto-browse"/>
    <variant name="DefaultTabContextEnabled"
        summary="share the current tab by default"/>
    <variant name="GeolocationEnabled" summary="use precise location"/>
    <variant name="KeepSidepanelOpenOnNewTabsEnabled"
        summary="keep the side panel open when opening a new tab"/>
    <variant name="LauncherEnabled"
        summary="show Gemini in the system tray and turn on the keyboard
                 shortcut"/>
    <variant name="MicrophoneEnabled" summary="use the microphone"/>
    <variant name="PinnedToTabstrip" summary="show Glic in tab the strip"/>
  </token>
</histogram>

<histogram name="Glic.Prewarming.ChecksResult"
    enum="GlicPrewarmingChecksResult" expires_after="2027-01-31">
  <owner>dullweber@chromium.org</owner>
  <owner>vollick@chromium.org</owner>
  <owner>jbroman@chromium.org</owner>
  <summary>
    Records the reason why Glic preloading was or was not attempted. Recorded
    each time we try to preload if the user has Glic enabled and went through
    the FRE.
  </summary>
</histogram>

<histogram name="Glic.PrewarmingFre.{PrewarmDisposition}PreloadFreForSource"
    enum="GlicPrewarmingFreSource" expires_after="2026-07-26">
  <owner>dewittj@chromium.org</owner>
  <owner>vollick@chromium.org</owner>
  <summary>
    Records whether prewarming {PrewarmDisposition} be allowed for the given
    prewarming source, just before prewarming (or just after the decision not to
    prewarm is made).
  </summary>
  <token key="PrewarmDisposition">
    <variant name="DisabledShouldNot"
        summary="Should not prewarm because the feature flag was not enabled."/>
    <variant name="Should"/>
    <variant name="ShouldNot"/>
  </token>
</histogram>

<histogram name="Glic.PrivateApi.PromptRetrievalResult"
    enum="GlicPrivateApiStatusCodeHistogramValue" expires_after="2026-12-31">
  <owner>dtrainor@chromium.org</owner>
  <owner>nyquist@chromium.org</owner>
  <owner>glic@google.com</owner>
  <summary>
    Records the detailed outcome of invoking the glic private prompt retrieval
    API. This tracks both successful and unsuccessful retrieval attempts,
    differentiating between local validation failures, HTTP/parsing errors, and
    server-reported statuses. Recorded once per API invocation.
  </summary>
</histogram>

<histogram
    name="Glic.ProfileEnablement.AnchoredDespiteEligibilityReason.{Suffix}"
    enum="GlicAnchoredDespiteEligibilityReason" expires_after="2027-06-30">
  <owner>birnie@google.com</owner>
  <owner>glic@google.com</owner>
  <summary>
    Logged when the Glic entry point remains anchored for an onboarded user
    despite the profile currently failing eligibility criteria. Records the
    specific reasons (global or profile-level) the button is in an error or
    disabled state. Multiple reasons may be recorded per client. This is
    {Suffix}.
  </summary>
  <token key="Suffix" variants="ProfileEnablementSuffix"/>
</histogram>

<histogram name="Glic.ProfileEnablement.DisabledReason.{Suffix}"
    enum="GlicProfileEnablementReason" expires_after="2027-02-07">
  <owner>dewittj@chromium.org</owner>
  <owner>glic@chromium.org</owner>
  <summary>
    Records reasons why glic might be disabled for the profile. Multiple reasons
    may be recorded if multiple conditions apply. This is {Suffix}.
  </summary>
  <token key="Suffix" variants="ProfileEnablementSuffix"/>
</histogram>

<histogram name="Glic.ProfileEnablement.EligibleForLive.{Suffix}"
    enum="Boolean" expires_after="2027-02-07">
  <owner>dewittj@chromium.org</owner>
  <owner>glic@chromium.org</owner>
  <summary>
    Records whether the profile is eligible for live features. This is {Suffix}.
  </summary>
  <token key="Suffix" variants="ProfileEnablementSuffix"/>
</histogram>

<histogram name="Glic.ProfileEnablement.IsConsented.{Suffix}" enum="Boolean"
    expires_after="2027-02-07">
  <owner>dewittj@chromium.org</owner>
  <owner>glic@chromium.org</owner>
  <summary>
    Records whether an eligible user has consented to use glic (accepted the
    FRE) for the profile. Excludes users that are ineligible for glic. This is
    {Suffix}.
  </summary>
  <token key="Suffix" variants="ProfileEnablementSuffix"/>
</histogram>

<histogram name="Glic.ProfileEnablement.IsEnabled.{Suffix}" enum="Boolean"
    expires_after="2027-02-07">
  <owner>dewittj@chromium.org</owner>
  <owner>glic@chromium.org</owner>
  <summary>
    Records whether glic is enabled for the profile. This is {Suffix}.
  </summary>
  <token key="Suffix" variants="ProfileEnablementSuffix"/>
</histogram>

<histogram name="Glic.ProfileEnablement.IsPrimaryAccountFullySignedIn.{Suffix}"
    enum="Boolean" expires_after="2027-02-07">
  <owner>dewittj@chromium.org</owner>
  <owner>glic@chromium.org</owner>
  <summary>
    Records whether the primary account is fully signed in (not paused). This is
    {Suffix}.
  </summary>
  <token key="Suffix" variants="ProfileEnablementSuffix"/>
</histogram>

<histogram name="Glic.ProfileEnablement.RecoveredFromState"
    enum="GlicProfileReadyState" expires_after="2027-06-30">
  <owner>birnie@google.com</owner>
  <owner>chrome-glic@google.com</owner>
  <summary>
    Logged when a user actively attempts to interact with Glic (e.g. by clicking
    the toolbar button, pressing the keyboard shortcut, or invoking via context
    menu) and the interaction succeeds because Glic has successfully recovered
    to kReady from a previously unhealthy/disabled state. Records the specific
    unhealthy state the user's profile recovered from.
  </summary>
</histogram>

<histogram name="Glic.ProfileEnablement.TimeToEnabledFromStartup" units="ms"
    expires_after="2027-02-07">
  <owner>dewittj@chromium.org</owner>
  <owner>glic@chromium.org</owner>
  <summary>
    Records the time from browser startup until glic becomes enabled for a
    profile. This is recorded at most once per profile per session, the first
    time IsEnabledForProfile returns true.
  </summary>
</histogram>

<histogram name="Glic.Response.Attached" enum="Boolean"
    expires_after="2026-07-26">
  <owner>carlosk@chromium.org</owner>
  <owner>harringtond@chromium.org</owner>
  <owner>erikchen@chromium.org</owner>
  <summary>
    When glic returns a response to user input, whether glic was attached or
    detached at the time the response started. Only emitted if glic was visible
    when the response started.
  </summary>
</histogram>

<histogram name="Glic.Response.AttachedContextCount" units="tabs"
    expires_after="2027-02-07">
  <owner>sanaakbani@google.com</owner>
  <owner>birnie@google.com</owner>
  <summary>
    Records the number of tabs attached as context when a response is received
    from Glic. This is recorded for each response. The value is capped at 50.
  </summary>
</histogram>

<histogram name="Glic.Response.ClosedCaptionsShown" enum="Boolean"
    expires_after="2026-01-15">
  <owner>sanaakbani@google.com</owner>
  <owner>carlosk@chromium.org</owner>
  <summary>
    Records if closed captions were being shown at the moment when glic returns
    a response to the user. Records true if the closed captions pref was enabled
    by the user; records false otherwise (an error condition).
  </summary>
</histogram>

<histogram name="Glic.Response.InputMode" enum="GlicWebClientMode"
    expires_after="2026-09-27">
  <owner>carlosk@chromium.org</owner>
  <owner>harringtond@chromium.org</owner>
  <owner>erikchen@chromium.org</owner>
  <summary>
    Recorded after a turn. Records the input mode of the original user input.
  </summary>
</histogram>

<histogram name="Glic.Response.InvocationSource" enum="GlicInvocationSource"
    expires_after="2026-07-26">
  <owner>carlosk@chromium.org</owner>
  <owner>harringtond@chromium.org</owner>
  <owner>erikchen@chromium.org</owner>
  <summary>
    Recorded after a turn. Records the source of the invocation of the glic
    window.
  </summary>
</histogram>

<histogram name="Glic.Response.Rated" enum="BooleanPositive"
    expires_after="2027-02-07">
  <owner>carlosk@chromium.org</owner>
  <owner>harringtond@chromium.org</owner>
  <owner>erikchen@chromium.org</owner>
  <summary>
    Recorded anytime a response is rated. There is no guarantee of correlation
    with any other Response.* metrics. This exists for diagnostic purposes only.
  </summary>
</histogram>

<histogram name="Glic.Response.Segmentation" enum="GlicResponseSegmentation"
    expires_after="2027-02-14">
  <owner>iwells@google.com</owner>
  <owner>erikchen@chromium.org</owner>
  <summary>
    Recorded after a turn. Records the invocation source, attachment, and input
    mode.
  </summary>
</histogram>

<histogram name="Glic.Response.StartTime" units="ms" expires_after="2026-07-26">
  <owner>carlosk@chromium.org</owner>
  <owner>harringtond@chromium.org</owner>
  <owner>erikchen@chromium.org</owner>
  <summary>
    Recorded when a response starts and was visible. Measures the time from a
    user's submitted input until a response starts and was visible to the user.
  </summary>
</histogram>

<histogram name="Glic.Response.StartTime.InputMode.{Mode}" units="ms"
    expires_after="2026-07-26">
  <owner>carlosk@chromium.org</owner>
  <owner>harringtond@chromium.org</owner>
  <owner>erikchen@chromium.org</owner>
  <summary>
    Recorded when a response starts being presented to the user in {Mode}.
    Measures the time from when the user submitted input until a response starts
    being presented to the user.
  </summary>
  <token key="Mode" variants="WebClientMode"/>
</histogram>

<histogram name="Glic.Response.StartTime.TabContext.{ContextStatus}" units="ms"
    expires_after="2026-07-26">
  <owner>carlosk@chromium.org</owner>
  <owner>harringtond@chromium.org</owner>
  <owner>erikchen@chromium.org</owner>
  <summary>
    Recorded when a response starts being presented to the user and
    {ContextStatus} (*). Measures the time from when the user submitted input
    until a response starts being presented to the user. This is reported for
    all web client modes (text or audio).

    (*) Chrome knows if tab context was requested by the web client and the
    internal state of tabs' sharing status, but it cannot know for certain if
    tab context was or was not actually attached to requests by the web client.
  </summary>
  <token key="ContextStatus">
    <variant name="LikelyWith"
        summary="tab context was likely used in the request"/>
    <variant name="LikelyWithout"
        summary="tab context was likely NOT used in the request"/>
  </token>
</histogram>

<histogram name="Glic.Response.TabsPinnedForSharingCount" units="tabs"
    expires_after="2026-07-19">
  <owner>wry@chromium.org</owner>
  <owner>carlosk@chromium.org</owner>
  <owner>mcrouse@chromium.org</owner>
  <summary>
    Recorded after a turn. Records the number of tabs pinned for sharing at that
    time.
  </summary>
</histogram>

<histogram name="Glic.ScrollTo.ErrorReason" enum="GlicScrollToErrorReason"
    expires_after="2027-01-15">
  <owner>liuwilliam@google.com</owner>
  <owner>adithyas@google.com</owner>
  <summary>Records the error reason when scrollTo() fails.</summary>
</histogram>

<histogram name="Glic.ScrollTo.MatchDuration.{MatchResult}" units="ms"
    expires_after="2027-01-15">
  <owner>liuwilliam@google.com</owner>
  <owner>adithyas@google.com</owner>
  <summary>Measures the time taken to match content for scrollTo().</summary>
  <token key="MatchResult">
    <variant name="RangeInvalid"/>
    <variant name="SelectorNotMatched"/>
    <variant name="Success"/>
  </token>
</histogram>

<histogram name="Glic.ScrollTo.ScrollDistance" units="dip"
    expires_after="2027-01-15">
  <owner>liuwilliam@google.com</owner>
  <owner>adithyas@google.com</owner>
  <summary>
    Records the scroll distance (in device independent pixels) for a scroll
    triggered by scrollTo()
  </summary>
</histogram>

<histogram name="Glic.ScrollTo.SessionCount" units="count"
    expires_after="2027-01-15">
  <owner>liuwilliam@google.com</owner>
  <owner>adithyas@google.com</owner>
  <summary>
    Records the number of scrollTo() attempts in a single session. Currently
    configured to have a max recorded value of 100.
  </summary>
</histogram>

<histogram name="Glic.ScrollTo.UserPromptToScrollTime.{Mode}" units="ms"
    expires_after="2027-01-15">
  <owner>liuwilliam@google.com</owner>
  <owner>adithyas@google.com</owner>
  <summary>
    Records the time between when the user submitting input and a scroll
    (triggered by scrollTo()) starting, when the web client is in {Mode}.
  </summary>
  <token key="Mode" variants="WebClientMode"/>
</histogram>

<histogram name="Glic.Selection.Action.{FreState}" enum="GlicSelectionAction"
    expires_after="2026-12-31">
  <owner>gklassen@chromium.org</owner>
  <owner>vollick@chromium.org</owner>
  <summary>
    Records the actions taken on the Glic selection affordance (nudge or
    widget). This includes when the affordance is shown and when it is clicked.
  </summary>
  <token key="FreState">
    <variant name="PostFre" summary="User has accepted the FRE"/>
    <variant name="PreFre" summary="User has not accepted the FRE"/>
  </token>
</histogram>

<histogram name="Glic.Selection.HasSiteExceptions" enum="Boolean"
    expires_after="2026-12-31">
  <owner>wusirui@google.com</owner>
  <owner>naai-xfn@google.com</owner>
  <summary>
    Recorded when the GlicKeyedService for a profile is created. Recorded once
    per profile initialization. This logs whether the profile has at least one
    blocked origin site exception for the inline cue.
  </summary>
</histogram>

<histogram name="Glic.Selection.InlineCueMenuEnabled" enum="BooleanEnabled"
    expires_after="2026-12-31">
  <owner>wusirui@google.com</owner>
  <owner>naai-xfn@google.com</owner>
  <summary>
    Recorded when the GlicKeyedService for a profile is created. Recorded once
    per profile initialization. This logs whether the inline cue is enabled in
    default content settings.
  </summary>
</histogram>

<histogram name="Glic.Selection.NudgeClicked.SelectionLength.{FreState}"
    units="characters" expires_after="2026-12-31">
  <owner>gklassen@chromium.org</owner>
  <owner>vollick@chromium.org</owner>
  <summary>
    Records the length of the selected text (in characters) when the Glic
    selection nudge is clicked.
  </summary>
  <token key="FreState">
    <variant name="PostFre" summary="User has accepted the FRE"/>
    <variant name="PreFre" summary="User has not accepted the FRE"/>
  </token>
</histogram>

<histogram name="Glic.Selection.WidgetClicked.SelectionLength.{FreState}"
    units="characters" expires_after="2026-12-31">
  <owner>gklassen@chromium.org</owner>
  <owner>vollick@chromium.org</owner>
  <summary>
    Records the length of the selected text (in characters) when the Glic
    selection widget is clicked.
  </summary>
  <token key="FreState">
    <variant name="PostFre" summary="User has accepted the FRE"/>
    <variant name="PreFre" summary="User has not accepted the FRE"/>
  </token>
</histogram>

<histogram name="Glic.Selection.WidgetClicked.SelectionWordCount.{FreState}"
    units="words" expires_after="2026-12-31">
  <owner>wusirui@google.com</owner>
  <owner>naai-xfn@google.com</owner>
  <summary>
    Records the number of words in the selected text when the inline cue is
    clicked by the user. Recorded once per click on any widget action button.
  </summary>
  <token key="FreState">
    <variant name="PostFre" summary="User has accepted the FRE"/>
    <variant name="PreFre" summary="User has not accepted the FRE"/>
  </token>
</histogram>

<histogram name="Glic.Selection.WidgetShown.SelectionLength.{FreState}"
    units="characters" expires_after="2026-12-31">
  <owner>wusirui@google.com</owner>
  <owner>naai-xfn@google.com</owner>
  <summary>
    Records the length of the selected text (in characters) whenever the inline
    cue is shown to the user.
  </summary>
  <token key="FreState">
    <variant name="PostFre" summary="User has accepted the FRE"/>
    <variant name="PreFre" summary="User has not accepted the FRE"/>
  </token>
</histogram>

<histogram name="Glic.Selection.WidgetShown.SelectionWordCount.{FreState}"
    units="words" expires_after="2026-12-31">
  <owner>wusirui@google.com</owner>
  <owner>naai-xfn@google.com</owner>
  <summary>
    Records the number of words in the selected text whenever the inline cue is
    shown to the user.
  </summary>
  <token key="FreState">
    <variant name="PostFre" summary="User has accepted the FRE"/>
    <variant name="PreFre" summary="User has not accepted the FRE"/>
  </token>
</histogram>

<histogram name="Glic.Session.Duration" units="ms" expires_after="2026-07-26">
  <owner>carlosk@chromium.org</owner>
  <owner>harringtond@chromium.org</owner>
  <owner>erikchen@chromium.org</owner>
  <summary>
    Time in milliseconds from when the window opens until it is closed. Recorded
    each time the glic window is closed.
  </summary>
</histogram>

<histogram name="Glic.Session.InputModesUsed" enum="GlicInputModesUsed"
    expires_after="2026-07-26">
  <owner>dullweber@chromium.org</owner>
  <owner>erikchen@chromium.org</owner>
  <summary>
    The input modes that were used during the session. Recorded when the panel
    is closed.
  </summary>
</histogram>

<histogram name="Glic.Session.InputSubmit.BrowserActiveState"
    enum="GlicBrowserActiveState" expires_after="2026-07-19">
  <owner>harringtond@chromium.org</owner>
  <owner>carlosk@chromium.org</owner>
  <summary>
    Records the browser active state when user input is submitted in a Glic
    session.
  </summary>
</histogram>

<histogram name="Glic.Session.Open.Attached" enum="Boolean"
    expires_after="2027-02-07">
  <owner>carlosk@chromium.org</owner>
  <owner>harringtond@chromium.org</owner>
  <owner>erikchen@chromium.org</owner>
  <summary>
    Recorded when a session starts. Records whether the window is attached.
  </summary>
</histogram>

<histogram name="Glic.Session.Open.BrowserActiveState"
    enum="GlicBrowserActiveState" expires_after="2026-07-19">
  <owner>harringtond@chromium.org</owner>
  <owner>carlosk@chromium.org</owner>
  <summary>
    Records the browser active state when a Glic session starts.
  </summary>
</histogram>

<histogram name="Glic.Session.Open.InvocationSource"
    enum="GlicInvocationSource" expires_after="2027-02-07">
  <owner>carlosk@chromium.org</owner>
  <owner>harringtond@chromium.org</owner>
  <owner>erikchen@chromium.org</owner>
  <summary>
    Recorded when a session starts. Records the source of the invocation.
  </summary>
</histogram>

<histogram name="Glic.Session.ResponseCount{Profile}" units="count"
    expires_after="2027-01-31">
  <owner>carlosk@chromium.org</owner>
  <owner>harringtond@chromium.org</owner>
  <owner>erikchen@chromium.org</owner>
  <summary>
    The number of responses during the session. Recorded when the panel is
    closed.

    {Profile}
  </summary>
  <token key="Profile" variants="ProfileIndex"/>
</histogram>

<histogram name="Glic.Session.ResponseStart.BrowserActiveState"
    enum="GlicBrowserActiveState" expires_after="2026-07-19">
  <owner>harringtond@chromium.org</owner>
  <owner>carlosk@chromium.org</owner>
  <summary>
    Records the browser active state when a Glic response starts rendering.
  </summary>
</histogram>

<histogram
    name="Glic.Session.WasTurnSubmitted.{EmbedderType}.{InvocationSource}"
    enum="Boolean" expires_after="2027-07-31">
  <owner>andreaxg@google.com</owner>
  <owner>glic-dev@google.com</owner>
  <summary>
    Whether at least one turn was submitted during the Glic session that was
    opened via {InvocationSource} in {EmbedderType}. Logged when the session
    (panel or floaty window) is closed.
  </summary>
  <token key="EmbedderType" variants="EmbedderType"/>
  <token key="InvocationSource" variants="GlicInvocationSource"/>
</histogram>

<histogram name="Glic.Session.WebClientCrash.ExitReason"
    enum="GlicWebviewExitReason" expires_after="2027-02-07">
  <owner>birnie@google.com</owner>
  <owner>harringtond@chromium.org</owner>
  <summary>
    Records the exit reason of the Glic webview. This is logged when the
    webview's `exit` event is fired.
  </summary>
</histogram>

<histogram name="Glic.Session.WebUiCrash.TerminationStatus"
    enum="TerminationStatus" expires_after="2027-02-07">
  <owner>birnie@google.com</owner>
  <owner>harringtond@chromium.org</owner>
  <summary>
    Records the termination status of the Glic WebUI process. This is logged
    when the WebUI process associated with Glic is terminated for any reason.
  </summary>
</histogram>

<histogram name="Glic.SetAltOSIcon.OnChromeStart" enum="BooleanEnabled"
    expires_after="2026-12-06">
  <owner>iwells@chromium.org</owner>
  <owner>basiaz@google.com</owner>
  <summary>
    Records whether the Mac alternative toolbar icon became enabled on Chrome
    startup. Only emitted if the other app was running during Chrome startup.
    True means the icon changed and false means the alt icon was already set.
  </summary>
</histogram>

<histogram name="Glic.SetAltOSIcon.OnOtherAppStart" enum="BooleanEnabled"
    expires_after="2026-12-06">
  <owner>iwells@chromium.org</owner>
  <owner>basiaz@google.com</owner>
  <summary>
    Records whether the Mac alternative toolbar icon became enabled due to
    another app starting. Logged when the other app starts. True means the icon
    changed and false means the alt icon was already set.
  </summary>
</histogram>

<histogram name="Glic.Sharing.TabPinnedForSharing"
    enum="GlicTabPinnedForSharingResult" expires_after="2027-01-03">
  <owner>wry@chromium.org</owner>
  <owner>carlosk@chromium.org</owner>
  <summary>
    Records when a tab is attempted to be pinned for sharing with Glic. Records
    true if the pinning was successful; records false otherwise.
  </summary>
</histogram>

<histogram name="Glic.Skills.Invoke.Funnel" enum="SkillsInvokeFunnel"
    expires_after="2027-02-01">
  <owner>michelleabreo@google.com</owner>
  <owner>skills-eng@google.com</owner>
  <summary>
    Records the progression of a user opening the skills menu and subsequently
    invoking a skill. This is used to measure how often users who open the UI
    actually proceed to execute a skill. Used to track overall engagement and
    drop-off rates for the core invocation flow.
  </summary>
</histogram>

<histogram name="Glic.Skills.SkillBuilder.Event" enum="SkillBuilderEvent"
    expires_after="2027-02-01">
  <owner>michelleabreo@google.com</owner>
  <owner>skills-eng@google.com</owner>
  <summary>
    Records the progression of user actions and system events within the
    AI-assisted Skill Builder flow. This metric is logged whenever the user
    interacts with the builder's UI (e.g., clicking the proactive promo chip,
    clicking 'Save as skill') or when the backend successfully completes a
    generation step (e.g., generation of the skill prompt). This acts as a
    high-level funnel to measure engagement and drop-off during the AI-driven
    skill creation process.
  </summary>
</histogram>

<histogram name="Glic.Skills.WebClient.Event" enum="SkillsWebClientEvent"
    expires_after="2027-02-01">
  <owner>michelleabreo@google.com</owner>
  <owner>skills-eng@google.com</owner>
  <summary>
    Records key events within the Skills section of the Glic WebClient. This is
    logged immediately when a user interacts with the UI (such as invoking a
    skill, clicking 'Add Skill', or opening the menu) or when a notable system
    state transition occurs (such as Gemini successfully generating a prompt).
    This serves as a top-level metric to measure user engagement, feature
    distribution, and funnel progression directly within the Glic panel.
  </summary>
</histogram>

<histogram name="Glic.Tab.DaisyChainDepth" units="count"
    expires_after="2027-02-07">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the depth of a tab in a daisy chain. Depth 1 means opened directly
    from Glic. Depth 2 means opened from a tab that was opened from Glic, and so
    on. Recorded each time a tab is bound via daisy chaining from another tab.
  </summary>
</histogram>

<histogram name="Glic.Tab.InstanceBindCount" units="count"
    expires_after="2027-01-17">
  <owner>birnie@google.com</owner>
  <owner>carlosk@chromium.org</owner>
  <summary>
    Records the number of unique Glic instances a tab was bound to during its
    lifetime. Recorded when the tab is destroyed, but only if it was bound to at
    least one instance.
  </summary>
</histogram>

<histogram name="Glic.Tab.InstancePinCount" units="count"
    expires_after="2027-01-17">
  <owner>birnie@google.com</owner>
  <owner>carlosk@chromium.org</owner>
  <summary>
    Records the number of unique Glic instances a tab was pinned to during its
    lifetime. Recorded when the tab is destroyed, but only if it was pinned to
    at least one instance.
  </summary>
</histogram>

<histogram name="Glic.TabContext.PdfContentsRequested" enum="PdfRequestStates"
    expires_after="2027-01-31">
  <owner>carlosk@chromium.org</owner>
  <owner>harringtond@chromium.org</owner>
  <summary>
    Recorded whenever the glic web client requests to obtain PDF contents from
    the focused tab. Records an enum sample that answers a) is the main document
    a PDF (based on its MIME type) and b) were PDF contents actually found
    within the web page (only if Chrome's PDF plugin is actually active).
  </summary>
</histogram>

<histogram name="Glic.TabContext.ShareImageDuration" units="ms"
    expires_after="2027-02-07">
  <owner>carlosk@chromium.org</owner>
  <owner>vollick@chromium.org</owner>
  <summary>
    Recorded when an attempt to send an image as context to glic is completed.
    Precisely, this records the time from the start of an image context sharing
    request until when the data finishes being sent via glic.mojom. It does not
    capture any subsequent processing time by the web client. This is not
    recorded if sharing fails.
  </summary>
</histogram>

<histogram name="Glic.TabContext.ShareImageResult" enum="ShareImageResult"
    expires_after="2027-02-07">
  <owner>carlosk@chromium.org</owner>
  <owner>vollick@chromium.org</owner>
  <summary>
    Recorded after an attempt is made to share an image with glic.
  </summary>
</histogram>

<histogram name="Glic.TabContext.UploadTime" units="ms"
    expires_after="2026-11-04">
  <owner>carlosk@chromium.org</owner>
  <owner>harringtond@chromium.org</owner>
  <summary>
    Recorded when the glic web client reports that it has completed uploading
    all necessary tab context. Reports the time taken to upload. Note that
    upload may happen none or many times for any given query, and this may
    report the wrong timings if the web client performs concurrent upload
    operations.
  </summary>
</histogram>

<histogram name="Glic.TabContextMenu.PinnedTabsToExistingConversation"
    units="tabs" expires_after="2027-02-07">
  <owner>sanaakbani@google.com</owner>
  <owner>birnie@google.com</owner>
  <summary>
    Records the number of tabs selected when pinning to an existing conversation
    from the tab context menu.
  </summary>
</histogram>

<histogram name="Glic.TabContextMenu.PinnedTabsToNewConversation" units="tabs"
    expires_after="2027-02-07">
  <owner>sanaakbani@google.com</owner>
  <owner>birnie@google.com</owner>
  <summary>
    Records the number of tabs selected when pinning to a new conversation from
    the tab context menu.
  </summary>
</histogram>

<histogram name="Glic.TabContextMenu.UnpinnedTabs" units="tabs"
    expires_after="2027-02-07">
  <owner>sanaakbani@google.com</owner>
  <owner>birnie@google.com</owner>
  <summary>
    Records the number of tabs selected when unpinning from the tab context
    menu.
  </summary>
</histogram>

<histogram name="Glic.TieredRolloutEnablementStatus"
    enum="GlicProfilesAllSomeNone" expires_after="2027-02-07">
  <owner>sophiechang@chromium.org</owner>
  <owner>dewittj@chromium.org</owner>
  <summary>
    Records whether the Glic-eligible profiles are enabled for tiered rollout.
    Emitted in every UMA record from the current session (at the time the record
    is finalized), but only if there is at least one Glic-eligible profile.
  </summary>
</histogram>

<histogram name="Glic.Turn.Actuation.IsRetry" enum="Boolean"
    expires_after="2027-02-14">
  <owner>qinmin@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records whether a browser actuation result submitted by the web client is a
    retry of a previous actuation in the same turn. Recorded for each actuation
    result submitted.
  </summary>
</histogram>

<histogram name="Glic.Turn.Actuation.ResponseStartTime" units="ms"
    expires_after="2027-02-14">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the time from when the web client sends a browser actuation result
    over the network until a response starts being presented to the user.
    Recorded for each turn in a Glic instance where an actuation result was
    submitted.
  </summary>
</histogram>

<histogram name="Glic.Turn.Actuation.ResponseStopTime" units="ms"
    expires_after="2026-10-16">
  <owner>qinmin@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Measures the time from when the web client sends a browser actuation result
    until a response stops. Recorded for each turn where an actuation result was
    submitted.
  </summary>
</histogram>

<histogram name="Glic.Turn.Actuation.ResponseStopTime.{Cause}" units="ms"
    expires_after="2026-10-16">
  <owner>qinmin@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Measures the time from when the web client sends a browser actuation result
    until a response stops for the specific cause: {Cause}. Recorded for each
    turn where an actuation result was submitted.
  </summary>
  <token key="Cause">
    <variant name="ByUser"/>
    <variant name="Other"/>
    <variant name="UnknownCause"/>
  </token>
</histogram>

<histogram name="Glic.Turn.Duration.{Model}" units="ms"
    expires_after="2027-02-14">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Recorded at the end of a turn response from the server indicating the time
    the entire request/response sequence took.
  </summary>
  <token key="Model">
    <variant name="Actor"/>
    <variant name="Default"/>
  </token>
</histogram>

<histogram name="Glic.Turn.InvocationSource" enum="GlicInvocationSource"
    expires_after="2027-02-14">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the last invocation source that was used to open the Glic panel for
    a given turn. Recorded at the end of each turn.
  </summary>
</histogram>

<histogram name="Glic.Turn.LatencyByAttachedTabCount.{AttachedTabCount}"
    units="ms" expires_after="2027-02-07">
  <owner>sanaakbani@google.com</owner>
  <owner>birnie@google.com</owner>
  <summary>
    Records the time from when the user submitted input until a response stops
    for a given number of attached tabs. Recorded after each turn.
  </summary>
  <token key="AttachedTabCount" variants="AttachedTabCount"/>
</histogram>

<histogram name="Glic.Turn.PromptType" enum="GlicPromptType"
    expires_after="2027-03-01">
  <owner>basiaz@google.com</owner>
  <owner>birnie@google.com</owner>
  <summary>
    Recorded when user input is submitted for a turn in a Glic instance.
    Indicates the submission prompt type (e.g. typed text, zero state
    suggestions, auto prompt, audio).
  </summary>
</histogram>

<histogram name="Glic.Turn.ResponseStartTime" units="ms"
    expires_after="2027-02-14">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the time from when the user submitted input until a response starts
    being presented to the user. Recorded for each turn in a Glic instance.
  </summary>
</histogram>

<histogram name="Glic.Turn.ResponseStartTime.InputMode.{Mode}" units="ms"
    expires_after="2027-02-14">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the time from when the user submitted input until a response starts
    being presented to the user, for a given input mode.
  </summary>
  <token key="Mode">
    <variant name="Audio"/>
    <variant name="Text"/>
  </token>
</histogram>

<histogram name="Glic.Turn.ResponseStartTime.{TabContext}" units="ms"
    expires_after="2027-02-14">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the time from when the user submitted input until a response starts
    being presented to the user, for turns where {TabContext} (*). This is
    reported for all web client modes (text or audio).

    (*) Chrome knows if tab context was requested by the web client and the
    internal state of tabs' sharing status, but it cannot know for certain if
    tab context was or was not actually attached to requests by the web client.
  </summary>
  <token key="TabContext">
    <variant name="WithContext"
        summary="tab context was likely used in the request"/>
    <variant name="WithoutContext"
        summary="tab context was likely NOT used in the request"/>
  </token>
</histogram>

<histogram name="Glic.Turn.ResponseStopTime.{Cause}" units="ms"
    expires_after="2027-02-14">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Measures the time from a user's submitted input until a response stops.
    Recorded for each turn in a Glic instance.
  </summary>
  <token key="Cause">
    <variant name="ByUser"/>
    <variant name="Other"/>
    <variant name="UnknownCause"/>
  </token>
</histogram>

<histogram name="Glic.Turn.Source" enum="GlicTurnSource"
    expires_after="2027-02-14">
  <owner>birnie@google.com</owner>
  <owner>perrier@google.com</owner>
  <summary>
    Records the source of the turn, including the UI mode (Side Panel or Floaty)
    and the input mode (Text or Audio). Recorded at the end of each turn.
  </summary>
</histogram>

<histogram name="Glic.Usage.Hotkey" enum="GlicHotkeyUsage"
    expires_after="2027-02-07">
  <owner>erikchen@chromium.org</owner>
  <owner>alimariam@google.com</owner>
  <summary>
    Records whether the user is using the default or custom hotkey. Recorded
    when the user presses the hotkey.
  </summary>
</histogram>

<histogram name="Glic.WarmingPool.ContainerCreationReason"
    enum="GlicContainerCreationReason" expires_after="2027-03-01">
  <owner>acondor@chromium.org</owner>
  <owner>bryantchandler@chromium.org</owner>
  <owner>glic-dev@google.com</owner>
  <summary>
    Logged when a Glic WebContents warming container is created in the warming
    pool. Differentiates the reason or source of the EnsurePreload call.
  </summary>
</histogram>

<histogram name="Glic.WarmingPool.HitStatus" enum="GlicWarmingPoolStatus"
    expires_after="2027-03-01">
  <owner>harringtond@chromium.org</owner>
  <owner>glic-dev@google.com</owner>
  <summary>
    Logged when the Glic WebContents warming pool is used to provide a
    pre-warmed WebContents. Reports whether the container was pre-warmed (hit),
    not pre-warmed (cold), pre-warmed but expired before use, pre-warmed but
    crashed before use, or not pre-warmed because the pool was disabled by
    memory pressure.
  </summary>
</histogram>

<histogram name="Glic.WarmingPool.ReloadAfterExpiry"
    enum="GlicReloadAfterExpiryStatus" expires_after="2027-03-01">
  <owner>harringtond@chromium.org</owner>
  <owner>glic-dev@google.com</owner>
  <summary>
    Logged when a WebContents container in the warming pool expires. Reports why
    the container was or was not automatically reloaded.
  </summary>
</histogram>

<histogram name="Glic.WarmingPool.TimeSinceCreatedAtHit" units="ms"
    expires_after="2027-03-01">
  <owner>harringtond@chromium.org</owner>
  <owner>glic-dev@google.com</owner>
  <summary>
    Logged when the Glic WebContents warming pool reports a 'Hit' status.
    Records the time elapsed since the container was initially created.
  </summary>
</histogram>

<histogram name="Glic.WarmingPool.TimeSinceCreatedAtMiss" units="ms"
    expires_after="2027-03-01">
  <owner>harringtond@chromium.org</owner>
  <owner>glic-dev@google.com</owner>
  <summary>
    Logged when the Glic WebContents warming pool reports a miss (Cold, Expired,
    or Crashed) but a creation timestamp for a previous container was available.
    Records the time elapsed since that container was initially created.
  </summary>
</histogram>

<histogram name="Glic.WarmingPool.WarmedContainerFate"
    enum="GlicWarmedContainerFate" expires_after="2027-03-01">
  <owner>harringtond@chromium.org</owner>
  <owner>glic-dev@google.com</owner>
  <summary>
    Tracks the fate of each warmed container in the Glic warming pool. Logged
    when the container is used, expires, crashes, or is deleted on chrome
    closed. Note that containers created and immediately returned from
    TakeContainer are not tracked. This only covers containers that were warmed
    before being taken.
  </summary>
</histogram>

<histogram name="Glic.WebContentContextMenu.Enabled" enum="Boolean"
    expires_after="2026-09-01">
  <owner>basiaz@google.com</owner>
  <owner>birnie@chromium.org</owner>
  <summary>
    Recorded when the Glic WebContent context menu item is evaluated for
    display. Records true if menu item will be shown, false otherwise.
  </summary>
</histogram>

<histogram name="Glic.WebContentsContextMenu.{GlicContextType}"
    enum="GlicWebContentsContextMenuResult" expires_after="2027-02-07">
  <owner>basiaz@google.com</owner>
  <owner>birnie@chromium.org</owner>
  <summary>
    Logs when the Glic context menu item was shown and ignored, or executed when
    the user opened the context menu on a {GlicContextType}.
  </summary>
  <token key="GlicContextType">
    <variant name="Link" summary="link with no selection"/>
    <variant name="Page" summary="page with no selection"/>
    <variant name="TextSelection" summary="text selection"/>
    <variant name="TextSelectionWithLink"
        summary="text selection with click target that is a link"/>
  </token>
</histogram>

<histogram name="Glic.YoutubeSummarizeVideoZSS.Events"
    enum="GlicYoutubeSummarizeVideoZSSResult" expires_after="2027-01-24">
  <owner>basiaz@google.com</owner>
  <owner>birnie@google.com</owner>
  <summary>
    Logged during the detection of the YouTube 'Ask' button whose presence is
    used to offer a summarize video suggestion in Glic. This is a diagnostic
    metric logged on YT pages to understand if the button was found and how many
    tries (max is 2) it took to find it.
  </summary>
</histogram>

<histogram name="Glic.ZoomAction" enum="GlicZoomAction"
    expires_after="2027-01-24">
  <owner>cuianthony@chromium.org</owner>
  <owner>glic-dev@google.com</owner>
  <summary>
    The zoom action taken by the user in the Glic UI. Recorded when the user
    presses the zoom in, zoom out, or reset zoom keyboard shortcuts while the
    Glic panel is focused, or uses scroll controls to zoom.
  </summary>
</histogram>

<histogram name="Glic.ZoomAction.{GlicZoomSourceModifier}"
    enum="GlicZoomAction" expires_after="2027-01-24">
  <owner>cuianthony@chromium.org</owner>
  <owner>glic-dev@google.com</owner>
  <summary>
    The zoom action taken by the user on the Glic UI. Recorded for
    {GlicZoomSourceModifier}.
  </summary>
  <token key="GlicZoomSourceModifier">
    <variant name="Hotkey" summary="hotkeys without the Shift modifier"/>
    <variant name="HotkeyWithShift" summary="hotkeys with the Shift modifier"/>
    <variant name="Scroll" summary="scrolling (e.g. using mouse wheel)"/>
  </token>
</histogram>

<histogram name="Glic.ZoomLevel.{Suffix}" units="%" expires_after="2027-01-31">
  <owner>cuianthony@chromium.org</owner>
  <owner>glic-dev@google.com</owner>
  <summary>
    The zoom level of the Glic webview as a percentage. Recorded {Suffix}.
  </summary>
  <token key="Suffix">
    <variant name="OnOpen"
        summary="when the Glic panel is opened by the user for the first time
                 from a closed state, see
                 Glic.Instance.{SidePanel,Floaty}.OpenSource for detailed
                 definitions."/>
    <variant name="SteadyState"
        summary="periodically for active users (those who have completed the
                 Glic FRE)."/>
  </token>
</histogram>

</histograms>

</histogram-configuration>
