OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 * @fileoverview | 6 * @fileoverview |
7 * Class handling creation and teardown of a remoting client session. | 7 * Class handling creation and teardown of a remoting client session. |
8 * | 8 * |
9 * The ClientSession class controls lifetime of the client plugin | 9 * The ClientSession class controls lifetime of the client plugin |
10 * object and provides the plugin with the functionality it needs to | 10 * object and provides the plugin with the functionality it needs to |
(...skipping 28 matching lines...) Expand all Loading... |
39 * @constructor | 39 * @constructor |
40 * @extends {base.EventSourceImpl} | 40 * @extends {base.EventSourceImpl} |
41 * @implements {base.Disposable} | 41 * @implements {base.Disposable} |
42 * @implements {remoting.ClientPlugin.ConnectionEventHandler} | 42 * @implements {remoting.ClientPlugin.ConnectionEventHandler} |
43 */ | 43 */ |
44 remoting.ClientSession = function(plugin, host, signalStrategy, mode) { | 44 remoting.ClientSession = function(plugin, host, signalStrategy, mode) { |
45 /** @private */ | 45 /** @private */ |
46 this.state_ = remoting.ClientSession.State.CREATED; | 46 this.state_ = remoting.ClientSession.State.CREATED; |
47 | 47 |
48 /** @private {!remoting.Error} */ | 48 /** @private {!remoting.Error} */ |
49 this.error_ = remoting.Error.NONE; | 49 this.error_ = remoting.Error.none(); |
50 | 50 |
51 /** @private */ | 51 /** @private */ |
52 this.host_ = host; | 52 this.host_ = host; |
53 | 53 |
54 /** @private */ | 54 /** @private */ |
55 this.sessionId_ = ''; | 55 this.sessionId_ = ''; |
56 | 56 |
57 /** @private */ | 57 /** @private */ |
58 this.hasReceivedFrame_ = false; | 58 this.hasReceivedFrame_ = false; |
59 this.logToServer = new remoting.LogToServer(signalStrategy, mode); | 59 this.logToServer = new remoting.LogToServer(signalStrategy, mode); |
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
248 remoting.ClientSession.prototype.removePlugin = function() { | 248 remoting.ClientSession.prototype.removePlugin = function() { |
249 this.plugin_ = null; | 249 this.plugin_ = null; |
250 }; | 250 }; |
251 | 251 |
252 /** | 252 /** |
253 * Disconnect the current session with a particular |error|. The session will | 253 * Disconnect the current session with a particular |error|. The session will |
254 * raise a |stateChanged| event in response to it. The caller should then call | 254 * raise a |stateChanged| event in response to it. The caller should then call |
255 * dispose() to remove and destroy the <embed> element. | 255 * dispose() to remove and destroy the <embed> element. |
256 * | 256 * |
257 * @param {!remoting.Error} error The reason for the disconnection. Use | 257 * @param {!remoting.Error} error The reason for the disconnection. Use |
258 * remoting.Error.NONE if there is no error. | 258 * remoting.Error.none() if there is no error. |
259 * @return {void} Nothing. | 259 * @return {void} Nothing. |
260 */ | 260 */ |
261 remoting.ClientSession.prototype.disconnect = function(error) { | 261 remoting.ClientSession.prototype.disconnect = function(error) { |
262 var state = error.isError() ? | 262 var state = error.isError() ? |
263 remoting.ClientSession.State.FAILED : | 263 remoting.ClientSession.State.FAILED : |
264 remoting.ClientSession.State.CLOSED; | 264 remoting.ClientSession.State.CLOSED; |
265 | 265 |
266 // The plugin won't send a state change notification, so we explicitly log | 266 // The plugin won't send a state change notification, so we explicitly log |
267 // the fact that the connection has closed. | 267 // the fact that the connection has closed. |
268 this.logToServer.logClientSessionStateChange(state, error); | 268 this.logToServer.logClientSessionStateChange(state, error); |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
388 * state, if any. | 388 * state, if any. |
389 */ | 389 */ |
390 remoting.ClientSession.prototype.onConnectionStatusUpdate = | 390 remoting.ClientSession.prototype.onConnectionStatusUpdate = |
391 function(status, error) { | 391 function(status, error) { |
392 if (status == remoting.ClientSession.State.CONNECTED) { | 392 if (status == remoting.ClientSession.State.CONNECTED) { |
393 remoting.desktopConnectedView.updateClientSessionUi_(this); | 393 remoting.desktopConnectedView.updateClientSessionUi_(this); |
394 | 394 |
395 } else if (status == remoting.ClientSession.State.FAILED) { | 395 } else if (status == remoting.ClientSession.State.FAILED) { |
396 switch (error) { | 396 switch (error) { |
397 case remoting.ClientSession.ConnectionError.HOST_IS_OFFLINE: | 397 case remoting.ClientSession.ConnectionError.HOST_IS_OFFLINE: |
398 this.error_ = remoting.Error.HOST_IS_OFFLINE; | 398 this.error_ = new remoting.Error( |
| 399 remoting.Error.Tag.HOST_IS_OFFLINE); |
399 break; | 400 break; |
400 case remoting.ClientSession.ConnectionError.SESSION_REJECTED: | 401 case remoting.ClientSession.ConnectionError.SESSION_REJECTED: |
401 this.error_ = remoting.Error.INVALID_ACCESS_CODE; | 402 this.error_ = new remoting.Error( |
| 403 remoting.Error.Tag.INVALID_ACCESS_CODE); |
402 break; | 404 break; |
403 case remoting.ClientSession.ConnectionError.INCOMPATIBLE_PROTOCOL: | 405 case remoting.ClientSession.ConnectionError.INCOMPATIBLE_PROTOCOL: |
404 this.error_ = remoting.Error.INCOMPATIBLE_PROTOCOL; | 406 this.error_ = new remoting.Error( |
| 407 remoting.Error.Tag.INCOMPATIBLE_PROTOCOL); |
405 break; | 408 break; |
406 case remoting.ClientSession.ConnectionError.NETWORK_FAILURE: | 409 case remoting.ClientSession.ConnectionError.NETWORK_FAILURE: |
407 this.error_ = remoting.Error.P2P_FAILURE; | 410 this.error_ = new remoting.Error( |
| 411 remoting.Error.Tag.P2P_FAILURE); |
408 break; | 412 break; |
409 case remoting.ClientSession.ConnectionError.HOST_OVERLOAD: | 413 case remoting.ClientSession.ConnectionError.HOST_OVERLOAD: |
410 this.error_ = remoting.Error.HOST_OVERLOAD; | 414 this.error_ = new remoting.Error( |
| 415 remoting.Error.Tag.HOST_OVERLOAD); |
411 break; | 416 break; |
412 default: | 417 default: |
413 this.error_ = remoting.Error.UNEXPECTED; | 418 this.error_ = remoting.Error.unexpected(); |
414 } | 419 } |
415 } | 420 } |
416 this.setState_(status); | 421 this.setState_(status); |
417 }; | 422 }; |
418 | 423 |
419 /** | 424 /** |
420 * Callback that the plugin invokes to indicate that the connection type for | 425 * Callback that the plugin invokes to indicate that the connection type for |
421 * a channel has changed. | 426 * a channel has changed. |
422 * | 427 * |
423 * @param {string} channel The channel name. | 428 * @param {string} channel The channel name. |
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
708 */ | 713 */ |
709 remoting.ClientSession.prototype.enableDebugRegion = function(enable) { | 714 remoting.ClientSession.prototype.enableDebugRegion = function(enable) { |
710 if (enable) { | 715 if (enable) { |
711 this.plugin_.setDebugDirtyRegionHandler( | 716 this.plugin_.setDebugDirtyRegionHandler( |
712 remoting.desktopConnectedView.handleDebugRegion.bind( | 717 remoting.desktopConnectedView.handleDebugRegion.bind( |
713 remoting.desktopConnectedView)); | 718 remoting.desktopConnectedView)); |
714 } else { | 719 } else { |
715 this.plugin_.setDebugDirtyRegionHandler(null); | 720 this.plugin_.setDebugDirtyRegionHandler(null); |
716 } | 721 } |
717 } | 722 } |
OLD | NEW |