Home | History | Annotate | Download | only in process_monitor
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 // Shows an updating list of process statistics.
      6 function init() {
      7   chrome.experimental.processes.onUpdatedWithMemory.addListener(
      8     function(processes) {
      9       var table = "<table>\n" +
     10         "<tr><td><b>Process</b></td>" +
     11         "<td>OS ID</td>" +
     12         "<td>Type</td>" +
     13         "<td>Tabs</td>" +
     14         "<td>CPU</td>" +
     15         "<td>Network</td>" +
     16         "<td>Private Memory</td>" +
     17         "<td>FPS</td>" +
     18         "<td>JS Memory</td>" +
     19         "<td></td>" +
     20         "</tr>\n";
     21       for (pid in processes) {
     22         table = displayProcessInfo(processes[pid], table);
     23       }
     24       table += "</table>\n";
     25       var div = document.getElementById("process-list");
     26       div.innerHTML = table;
     27     });
     28 
     29   document.getElementById("killProcess").onclick = function () {
     30     var procId = parseInt(prompt("Enter process ID"));
     31     chrome.experimental.processes.terminate(procId);
     32   }
     33 }
     34 
     35 function displayProcessInfo(process, table) {
     36   // Format network string like task manager
     37   var network = process.network;
     38   if (network > 1024) {
     39     network = (network / 1024).toFixed(1) + " kB/s";
     40   } else if (network > 0) {
     41     network += " B/s";
     42   } else if (network == -1) {
     43     network = "N/A";
     44   }
     45 
     46   table +=
     47     "<tr><td>" + process.id + "</td>" +
     48     "<td>" + process.osProcessId + "</td>" +
     49     "<td>" + process.type + "</td>" +
     50     "<td>" + process.tabs + "</td>" +
     51     "<td>" + process.cpu + "</td>" +
     52     "<td>" + network + "</td>";
     53 
     54   if ("privateMemory" in process) {
     55     table += "<td>" + (process.privateMemory / 1024) + "K</td>";
     56   } else {
     57     table += "<td>N/A</td>";
     58   }
     59   if ("fps" in process) {
     60     table += "<td>" + process.fps.toFixed(2) + "</td>";
     61   } else {
     62     table += "<td>N/A</td>";
     63   }
     64 
     65   if ("jsMemoryAllocated" in process) {
     66     var allocated = process.jsMemoryAllocated / 1024;
     67     var used = process.jsMemoryUsed / 1024;
     68     table += "<td>" + allocated.toFixed(2) + "K (" + used.toFixed(2) +
     69         "K live)</td>";
     70   } else {
     71     table += "<td>N/A</td>";
     72   }
     73 
     74   table +=
     75     "<td></td>" +
     76     "</tr>\n";
     77   return table;
     78 }
     79 
     80 document.addEventListener('DOMContentLoaded', init);