diff --git a/toolkit/components/telemetry/TelemetryHistogram.cpp b/toolkit/components/telemetry/TelemetryHistogram.cpp index 7644ab9894ca..f5c6895ee400 100644 --- a/toolkit/components/telemetry/TelemetryHistogram.cpp +++ b/toolkit/components/telemetry/TelemetryHistogram.cpp @@ -2279,6 +2279,12 @@ TelemetryHistogram::CreateHistogramSnapshots(JSContext *cx, continue; } + mozilla::Telemetry::HistogramID id; + nsresult rv = internal_GetHistogramEnumId(h->histogram_name().c_str(), &id); + if (NS_WARN_IF(NS_FAILED(rv)) || gHistograms[id].keyed) { + continue; + } + Histogram* original = h; #if !defined(MOZ_WIDGET_ANDROID) if (subsession) { diff --git a/toolkit/components/telemetry/tests/unit/test_TelemetryHistograms.js b/toolkit/components/telemetry/tests/unit/test_TelemetryHistograms.js index 08e5acfdf6ce..c855b0c68227 100644 --- a/toolkit/components/telemetry/tests/unit/test_TelemetryHistograms.js +++ b/toolkit/components/telemetry/tests/unit/test_TelemetryHistograms.js @@ -757,6 +757,14 @@ add_task(function* test_keyed_histogram_recording_enabled() { "Keyed histogram add should not record when recording is disabled"); }); +add_task(function* test_histogramSnapshots() { + let keyed = Telemetry.getKeyedHistogramById("TELEMETRY_TEST_KEYED_COUNT"); + keyed.add("a", 1); + + // Check that keyed histograms are not returned + Assert.ok(!("TELEMETRY_TEST_KEYED_COUNT#a" in Telemetry.histogramSnapshots)); +}); + add_task(function* test_datasets() { // Check that datasets work as expected.