--- a/toolkit/content/aboutTelemetry.js
+++ b/toolkit/content/aboutTelemetry.js
@@ -1705,29 +1705,31 @@ var Scalars = {
let selectedProcess = processesSelect.selectedOptions.item(0).getAttribute("value");
if (!aPayload.processes ||
!selectedProcess ||
!(selectedProcess in aPayload.processes)) {
return;
}
- let scalars = aPayload.processes[selectedProcess].scalars;
- const hasData = scalars && Object.keys(scalars).length > 0;
- setHasData("scalars-section", hasData || processesSelect.options.length);
- if (!hasData) {
- return;
+ let scalars = aPayload.processes[selectedProcess].scalars || {};
+ let hasData = Array.from(processesSelect.options).some((option) => {
+ let value = option.getAttribute("value");
+ let sclrs = aPayload.processes[value].scalars;
+ return sclrs && Object.keys(sclrs).length > 0;
+ });
+ setHasData("scalars-section", hasData);
+ if (Object.keys(scalars).length > 0) {
+ const headings = [
+ "namesHeader",
+ "valuesHeader",
+ ].map(h => bundle.GetStringFromName(h));
+ const table = GenericTable.render(explodeObject(scalars), headings);
+ scalarsSection.appendChild(table);
}
-
- const headings = [
- "namesHeader",
- "valuesHeader",
- ].map(h => bundle.GetStringFromName(h));
- const table = GenericTable.render(explodeObject(scalars), headings);
- scalarsSection.appendChild(table);
},
};
var KeyedScalars = {
/**
* Render the keyed scalar data - if present - from the payload in a simple key-value table.
* @param aPayload A payload object to render the data from.
*/
@@ -1739,20 +1741,24 @@ var KeyedScalars = {
let selectedProcess = processesSelect.selectedOptions.item(0).getAttribute("value");
if (!aPayload.processes ||
!selectedProcess ||
!(selectedProcess in aPayload.processes)) {
return;
}
- let keyedScalars = aPayload.processes[selectedProcess].keyedScalars;
- const hasData = keyedScalars && Object.keys(keyedScalars).length > 0;
- setHasData("keyed-scalars-section", hasData || processesSelect.options.length);
- if (!hasData) {
+ let keyedScalars = aPayload.processes[selectedProcess].keyedScalars || {};
+ let hasData = Array.from(processesSelect.options).some((option) => {
+ let value = option.getAttribute("value");
+ let keyedS = aPayload.processes[value].keyedScalars;
+ return keyedS && Object.keys(keyedS).length > 0;
+ });
+ setHasData("keyed-scalars-section", hasData);
+ if (!Object.keys(keyedScalars).length > 0) {
return;
}
const headings = [
"namesHeader",
"valuesHeader",
].map(h => bundle.GetStringFromName(h));
for (let scalar in keyedScalars) {
@@ -1775,47 +1781,45 @@ 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);
- if (!aPayload.processes || !aPayload.processes.parent) {
- return;
- }
-
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;
- const hasData = events && Object.keys(events).length > 0;
+ 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 (!hasData) {
- return;
- }
+ if (Object.keys(events).length > 0) {
+ const headings = [
+ "timestampHeader",
+ "categoryHeader",
+ "methodHeader",
+ "objectHeader",
+ "valuesHeader",
+ "extraHeader",
+ ].map(h => bundle.GetStringFromName(h));
- const headings = [
- "timestampHeader",
- "categoryHeader",
- "methodHeader",
- "objectHeader",
- "valuesHeader",
- "extraHeader",
- ].map(h => bundle.GetStringFromName(h));
-
- const table = GenericTable.render(events, headings);
- eventsSection.appendChild(table);
+ 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
*
* @param aSectionID ID of the section element that needs to be changed
* @param aHasData true (default) indicates that toggle should be displayed
@@ -2076,74 +2080,75 @@ var LateWritesSingleton = {
},
};
var HistogramSection = {
render(aPayload) {
let hgramDiv = document.getElementById("histograms");
removeAllChildNodes(hgramDiv);
- let histograms = aPayload.histograms;
-
+ let histograms = {};
let hgramsSelect = document.getElementById("processes");
let hgramsOption = hgramsSelect.selectedOptions.item(0);
let hgramsProcess = hgramsOption.getAttribute("value");
- // "parent" histograms/keyedHistograms aren't under "parent". Fix that up.
+
if (hgramsProcess === "parent") {
- hgramsProcess = "";
- }
- if (hgramsProcess &&
- "processes" in aPayload &&
- hgramsProcess in aPayload.processes) {
+ histograms = aPayload.histograms;
+ } else if ("processes" in aPayload && hgramsProcess in aPayload.processes) {
histograms = aPayload.processes[hgramsProcess].histograms;
}
- let hasData = Object.keys(histograms).length > 0;
- setHasData("histograms-section", hasData || hgramsSelect.options.length);
+ let hasData = Array.from(hgramsSelect.options).some((option) => {
+ if (option == "parent") {
+ return Object.keys(aPayload.histograms).length > 0;
+ }
+ let value = option.getAttribute("value");
+ let histos = aPayload.processes[value].histograms;
+ return histos && Object.keys(histos).length > 0;
+ });
+ setHasData("histograms-section", hasData);
- if (hasData) {
+ if (Object.keys(histograms).length > 0) {
for (let [name, hgram] of Object.entries(histograms)) {
Histogram.render(hgramDiv, name, hgram, {unpacked: true});
}
-
- setHasData("histograms-section", true);
}
},
}
var KeyedHistogramSection = {
render(aPayload) {
let keyedDiv = document.getElementById("keyed-histograms");
removeAllChildNodes(keyedDiv);
- let keyedHistograms = aPayload.keyedHistograms;
-
+ let keyedHistograms = {};
let keyedHgramsSelect = document.getElementById("processes");
let keyedHgramsOption = keyedHgramsSelect.selectedOptions.item(0);
let keyedHgramsProcess = keyedHgramsOption.getAttribute("value");
- // "parent" histograms/keyedHistograms aren't under "parent". Fix that up.
if (keyedHgramsProcess === "parent") {
- keyedHgramsProcess = "";
- }
- if (keyedHgramsProcess &&
- "processes" in aPayload &&
- keyedHgramsProcess in aPayload.processes) {
+ keyedHistograms = aPayload.keyedHistograms;
+ } else if ("processes" in aPayload && keyedHgramsProcess in aPayload.processes) {
keyedHistograms = aPayload.processes[keyedHgramsProcess].keyedHistograms;
}
- setHasData("keyed-histograms-section", keyedHgramsSelect.options.length);
- if (keyedHistograms) {
- let hasData = false;
+ let hasData = Array.from(keyedHgramsSelect.options).some((option) => {
+ if (option == "parent") {
+ return Object.keys(aPayload.keyedHistograms).length > 0;
+ }
+ let value = option.getAttribute("value");
+ let keyedHistos = aPayload.processes[value].keyedHistograms;
+ return keyedHistos && Object.keys(keyedHistos).length > 0;
+ });
+ setHasData("keyed-histograms-section", hasData);
+ if (Object.keys(keyedHistograms).length > 0) {
for (let [id, keyed] of Object.entries(keyedHistograms)) {
if (Object.keys(keyed).length > 0) {
- hasData = true;
KeyedHistogram.render(keyedDiv, id, keyed, {unpacked: true});
}
}
- setHasData("keyed-histograms-section", hasData || keyedHgramsSelect.options.length);
}
},
}
var SessionInformation = {
render(aPayload) {
let infoSection = document.getElementById("session-info");
removeAllChildNodes(infoSection);