Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(939)

Unified Diff: content/browser/resources/media/new/client_renderer.js

Issue 23536020: Adds cache and buffer graphs to the properties pane. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: changed how tests and cr.js are loaded and interact Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/resources/media/cache_entry.js ('k') | content/browser/resources/media/new/main.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
}
};
« no previous file with comments | « content/browser/resources/media/cache_entry.js ('k') | content/browser/resources/media/new/main.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698