| 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'; |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 function(listener, logger) { | 45 function(listener, logger) { |
| 46 var that = this; | 46 var that = this; |
| 47 /** @type {string} */ | 47 /** @type {string} */ |
| 48 var token; | 48 var token; |
| 49 /** @type {remoting.SignalStrategy} */ | 49 /** @type {remoting.SignalStrategy} */ |
| 50 var signalStrategy; | 50 var signalStrategy; |
| 51 /** @type {remoting.ClientPlugin} */ | 51 /** @type {remoting.ClientPlugin} */ |
| 52 var clientPlugin; | 52 var clientPlugin; |
| 53 | 53 |
| 54 function OnError(/** !remoting.Error */ error) { | 54 function OnError(/** !remoting.Error */ error) { |
| 55 logError(logger, error); | 55 logger.logSessionStateChange( |
| 56 remoting.ChromotingEvent.SessionState.CONNECTION_FAILED, error); |
| 56 base.dispose(signalStrategy); | 57 base.dispose(signalStrategy); |
| 57 base.dispose(clientPlugin); | 58 base.dispose(clientPlugin); |
| 58 throw error; | 59 throw error; |
| 59 } | 60 } |
| 60 | 61 |
| 61 var promise = remoting.identity.getToken().then( | 62 var promise = remoting.identity.getToken().then( |
| 62 function(/** string */ authToken) { | 63 function(/** string */ authToken) { |
| 63 token = authToken; | 64 token = authToken; |
| 64 return remoting.identity.getUserInfo(); | 65 return remoting.identity.getUserInfo(); |
| 65 }).then(function(/** {email: string, name: string} */ userInfo) { | 66 }).then(function(/** {email: string, name: string} */ userInfo) { |
| 66 logger.logSessionStateChange( | 67 logger.logSessionStateChange( |
| 67 remoting.ChromotingEvent.SessionState.SIGNALING, | 68 remoting.ChromotingEvent.SessionState.SIGNALING); |
| 68 remoting.ChromotingEvent.ConnectionError.NONE); | |
| 69 return connectSignaling(userInfo.email, token); | 69 return connectSignaling(userInfo.email, token); |
| 70 }).then(function(/** remoting.SignalStrategy */ strategy) { | 70 }).then(function(/** remoting.SignalStrategy */ strategy) { |
| 71 signalStrategy = strategy; | 71 signalStrategy = strategy; |
| 72 logger.logSessionStateChange( | 72 logger.logSessionStateChange( |
| 73 remoting.ChromotingEvent.SessionState.CREATING_PLUGIN, | 73 remoting.ChromotingEvent.SessionState.CREATING_PLUGIN); |
| 74 remoting.ChromotingEvent.ConnectionError.NONE); | |
| 75 return createPlugin(that.container_, that.requiredCapabilities_); | 74 return createPlugin(that.container_, that.requiredCapabilities_); |
| 76 }).then(function(/** remoting.ClientPlugin */ plugin) { | 75 }).then(function(/** remoting.ClientPlugin */ plugin) { |
| 77 clientPlugin = plugin; | 76 clientPlugin = plugin; |
| 78 return new remoting.ClientSession(plugin, signalStrategy, logger, listener); | 77 return new remoting.ClientSession(plugin, signalStrategy, logger, listener); |
| 79 }).catch( | 78 }).catch( |
| 80 remoting.Error.handler(OnError) | 79 remoting.Error.handler(OnError) |
| 81 ); | 80 ); |
| 82 | 81 |
| 83 return /** @type {Promise<!remoting.ClientSession>} */ (promise); | 82 return /** @type {Promise<!remoting.ClientSession>} */ (promise); |
| 84 }; | 83 }; |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 117 * @return {Promise<!remoting.ClientPlugin>} | 116 * @return {Promise<!remoting.ClientPlugin>} |
| 118 */ | 117 */ |
| 119 function createPlugin(container, capabilities) { | 118 function createPlugin(container, capabilities) { |
| 120 var plugin = remoting.ClientPlugin.factory.createPlugin( | 119 var plugin = remoting.ClientPlugin.factory.createPlugin( |
| 121 container, capabilities); | 120 container, capabilities); |
| 122 return plugin.initialize().then(function() { | 121 return plugin.initialize().then(function() { |
| 123 return plugin; | 122 return plugin; |
| 124 }); | 123 }); |
| 125 } | 124 } |
| 126 | 125 |
| 127 /** | |
| 128 * Converts |e| to remoting.ChromotingEvent.ConnectionError and logs | |
| 129 * it to the telemetry service. | |
| 130 * | |
| 131 * TODO(kelvinp): Move this block to remoting.SessionLogger and consolidate | |
| 132 * the code path with xmpp_error. | |
| 133 * | |
| 134 * @param {remoting.SessionLogger} logger | |
| 135 * @param {remoting.Error} e | |
| 136 */ | |
| 137 function logError(logger, e) { | |
| 138 var error = remoting.ChromotingEvent.ConnectionError.UNEXPECTED; | |
| 139 | |
| 140 if (e instanceof remoting.Error) { | |
| 141 error = e.toConnectionError(); | |
| 142 | |
| 143 if (e.hasTag(remoting.Error.Tag.MISSING_PLUGIN)) { | |
| 144 var pluginError = /** @type {string} */ (e.getDetail()); | |
| 145 console.assert(Boolean(pluginError), 'Missing plugin error string.'); | |
| 146 logger.setPluginError(pluginError); | |
| 147 } | |
| 148 } | |
| 149 | |
| 150 logger.logSessionStateChange( | |
| 151 remoting.ChromotingEvent.SessionState.CONNECTION_FAILED, error); | |
| 152 } | |
| 153 | |
| 154 })(); | 126 })(); |
| OLD | NEW |