| Index: build/android/pylib/device_stats_monitor.html
|
| diff --git a/build/android/pylib/device_stats_monitor.html b/build/android/pylib/device_stats_monitor.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..b3abbb0bdd94c0b0b3740aff80a8db1f28cf5730
|
| --- /dev/null
|
| +++ b/build/android/pylib/device_stats_monitor.html
|
| @@ -0,0 +1,143 @@
|
| +<!DOCTYPE html>
|
| +<!--
|
| + * Copyright (c) 2012 The Chromium Authors. All rights reserved. Use of this
|
| + * source code is governed by a BSD-style license that can be found in the
|
| + * LICENSE file.
|
| +-->
|
| +<html>
|
| +<head>
|
| + <title>Device Stats Monitor</title>
|
| + <script type="text/javascript" src="http://www.google.com/jsapi"></script>
|
| + <style>
|
| + body {
|
| + font-family: sans-serif
|
| + }
|
| + </style>
|
| +</head>
|
| +<body>
|
| +<h2>Device Stats Monitor</h2>
|
| +<ul>
|
| +<li>Pass path to trace data via the <code>results</code> querystring param.
|
| +<li>Combine charts with the <code>combine</code> querystring param (e.g. <code>&combine=sectors_read,sectors_written</code>).
|
| +<li>Use <code>stacked=true</code> to stack combined charts instead of overlaying (default).
|
| +</ul>
|
| +</body>
|
| +<script>
|
| +google.load("visualization", "1", {packages:["corechart"]});
|
| +
|
| +/**
|
| + * @returns The querystring param value for |name| or an empty string.
|
| + */
|
| +function getQuerystringParam(name) {
|
| + name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
|
| + var regexS = "[\\?&]" + name + "=([^&#]*)";
|
| + var regex = new RegExp(regexS);
|
| + var results = regex.exec(window.location.search);
|
| + if (results == null)
|
| + return "";
|
| + else
|
| + return decodeURIComponent(results[1].replace(/\+/g, " "));
|
| +}
|
| +
|
| +/**
|
| + * @returns An array of keys in |obj| sorted by value.
|
| + */
|
| +function sortedKeys(obj) {
|
| + var keys = [];
|
| + for (var key in obj) {
|
| + keys.push(key);
|
| + }
|
| + keys.sort();
|
| + return keys;
|
| +}
|
| +
|
| +/**
|
| + * Removes by value all params from array.
|
| + */
|
| +Array.prototype.remove = function() {
|
| + var what, a = arguments, l = a.length, ax;
|
| + while (l && this.length) {
|
| + what = a[--l];
|
| + while ((ax = this.indexOf(what)) != -1) {
|
| + this.splice(ax, 1);
|
| + }
|
| + }
|
| + return this;
|
| +}
|
| +
|
| +/**
|
| + * Displays a new chart.
|
| + *
|
| + * @param {Number} hz Number of sample per second of the data.
|
| + * @param {String} name Name to display on top of chart.
|
| + * @param {Number[][]} values Array of value arrays to display.
|
| + * @param {Boolean} stacked Whether to display values as stacked.
|
| + */
|
| +function displayChart(hz, name, values, units, stacked) {
|
| + var data = new google.visualization.DataTable();
|
| + data.addColumn('number', 'ms');
|
| + var names = name.split(',');
|
| + for (var i = 0; i < names.length; i++) {
|
| + data.addColumn('number', names[i]);
|
| + }
|
| +
|
| + var rows = [];
|
| + var interval = 1000.0 / hz;
|
| + for (var i = 0; i < values[0].length; i++) {
|
| + var row = [i*interval];
|
| + for (var j = 0; j < values.length; j++) {
|
| + row.push(values[j][i]);
|
| + }
|
| + rows.push(row);
|
| + }
|
| + data.addRows(rows);
|
| +
|
| + var options = {
|
| + hAxis: {title: 'ms (' + hz + 'hz)'},
|
| + isStacked: stacked,
|
| + legend: {position: 'top'},
|
| + vAxis: {title: units},
|
| + };
|
| +
|
| + var elem = document.createElement('DIV');
|
| + elem.style = 'width:100%;height:500px';
|
| + document.body.appendChild(elem);
|
| + var chart = new google.visualization.AreaChart(elem);
|
| + chart.draw(data, options);
|
| +}
|
| +
|
| +/**
|
| + * Displays all charts.
|
| + *
|
| + * Invoked by the results script. JSONP is used to avoid security
|
| + * restrictions on XHRs for file:// URLs.
|
| + */
|
| +function display(hz, results, units) {
|
| + var combine = getQuerystringParam('combine');
|
| + var keys = sortedKeys(results);
|
| + for (var i = 0; i < keys.length; i++) {
|
| + var key = keys[i];
|
| + var name = key;
|
| + var values = [results[key]];
|
| + var unit = units[key];
|
| + if (combine.indexOf(key) >= 0) {
|
| + i--;
|
| + name = combine;
|
| + values = [];
|
| + var combined_keys = combine.split(',');
|
| + for (var j = 0; j < combined_keys.length; j++) {
|
| + values.push(results[combined_keys[j]]);
|
| + keys.remove(combined_keys[j]);
|
| + }
|
| + }
|
| + displayChart(hz, name, values, unit, !!getQuerystringParam('stacked'));
|
| + }
|
| +}
|
| +
|
| +var resultsPath = getQuerystringParam('results');
|
| +if (resultsPath)
|
| + document.write("<script src='" + resultsPath + "'></"+"script>");
|
| +else
|
| + document.write("Please specify results querystring param.");
|
| +</script>
|
| +</html>
|
|
|