bug 1437446 : Make probe process choice more visible in about:telemetry. , r?chutten draft
authorakriti <akriti.v10@gmail.com>
Mon, 23 Apr 2018 16:18:12 +0530
changeset 786481 c824afb2f97f37dfa9c619995d1cd8948f73c4ab
parent 782064 ceac91dc08bef5d099c10dda632fc3651b23c897
push id107480
push userbmo:akriti.v10@gmail.com
push dateMon, 23 Apr 2018 10:53:05 +0000
reviewerschutten
bugs1437446
milestone61.0a1
bug 1437446 : Make probe process choice more visible in about:telemetry. , r?chutten MozReview-Commit-ID: IjfeGam7FnO
toolkit/content/aboutTelemetry.js
--- a/toolkit/content/aboutTelemetry.js
+++ b/toolkit/content/aboutTelemetry.js
@@ -41,16 +41,19 @@ const isWindows = (Services.appinfo.OS =
 const EOL = isWindows ? "\r\n" : "\n";
 
 // This is the ping object currently displayed in the page.
 var gPingData = null;
 
 // Cached value of document's RTL mode
 var documentRTLMode = "";
 
+// Data Collection Processes
+var pOptions = ["parent", "content", "extension", "dynamic", "gpu"];
+
 /**
  * Helper function for determining whether the document direction is RTL.
  * Caches result of check on first invocation.
  */
 function isRTL() {
   if (!documentRTLMode)
     documentRTLMode = window.getComputedStyle(document.body).direction;
   return (documentRTLMode == "rtl");
@@ -1700,21 +1703,54 @@ var AddonDetails = {
 };
 
 var Scalars = {
   /**
    * Render the scalar data - if present - from the payload in a simple key-value table.
    * @param aPayload A payload object to render the data from.
    */
   render(aPayload) {
+<<<<<<< local
+=======
+    this.scalarSelect("parent", aPayload);
+    let sectionid = "scalars-section";
+    this.checkProcessData(sectionid, aPayload);
+  },
+
+  checkProcessData(id, aPayload) {
+    let prOptions = [];
+    var i = 0;
+    for (let f of pOptions) {
+    if (f === "parent") {
+      prOptions[i] = f;
+      i = i + 1;
+    } else if ("processes" in aPayload && f in aPayload.processes &&
+               "scalars" in aPayload.processes[f]) {
+      let scalars = aPayload.processes[f].scalars;
+      if (Object.keys(scalars).length > 0 && scalars) {
+       prOptions[i] = f;
+       i = i + 1;
+      }
+    }
+   }
+   addSubSection(id, aPayload, prOptions, Scalars.scalarSelect);
+  },
+
+  scalarSelect(hprocess, aPayload) {
+>>>>>>> histedit
     let scalarsSection = document.getElementById("scalars");
     removeAllChildNodes(scalarsSection);
 
+<<<<<<< local
     let processesSelect = document.getElementById("processes");
     let selectedProcess = processesSelect.selectedOptions.item(0).getAttribute("value");
+=======
+    let selectedProcess = hprocess;
+    let scalarOptions = pOptions;
+>>>>>>> histedit
 
     if (!aPayload.processes ||
         !selectedProcess ||
         !(selectedProcess in aPayload.processes)) {
       return;
     }
 
     let scalars = aPayload.processes[selectedProcess].scalars || {};
@@ -1736,21 +1772,53 @@ var Scalars = {
 };
 
 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.
    */
   render(aPayload) {
+<<<<<<< local
+=======
+    this.keyedScalarSelect("parent", aPayload);
+    let sectionid = "keyed-scalars-section";
+    this.checkProcessData(sectionid, aPayload);
+  },
+
+  checkProcessData(id, aPayload) {
+    let prOptions = [];
+    var i = 0;
+    for (let f of pOptions) {
+    if (f === "parent") {
+      prOptions[i] = f;
+      i = i + 1;
+    } else if ("processes" in aPayload && f in aPayload.processes &&
+               "keyedScalars" in aPayload.processes[f]) {
+      let keyedScalars = aPayload.processes[f].keyedScalars;
+      if (Object.keys(keyedScalars).length > 0 && keyedScalars) {
+       prOptions[i] = f;
+       i = i + 1;
+      }
+    }
+   }
+   addSubSection(id, aPayload, prOptions, KeyedScalars.keyedScalarSelect);
+  },
+  keyedScalarSelect(hprocess, aPayload) {
+>>>>>>> histedit
     let scalarsSection = document.getElementById("keyed-scalars");
     removeAllChildNodes(scalarsSection);
 
+<<<<<<< local
     let processesSelect = document.getElementById("processes");
     let selectedProcess = processesSelect.selectedOptions.item(0).getAttribute("value");
+=======
+    let selectedProcess = hprocess;
+    let keyedScalarOptions = pOptions;
+>>>>>>> histedit
 
     if (!aPayload.processes ||
         !selectedProcess ||
         !(selectedProcess in aPayload.processes)) {
       return;
     }
 
     let keyedScalars = aPayload.processes[selectedProcess].keyedScalars || {};
@@ -1861,20 +1929,16 @@ function setupPageHeader() {
   let htmlLink = document.querySelectorAll("#home-section > ul > li > a");
   htmlLink.forEach((a, index) => {
     a.href = links[index];
   });
 }
 
 function displayProcessesSelector(selectedSection) {
   let whitelist = [
-    "scalars-section",
-    "keyed-scalars-section",
-    "histograms-section",
-    "keyed-histograms-section",
     "events-section"
   ];
   let processes = document.getElementById("processes");
   processes.hidden = !whitelist.includes(selectedSection);
 }
 
 function refreshSearch() {
   removeSearchSectionTitles();
@@ -1994,16 +2058,50 @@ function show(selected) {
   selected_section.classList.add("active");
 
   adjustHeaderState();
   displayProcessesSelector(selectedValue);
   adjustSearchState();
   changeUrlPath(selectedValue);
 }
 
+/**
+ * Shows the selected sub-section
+ */
+function showSection(sectionid) {
+  if (!sectionid) {
+    return;
+  }
+  let current_selection = document.querySelector(".category-subsection.selected");
+  if (current_selection)
+    current_selection.classList.remove("selected");
+  document.getElementById(sectionid).classList.add("selected");
+}
+
+/**
+ * Adds sub-sections
+ */
+function addSubSection(id, aPayload, processList, callFunc) {
+  let category = document.querySelector("#categories > [value=" + id + "]");
+  category.classList.add("has-subsection");
+  for (let f of processList) {
+    let subCategory = document.createElement("div");
+    subCategory.classList.add("category-subsection");
+    subCategory.setAttribute("value", id + "-" + f);
+    subCategory.setAttribute("id", id + "-" + f);
+    subCategory.addEventListener("click", () => {
+      let sectionId = id + "-" + f;
+      showSection(sectionId);
+      callFunc(f, aPayload);
+    });
+   subCategory.appendChild(document.createTextNode(f));
+   category.appendChild(subCategory);
+  }
+}
+
 function showSubSection(selected) {
   if (!selected) {
     return;
   }
   let current_selection = document.querySelector(".category-subsection.selected");
   if (current_selection)
     current_selection.classList.remove("selected");
   selected.classList.add("selected");
@@ -2194,23 +2292,56 @@ var LateWritesSingleton = {
     let memoryMap = lateWrites.memoryMap;
     StackRenderer.renderStacks("late-writes", stacks, memoryMap,
                                LateWritesSingleton.renderHeader);
   },
 };
 
 var HistogramSection = {
   render(aPayload) {
+<<<<<<< local
+=======
+    this.histogramSelect("parent", aPayload);
+    let sectionid = "histograms-section";
+    this.checkProcessData(sectionid, aPayload);
+  },
+
+  checkProcessData(id, aPayload) {
+    let prOptions = [];
+    var i = 0;
+    for (let f of pOptions) {
+    if (f === "parent") {
+      prOptions[i] = f;
+      i = i + 1;
+    } else if ("processes" in aPayload && f in aPayload.processes &&
+               "histograms" in aPayload.processes[f]) {
+      let histograms = aPayload.processes[f].histograms;
+      if (Object.keys(histograms).length > 0 && histograms) {
+       prOptions[i] = f;
+       i = i + 1;
+      }
+    }
+   }
+   addSubSection(id, aPayload, prOptions, HistogramSection.histogramSelect);
+  },
+
+  histogramSelect(hprocess, aPayload) {
+>>>>>>> histedit
     let hgramDiv = document.getElementById("histograms");
     removeAllChildNodes(hgramDiv);
 
     let histograms = {};
+<<<<<<< local
     let hgramsSelect = document.getElementById("processes");
     let hgramsOption = hgramsSelect.selectedOptions.item(0);
     let hgramsProcess = hgramsOption.getAttribute("value");
+=======
+    let hgramsProcess = hprocess;
+    let hgramsOptions = pOptions;
+>>>>>>> histedit
 
     if (hgramsProcess === "parent") {
       histograms = aPayload.histograms;
     } else if ("processes" in aPayload && hgramsProcess in aPayload.processes &&
                "histograms" in aPayload.processes[hgramsProcess]) {
       histograms = aPayload.processes[hgramsProcess].histograms;
     }
 
@@ -2229,23 +2360,57 @@ var HistogramSection = {
         Histogram.render(hgramDiv, name, hgram, {unpacked: true});
       }
     }
   },
 };
 
 var KeyedHistogramSection = {
   render(aPayload) {
+<<<<<<< local
+=======
+    this.keyedHistogramSelect("parent", aPayload);
+    let sectionid = "keyed-histograms-section";
+    this.checkProcessData(sectionid, aPayload);
+  },
+
+  checkProcessData(id, aPayload) {
+    let prOptions = [];
+    var i = 0;
+    for (let f of pOptions) {
+    if (f === "parent") {
+      prOptions[i] = f;
+      i = i + 1;
+    } else if ("processes" in aPayload && f in aPayload.processes &&
+               "keyedHistograms" in aPayload.processes[f]) {
+      let keyedHistograms = aPayload.processes[f].keyedHistograms;
+      if (Object.keys(keyedHistograms).length > 0 && keyedHistograms) {
+       prOptions[i] = f;
+       i = i + 1;
+      }
+    }
+   }
+   addSubSection(id, aPayload, prOptions, KeyedHistogramSection.keyedHistogramSelect);
+  },
+
+  keyedHistogramSelect(hprocess, aPayload) {
+>>>>>>> histedit
     let keyedDiv = document.getElementById("keyed-histograms");
     removeAllChildNodes(keyedDiv);
 
     let keyedHistograms = {};
+<<<<<<< local
     let keyedHgramsSelect = document.getElementById("processes");
     let keyedHgramsOption = keyedHgramsSelect.selectedOptions.item(0);
     let keyedHgramsProcess = keyedHgramsOption.getAttribute("value");
+=======
+    let keyedHgramsProcess = hprocess;
+    let keyedHgramsOptions = pOptions;
+
+>>>>>>> histedit
     if (keyedHgramsProcess === "parent") {
       keyedHistograms = aPayload.keyedHistograms;
     } else if ("processes" in aPayload && keyedHgramsProcess in aPayload.processes &&
                "keyedHistograms" in aPayload.processes[keyedHgramsProcess]) {
       keyedHistograms = aPayload.processes[keyedHgramsProcess].keyedHistograms;
     }
 
     let hasData = Array.from(keyedHgramsSelect.options).some((option) => {