summaryrefslogtreecommitdiffstats
path: root/chromium/chrome/browser/resources/memory_internals.js
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/chrome/browser/resources/memory_internals.js')
-rw-r--r--chromium/chrome/browser/resources/memory_internals.js80
1 files changed, 62 insertions, 18 deletions
diff --git a/chromium/chrome/browser/resources/memory_internals.js b/chromium/chrome/browser/resources/memory_internals.js
index 03050e3d30c..ce94b5adf9e 100644
--- a/chromium/chrome/browser/resources/memory_internals.js
+++ b/chromium/chrome/browser/resources/memory_internals.js
@@ -12,25 +12,69 @@ function dumpProcess(pid) {
chrome.send('dumpProcess', [pid]);
}
-function returnProcessList(processList) {
- var proclist = $('proclist');
- proclist.innerText = '';
- for (let proc of processList) {
- /** @const */ var row = document.createElement('div');
- row.className = 'procrow';
-
- var description = document.createTextNode(proc[1] + ' ');
- row.appendChild(description);
-
- var button = document.createElement('button');
- button.innerText = '[dump]';
- button.className = 'button';
- let proc_id = proc[0];
- button.onclick = () => dumpProcess(proc_id);
- row.appendChild(button);
-
- proclist.appendChild(row);
+function reportProcess(pid) {
+ chrome.send('reportProcess', [pid]);
+}
+
+// celltype should either be "td" or "th". The contents of the |cols| will be
+// added as children of each table cell if they are non-null.
+function addListRow(table, celltype, cols) {
+ let tr = document.createElement('tr');
+ for (let col of cols) {
+ let cell = document.createElement(celltype);
+ if (col)
+ cell.appendChild(col);
+ tr.appendChild(cell);
+ }
+ table.appendChild(tr);
+}
+
+function returnProcessList(data) {
+ $('message').innerText = data['message'];
+
+ let proclist = $('proclist');
+ proclist.innerText = ''; // Clear existing contents.
+
+ let processes = data['processes'];
+ if (processes.length == 0)
+ return; // No processes to dump, don't make the table and refresh button.
+
+ // Add the refresh button.
+ let refreshDiv = document.createElement('div');
+ refreshDiv.className = 'refresh';
+ let refreshButton = document.createElement('button');
+ refreshButton.innerText = '\u21ba Refresh process list';
+ refreshButton.onclick = () => requestProcessList();
+ refreshDiv.appendChild(refreshButton);
+ proclist.appendChild(refreshDiv);
+
+ let table = document.createElement('table');
+
+ // Heading.
+ addListRow(table, 'th', [
+ null, null, document.createTextNode('Process ID'),
+ document.createTextNode('Name')
+ ]);
+
+ for (let proc of processes) {
+ let procId = proc[0];
+
+ let save_button = document.createElement('button');
+ save_button.innerText = '\u21e9 Save dump';
+ save_button.onclick = () => dumpProcess(procId);
+
+ let report_button = document.createElement('button');
+ report_button.innerText = '\uD83D\uDC1E Report';
+ report_button.onclick = () => reportProcess(procId);
+
+ let procIdText = document.createTextNode(procId.toString());
+ let description = document.createTextNode(proc[1]);
+
+ addListRow(
+ table, 'td', [save_button, report_button, procIdText, description]);
}
+
+ proclist.appendChild(table);
}
// Get data and have it displayed upon loading.