| Index: content/browser/resources/media/new/client_renderer.js
|
| diff --git a/content/browser/resources/media/new/client_renderer.js b/content/browser/resources/media/new/client_renderer.js
|
| index 02f47e163cf53dc1c5e3ea24066f03a76f1c0a3f..52dd92d1c5691bead0597d771fca974d181a162e 100644
|
| --- a/content/browser/resources/media/new/client_renderer.js
|
| +++ b/content/browser/resources/media/new/client_renderer.js
|
| @@ -8,11 +8,16 @@ var ClientRenderer = (function() {
|
| this.audioStreamListElement = document.getElementById('audio-stream-list');
|
| this.propertiesTable = document.getElementById('property-table');
|
| this.logTable = document.getElementById('log');
|
| + this.graphElement = document.getElementById('graphs');
|
|
|
| this.selectedPlayer = null;
|
| this.selectedStream = null;
|
|
|
| this.selectedPlayerLogIndex = 0;
|
| +
|
| + this.bufferCanvas = document.createElement('canvas');
|
| + this.bufferCanvas.width = media.BAR_WIDTH;
|
| + this.bufferCanvas.height = media.BAR_HEIGHT;
|
| };
|
|
|
| function removeChildren(element) {
|
| @@ -76,6 +81,7 @@ var ClientRenderer = (function() {
|
| if (player === this.selectedPlayer) {
|
| this.drawProperties_(player.properties);
|
| this.drawLog_();
|
| + this.drawGraphs_();
|
| }
|
| if (key === 'name' || key === 'url') {
|
| this.redrawPlayerList_(players);
|
| @@ -98,6 +104,7 @@ var ClientRenderer = (function() {
|
| this.selectedPlayer = null;
|
| this.drawProperties_(audioStream);
|
| removeChildren(this.logTable.querySelector('tbody'));
|
| + removeChildren(this.graphElement);
|
| },
|
|
|
| redrawPlayerList_: function(players) {
|
| @@ -123,7 +130,9 @@ var ClientRenderer = (function() {
|
| this.drawProperties_(player.properties);
|
|
|
| removeChildren(this.logTable.querySelector('tbody'));
|
| + removeChildren(this.graphElement);
|
| this.drawLog_();
|
| + this.drawGraphs_();
|
| },
|
|
|
| drawProperties_: function(propertyMap) {
|
| @@ -131,6 +140,7 @@ var ClientRenderer = (function() {
|
|
|
| for (key in propertyMap) {
|
| var value = propertyMap[key];
|
| +
|
| var row = this.propertiesTable.insertRow(-1);
|
| var keyCell = row.insertCell(-1);
|
| var valueCell = row.insertCell(-1);
|
| @@ -154,6 +164,76 @@ var ClientRenderer = (function() {
|
| this.selectedPlayerLogIndex);
|
| toDraw.forEach(this.appendEventToLog_.bind(this));
|
| this.selectedPlayerLogIndex = this.selectedPlayer.allEvents.length;
|
| + },
|
| +
|
| + drawGraphs_: function() {
|
| + function addToGraphs (name, graph, graphElement) {
|
| + var li = document.createElement('li');
|
| + li.appendChild(graph);
|
| + li.appendChild(document.createTextNode(name));
|
| + graphElement.appendChild(li);
|
| + }
|
| +
|
| + var url = this.selectedPlayer.properties.url;
|
| + if (!url) {
|
| + return;
|
| + }
|
| +
|
| + var cache = media.cacheForUrl(url);
|
| +
|
| + var player = this.selectedPlayer;
|
| + var props = player.properties;
|
| +
|
| + var cacheExists = false;
|
| + var bufferExists = false;
|
| +
|
| + if (props['buffer_start'] !== undefined &&
|
| + props['buffer_current'] !== undefined &&
|
| + props['buffer_end'] !== undefined &&
|
| + props['total_bytes'] !== undefined) {
|
| + this.drawBufferGraph_(props['buffer_start'],
|
| + props['buffer_current'],
|
| + props['buffer_end'],
|
| + props['total_bytes']);
|
| + bufferExists = true;
|
| + }
|
| +
|
| + if (cache) {
|
| + if(player.properties['total_bytes']) {
|
| + cache.size = Number(player.properties['total_bytes']);
|
| + }
|
| + cache.generateDetails();
|
| + cacheExists = true;
|
| +
|
| + }
|
| +
|
| + if (!this.graphElement.hasChildNodes()) {
|
| + if (bufferExists) {
|
| + addToGraphs('buffer', this.bufferCanvas, this.graphElement);
|
| + }
|
| + if (cacheExists) {
|
| + addToGraphs('cache read', cache.readCanvas, this.graphElement);
|
| + addToGraphs('cache write', cache.writeCanvas, this.graphElement);
|
| + }
|
| + }
|
| + },
|
| +
|
| + drawBufferGraph_: function(start, current, end, size) {
|
| + var ctx = this.bufferCanvas.getContext('2d');
|
| + var width = this.bufferCanvas.width;
|
| + var height = this.bufferCanvas.height;
|
| + ctx.fillStyle = '#aaa';
|
| + ctx.fillRect(0, 0, width, height);
|
| +
|
| + var scale_factor = width / size;
|
| + var left = start * scale_factor;
|
| + var middle = current * scale_factor;
|
| + var right = end * scale_factor;
|
| +
|
| + ctx.fillStyle = '#a0a';
|
| + ctx.fillRect(left, 0, middle - left, height);
|
| + ctx.fillStyle = '#aa0';
|
| + ctx.fillRect(middle, 0, right - middle, height);
|
| }
|
| };
|
|
|
|
|