| Index: content/browser/resources/media/client_renderer.js
|
| diff --git a/content/browser/resources/media/client_renderer.js b/content/browser/resources/media/client_renderer.js
|
| index ccee09ee122541760e991133b9b4c0a5ed7a0df0..63c7dcf660e4921aed4bbc1ebf31ba14f43c3ee6 100644
|
| --- a/content/browser/resources/media/client_renderer.js
|
| +++ b/content/browser/resources/media/client_renderer.js
|
| @@ -13,6 +13,7 @@ var ClientRenderer = (function() {
|
| this.graphElement = document.getElementById('graphs');
|
| this.audioPropertyName = document.getElementById('audio-property-name');
|
|
|
| + this.players = null;
|
| this.selectedPlayer = null;
|
| this.selectedAudioComponentType = null;
|
| this.selectedAudioComponentId = null;
|
| @@ -34,6 +35,9 @@ var ClientRenderer = (function() {
|
| clipboardButtons[i].onclick = this.copyToClipboard_.bind(this);
|
| }
|
|
|
| + this.saveLogButton = document.getElementById('save-log-button');
|
| + this.saveLogButton.onclick = this.saveLog_.bind(this);
|
| +
|
| this.hiddenKeys = ['component_id', 'component_type', 'owner_id'];
|
|
|
| // Tell CSS to hide certain content prior to making selections.
|
| @@ -93,6 +97,14 @@ var ClientRenderer = (function() {
|
| element.checked = true;
|
| }
|
|
|
| + function downloadLog(text) {
|
| + var file = new Blob([text], {type: 'text/plain'});
|
| + var a = document.createElement('a');
|
| + a.href = URL.createObjectURL(file);
|
| + a.download = "media-internals.txt";
|
| + a.click();
|
| + }
|
| +
|
| ClientRenderer.prototype = {
|
| /**
|
| * Called when an audio component is added to the collection.
|
| @@ -230,7 +242,7 @@ var ClientRenderer = (function() {
|
| }
|
| },
|
|
|
| - getAudioComponentName_ : function(componentType, id) {
|
| + getAudioComponentName_: function(componentType, id) {
|
| var baseName;
|
| switch (componentType) {
|
| case 0:
|
| @@ -248,7 +260,7 @@ var ClientRenderer = (function() {
|
| return baseName + ' ' + id;
|
| },
|
|
|
| - getListElementForAudioComponent_ : function(componentType) {
|
| + getListElementForAudioComponent_: function(componentType) {
|
| var listElement;
|
| switch (componentType) {
|
| case 0:
|
| @@ -304,8 +316,7 @@ var ClientRenderer = (function() {
|
| }
|
| },
|
|
|
| - selectAudioComponent_: function(
|
| - componentType, componentId, componentData) {
|
| + selectAudioComponent_: function(componentType, componentId, componentData) {
|
| document.body.classList.remove(
|
| ClientRenderer.Css_.NO_COMPONENTS_SELECTED);
|
|
|
| @@ -320,12 +331,16 @@ var ClientRenderer = (function() {
|
| },
|
|
|
| redrawPlayerList_: function(players) {
|
| + this.players = players;
|
| +
|
| // Group name imposes rule that only one component can be selected
|
| // (and have its properties displayed) at a time.
|
| var buttonGroupName = 'player-buttons';
|
|
|
| + var hasPlayers = false;
|
| var fragment = document.createDocumentFragment();
|
| for (id in players) {
|
| + hasPlayers = true;
|
| var player = players[id];
|
| var usableName = player.properties.name ||
|
| player.properties.url ||
|
| @@ -344,6 +359,8 @@ var ClientRenderer = (function() {
|
| // Re-select the selected player since the button was just recreated.
|
| selectSelectableButton(this.selectedPlayer.id);
|
| }
|
| +
|
| + this.saveLogButton.style.display = hasPlayers ? "inline-block" : "none";
|
| },
|
|
|
| selectPlayer_: function(player) {
|
| @@ -400,6 +417,15 @@ var ClientRenderer = (function() {
|
| this.selectedPlayerLogIndex = this.selectedPlayer.allEvents.length;
|
| },
|
|
|
| + saveLog_: function() {
|
| + var strippedPlayers = []
|
| + for (id in this.players) {
|
| + var p = this.players[id];
|
| + strippedPlayers.push({properties: p.properties, events: p.allEvents});
|
| + }
|
| + downloadLog(JSON.stringify(strippedPlayers, null, 2));
|
| + },
|
| +
|
| drawGraphs_: function() {
|
| function addToGraphs(name, graph, graphElement) {
|
| var li = document.createElement('li');
|
|
|