diff options
Diffstat (limited to 'chromium/chrome/browser/resources/memory_internals.js')
-rw-r--r-- | chromium/chrome/browser/resources/memory_internals.js | 80 |
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. |