summaryrefslogtreecommitdiff
path: root/chromium/content/browser/resources/media/peer_connection_update_table.js
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/browser/resources/media/peer_connection_update_table.js')
-rw-r--r--chromium/content/browser/resources/media/peer_connection_update_table.js128
1 files changed, 128 insertions, 0 deletions
diff --git a/chromium/content/browser/resources/media/peer_connection_update_table.js b/chromium/content/browser/resources/media/peer_connection_update_table.js
new file mode 100644
index 00000000000..0f4cc0cde90
--- /dev/null
+++ b/chromium/content/browser/resources/media/peer_connection_update_table.js
@@ -0,0 +1,128 @@
+// Copyright (c) 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+
+/**
+ * The data of a peer connection update.
+ * @param {number} pid The id of the renderer.
+ * @param {number} lid The id of the peer conneciton inside a renderer.
+ * @param {string} type The type of the update.
+ * @param {string} value The details of the update.
+ * @constructor
+ */
+var PeerConnectionUpdateEntry = function(pid, lid, type, value) {
+ /**
+ * @type {number}
+ */
+ this.pid = pid;
+
+ /**
+ * @type {number}
+ */
+ this.lid = lid;
+
+ /**
+ * @type {string}
+ */
+ this.type = type;
+
+ /**
+ * @type {string}
+ */
+ this.value = value;
+};
+
+
+/**
+ * Maintains the peer connection update log table.
+ */
+var PeerConnectionUpdateTable = (function() {
+ 'use strict';
+
+ /**
+ * @constructor
+ */
+ function PeerConnectionUpdateTable() {
+ /**
+ * @type {string}
+ * @const
+ * @private
+ */
+ this.UPDATE_LOG_ID_SUFFIX_ = '-update-log';
+
+ /**
+ * @type {string}
+ * @const
+ * @private
+ */
+ this.UPDATE_LOG_CONTAINER_CLASS_ = 'update-log-container';
+
+ /**
+ * @type {string}
+ * @const
+ * @private
+ */
+ this.UPDATE_LOG_TABLE_CLASS = 'update-log-table';
+ }
+
+ PeerConnectionUpdateTable.prototype = {
+ /**
+ * Adds the update to the update table as a new row. The type of the update
+ * is set to the summary of the cell; clicking the cell will reveal or hide
+ * the details as the content of a TextArea element.
+ *
+ * @param {!Element} peerConnectionElement The root element.
+ * @param {!PeerConnectionUpdateEntry} update The update to add.
+ */
+ addPeerConnectionUpdate: function(peerConnectionElement, update) {
+ var tableElement = this.ensureUpdateContainer_(peerConnectionElement);
+
+ var row = document.createElement('tr');
+ tableElement.firstChild.appendChild(row);
+
+ row.innerHTML = '<td>' + (new Date()).toLocaleString() + '</td>';
+
+ if (update.value.length == 0) {
+ row.innerHTML += '<td>' + update.type + '</td>';
+ return;
+ }
+
+ row.innerHTML += '<td><details><summary>' + update.type +
+ '</summary></details></td>';
+
+ var valueContainer = document.createElement('pre');
+ var details = row.cells[1].childNodes[0];
+ details.appendChild(valueContainer);
+ valueContainer.textContent = update.value;
+ },
+
+ /**
+ * Makes sure the update log table of the peer connection is created.
+ *
+ * @param {!Element} peerConnectionElement The root element.
+ * @return {!Element} The log table element.
+ * @private
+ */
+ ensureUpdateContainer_: function(peerConnectionElement) {
+ var tableId = peerConnectionElement.id + this.UPDATE_LOG_ID_SUFFIX_;
+ var tableElement = $(tableId);
+ if (!tableElement) {
+ var tableContainer = document.createElement('div');
+ tableContainer.className = this.UPDATE_LOG_CONTAINER_CLASS_;
+ peerConnectionElement.appendChild(tableContainer);
+
+ tableElement = document.createElement('table');
+ tableElement.className = this.UPDATE_LOG_TABLE_CLASS;
+ tableElement.id = tableId;
+ tableElement.border = 1;
+ tableContainer.appendChild(tableElement);
+ tableElement.innerHTML = '<tr><th>Time</th>' +
+ '<th class="update-log-header-event">Event</th></tr>';
+ }
+ return tableElement;
+ }
+ };
+
+ return PeerConnectionUpdateTable;
+})();