15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @fileoverview 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * A class of server log entries. 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)'use strict'; 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @suppress {duplicate} */ 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)var remoting = remoting || {}; 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @private 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @constructor 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry = function() { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** @type Object.<string, string> */ this.dict = {}; 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @private */ 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.KEY_EVENT_NAME_ = 'event-name'; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @private */ 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.VALUE_EVENT_NAME_SESSION_STATE_ = 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'session-state'; 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @private */ 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.KEY_SESSION_ID_ = 'session-id'; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @private */ 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.KEY_ROLE_ = 'role'; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @private */ 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.VALUE_ROLE_CLIENT_ = 'client'; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @private */ 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.KEY_SESSION_STATE_ = 'session-state'; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @private 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {remoting.ClientSession.State} state 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return {string} 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.getValueForSessionState = function(state) { 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch(state) { 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case remoting.ClientSession.State.UNKNOWN: 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 'unknown'; 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case remoting.ClientSession.State.CREATED: 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 'created'; 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case remoting.ClientSession.State.CONNECTING: 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 'connecting'; 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case remoting.ClientSession.State.INITIALIZING: 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 'initializing'; 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case remoting.ClientSession.State.CONNECTED: 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 'connected'; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case remoting.ClientSession.State.CLOSED: 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 'closed'; 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case remoting.ClientSession.State.FAILED: 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 'connection-failed'; 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case remoting.ClientSession.State.CONNECTION_DROPPED: 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 'connection-dropped'; 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case remoting.ClientSession.State.CONNECTION_CANCELED: 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 'connection-canceled'; 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 'undefined-' + state; 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @private */ 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.KEY_CONNECTION_ERROR_ = 'connection-error'; 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @private 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {remoting.Error} connectionError 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return {string} 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.getValueForError = 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) function(connectionError) { 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch(connectionError) { 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case remoting.Error.NONE: 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 'none'; 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case remoting.Error.INVALID_ACCESS_CODE: 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 'invalid-access-code'; 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case remoting.Error.MISSING_PLUGIN: 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 'missing_plugin'; 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case remoting.Error.AUTHENTICATION_FAILED: 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 'authentication-failed'; 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case remoting.Error.HOST_IS_OFFLINE: 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 'host-is-offline'; 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case remoting.Error.INCOMPATIBLE_PROTOCOL: 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 'incompatible-protocol'; 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case remoting.Error.BAD_PLUGIN_VERSION: 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 'bad-plugin-version'; 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case remoting.Error.NETWORK_FAILURE: 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 'network-failure'; 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case remoting.Error.HOST_OVERLOAD: 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 'host-overload'; 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case remoting.Error.P2P_FAILURE: 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 'p2p-failure'; 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case remoting.Error.UNEXPECTED: 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 'unexpected'; 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 'unknown-' + connectionError; 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @private */ 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.KEY_SESSION_DURATION_ = 'session-duration'; 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @private */ 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.VALUE_EVENT_NAME_CONNECTION_STATISTICS_ = 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "connection-statistics"; 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @private */ 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.KEY_VIDEO_BANDWIDTH_ = "video-bandwidth"; 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @private */ 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.KEY_CAPTURE_LATENCY_ = "capture-latency"; 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @private */ 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.KEY_ENCODE_LATENCY_ = "encode-latency"; 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @private */ 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.KEY_DECODE_LATENCY_ = "decode-latency"; 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @private */ 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.KEY_RENDER_LATENCY_ = "render-latency"; 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @private */ 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.KEY_ROUNDTRIP_LATENCY_ = "roundtrip-latency"; 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @private */ 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.KEY_OS_NAME_ = 'os-name'; 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @private */ 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.VALUE_OS_NAME_WINDOWS_ = 'Windows'; 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @private */ 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.VALUE_OS_NAME_LINUX_ = 'Linux'; 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @private */ 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.VALUE_OS_NAME_MAC_ = 'Mac'; 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @private */ 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.VALUE_OS_NAME_CHROMEOS_ = 'ChromeOS'; 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @private */ 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.KEY_OS_VERSION_ = 'os-version'; 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @private */ 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.KEY_CPU_ = 'cpu'; 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @private */ 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.KEY_BROWSER_VERSION_ = 'browser-version'; 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @private */ 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.KEY_WEBAPP_VERSION_ = 'webapp-version'; 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @private */ 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.VALUE_EVENT_NAME_SESSION_ID_OLD_ = 'session-id-old'; 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @private */ 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.VALUE_EVENT_NAME_SESSION_ID_NEW_ = 'session-id-new'; 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @private */ 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.KEY_MODE_ = 'mode'; 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @private */ 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.VALUE_MODE_IT2ME_ = 'it2me'; 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @private */ 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.VALUE_MODE_ME2ME_ = 'me2me'; 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @private */ 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.VALUE_MODE_UNKNOWN_ = 'unknown'; 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Sets one field in this log entry. 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @private 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {string} key 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {string} value 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.prototype.set = function(key, value) { 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.dict[key] = value; 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Converts this object into an XML stanza. 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return {string} 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.prototype.toStanza = function() { 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var stanza = '<gr:entry '; 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (var key in this.dict) { 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) stanza += escape(key) + '="' + escape(this.dict[key]) + '" '; 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) stanza += '/>'; 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return stanza; 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Prints this object on the debug log. 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {number} indentLevel the indentation level 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.prototype.toDebugLog = function(indentLevel) { 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** @type Array.<string> */ var fields = []; 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (var key in this.dict) { 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fields.push(key + ': ' + this.dict[key]); 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) console.log(Array(indentLevel+1).join(" ") + fields.join(', ')); 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Makes a log entry for a change of client session state. 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {remoting.ClientSession.State} state 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {remoting.Error} connectionError 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {remoting.ClientSession.Mode} mode 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return {remoting.ServerLogEntry} 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.makeClientSessionStateChange = function(state, 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) connectionError, mode) { 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var entry = new remoting.ServerLogEntry(); 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry.set(remoting.ServerLogEntry.KEY_ROLE_, 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) remoting.ServerLogEntry.VALUE_ROLE_CLIENT_); 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry.set(remoting.ServerLogEntry.KEY_EVENT_NAME_, 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) remoting.ServerLogEntry.VALUE_EVENT_NAME_SESSION_STATE_); 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry.set(remoting.ServerLogEntry.KEY_SESSION_STATE_, 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) remoting.ServerLogEntry.getValueForSessionState(state)); 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (connectionError != remoting.Error.NONE) { 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry.set(remoting.ServerLogEntry.KEY_CONNECTION_ERROR_, 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) remoting.ServerLogEntry.getValueForError(connectionError)); 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry.addModeField(mode); 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return entry; 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Adds a session duration to a log entry. 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {number} sessionDuration 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.prototype.addSessionDurationField = function( 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sessionDuration) { 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.set(remoting.ServerLogEntry.KEY_SESSION_DURATION_, 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sessionDuration.toString()); 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Makes a log entry for a set of connection statistics. 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns null if all the statistics were zero. 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {remoting.StatsAccumulator} statsAccumulator 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {remoting.ClientSession.Mode} mode 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return {?remoting.ServerLogEntry} 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.makeStats = function(statsAccumulator, mode) { 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var entry = new remoting.ServerLogEntry(); 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry.set(remoting.ServerLogEntry.KEY_ROLE_, 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) remoting.ServerLogEntry.VALUE_ROLE_CLIENT_); 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry.set(remoting.ServerLogEntry.KEY_EVENT_NAME_, 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) remoting.ServerLogEntry.VALUE_EVENT_NAME_CONNECTION_STATISTICS_); 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry.addModeField(mode); 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var nonZero = false; 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) nonZero |= entry.addStatsField( 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) remoting.ServerLogEntry.KEY_VIDEO_BANDWIDTH_, 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) remoting.ClientSession.STATS_KEY_VIDEO_BANDWIDTH, statsAccumulator); 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) nonZero |= entry.addStatsField( 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) remoting.ServerLogEntry.KEY_CAPTURE_LATENCY_, 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) remoting.ClientSession.STATS_KEY_CAPTURE_LATENCY, statsAccumulator); 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) nonZero |= entry.addStatsField( 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) remoting.ServerLogEntry.KEY_ENCODE_LATENCY_, 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) remoting.ClientSession.STATS_KEY_ENCODE_LATENCY, statsAccumulator); 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) nonZero |= entry.addStatsField( 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) remoting.ServerLogEntry.KEY_DECODE_LATENCY_, 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) remoting.ClientSession.STATS_KEY_DECODE_LATENCY, statsAccumulator); 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) nonZero |= entry.addStatsField( 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) remoting.ServerLogEntry.KEY_RENDER_LATENCY_, 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) remoting.ClientSession.STATS_KEY_RENDER_LATENCY, statsAccumulator); 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) nonZero |= entry.addStatsField( 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) remoting.ServerLogEntry.KEY_ROUNDTRIP_LATENCY_, 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) remoting.ClientSession.STATS_KEY_ROUNDTRIP_LATENCY, statsAccumulator); 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (nonZero) { 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return entry; 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return null; 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Adds one connection statistic to a log entry. 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @private 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {string} entryKey 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {string} statsKey 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {remoting.StatsAccumulator} statsAccumulator 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return {boolean} whether the statistic is non-zero 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.prototype.addStatsField = function( 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entryKey, statsKey, statsAccumulator) { 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var val = statsAccumulator.calcMean(statsKey); 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.set(entryKey, val.toFixed(2)); 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (val != 0); 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Makes a log entry for a "this session ID is old" event. 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {string} sessionId 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {remoting.ClientSession.Mode} mode 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return {remoting.ServerLogEntry} 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.makeSessionIdOld = function(sessionId, mode) { 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var entry = new remoting.ServerLogEntry(); 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry.set(remoting.ServerLogEntry.KEY_ROLE_, 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) remoting.ServerLogEntry.VALUE_ROLE_CLIENT_); 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry.set(remoting.ServerLogEntry.KEY_EVENT_NAME_, 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) remoting.ServerLogEntry.VALUE_EVENT_NAME_SESSION_ID_OLD_); 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry.addSessionIdField(sessionId); 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry.addModeField(mode); 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return entry; 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Makes a log entry for a "this session ID is new" event. 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {string} sessionId 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {remoting.ClientSession.Mode} mode 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return {remoting.ServerLogEntry} 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.makeSessionIdNew = function(sessionId, mode) { 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var entry = new remoting.ServerLogEntry(); 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry.set(remoting.ServerLogEntry.KEY_ROLE_, 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) remoting.ServerLogEntry.VALUE_ROLE_CLIENT_); 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry.set(remoting.ServerLogEntry.KEY_EVENT_NAME_, 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) remoting.ServerLogEntry.VALUE_EVENT_NAME_SESSION_ID_NEW_); 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry.addSessionIdField(sessionId); 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry.addModeField(mode); 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return entry; 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Adds a session ID field to this log entry. 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {string} sessionId 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.prototype.addSessionIdField = function(sessionId) { 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.set(remoting.ServerLogEntry.KEY_SESSION_ID_, sessionId); 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Adds fields describing the host to this log entry. 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.prototype.addHostFields = function() { 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var host = remoting.ServerLogEntry.getHostData(); 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (host) { 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (host.os_name.length > 0) { 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.set(remoting.ServerLogEntry.KEY_OS_NAME_, host.os_name); 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (host.os_version.length > 0) { 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.set(remoting.ServerLogEntry.KEY_OS_VERSION_, host.os_version); 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (host.cpu.length > 0) { 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.set(remoting.ServerLogEntry.KEY_CPU_, host.cpu); 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Extracts host data from the userAgent string. 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @private 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return {{os_name:string, os_version:string, cpu:string} | null} 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.getHostData = function() { 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return remoting.ServerLogEntry.extractHostDataFrom(navigator.userAgent); 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Extracts host data from the given userAgent string. 3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @private 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {string} s 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return {{os_name:string, os_version:string, cpu:string} | null} 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.extractHostDataFrom = function(s) { 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sample userAgent strings: 3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 ' + 3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // '(KHTML, like Gecko) Chrome/15.0.874.106 Safari/535.2' 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.8 ' + 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // '(KHTML, like Gecko) Chrome/17.0.933.0 Safari/535.8' 3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.1 ' + 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // '(KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1' 3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 'Mozilla/5.0 (X11; CrOS i686 14.811.154) AppleWebKit/535.1 ' + 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // '(KHTML, like Gecko) Chrome/14.0.835.204 Safari/535.1' 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var match = new RegExp('Windows NT ([0-9\\.]*)').exec(s); 3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (match && (match.length >= 2)) { 3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return { 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'os_name': remoting.ServerLogEntry.VALUE_OS_NAME_WINDOWS_, 3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'os_version': match[1], 3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'cpu': '' 3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) match = new RegExp('Linux ([a-zA-Z0-9_]*)').exec(s); 3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (match && (match.length >= 2)) { 3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return { 3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'os_name': remoting.ServerLogEntry.VALUE_OS_NAME_LINUX_, 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'os_version' : '', 3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'cpu': match[1] 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) match = new RegExp('([a-zA-Z]*) Mac OS X ([0-9_]*)').exec(s); 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (match && (match.length >= 3)) { 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return { 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'os_name': remoting.ServerLogEntry.VALUE_OS_NAME_MAC_, 4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'os_version': match[2].replace(/_/g, '.'), 4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'cpu': match[1] 4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) match = new RegExp('CrOS ([a-zA-Z0-9]*) ([0-9.]*)').exec(s); 4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (match && (match.length >= 3)) { 4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return { 4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'os_name': remoting.ServerLogEntry.VALUE_OS_NAME_CHROMEOS_, 4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'os_version': match[2], 4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'cpu': match[1] 4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return null; 4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Adds a field specifying the browser version to this log entry. 4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.prototype.addChromeVersionField = function() { 4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var version = remoting.getChromeVersion(); 4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (version != null) { 4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.set(remoting.ServerLogEntry.KEY_BROWSER_VERSION_, version); 4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Adds a field specifying the webapp version to this log entry. 4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.prototype.addWebappVersionField = function() { 4345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var manifest = chrome.runtime.getManifest(); 4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (manifest && manifest.version) { 4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.set(remoting.ServerLogEntry.KEY_WEBAPP_VERSION_, manifest.version); 4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 4415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Adds a field specifying the mode to this log entry. 4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 4435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {remoting.ClientSession.Mode} mode 4445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 4455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.prototype.addModeField = function(mode) { 4465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.set(remoting.ServerLogEntry.KEY_MODE_, 4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) remoting.ServerLogEntry.getModeField(mode)); 4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 4495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Gets the value of the mode field to be put in a log entry. 4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @private 4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {remoting.ClientSession.Mode} mode 4555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return {string} 4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)remoting.ServerLogEntry.getModeField = function(mode) { 4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch(mode) { 4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case remoting.ClientSession.Mode.IT2ME: 4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return remoting.ServerLogEntry.VALUE_MODE_IT2ME_; 4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case remoting.ClientSession.Mode.ME2ME: 4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return remoting.ServerLogEntry.VALUE_MODE_ME2ME_; 4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: 4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return remoting.ServerLogEntry.VALUE_MODE_UNKNOWN_; 4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 4675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)