diff options
author | Andras Becsi <andras.becsi@digia.com> | 2014-03-18 13:16:26 +0100 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-03-20 15:55:39 +0100 |
commit | 3f0f86b0caed75241fa71c95a5d73bc0164348c5 (patch) | |
tree | 92b9fb00f2e9e90b0be2262093876d4f43b6cd13 /chromium/content/browser/resources/media/client_renderer.js | |
parent | e90d7c4b152c56919d963987e2503f9909a666d2 (diff) | |
download | qtwebengine-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.js | 150 |
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_(); } |