| OLD | NEW |
| 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 'use strict'; | 5 'use strict'; |
| 6 | 6 |
| 7 /** @suppress {duplicate} */ | 7 /** @suppress {duplicate} */ |
| 8 var remoting = remoting || {}; | 8 var remoting = remoting || {}; |
| 9 | 9 |
| 10 /** | 10 /** |
| 11 * A signal strategy encapsulating a primary and a back-up strategy. If the | 11 * A signal strategy encapsulating a primary and a back-up strategy. If the |
| 12 * primary fails or times out, then the secondary is used. Information about | 12 * primary fails or times out, then the secondary is used. Information about |
| 13 * which strategy was used, and why, is returned via |onProgressCallback|. | 13 * which strategy was used, and why, is returned via |onProgressCallback|. |
| 14 * | 14 * |
| 15 * @param {remoting.SignalStrategy} primary | 15 * @param {remoting.SignalStrategy} primary |
| 16 * @param {remoting.SignalStrategy} secondary | 16 * @param {remoting.SignalStrategy} secondary |
| 17 * | 17 * |
| 18 * @implements {remoting.SignalStrategy} | 18 * @implements {remoting.SignalStrategy} |
| 19 * @constructor | 19 * @constructor |
| 20 */ | 20 */ |
| 21 remoting.FallbackSignalStrategy = function(primary, | 21 remoting.FallbackSignalStrategy = function(primary, |
| 22 secondary) { | 22 secondary) { |
| 23 /** | 23 /** @private {remoting.SignalStrategy} */ |
| 24 * @type {remoting.SignalStrategy} | |
| 25 * @private | |
| 26 */ | |
| 27 this.primary_ = primary; | 24 this.primary_ = primary; |
| 28 this.primary_.setStateChangedCallback(this.onPrimaryStateChanged_.bind(this)); | 25 this.primary_.setStateChangedCallback(this.onPrimaryStateChanged_.bind(this)); |
| 29 | 26 |
| 30 /** | 27 /** @private {remoting.SignalStrategy} */ |
| 31 * @type {remoting.SignalStrategy} | |
| 32 * @private | |
| 33 */ | |
| 34 this.secondary_ = secondary; | 28 this.secondary_ = secondary; |
| 35 this.secondary_.setStateChangedCallback( | 29 this.secondary_.setStateChangedCallback( |
| 36 this.onSecondaryStateChanged_.bind(this)); | 30 this.onSecondaryStateChanged_.bind(this)); |
| 37 | 31 |
| 38 /** | 32 /** @private {?function(remoting.SignalStrategy.State)} */ |
| 39 * @type {?function(remoting.SignalStrategy.State)} | |
| 40 * @private | |
| 41 */ | |
| 42 this.onStateChangedCallback_ = null; | 33 this.onStateChangedCallback_ = null; |
| 43 | 34 |
| 44 /** | 35 /** @private {?function(Element):void} */ |
| 45 * @type {?function(Element):void} | |
| 46 * @private | |
| 47 */ | |
| 48 this.onIncomingStanzaCallback_ = null; | 36 this.onIncomingStanzaCallback_ = null; |
| 49 | 37 |
| 50 /** | 38 /** |
| 51 * @type {number} | 39 * @private {number} |
| 52 * @private | |
| 53 * @const | 40 * @const |
| 54 */ | 41 */ |
| 55 this.PRIMARY_CONNECT_TIMEOUT_MS_ = 10 * 1000; | 42 this.PRIMARY_CONNECT_TIMEOUT_MS_ = 10 * 1000; |
| 56 | 43 |
| 57 /** | 44 /** |
| 58 * @enum {string} | 45 * @enum {string} |
| 59 * @private | 46 * @private |
| 60 */ | 47 */ |
| 61 this.State = { | 48 this.State = { |
| 62 NOT_CONNECTED: 'not-connected', | 49 NOT_CONNECTED: 'not-connected', |
| 63 PRIMARY_PENDING: 'primary-pending', | 50 PRIMARY_PENDING: 'primary-pending', |
| 64 PRIMARY_SUCCEEDED: 'primary-succeeded', | 51 PRIMARY_SUCCEEDED: 'primary-succeeded', |
| 65 SECONDARY_PENDING: 'secondary-pending', | 52 SECONDARY_PENDING: 'secondary-pending', |
| 66 SECONDARY_SUCCEEDED: 'secondary-succeeded', | 53 SECONDARY_SUCCEEDED: 'secondary-succeeded', |
| 67 SECONDARY_FAILED: 'secondary-failed', | 54 SECONDARY_FAILED: 'secondary-failed', |
| 68 CLOSED: 'closed' | 55 CLOSED: 'closed' |
| 69 }; | 56 }; |
| 70 | 57 |
| 71 /** | 58 /** @private {string} */ |
| 72 * @type {string} | |
| 73 * @private | |
| 74 */ | |
| 75 this.state_ = this.State.NOT_CONNECTED; | 59 this.state_ = this.State.NOT_CONNECTED; |
| 76 | 60 |
| 77 /** | 61 /** @private {?remoting.SignalStrategy.State} */ |
| 78 * @type {?remoting.SignalStrategy.State} | |
| 79 * @private | |
| 80 */ | |
| 81 this.externalState_ = null; | 62 this.externalState_ = null; |
| 82 | 63 |
| 83 /** | 64 /** @private {string} */ |
| 84 * @type {string} | |
| 85 * @private | |
| 86 */ | |
| 87 this.server_ = ''; | 65 this.server_ = ''; |
| 88 | 66 |
| 89 /** | 67 /** @private {string} */ |
| 90 * @type {string} | |
| 91 * @private | |
| 92 */ | |
| 93 this.username_ = ''; | 68 this.username_ = ''; |
| 94 | 69 |
| 95 /** | 70 /** @private {string} */ |
| 96 * @type {string} | |
| 97 * @private | |
| 98 */ | |
| 99 this.authToken_ = ''; | 71 this.authToken_ = ''; |
| 100 | 72 |
| 101 /** | 73 /** @private {number} */ |
| 102 * @type {number} | |
| 103 * @private | |
| 104 */ | |
| 105 this.primaryConnectTimerId_ = 0; | 74 this.primaryConnectTimerId_ = 0; |
| 106 | 75 |
| 107 /** | 76 /** @private {remoting.LogToServer} */ |
| 108 * @type {remoting.LogToServer} | |
| 109 * @private | |
| 110 */ | |
| 111 this.logToServer_ = null; | 77 this.logToServer_ = null; |
| 112 | 78 |
| 113 /** | 79 /** |
| 114 * @type {Array<{strategyType: remoting.SignalStrategy.Type, | 80 * @type {Array<{strategyType: remoting.SignalStrategy.Type, |
| 115 progress: remoting.FallbackSignalStrategy.Progress}>} | 81 progress: remoting.FallbackSignalStrategy.Progress}>} |
| 116 */ | 82 */ |
| 117 this.connectionSetupResults_ = []; | 83 this.connectionSetupResults_ = []; |
| 118 | 84 |
| 119 }; | 85 }; |
| 120 | 86 |
| (...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 382 console.log('FallbackSignalStrategy progress: ' + strategy.getType() + ' ' + | 348 console.log('FallbackSignalStrategy progress: ' + strategy.getType() + ' ' + |
| 383 progress); | 349 progress); |
| 384 this.connectionSetupResults_.push({ | 350 this.connectionSetupResults_.push({ |
| 385 'strategyType': strategy.getType(), | 351 'strategyType': strategy.getType(), |
| 386 'progress': progress | 352 'progress': progress |
| 387 }); | 353 }); |
| 388 if (this.logToServer_) { | 354 if (this.logToServer_) { |
| 389 this.sendConnectionSetupResultsInternal_(); | 355 this.sendConnectionSetupResultsInternal_(); |
| 390 } | 356 } |
| 391 }; | 357 }; |
| OLD | NEW |