summaryrefslogtreecommitdiff
path: root/chromium/content/browser/resources/media/client_renderer.js
diff options
context:
space:
mode:
authorAndras Becsi <andras.becsi@digia.com>2014-03-18 13:16:26 +0100
committerFrederik Gladhorn <frederik.gladhorn@digia.com>2014-03-20 15:55:39 +0100
commit3f0f86b0caed75241fa71c95a5d73bc0164348c5 (patch)
tree92b9fb00f2e9e90b0be2262093876d4f43b6cd13 /chromium/content/browser/resources/media/client_renderer.js
parente90d7c4b152c56919d963987e2503f9909a666d2 (diff)
downloadqtwebengine-chromium-3f0f86b0caed75241fa71c95a5d73bc0164348c5.tar.gz
Update to new stable branch 1750
This also includes an updated ninja and chromium dependencies needed on Windows. Change-Id: Icd597d80ed3fa4425933c9f1334c3c2e31291c42 Reviewed-by: Zoltan Arvai <zarvai@inf.u-szeged.hu> Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
Diffstat (limited to 'chromium/content/browser/resources/media/client_renderer.js')
-rw-r--r--chromium/content/browser/resources/media/client_renderer.js150
1 files changed, 105 insertions, 45 deletions
diff --git a/chromium/content/browser/resources/media/client_renderer.js b/chromium/content/browser/resources/media/client_renderer.js
index cac70e8b839..5cdedaabb47 100644
--- a/chromium/content/browser/resources/media/client_renderer.js
+++ b/chromium/content/browser/resources/media/client_renderer.js
@@ -5,13 +5,16 @@
var ClientRenderer = (function() {
var ClientRenderer = function() {
this.playerListElement = document.getElementById('player-list');
- this.audioStreamListElement = document.getElementById('audio-stream-list');
- this.propertiesTable = document.getElementById('property-table');
- this.logTable = document.getElementById('log');
+ this.propertiesTable =
+ document.getElementById('property-table').querySelector('tbody');
+ this.logTable = document.getElementById('log').querySelector('tbody');
this.graphElement = document.getElementById('graphs');
+ this.propertyName = document.getElementById('property-name');
this.selectedPlayer = null;
- this.selectedStream = null;
+ this.selectedAudioComponentType = null;
+ this.selectedAudioComponentId = null;
+ this.selectedAudioCompontentData = null;
this.selectedPlayerLogIndex = 0;
@@ -26,6 +29,8 @@ var ClientRenderer = (function() {
this.clipboardTextarea = document.getElementById('clipboard-textarea');
this.clipboardButton = document.getElementById('copy-button');
this.clipboardButton.onclick = this.copyToClipboard_.bind(this);
+
+ this.hiddenKeys = ['component_id', 'component_type', 'owner_id'];
};
function removeChildren(element) {
@@ -46,18 +51,39 @@ var ClientRenderer = (function() {
};
ClientRenderer.prototype = {
- audioStreamAdded: function(audioStreams, audioStreamAdded) {
- this.redrawAudioStreamList_(audioStreams);
- },
-
- audioStreamUpdated: function(audioStreams, stream, key, value) {
- if (stream === this.selectedStream) {
- this.drawProperties_(stream);
+ /**
+ * Called when an audio component is added to the collection.
+ * @param componentType Integer AudioComponent enum value; must match values
+ * from the AudioLogFactory::AudioComponent enum.
+ * @param components The entire map of components (name -> dict).
+ */
+ audioComponentAdded: function(componentType, components) {
+ this.redrawAudioComponentList_(componentType, components);
+
+ // Redraw the component if it's currently selected.
+ if (this.selectedAudioComponentType == componentType &&
+ this.selectedAudioComponentId &&
+ this.selectedAudioComponentId in components) {
+ this.selectAudioComponent_(
+ componentType, this.selectedAudioComponentId,
+ components[this.selectedAudioComponentId]);
}
},
- audioStreamRemoved: function(audioStreams, audioStreamRemoved) {
- this.redrawAudioStreamList_(audioStreams);
+ /**
+ * Called when an audio component is removed from the collection.
+ * @param componentType Integer AudioComponent enum value; must match values
+ * from the AudioLogFactory::AudioComponent enum.
+ * @param components The entire map of components (name -> dict).
+ */
+ audioComponentRemoved: function(componentType, components) {
+ this.redrawAudioComponentList_(componentType, components);
+
+ // Clear the component if it was previously currently selected.
+ if (this.selectedAudioComponentType == componentType &&
+ !(this.selectedAudioComponentId in components)) {
+ this.selectAudioComponent_(null, null, {});
+ }
},
/**
@@ -96,59 +122,95 @@ var ClientRenderer = (function() {
}
},
- redrawAudioStreamList_: function(streams) {
- removeChildren(this.audioStreamListElement);
+ redrawAudioComponentList_: function(componentType, components) {
+ function redrawList(renderer, baseName, element) {
+ var fragment = document.createDocumentFragment();
+ for (id in components) {
+ var li = document.createElement('li');
+ var friendlyName = baseName + ' ' + id;
+ li.appendChild(createButton(
+ friendlyName, renderer.selectAudioComponent_.bind(
+ renderer, componentType, id, components[id], friendlyName)));
+ fragment.appendChild(li);
+ }
+ removeChildren(element);
+ element.appendChild(fragment);
+ }
- for (id in streams) {
- var li = document.createElement('li');
- li.appendChild(createButton(
- id, this.selectAudioStream_.bind(this, streams[id])));
- this.audioStreamListElement.appendChild(li);
+ switch (componentType) {
+ case 0:
+ redrawList(this, 'Controller', document.getElementById(
+ 'audio-input-controller-list'));
+ break;
+ case 1:
+ redrawList(this, 'Controller', document.getElementById(
+ 'audio-output-controller-list'));
+ break;
+ case 2:
+ redrawList(this, 'Stream', document.getElementById(
+ 'audio-output-stream-list'));
+ break;
+ default:
+ break;
}
},
- selectAudioStream_: function(audioStream) {
- this.selectedStream = audioStream;
+ selectAudioComponent_: function(
+ componentType, componentId, componentData, friendlyName) {
this.selectedPlayer = null;
- this.drawProperties_(audioStream);
- removeChildren(this.logTable.querySelector('tbody'));
+ this.selectedAudioComponentType = componentType;
+ this.selectedAudioComponentId = componentId;
+ this.selectedAudioCompontentData = componentData;
+ this.drawProperties_(componentData);
+ removeChildren(this.logTable);
removeChildren(this.graphElement);
+
+ removeChildren(this.propertyName);
+ this.propertyName.appendChild(document.createTextNode(friendlyName));
},
redrawPlayerList_: function(players) {
- removeChildren(this.playerListElement);
-
+ var fragment = document.createDocumentFragment();
for (id in players) {
- var li = document.createElement('li');
var player = players[id];
var usableName = player.properties.name ||
player.properties.url ||
- 'player ' + player.id;
+ 'Player ' + player.id;
+ var li = document.createElement('li');
li.appendChild(createButton(
usableName, this.selectPlayer_.bind(this, player)));
- this.playerListElement.appendChild(li);
+ fragment.appendChild(li);
}
+ removeChildren(this.playerListElement);
+ this.playerListElement.appendChild(fragment);
},
selectPlayer_: function(player) {
this.selectedPlayer = player;
this.selectedPlayerLogIndex = 0;
- this.selectedStream = null;
+ this.selectedAudioComponentType = null;
+ this.selectedAudioComponentId = null;
+ this.selectedAudioCompontentData = null;
this.drawProperties_(player.properties);
- removeChildren(this.logTable.querySelector('tbody'));
+ removeChildren(this.logTable);
removeChildren(this.graphElement);
this.drawLog_();
this.drawGraphs_();
+ removeChildren(this.propertyName);
+ this.propertyName.appendChild(document.createTextNode('Player'));
},
drawProperties_: function(propertyMap) {
removeChildren(this.propertiesTable);
+ var sortedKeys = Object.keys(propertyMap).sort();
+ for (var i = 0; i < sortedKeys.length; ++i) {
+ var key = sortedKeys[i];
+ if (this.hiddenKeys.indexOf(key) >= 0)
+ continue;
- for (key in propertyMap) {
var value = propertyMap[key];
-
var row = this.propertiesTable.insertRow(-1);
var keyCell = row.insertCell(-1);
var valueCell = row.insertCell(-1);
@@ -160,9 +222,11 @@ var ClientRenderer = (function() {
appendEventToLog_: function(event) {
if (this.filterFunction(event.key)) {
- var row = this.logTable.querySelector('tbody').insertRow(-1);
+ var row = this.logTable.insertRow(-1);
- row.insertCell(-1).appendChild(document.createTextNode(
+ var timestampCell = row.insertCell(-1);
+ timestampCell.classList.add('timestamp');
+ timestampCell.appendChild(document.createTextNode(
util.millisecondsToString(event.time)));
row.insertCell(-1).appendChild(document.createTextNode(event.key));
row.insertCell(-1).appendChild(document.createTextNode(event.value));
@@ -247,7 +311,7 @@ var ClientRenderer = (function() {
},
copyToClipboard_: function() {
- var properties = this.selectedStream ||
+ var properties = this.selectedAudioCompontentData ||
this.selectedPlayer.properties || false;
if (!properties) {
return;
@@ -263,18 +327,14 @@ var ClientRenderer = (function() {
}
this.clipboardTextarea.value = stringBuffer.join('');
- this.clipboardTextarea.classList.remove('hidden');
+ this.clipboardTextarea.classList.remove('hiddenClipboard');
this.clipboardTextarea.focus();
this.clipboardTextarea.select();
- // The act of copying anything from the textarea gets canceled
- // if the element in question gets the class 'hidden' (which contains the
- // css property display:none) before the event is finished. For this, it
- // is necessary put the property setting on the event loop to be executed
- // after the copy has taken place.
- this.clipboardTextarea.oncopy = function(event) {
+ // Hide the clipboard element when it loses focus.
+ this.clipboardTextarea.onblur = function(event) {
setTimeout(function(element) {
- event.target.classList.add('hidden');
+ event.target.classList.add('hiddenClipboard');
}, 0);
};
},
@@ -295,7 +355,7 @@ var ClientRenderer = (function() {
};
if (this.selectedPlayer) {
- removeChildren(this.logTable.querySelector('tbody'));
+ removeChildren(this.logTable);
this.selectedPlayerLogIndex = 0;
this.drawLog_();
}