popup.js revision 5821806d5e7f356e8fa4b058a389a808ea183019
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.
6function 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
35function 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
80document.addEventListener('DOMContentLoaded', init);