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

Side by Side Diff: remoting/webapp/base/js/session_logger.js

Issue 1410563006: [Chromoting] SessionLogger refactor. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 years, 1 month 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 5
6 /** @suppress {duplicate} */ 6 /** @suppress {duplicate} */
7 var remoting = remoting || {}; 7 var remoting = remoting || {};
8 8
9 (function() { 9 (function() {
10 10
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 /** @private {remoting.ChromotingEvent.Os}*/ 45 /** @private {remoting.ChromotingEvent.Os}*/
46 this.hostOs_ = remoting.ChromotingEvent.Os.OTHER; 46 this.hostOs_ = remoting.ChromotingEvent.Os.OTHER;
47 /** @private */ 47 /** @private */
48 this.hostOsVersion_ = ''; 48 this.hostOsVersion_ = '';
49 /** @private {number} */ 49 /** @private {number} */
50 this.hostStatusUpdateElapsedTime_; 50 this.hostStatusUpdateElapsedTime_;
51 /** @private */ 51 /** @private */
52 this.mode_ = remoting.ChromotingEvent.Mode.ME2ME; 52 this.mode_ = remoting.ChromotingEvent.Mode.ME2ME;
53 /** @private {remoting.ChromotingEvent.AuthMethod} */ 53 /** @private {remoting.ChromotingEvent.AuthMethod} */
54 this.authMethod_; 54 this.authMethod_;
55 /** @private */
56 this.pluginError_ = '';
57 55
58 this.setSessionId_(); 56 this.setSessionId_();
59 }; 57 };
60 58
61 /** 59 /**
62 * @param {remoting.ChromotingEvent.SessionEntryPoint} entryPoint 60 * @param {remoting.ChromotingEvent.SessionEntryPoint} entryPoint
63 */ 61 */
64 remoting.SessionLogger.prototype.setEntryPoint = function(entryPoint) { 62 remoting.SessionLogger.prototype.setEntryPoint = function(entryPoint) {
65 this.entryPoint_ = entryPoint; 63 this.entryPoint_ = entryPoint;
66 }; 64 };
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 }; 122 };
125 123
126 /** 124 /**
127 * @param {remoting.ChromotingEvent.AuthMethod} method 125 * @param {remoting.ChromotingEvent.AuthMethod} method
128 */ 126 */
129 remoting.SessionLogger.prototype.setAuthMethod = function(method) { 127 remoting.SessionLogger.prototype.setAuthMethod = function(method) {
130 this.authMethod_ = method; 128 this.authMethod_ = method;
131 }; 129 };
132 130
133 /** 131 /**
134 * @param {string} error The error string of the plugin error.
135 */
136 remoting.SessionLogger.prototype.setPluginError = function(error) {
137 this.pluginError_ = error;
138 };
139
140 /**
141 * @return {string} The current session id. This is random GUID, refreshed 132 * @return {string} The current session id. This is random GUID, refreshed
142 * every 24hrs. 133 * every 24hrs.
143 */ 134 */
144 remoting.SessionLogger.prototype.getSessionId = function() { 135 remoting.SessionLogger.prototype.getSessionId = function() {
145 return this.sessionId_; 136 return this.sessionId_;
146 }; 137 };
147 138
148 /** 139 /**
149 * @param {remoting.SignalStrategy.Type} strategyType 140 * @param {remoting.SignalStrategy.Type} strategyType
150 * @param {remoting.FallbackSignalStrategy.Progress} progress 141 * @param {remoting.FallbackSignalStrategy.Progress} progress
151 */ 142 */
152 remoting.SessionLogger.prototype.logSignalStrategyProgress = 143 remoting.SessionLogger.prototype.logSignalStrategyProgress =
153 function(strategyType, progress) { 144 function(strategyType, progress) {
154 this.maybeExpireSessionId_(); 145 this.maybeExpireSessionId_();
155 var entry = new remoting.ChromotingEvent( 146 var entry = new remoting.ChromotingEvent(
156 remoting.ChromotingEvent.Type.SIGNAL_STRATEGY_PROGRESS); 147 remoting.ChromotingEvent.Type.SIGNAL_STRATEGY_PROGRESS);
157 entry.signal_strategy_type = toSignalStrategyType(strategyType); 148 entry.signal_strategy_type = toSignalStrategyType(strategyType);
158 entry.signal_strategy_progress = toSignalStrategyProgress(progress); 149 entry.signal_strategy_progress = toSignalStrategyProgress(progress);
159 150
160 this.fillEvent_(entry); 151 this.fillEvent_(entry);
161 this.log_(entry); 152 this.log_(entry);
162 }; 153 };
163 154
164 /** 155 /**
165 * Logs a client session state change.
166 *
167 * @param {remoting.ClientSession.State} state
168 * @param {!remoting.Error} stateError
169 * @param {?remoting.ChromotingEvent.XmppError} xmppError The XMPP error
170 * as described in http://xmpp.org/rfcs/rfc6120.html#stanzas-error.
171 * Set if the connecton error originates from the an XMPP stanza error.
172 */
173 remoting.SessionLogger.prototype.logClientSessionStateChange = function(
174 state, stateError, xmppError) {
175 this.logSessionStateChange(
176 toSessionState(state),
177 stateError.toConnectionError(),
178 xmppError);
179 };
180
181 /**
182 * @param {remoting.ChromotingEvent.SessionState} state 156 * @param {remoting.ChromotingEvent.SessionState} state
183 * @param {remoting.ChromotingEvent.ConnectionError} error 157 * @param {remoting.Error=} opt_error
184 * @param {remoting.ChromotingEvent.XmppError=} opt_XmppError
185 */ 158 */
186 remoting.SessionLogger.prototype.logSessionStateChange = function( 159 remoting.SessionLogger.prototype.logSessionStateChange =
187 state, error, opt_XmppError) { 160 function(state, opt_error) {
188 this.maybeExpireSessionId_(); 161 this.maybeExpireSessionId_();
189 162
190 var entry = this.makeSessionStateChange_( 163 var entry = this.makeSessionStateChange_(state, opt_error);
191 state, error,
192 /** @type {?remoting.ChromotingEvent.XmppError} */ (opt_XmppError));
193 entry.previous_session_state = this.previousSessionState_; 164 entry.previous_session_state = this.previousSessionState_;
194 this.previousSessionState_ = state; 165 this.previousSessionState_ = state;
195 166
196 this.log_(entry); 167 this.log_(entry);
197 168
198 // Don't accumulate connection statistics across state changes. 169 // Don't accumulate connection statistics across state changes.
199 this.logAccumulatedStatistics_(); 170 this.logAccumulatedStatistics_();
200 this.statsAccumulator_.empty(); 171 this.statsAccumulator_.empty();
201 }; 172 };
202 173
203 /** 174 /**
204 * Logs connection statistics. 175 * Logs connection statistics.
205 * 176 *
206 * @param {Object<number>} stats The connection statistics 177 * @param {Object<number>} stats The connection statistics
207 */ 178 */
208 remoting.SessionLogger.prototype.logStatistics = function(stats) { 179 remoting.SessionLogger.prototype.logStatistics = function(stats) {
209 this.maybeExpireSessionId_(); 180 this.maybeExpireSessionId_();
210 // Store the statistics. 181 // Store the statistics.
211 this.statsAccumulator_.add(stats); 182 this.statsAccumulator_.add(stats);
212 // Send statistics to the server if they've been accumulating for at least 183 // Send statistics to the server if they've been accumulating for at least
213 // 60 seconds. 184 // 60 seconds.
214 if (this.statsAccumulator_.getTimeSinceFirstValue() >= 185 if (this.statsAccumulator_.getTimeSinceFirstValue() >=
215 remoting.SessionLogger.CONNECTION_STATS_ACCUMULATE_TIME) { 186 remoting.SessionLogger.CONNECTION_STATS_ACCUMULATE_TIME) {
216 this.logAccumulatedStatistics_(); 187 this.logAccumulatedStatistics_();
217 } 188 }
218 }; 189 };
219 190
220 /** 191 /**
221 * @param {remoting.ChromotingEvent.SessionState} state 192 * @param {remoting.ChromotingEvent.SessionState} state
222 * @param {remoting.ChromotingEvent.ConnectionError} error 193 * @param {remoting.Error=} opt_error
223 * @param {?remoting.ChromotingEvent.XmppError} xmppError
224 * @return {remoting.ChromotingEvent} 194 * @return {remoting.ChromotingEvent}
225 * @private 195 * @private
226 */ 196 */
227 remoting.SessionLogger.prototype.makeSessionStateChange_ = 197 remoting.SessionLogger.prototype.makeSessionStateChange_ =
228 function(state, error, xmppError) { 198 function(state, opt_error) {
229 var entry = new remoting.ChromotingEvent( 199 var entry = new remoting.ChromotingEvent(
230 remoting.ChromotingEvent.Type.SESSION_STATE); 200 remoting.ChromotingEvent.Type.SESSION_STATE);
231 entry.connection_error = error; 201
202 var ConnectionError = remoting.ChromotingEvent.ConnectionError;
203
204 if (!opt_error) {
205 entry.connection_error = ConnectionError.NONE;
206 } else if (opt_error instanceof remoting.Error) {
207 entry.setError(opt_error);
208 } else {
209 entry.connection_error = ConnectionError.UNKNOWN_ERROR;
210 }
211
232 entry.session_state = state; 212 entry.session_state = state;
233 213
234 if (Boolean(xmppError)) {
235 entry.xmpp_error = xmppError;
236 }
237
238 this.fillEvent_(entry); 214 this.fillEvent_(entry);
239 return entry; 215 return entry;
240 }; 216 };
241 217
242 /** 218 /**
243 * @return {remoting.ChromotingEvent} 219 * @return {remoting.ChromotingEvent}
244 * @private 220 * @private
245 */ 221 */
246 remoting.SessionLogger.prototype.makeSessionIdNew_ = function() { 222 remoting.SessionLogger.prototype.makeSessionIdNew_ = function() {
247 var entry = new remoting.ChromotingEvent( 223 var entry = new remoting.ChromotingEvent(
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 entry.session_duration = sessionDurationInSeconds; 289 entry.session_duration = sessionDurationInSeconds;
314 if (Boolean(this.connectionType_)) { 290 if (Boolean(this.connectionType_)) {
315 entry.connection_type = this.connectionType_; 291 entry.connection_type = this.connectionType_;
316 } 292 }
317 if (this.hostStatusUpdateElapsedTime_ != undefined) { 293 if (this.hostStatusUpdateElapsedTime_ != undefined) {
318 entry.host_status_update_elapsed_time = this.hostStatusUpdateElapsedTime_; 294 entry.host_status_update_elapsed_time = this.hostStatusUpdateElapsedTime_;
319 } 295 }
320 if (this.authMethod_ != undefined) { 296 if (this.authMethod_ != undefined) {
321 entry.auth_method = this.authMethod_; 297 entry.auth_method = this.authMethod_;
322 } 298 }
323 if (Boolean(this.pluginError_)) {
324 entry.raw_plugin_error = this.pluginError_;
325 }
326 entry.host_version = this.hostVersion_; 299 entry.host_version = this.hostVersion_;
327 entry.host_os = this.hostOs_; 300 entry.host_os = this.hostOs_;
328 entry.host_os_version = this.hostOsVersion_; 301 entry.host_os_version = this.hostOsVersion_;
329 }; 302 };
330 303
331 /** 304 /**
332 * Sends a log entry to the server. 305 * Sends a log entry to the server.
333 * 306 *
334 * @param {remoting.ChromotingEvent} entry 307 * @param {remoting.ChromotingEvent} entry
335 * @private 308 * @private
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
383 } 356 }
384 }; 357 };
385 358
386 /** @return {remoting.SessionLogger} */ 359 /** @return {remoting.SessionLogger} */
387 remoting.SessionLogger.createForClient = function() { 360 remoting.SessionLogger.createForClient = function() {
388 return new remoting.SessionLogger(remoting.ChromotingEvent.Role.CLIENT, 361 return new remoting.SessionLogger(remoting.ChromotingEvent.Role.CLIENT,
389 remoting.TelemetryEventWriter.Client.write); 362 remoting.TelemetryEventWriter.Client.write);
390 }; 363 };
391 364
392 /** 365 /**
393 * TODO(kelvinp): Consolidate the two enums (crbug.com/504200)
394 * @param {remoting.ClientSession.State} state
395 * @return {remoting.ChromotingEvent.SessionState}
396 */
397 function toSessionState(state) {
398 var SessionState = remoting.ChromotingEvent.SessionState;
399 switch(state) {
400 case remoting.ClientSession.State.UNKNOWN:
401 return SessionState.UNKNOWN;
402 case remoting.ClientSession.State.INITIALIZING:
403 return SessionState.INITIALIZING;
404 case remoting.ClientSession.State.CONNECTING:
405 return SessionState.CONNECTING;
406 case remoting.ClientSession.State.AUTHENTICATED:
407 return SessionState.AUTHENTICATED;
408 case remoting.ClientSession.State.CONNECTED:
409 return SessionState.CONNECTED;
410 case remoting.ClientSession.State.CLOSED:
411 return SessionState.CLOSED;
412 case remoting.ClientSession.State.FAILED:
413 return SessionState.CONNECTION_FAILED;
414 case remoting.ClientSession.State.CONNECTION_DROPPED:
415 return SessionState.CONNECTION_DROPPED;
416 case remoting.ClientSession.State.CONNECTION_CANCELED:
417 return SessionState.CONNECTION_CANCELED;
418 default:
419 throw new Error('Unknown session state : ' + state);
420 }
421 }
422
423 /**
424 * @param {remoting.SignalStrategy.Type} type 366 * @param {remoting.SignalStrategy.Type} type
425 * @return {remoting.ChromotingEvent.SignalStrategyType} 367 * @return {remoting.ChromotingEvent.SignalStrategyType}
426 */ 368 */
427 function toSignalStrategyType(type) { 369 function toSignalStrategyType(type) {
428 switch (type) { 370 switch (type) {
429 case remoting.SignalStrategy.Type.XMPP: 371 case remoting.SignalStrategy.Type.XMPP:
430 return remoting.ChromotingEvent.SignalStrategyType.XMPP; 372 return remoting.ChromotingEvent.SignalStrategyType.XMPP;
431 case remoting.SignalStrategy.Type.WCS: 373 case remoting.SignalStrategy.Type.WCS:
432 return remoting.ChromotingEvent.SignalStrategyType.WCS; 374 return remoting.ChromotingEvent.SignalStrategyType.WCS;
433 default: 375 default:
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
475 } 417 }
476 418
477 // The maximum age of a session ID, in milliseconds. 419 // The maximum age of a session ID, in milliseconds.
478 remoting.SessionLogger.MAX_SESSION_ID_AGE = 24 * 60 * 60 * 1000; 420 remoting.SessionLogger.MAX_SESSION_ID_AGE = 24 * 60 * 60 * 1000;
479 421
480 // The time over which to accumulate connection statistics before logging them 422 // The time over which to accumulate connection statistics before logging them
481 // to the server, in milliseconds. 423 // to the server, in milliseconds.
482 remoting.SessionLogger.CONNECTION_STATS_ACCUMULATE_TIME = 60 * 1000; 424 remoting.SessionLogger.CONNECTION_STATS_ACCUMULATE_TIME = 60 * 1000;
483 425
484 })(); 426 })();
OLDNEW
« no previous file with comments | « remoting/webapp/base/js/client_session_unittest.js ('k') | remoting/webapp/base/js/session_logger_unittest.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698