bug 1470493 - Render "event" ping events in about:telemetry r=janerik

MozReview-Commit-ID: 8U54Cs6obOs

Differential Revision: https://phabricator.services.mozilla.com/D1882

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Chris H-C 2018-07-02 08:55:12 +00:00
parent f53f58d169
commit 9c9f1dff7c
4 changed files with 63 additions and 1 deletions

View File

@ -379,10 +379,19 @@ var PingPicker = {
_updateCurrentPingData() {
const subsession = document.getElementById("show-subsession-data").checked;
const ping = TelemetryController.getCurrentPingData(subsession);
let ping = TelemetryController.getCurrentPingData(subsession);
if (!ping) {
return;
}
// augment ping payload with event telemetry
let eventSnapshot = Telemetry.snapshotEvents(Telemetry.DATASET_RELEASE_CHANNEL_OPTIN, false);
for (let process of Object.keys(eventSnapshot)) {
if (process in ping.payload.processes) {
ping.payload.processes[process].events = eventSnapshot[process].filter(e => !e[1].startsWith("telemetry.test"));
}
}
displayPingData(ping, true);
},
@ -1708,6 +1717,47 @@ var KeyedScalars = {
},
};
var Events = {
/**
* Render the event data - if present - from the payload in a simple table.
* @param aPayload A payload object to render the data from.
*/
render(aPayload) {
let eventsSection = document.getElementById("events");
removeAllChildNodes(eventsSection);
let processesSelect = document.getElementById("processes");
let selectedProcess = processesSelect.selectedOptions.item(0).getAttribute("value");
if (!aPayload.processes ||
!selectedProcess ||
!(selectedProcess in aPayload.processes)) {
return;
}
let events = aPayload.processes[selectedProcess].events || {};
let hasData = Array.from(processesSelect.options).some((option) => {
let value = option.getAttribute("value");
let evts = aPayload.processes[value].events;
return evts && Object.keys(evts).length > 0;
});
setHasData("events-section", hasData);
if (Object.keys(events).length > 0) {
const headings = [
"timestampHeader",
"categoryHeader",
"methodHeader",
"objectHeader",
"valuesHeader",
"extraHeader",
].map(h => bundle.GetStringFromName(h));
const table = GenericTable.render(events, headings);
eventsSection.appendChild(table);
}
},
};
/**
* Helper function for showing either the toggle element or "No data collected" message for a section
*
@ -2306,6 +2356,9 @@ function displayRichPingData(ping, updatePayloadList) {
// Show keyed histogram data
KeyedHistogramSection.render(payload);
// Show event data.
Events.render(payload);
// Show captured stacks.
CapturedStacks.render(payload);

View File

@ -57,6 +57,9 @@
<div class="category" value="keyed-histograms-section">
<span class="category-name">&aboutTelemetry.keyedHistogramsSection;</span>
</div>
<div class="category" value="events-section">
<span class="category-name">&aboutTelemetry.eventsSection;</span>
</div>
<div class="category" value="simple-measurements-section">
<span class="category-name">&aboutTelemetry.simpleMeasurementsSection;</span>
</div>

View File

@ -34,6 +34,7 @@
<!ENTITY aboutTelemetry.keyedScalarsSection "Keyed Scalars">
<!ENTITY aboutTelemetry.histogramsSection "Histograms">
<!ENTITY aboutTelemetry.keyedHistogramsSection "Keyed Histograms">
<!ENTITY aboutTelemetry.eventsSection "Events">
<!ENTITY aboutTelemetry.simpleMeasurementsSection "Simple Measurements">
<!ENTITY aboutTelemetry.slowSqlSection "Slow SQL Statements">
<!ENTITY aboutTelemetry.addonDetailsSection "Add-on Details">

View File

@ -94,3 +94,8 @@ memoryMapTitle = Memory map:
errorFetchingSymbols = An error occurred while fetching symbols. Check that you are connected to the Internet and try again.
timestampHeader = timestamp
categoryHeader = category
methodHeader = method
objectHeader = object
extraHeader = extra