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

Unified Diff: remoting/webapp/me2mom/debug_log.js

Issue 8416007: Refactored web-app (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added consistency comment. Moved debug log keyboard shortcut handling. Created 9 years, 2 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
Index: remoting/webapp/me2mom/debug_log.js
diff --git a/remoting/webapp/me2mom/debug_log.js b/remoting/webapp/me2mom/debug_log.js
index 3d79fdd3db69612ff116333a8db3a2c699cba0fd..94cc6e5202ce636efd838ba8e1555be409a2232d 100644
--- a/remoting/webapp/me2mom/debug_log.js
+++ b/remoting/webapp/me2mom/debug_log.js
@@ -15,13 +15,17 @@ var remoting = remoting || {};
/**
* @constructor
* @param {Element} logElement The HTML div to which to add log messages.
+ * @param {Element} statsElement The HTML div to which to update stats.
Jamie 2011/10/27 20:41:36 I've extended DebugLog to manage the stats panel a
garykac 2011/10/27 22:32:39 OK
*/
-remoting.DebugLog = function(logElement) {
- this.debugLog = logElement;
+remoting.DebugLog = function(logElement, statsElement) {
+ this.logElement = logElement;
+ this.statsElement = statsElement;
};
-/** Maximum number of lines to record in the debug log. Only the most
- * recent <n> lines are displayed. */
+/**
+ * Maximum number of lines to record in the debug log. Only the most
+ * recent <n> lines are displayed.
+ */
remoting.DebugLog.prototype.MAX_DEBUG_LOG_SIZE = 1000;
/**
@@ -31,18 +35,75 @@ remoting.DebugLog.prototype.MAX_DEBUG_LOG_SIZE = 1000;
*/
remoting.DebugLog.prototype.log = function(message) {
// Remove lines from top if we've hit our max log size.
- if (this.debugLog.childNodes.length == this.MAX_DEBUG_LOG_SIZE) {
- this.debugLog.removeChild(this.debugLog.firstChild);
+ if (this.logElement.childNodes.length == this.MAX_DEBUG_LOG_SIZE) {
+ this.logElement.removeChild(this.logElement.firstChild);
}
// Add the new <p> to the end of the debug log.
var p = document.createElement('p');
p.appendChild(document.createTextNode(message));
- this.debugLog.appendChild(p);
+ this.logElement.appendChild(p);
// Scroll to bottom of div
- this.debugLog.scrollTop = this.debugLog.scrollHeight;
+ this.logElement.scrollTop = this.logElement.scrollHeight;
+};
+
+/**
+ * Show or hide the debug log.
+ */
+remoting.DebugLog.prototype.toggle = function() {
+ var debugLog = /** @type {Element} */ this.logElement.parentNode;
+ if (debugLog.hidden) {
+ debugLog.hidden = false;
+ } else {
+ debugLog.hidden = true;
+ }
+};
+
+/**
+ * Update the statistics panel.
+ * @param {Object.<string, number>} stats The connection statistics.
+ */
+remoting.DebugLog.prototype.updateStatistics = function(stats) {
+ var units = '';
+ var videoBandwidth = stats['video_bandwidth'];
+ if (videoBandwidth < 1024) {
+ units = 'Bps';
+ } else if (videoBandwidth < 1048576) {
+ units = 'KiBps';
+ videoBandwidth = videoBandwidth / 1024;
+ } else if (videoBandwidth < 1073741824) {
+ units = 'MiBps';
+ videoBandwidth = videoBandwidth / 1048576;
+ } else {
+ units = 'GiBps';
+ videoBandwidth = videoBandwidth / 1073741824;
+ }
+
+ var statistics = document.getElementById('statistics');
+ this.statsElement.innerText =
+ 'Bandwidth: ' + videoBandwidth.toFixed(2) + units +
+ ', Frame Rate: ' +
+ (stats['video_frame_rate'] ?
+ stats['video_frame_rate'].toFixed(2) + ' fps' : 'n/a') +
+ ', Capture: ' + stats['capture_latency'].toFixed(2) + 'ms' +
+ ', Encode: ' + stats['encode_latency'].toFixed(2) + 'ms' +
+ ', Decode: ' + stats['decode_latency'].toFixed(2) + 'ms' +
+ ', Render: ' + stats['render_latency'].toFixed(2) + 'ms' +
+ ', Latency: ' + stats['roundtrip_latency'].toFixed(2) + 'ms';
};
+/**
+ * Check for the debug toggle hot-key.
+ *
+ * @param {Event} event The keyboard event.
+ * @return {void} Nothing.
+ */
+remoting.DebugLog.onKeydown = function(event) {
+ if (String.fromCharCode(event.which) == 'D') {
+ remoting.debug.toggle();
+ }
+}
+
/** @type {remoting.DebugLog} */
remoting.debug = null;

Powered by Google App Engine
This is Rietveld 408576698