Chromium Code Reviews| 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 454 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 465 new remoting.Error(remoting.Error.Tag.INVALID_ACCESS_CODE); | 465 new remoting.Error(remoting.Error.Tag.INVALID_ACCESS_CODE); |
| 466 break; | 466 break; |
| 467 case remoting.ClientSession.ConnectionError.INCOMPATIBLE_PROTOCOL: | 467 case remoting.ClientSession.ConnectionError.INCOMPATIBLE_PROTOCOL: |
| 468 this.error_ = | 468 this.error_ = |
| 469 new remoting.Error(remoting.Error.Tag.INCOMPATIBLE_PROTOCOL); | 469 new remoting.Error(remoting.Error.Tag.INCOMPATIBLE_PROTOCOL); |
| 470 break; | 470 break; |
| 471 case remoting.ClientSession.ConnectionError.NETWORK_FAILURE: | 471 case remoting.ClientSession.ConnectionError.NETWORK_FAILURE: |
| 472 this.error_ = new remoting.Error(remoting.Error.Tag.P2P_FAILURE); | 472 this.error_ = new remoting.Error(remoting.Error.Tag.P2P_FAILURE); |
| 473 break; | 473 break; |
| 474 case remoting.ClientSession.ConnectionError.HOST_OVERLOAD: | 474 case remoting.ClientSession.ConnectionError.HOST_OVERLOAD: |
| 475 this.error_ = new remoting.Error(remoting.Error.Tag.HOST_OVERLOAD); | 475 this.error_ = new remoting.Error( |
| 476 remoting.Error.Tag.HOST_OVERLOAD, | |
| 477 this.xmppErrorCache_.getFirstErrorStanza()); | |
| 476 break; | 478 break; |
| 477 case remoting.ClientSession.ConnectionError.MAX_SESSION_LENGTH: | 479 case remoting.ClientSession.ConnectionError.MAX_SESSION_LENGTH: |
| 478 this.error_ = new remoting.Error(remoting.Error.Tag.MAX_SESSION_LENGTH); | 480 this.error_ = new remoting.Error(remoting.Error.Tag.MAX_SESSION_LENGTH); |
| 479 break; | 481 break; |
| 480 case remoting.ClientSession.ConnectionError.HOST_CONFIGURATION_ERROR: | 482 case remoting.ClientSession.ConnectionError.HOST_CONFIGURATION_ERROR: |
| 481 this.error_ = | 483 this.error_ = |
| 482 new remoting.Error(remoting.Error.Tag.HOST_CONFIGURATION_ERROR); | 484 new remoting.Error(remoting.Error.Tag.HOST_CONFIGURATION_ERROR); |
| 483 break; | 485 break; |
| 484 default: | 486 default: |
| 485 this.error_ = remoting.Error.unexpected(); | 487 this.error_ = remoting.Error.unexpected(); |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 555 } | 557 } |
| 556 } else if (this.isFinished()) { | 558 } else if (this.isFinished()) { |
| 557 base.dispose(this.connectedDisposables_); | 559 base.dispose(this.connectedDisposables_); |
| 558 this.connectedDisposables_ = null; | 560 this.connectedDisposables_ = null; |
| 559 } | 561 } |
| 560 | 562 |
| 561 this.logAuthMethod_(); | 563 this.logAuthMethod_(); |
| 562 this.notifyStateChanges_(oldState, this.state_); | 564 this.notifyStateChanges_(oldState, this.state_); |
| 563 // Record state count in an UMA enumerated histogram. | 565 // Record state count in an UMA enumerated histogram. |
| 564 recordState(this.state_); | 566 recordState(this.state_); |
| 565 this.logger_.logClientSessionStateChange( | 567 this.logger_.logSessionStateChange(toSessionState(this.state_), this.error_); |
|
Jamie
2015/11/09 18:46:02
This is a change in semantics. Previously, getFirs
kelvinp
2015/11/09 22:59:10
Good catch.
| |
| 566 this.state_, this.error_, this.xmppErrorCache_.getFirstError()); | |
| 567 }; | 568 }; |
| 568 | 569 |
| 569 /** @private */ | 570 /** @private */ |
| 570 remoting.ClientSession.prototype.logAuthMethod_ = function() { | 571 remoting.ClientSession.prototype.logAuthMethod_ = function() { |
| 571 // The AuthMethod is undefined before the AUTHENTICATED stage for a | 572 // The AuthMethod is undefined before the AUTHENTICATED stage for a |
| 572 // successful connection or the FAILED stage for a failed connection. | 573 // successful connection or the FAILED stage for a failed connection. |
| 573 if (this.state_ == remoting.ClientSession.State.AUTHENTICATED || | 574 if (this.state_ == remoting.ClientSession.State.AUTHENTICATED || |
| 574 this.state_ == remoting.ClientSession.State.FAILED) { | 575 this.state_ == remoting.ClientSession.State.FAILED) { |
| 575 var authMethod = this.credentialsProvider_.getAuthMethod(); | 576 var authMethod = this.credentialsProvider_.getAuthMethod(); |
| 576 if (authMethod != null) { | 577 if (authMethod != null) { |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 654 console.error('Connection dropped: ' + error.toString()); | 655 console.error('Connection dropped: ' + error.toString()); |
| 655 this.listener_.onDisconnected(error); | 656 this.listener_.onDisconnected(error); |
| 656 break; | 657 break; |
| 657 | 658 |
| 658 default: | 659 default: |
| 659 console.error('Unexpected client plugin state: ' + newState); | 660 console.error('Unexpected client plugin state: ' + newState); |
| 660 } | 661 } |
| 661 }; | 662 }; |
| 662 | 663 |
| 663 /** | 664 /** |
| 665 * TODO(kelvinp): Consolidate the two enums (crbug.com/504200) | |
| 666 * @param {remoting.ClientSession.State} state | |
| 667 * @return {remoting.ChromotingEvent.SessionState} | |
| 668 */ | |
| 669 function toSessionState(state) { | |
| 670 var SessionState = remoting.ChromotingEvent.SessionState; | |
| 671 switch(state) { | |
| 672 case remoting.ClientSession.State.UNKNOWN: | |
| 673 return SessionState.UNKNOWN; | |
| 674 case remoting.ClientSession.State.INITIALIZING: | |
| 675 return SessionState.INITIALIZING; | |
| 676 case remoting.ClientSession.State.CONNECTING: | |
| 677 return SessionState.CONNECTING; | |
| 678 case remoting.ClientSession.State.AUTHENTICATED: | |
| 679 return SessionState.AUTHENTICATED; | |
| 680 case remoting.ClientSession.State.CONNECTED: | |
| 681 return SessionState.CONNECTED; | |
| 682 case remoting.ClientSession.State.CLOSED: | |
| 683 return SessionState.CLOSED; | |
| 684 case remoting.ClientSession.State.FAILED: | |
| 685 return SessionState.CONNECTION_FAILED; | |
| 686 case remoting.ClientSession.State.CONNECTION_DROPPED: | |
| 687 return SessionState.CONNECTION_DROPPED; | |
| 688 case remoting.ClientSession.State.CONNECTION_CANCELED: | |
| 689 return SessionState.CONNECTION_CANCELED; | |
| 690 default: | |
| 691 throw new Error('Unknown session state : ' + state); | |
| 692 } | |
| 693 } | |
| 694 | |
| 695 /** | |
| 664 * @param {remoting.ClientSession.State} previous | 696 * @param {remoting.ClientSession.State} previous |
| 665 * @param {remoting.ClientSession.State} current | 697 * @param {remoting.ClientSession.State} current |
| 666 * @return {remoting.ClientSession.State} | 698 * @return {remoting.ClientSession.State} |
| 667 * @private | 699 * @private |
| 668 */ | 700 */ |
| 669 remoting.ClientSession.prototype.translateState_ = function(previous, current) { | 701 remoting.ClientSession.prototype.translateState_ = function(previous, current) { |
| 670 var State = remoting.ClientSession.State; | 702 var State = remoting.ClientSession.State; |
| 671 if (previous == State.CONNECTING || previous == State.AUTHENTICATED) { | 703 if (previous == State.CONNECTING || previous == State.AUTHENTICATED) { |
| 672 if (current == State.CLOSED) { | 704 if (current == State.CLOSED) { |
| 673 return remoting.ClientSession.State.CONNECTION_CANCELED; | 705 return remoting.ClientSession.State.CONNECTION_CANCELED; |
| 674 } | 706 } |
| 675 } else if (previous == State.CONNECTED && current == State.FAILED) { | 707 } else if (previous == State.CONNECTED && current == State.FAILED) { |
| 676 return State.CONNECTION_DROPPED; | 708 return State.CONNECTION_DROPPED; |
| 677 } | 709 } |
| 678 return current; | 710 return current; |
| 679 }; | 711 }; |
| 680 | 712 |
| 681 /** @private */ | 713 /** @private */ |
| 682 remoting.ClientSession.prototype.reportStatistics = function() { | 714 remoting.ClientSession.prototype.reportStatistics = function() { |
| 683 this.logger_.logStatistics(this.plugin_.getPerfStats()); | 715 this.logger_.logStatistics(this.plugin_.getPerfStats()); |
| 684 }; | 716 }; |
| OLD | NEW |