| 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 /** @suppress {duplicate} */ | 5 /** @suppress {duplicate} */ |
| 6 var remoting = remoting || {}; | 6 var remoting = remoting || {}; |
| 7 | 7 |
| 8 (function() { | 8 (function() { |
| 9 | 9 |
| 10 'use strict'; | 10 'use strict'; |
| 11 | 11 |
| 12 // Length of the various components of the access code in number of digits. | 12 // Length of the various components of the access code in number of digits. |
| 13 var SUPPORT_ID_LENGTH = 7; | 13 var SUPPORT_ID_LENGTH = 7; |
| 14 var HOST_SECRET_LENGTH = 5; | 14 var HOST_SECRET_LENGTH = 5; |
| 15 var ACCESS_CODE_LENGTH = SUPPORT_ID_LENGTH + HOST_SECRET_LENGTH; | 15 var ACCESS_CODE_LENGTH = SUPPORT_ID_LENGTH + HOST_SECRET_LENGTH; |
| 16 | 16 |
| 17 /** | 17 /** |
| 18 * @param {remoting.SessionConnector} sessionConnector | 18 * @param {remoting.SessionConnector} sessionConnector |
| 19 * @constructor | 19 * @constructor |
| 20 * @implements {remoting.ConnectFlow} |
| 20 */ | 21 */ |
| 21 remoting.It2MeConnectFlow = function(sessionConnector) { | 22 remoting.It2MeConnectFlow = function(sessionConnector) { |
| 22 /** @private */ | 23 /** @private */ |
| 23 this.sessionConnector_ = sessionConnector; | 24 this.sessionConnector_ = sessionConnector; |
| 24 /** @private */ | 25 /** @private */ |
| 25 this.hostId_ = ''; | 26 this.hostId_ = ''; |
| 26 /** @private */ | 27 /** @private */ |
| 27 this.passCode_ = ''; | 28 this.passCode_ = ''; |
| 28 | 29 |
| 29 var form = document.getElementById('access-code-form'); | 30 var form = document.getElementById('access-code-form'); |
| 30 /** @private */ | 31 /** @private */ |
| 31 this.accessCodeDialog_ = new remoting.InputDialog( | 32 this.accessCodeDialog_ = new remoting.InputDialog( |
| 32 remoting.AppMode.CLIENT_UNCONNECTED, | 33 remoting.AppMode.CLIENT_UNCONNECTED, |
| 33 form, | 34 form, |
| 34 form.querySelector('#access-code-entry'), | 35 form.querySelector('#access-code-entry'), |
| 35 form.querySelector('#cancel-access-code-button')); | 36 form.querySelector('#cancel-access-code-button')); |
| 36 }; | 37 }; |
| 37 | 38 |
| 39 remoting.It2MeConnectFlow.prototype.dispose = function() {}; |
| 38 | 40 |
| 39 remoting.It2MeConnectFlow.prototype.start = function() { | 41 remoting.It2MeConnectFlow.prototype.start = function() { |
| 40 var that = this; | 42 var that = this; |
| 41 | 43 |
| 42 this.accessCodeDialog_.show().then(function(/** string */ accessCode) { | 44 this.accessCodeDialog_.show().then(function(/** string */ accessCode) { |
| 43 remoting.setMode(remoting.AppMode.CLIENT_CONNECTING); | 45 remoting.setMode(remoting.AppMode.CLIENT_CONNECTING); |
| 44 return that.verifyAccessCode_(accessCode); | 46 return that.verifyAccessCode_(accessCode); |
| 45 }).then(function() { | 47 }).then(function() { |
| 46 return remoting.identity.getToken(); | 48 return remoting.identity.getToken(); |
| 47 }).then(function(/** string */ token) { | 49 }).then(function(/** string */ token) { |
| (...skipping 10 matching lines...) Expand all Loading... |
| 58 remoting.setMode(remoting.AppMode.HOME); | 60 remoting.setMode(remoting.AppMode.HOME); |
| 59 } else { | 61 } else { |
| 60 var errorDiv = document.getElementById('connect-error-message'); | 62 var errorDiv = document.getElementById('connect-error-message'); |
| 61 l10n.localizeElementFromTag(errorDiv, error.getTag()); | 63 l10n.localizeElementFromTag(errorDiv, error.getTag()); |
| 62 remoting.setMode(remoting.AppMode.CLIENT_CONNECT_FAILED_IT2ME); | 64 remoting.setMode(remoting.AppMode.CLIENT_CONNECT_FAILED_IT2ME); |
| 63 } | 65 } |
| 64 }); | 66 }); |
| 65 }; | 67 }; |
| 66 | 68 |
| 67 /** | 69 /** |
| 70 * @param {!remoting.Error} error |
| 71 */ |
| 72 remoting.It2MeConnectFlow.prototype.onConnectionFailed = function(error) { |
| 73 this.onError(error); |
| 74 }; |
| 75 |
| 76 /** |
| 77 * @param {!remoting.ConnectionInfo} connectionInfo |
| 78 */ |
| 79 remoting.It2MeConnectFlow.prototype.onConnected = function(connectionInfo) { |
| 80 this.accessCodeDialog_.inputField().value = ''; |
| 81 }; |
| 82 |
| 83 remoting.It2MeConnectFlow.prototype.onDisconnected = function() { |
| 84 remoting.setMode(remoting.AppMode.CLIENT_SESSION_FINISHED_IT2ME); |
| 85 }; |
| 86 |
| 87 /** |
| 88 * @param {!remoting.Error} error |
| 89 */ |
| 90 remoting.It2MeConnectFlow.prototype.onError = function(error) { |
| 91 var errorDiv = document.getElementById('connect-error-message'); |
| 92 l10n.localizeElementFromTag(errorDiv, error.getTag()); |
| 93 remoting.setMode(remoting.AppMode.CLIENT_CONNECT_FAILED_IT2ME); |
| 94 }; |
| 95 |
| 96 |
| 97 /** |
| 68 * @param {string} accessCode | 98 * @param {string} accessCode |
| 69 * @return {Promise} Promise that resolves if the access code is valid. | 99 * @return {Promise} Promise that resolves if the access code is valid. |
| 70 * @private | 100 * @private |
| 71 */ | 101 */ |
| 72 remoting.It2MeConnectFlow.prototype.verifyAccessCode_ = function(accessCode) { | 102 remoting.It2MeConnectFlow.prototype.verifyAccessCode_ = function(accessCode) { |
| 73 var normalizedAccessCode = accessCode.replace(/\s/g, ''); | 103 var normalizedAccessCode = accessCode.replace(/\s/g, ''); |
| 74 if (normalizedAccessCode.length !== ACCESS_CODE_LENGTH) { | 104 if (normalizedAccessCode.length !== ACCESS_CODE_LENGTH) { |
| 75 return Promise.reject(new remoting.Error( | 105 return Promise.reject(new remoting.Error( |
| 76 remoting.Error.Tag.INVALID_ACCESS_CODE)); | 106 remoting.Error.Tag.INVALID_ACCESS_CODE)); |
| 77 } | 107 } |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 138 switch (error) { | 168 switch (error) { |
| 139 case 0: return new remoting.Error(remoting.Error.Tag.NETWORK_FAILURE); | 169 case 0: return new remoting.Error(remoting.Error.Tag.NETWORK_FAILURE); |
| 140 case 404: return new remoting.Error(remoting.Error.Tag.INVALID_ACCESS_CODE); | 170 case 404: return new remoting.Error(remoting.Error.Tag.INVALID_ACCESS_CODE); |
| 141 case 502: // No break | 171 case 502: // No break |
| 142 case 503: return new remoting.Error(remoting.Error.Tag.SERVICE_UNAVAILABLE); | 172 case 503: return new remoting.Error(remoting.Error.Tag.SERVICE_UNAVAILABLE); |
| 143 default: return remoting.Error.unexpected(); | 173 default: return remoting.Error.unexpected(); |
| 144 } | 174 } |
| 145 } | 175 } |
| 146 | 176 |
| 147 })(); | 177 })(); |
| OLD | NEW |