<!--
Copyright 2020 The Chromium Authors
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->
<!--
This file is used to generate a comprehensive list of WebCore 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
[email protected].
-->
<histogram-configuration>
<histograms>
<variants name="IdbRequestType">
<variant name="ObjectStoreAdd"/>
<variant name="ObjectStoreGet"/>
<variant name="ObjectStorePut"/>
<variant name="Open"/>
</variants>
<variants name="IdbTransactionTypes">
<variant name="ReadOnly"/>
<variant name="ReadWrite"/>
<variant name="VersionChange"/>
</variants>
<histogram name="WebCore.DistillabilityUs" units="microseconds"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time spent on collecting the statistics of the document in the main
frame. These statistics would be used as features to classify whether the
page is suitable for DOM distiller.
Warning: This metric may include reports from clients with low-resolution
clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
will cause this metric to have an abnormal distribution. When considering
revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
solution.
</summary>
</histogram>
<histogram name="WebCore.Document.execCommand" enum="MappedEditingCommands"
expires_after="2025-01-12">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Counts the number of times each document.execCommand is executed. This
doesn't count commands not supported by Blink.
</summary>
</histogram>
<histogram name="WebCore.Editing.Commands" enum="MappedEditingCommands"
expires_after="2024-09-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Counts the number of times each Editor::Command::execute is called. This
doesn't count commands not supported by Blink.
</summary>
</histogram>
<histogram name="WebCore.FindInPage.TaskDuration" units="ms"
expires_after="2023-05-07">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records how long one find-in-page task took from invocation start to end.
Emitted when a find-in-page task finished running.
</summary>
</histogram>
<histogram name="WebCore.Framebust.ClickThroughPosition"
enum="ListItemPosition" expires_after="M110">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The position of the URL in the framebust UI list (desktop only) when it is
clicked. Note that this UI surface is shared with the tab-under
intervention, so elements in the list could come from either features. This
metric will only be logged when a URL from the framebust (3p redirect)
intervention is clicked.
</summary>
</histogram>
<histogram name="WebCore.Framebust.InterventionOutcome"
enum="FramebustInterventionOutcome" expires_after="M110">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The (android only) outcome of a particular framebust infobar. Recorded when
the user either closes the infobar or declines the intervention by clicking
the link.
</summary>
</histogram>
<histogram name="WebCore.Fullscreen.LockStateAtEntryViaApi"
enum="FullscreenLockState" expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This metric records whether keyboard/pointer locks are engaged each time a
web page enters fullscreen via the Fullscreen API.
Canary/Dev data from December 2023 - January 2024 may be inaccurate due to a
bug.
</summary>
</histogram>
<histogram name="WebCore.Fullscreen.LockStateAtEntryViaBrowserUi"
enum="FullscreenLockState" expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This metric records whether keyboard/pointer locks are engaged each time the
user enters fullscreen via the browser UI.
Note that even when keyboard lock has been requested, it doesn't get
activated when entering fullscreen through the browser UI. The Fullscreen
API must (also) be called.
Canary/Dev data from December 2023 - January 2024 may be inaccurate due to a
bug.
</summary>
</histogram>
<histogram name="WebCore.Fullscreen.WebsiteStateAtApiRequest"
enum="WebsiteStateAtFullscreenRequest" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This metric records the state of the website origin when it requests to
enter fullscreen via the Fullscreen API. "Not visited" means the
origin has not been visited more than a day ago.
</summary>
</histogram>
<histogram name="WebCore.IndexedDB.BackingStore.Action" enum="IDBAction"
expires_after="never">
<!-- expires-never: indexeddb heartbeat metric; used for chirp alerts (go/chrome-indexeddb-heartbeat) -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records actions that take place in IndexedDB. These stats are used for
normalization in formulas. See go/chrome-indexeddb-heartbeat
</summary>
</histogram>
<histogram name="WebCore.IndexedDB.BackingStore.DeleteDatabaseStatus"
enum="LevelDBStatus" expires_after="never">
<!-- expires-never: indexeddb heartbeat metric; used for chirp alerts (go/chrome-indexeddb-heartbeat) -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the result of trying to delete an IndexedDB database, per the user
using the IDBFactory::DeleteDatabase API.
</summary>
</histogram>
<histogram name="WebCore.IndexedDB.BackingStore.OpenFailureTime" units="ms"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the time that it takes to fail to open IndexedDB's backing store.
</summary>
</histogram>
<histogram name="WebCore.IndexedDB.BackingStore.OpenFirstTryResult"
enum="LevelDBStatus" expires_after="never">
<!-- expires-never: indexeddb heartbeat metric; used for chirp alerts (go/chrome-indexeddb-heartbeat) -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the result of the FIRST attempt at opening the backing store for
IndexedDB (i.e. retries are ignored). This is recorded when an API call
needs to open the backing store (if it isn't already opened). API calls that
can open the backing store are: IDBFactory::Open, GetDatabaseNames,
GetDatabaseInfo, and DeleteDatabase.
</summary>
</histogram>
<histogram name="WebCore.IndexedDB.BackingStore.OpenFirstTrySuccessTime"
units="ms" expires_after="2024-12-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the time that it takes to open IndexedDB's backing store. This is
only recorded if the backing store was opened successfully on the first
attempt.
</summary>
</histogram>
<histogram name="WebCore.IndexedDB.BackingStore.OpenStatus"
enum="IDBLevelDBBackingStoreOpenResult" expires_after="never">
<!-- expires-never: core storage metric; consumed in separate dashboard (go/chrome-storage-dashboard) -->
<!-- expires-never: indexeddb heartbeat metric; used for chirp alerts (go/chrome-indexeddb-heartbeat) -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Count of the different success and failure modes when opening an IndexedDB
backing store - clean open, successful open with recovery, failed recovery,
etc. Includes all hosts.
</summary>
</histogram>
<histogram name="WebCore.IndexedDB.BackingStore.OpenStatus.Docs"
enum="IDBLevelDBBackingStoreOpenResult" expires_after="never">
<!-- expires-never: core storage metric; consumed in separate dashboard (go/chrome-storage-dashboard) -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Count of the different success and failure modes when opening an IndexedDB
backing store - clean open, successful open with recovery, failed recovery,
etc. Only for docs.google.com.
</summary>
</histogram>
<histogram name="WebCore.IndexedDB.BackingStore.OpenSuccessTime" units="ms"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the time that it takes to succesfully open IndexedDB's backing
store. Unlike OpenFirstTrySuccessTime, this is recorded regardless of
whether the success was on the first try.
</summary>
</histogram>
<histogram name="WebCore.IndexedDB.BackingStore.OverlyLargeOriginLength"
units="characters" expires_after="2024-12-15">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Length of leveldb directories that cause paths to not fit in the filesystem,
either because the individual component is too long or the overall path is
larger than MAX_PATH.
</summary>
</histogram>
<histogram name="WebCore.IndexedDB.LevelDB.CloseTime" units="ms"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time that it takes to close IndexedDB's LevelDB backing store.
</summary>
</histogram>
<histogram name="WebCore.IndexedDB.LevelDB.OpenTime" units="ms"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time that it takes to open IndexedDB's LevelDB backing store.
</summary>
</histogram>
<histogram name="WebCore.IndexedDB.LevelDB.WriteTime" units="ms"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time that it takes to write data to an IndexedDB's LevelDB backing
store.
</summary>
</histogram>
<histogram name="WebCore.IndexedDB.LevelDBOpenErrors" enum="LevelDBErrorTypes"
expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Error classes returned by LevelDB when it failed to open a database.
</summary>
</histogram>
<histogram name="WebCore.IndexedDB.LevelDBOpenErrors.BFE"
enum="PlatformFileError" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Errors (base::File::Error) encountered by a single LevelDBEnv method when
opening an IndexedDB instance.
</summary>
</histogram>
<histogram name="WebCore.IndexedDB.LevelDBOpenErrors.Corruption"
enum="LevelDBCorruptionTypes" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Types of corruption that LevelDB encounters when opening a database.
</summary>
</histogram>
<histogram name="WebCore.IndexedDB.LevelDBOpenErrors.EnvMethod"
enum="LevelDBIOErrorMethods" expires_after="2025-01-12">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
LevelDBEnv methods that generated IO errors when opening a database.
</summary>
</histogram>
<histogram name="WebCore.IndexedDB.LevelDBReadErrors" enum="LevelDBErrorTypes"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Error classes returned by LevelDB when it failed to read a database.
</summary>
</histogram>
<histogram name="WebCore.IndexedDB.LevelDBReadErrors.BFE"
enum="PlatformFileError" expires_after="2025-02-24">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Errors (base::File::Error) encountered by a single LevelDBEnv method when
reading from an IndexedDB instance.
</summary>
</histogram>
<histogram name="WebCore.IndexedDB.LevelDBReadErrors.Corruption"
enum="LevelDBCorruptionTypes" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Types of corruption that LevelDB encounters when reading a database.
</summary>
</histogram>
<histogram name="WebCore.IndexedDB.LevelDBReadErrors.EnvMethod"
enum="LevelDBIOErrorMethods" expires_after="2025-02-24">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
LevelDBEnv methods that generated IO errors when reading a database.
</summary>
</histogram>
<histogram name="WebCore.IndexedDB.LevelDBWriteErrors" enum="LevelDBErrorTypes"
expires_after="2025-02-24">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Error classes returned by LevelDB when it failed to write to a database.
</summary>
</histogram>
<histogram name="WebCore.IndexedDB.LevelDBWriteErrors.BFE"
enum="PlatformFileError" expires_after="2025-02-24">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Errors (base::File::Error) encountered by a single LevelDBEnv method when
writing to an IndexedDB instance.
</summary>
</histogram>
<histogram name="WebCore.IndexedDB.LevelDBWriteErrors.Corruption"
enum="LevelDBCorruptionTypes" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Types of corruption returned by LevelDB when it failed to write to a
database.
</summary>
</histogram>
<histogram name="WebCore.IndexedDB.LevelDBWriteErrors.EnvMethod"
enum="LevelDBIOErrorMethods" expires_after="2025-02-24">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
LevelDBEnv methods that generated IO errors when writing to a database.
</summary>
</histogram>
<histogram name="WebCore.IndexedDB.OpenTime.Cold" units="ms"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the full time it takes to open a database that isn't open yet (so
files are loaded from disk, metadata checked, etc). The measurement happens
when a website calls "indexedDB.open", and records the time it
takes from when this method is called to when the onsuccess event (or
onupgradeneeded event, in the case of a database upgrade) is dispatched. See
WebCore.IndexedDB.OpenTime.Warm for the time it takes an already-loaded
database to load.
</summary>
</histogram>
<histogram name="WebCore.IndexedDB.OpenTime.Warm" units="ms"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the full time it takes to open an already-open database. The
measurement happens when a website calls "indexedDB.open", and
records the time it takes from when this method is called to when the
onsuccess event (or onupgradeneeded event, in the case of a database
upgrade) is dispatched. See WebCore.IndexedDB.OpenTime.Cold for the time it
takes to open a database that is not open yet.
</summary>
</histogram>
<histogram name="WebCore.IndexedDB.PutValueSize2" units="KB"
expires_after="2025-02-28">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The size of the IndexedDB value used in an IndexedDB object store 'put'
operation. Recorded for every 'put' operation.
</summary>
</histogram>
<histogram name="WebCore.IndexedDB.RequestDispatchOutcome.{RequestType}"
enum="BooleanSuccess" expires_after="2024-12-04">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
When dispatching an event on IDBRequest, records whether that event is a
success event or error event.
Note this is only recorded for the first result dispatch for a given
request, e.g. "upgradedneeded" but not "success" for an
open request.
</summary>
<token key="RequestType" variants="IdbRequestType"/>
</histogram>
<histogram name="WebCore.IndexedDB.RequestDuration2.{RequestType}" units="ms"
expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records end to end duration of an IndexedDB operation. Unlike
RequestDuration before it, this only records when an event is successfully
dispatched to the page (whether the result is a success or error).
Note this is only recorded for the first result dispatch for a given
request, e.g. "upgradedneeded" but not "success" for an
open request.
</summary>
<token key="RequestType" variants="IdbRequestType"/>
</histogram>
<histogram name="WebCore.IndexedDB.Transaction.{TransactionType}.TimeActive"
units="ms" expires_after="2024-12-08">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
[deprecated - this measures only through the end of commit phase 1 and
misses commit phase 2, which includes the backing store commit] The time it
takes for an IndexedDB transaction to commit, starting from when it starts
executing tasks (when it reaches the front of the scheduling queue).
Recorded on transaction commit.
</summary>
<token key="TransactionType" variants="IdbTransactionTypes"/>
</histogram>
<histogram name="WebCore.IndexedDB.Transaction.{TransactionType}.TimeActive2"
units="ms" expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time it takes for an IndexedDB transaction to commit, starting from when
it starts executing tasks (when it reaches the front of the scheduling
queue). Recorded after transaction commit fully completes.
</summary>
<token key="TransactionType" variants="IdbTransactionTypes"/>
</histogram>
<histogram name="WebCore.IndexedDB.Transaction.{TransactionType}.TimeQueued"
units="ms" expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time it takes for an IndexedDB transaction to start after it's created.
This is measured from the browser process. It represents the amount of time
spent queued behind other tranactions (i.e. waiting for locks) and any other
delays before the transaction can begin operations.
</summary>
<token key="TransactionType" variants="IdbTransactionTypes"/>
</histogram>
<histogram name="WebCore.IndexedDB.TransactionAbortReason" enum="IDBException"
expires_after="2025-02-28">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded on the browser side (back end) when an IndexedDB transaction is
aborted, specifically recording the reason for the abort. This can be
triggered by javascript code on the renderer, errors or force closes on the
backend, or by the transaction timeout timer.
</summary>
</histogram>
<histogram name="WebCore.ResourceFetcher.ActionUponResourceRequest"
enum="ActionUponResourceRequest" expires_after="M85">
<owner>[email protected]</owner>
<summary>
The resulting action (e.g. load resource, use resource from in-memory
cache...) upon a resource request.
</summary>
</histogram>
<histogram name="WebCore.ResourceFetcher.ResourceHasClientUponCacheHit"
enum="ResourceHasClient" expires_after="M85">
<owner>[email protected]</owner>
<summary>
Whether the resource in the cache is being used by at least one client (live
resource) or not (dead resource) upon a cache hit.
</summary>
</histogram>
<histogram name="WebCore.Scripts.Async.NotStreamingReason"
enum="NotStreamingReason" expires_after="2024-09-18">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Reason for not streaming an async script.
Warning: This histogram was expired from 2023-12-10 to 2024-03-19. Data may
be missing.
</summary>
</histogram>
<histogram name="WebCore.Scripts.Async.StartedStreaming" enum="BooleanStreamed"
expires_after="2023-08-08">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Whether an async script was streamed or not.</summary>
</histogram>
<histogram name="WebCore.Scripts.Deferred.NotStreamingReason"
enum="NotStreamingReason" expires_after="2024-09-18">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Reason for not streaming a deferred script.
Warning: This histogram was expired from 2023-12-10 to 2024-03-19. Data may
be missing.
</summary>
</histogram>
<histogram name="WebCore.Scripts.Deferred.StartedStreaming"
enum="BooleanStreamed" expires_after="2023-06-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Whether a deferred script was streamed or not.</summary>
</histogram>
<histogram name="WebCore.Scripts.InlineStreamerTimedOut" enum="BooleanTimedOut"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether waiting for the background compile for an inline script timed out on
the main thread. This is recorded each time an inline script streamer is
available when executing an inline script.
Warning: This histogram was expired from 2023-11-12 to 2024-06-11. Data may
be missing.
</summary>
</histogram>
<histogram name="WebCore.Scripts.InlineStreamerWaitTime" units="microseconds"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the time the main thread is blocked while waiting for an inline
script to finish compiling on a background thread. Recorded for each inline
script that is compiled on a background thread.
This histogram only records metrics on machines with high-resolution clocks.
Warning: This histogram was expired from 2023-11-12 to 2024-06-11. Data may
be missing.
</summary>
</histogram>
<histogram name="WebCore.Scripts.Other.NotStreamingReason"
enum="NotStreamingReason" expires_after="2024-09-18">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Reason for not streaming an other (not async, deferred or parser blocking)
script.
Warning: This histogram was expired from 2023-12-10 to 2024-03-19. Data may
be missing.
</summary>
</histogram>
<histogram name="WebCore.Scripts.Other.StartedStreaming" enum="BooleanStreamed"
expires_after="2023-06-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether an other (not async, deferred or parser blocking) script was
streamed or not.
</summary>
</histogram>
<histogram name="WebCore.Scripts.ParsingBlocking.NotStreamingReason"
enum="NotStreamingReason" expires_after="2024-09-18">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Reason for not streaming a parsing blocking script.
Warning: This histogram was expired from 2023-10-08 to 2024-03-19. Data may
be missing.
</summary>
</histogram>
<histogram name="WebCore.Scripts.ParsingBlocking.StartedStreaming"
enum="BooleanStreamed" expires_after="2023-06-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Whether a parsing blocking script was streamed or not.</summary>
</histogram>
<histogram name="WebCore.Scripts.V8CodeCacheMetadata.Get"
enum="V8CodeCacheGetMetadataType" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
What type of cache metadata we retrieved for a script. Recorded when we are
about to compile a script.
</summary>
</histogram>
<histogram name="WebCore.Scripts.V8CodeCacheMetadata.Set"
enum="V8CodeCacheSetMetadataType" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
What type of cache metadata we set for a script. If we set multiple metadata
types for the same script, multiple samples are recorded. Recorded when we
set the metadata.
</summary>
</histogram>
<histogram name="WebCore.Scripts.V8CompileHintsStatus"
enum="V8CompileHintsStatus" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether we produced / consumed compile hints (either local or crowdsourced)
for a script. Recorded when a script is compiled (either via streaming or
otherwise).
</summary>
</histogram>
<histogram name="WebCore.Scripts.V8CrowdsourcedCompileHints.ModelQuality"
enum="V8CompileHintsModelQuality" expires_after="2025-01-12">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether we got a V8CompileHints model and whether it was good quality.
</summary>
</histogram>
<histogram name="WebCore.Scripts.V8LocalCompileHintsGenerated"
enum="V8LocalCompileHintsGenerated" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether we produced the non-final or the final version of local compile
hints. This can be used for approximating how often we end up not generating
compile hints if we wait too long for the final compile hints generation.
</summary>
</histogram>
<histogram name="WebCore.Scripts.V8LocalCompileHintsObsoletedByCodeCache"
enum="BooleanYesNo" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether there already was a code cache when we tried to set local compile
hints. Recorded when we set compile hints.
</summary>
</histogram>
</histograms>
</histogram-configuration>