15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Shows an updating list of process statistics. 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)function init() { 73551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) chrome.processes.onUpdatedWithMemory.addListener( 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) function(processes) { 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var table = "<table>\n" + 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<tr><td><b>Process</b></td>" + 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<td>OS ID</td>" + 12a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "<td>Title</td>" + 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<td>Type</td>" + 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<td>Tabs</td>" + 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<td>CPU</td>" + 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<td>Network</td>" + 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<td>Private Memory</td>" + 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<td>JS Memory</td>" + 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<td></td>" + 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "</tr>\n"; 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (pid in processes) { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) table = displayProcessInfo(processes[pid], table); 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) table += "</table>\n"; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var div = document.getElementById("process-list"); 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) div.innerHTML = table; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }); 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) document.getElementById("killProcess").onclick = function () { 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var procId = parseInt(prompt("Enter process ID")); 313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) chrome.processes.terminate(procId); 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)function displayProcessInfo(process, table) { 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Format network string like task manager 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var network = process.network; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (network > 1024) { 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) network = (network / 1024).toFixed(1) + " kB/s"; 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else if (network > 0) { 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) network += " B/s"; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else if (network == -1) { 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) network = "N/A"; 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) table += 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<tr><td>" + process.id + "</td>" + 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<td>" + process.osProcessId + "</td>" + 49a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "<td>" + process.title + "</td>" + 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<td>" + process.type + "</td>" + 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<td>" + process.tabs + "</td>" + 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<td>" + process.cpu + "</td>" + 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<td>" + network + "</td>"; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if ("privateMemory" in process) { 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) table += "<td>" + (process.privateMemory / 1024) + "K</td>"; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) table += "<td>N/A</td>"; 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if ("jsMemoryAllocated" in process) { 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var allocated = process.jsMemoryAllocated / 1024; 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var used = process.jsMemoryUsed / 1024; 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) table += "<td>" + allocated.toFixed(2) + "K (" + used.toFixed(2) + 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "K live)</td>"; 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) table += "<td>N/A</td>"; 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) table += 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "<td></td>" + 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "</tr>\n"; 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return table; 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 753551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)document.addEventListener('DOMContentLoaded', init); 76