| 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 /** | 8 /** |
| 9 * Type definition for the RunApplicationResponse returned by the API. | 9 * Type definition for the RunApplicationResponse returned by the API. |
| 10 * @typedef {{ | 10 * @typedef {{ |
| (...skipping 17 matching lines...) Expand all Loading... |
| 28 * @param {Array<string>} appCapabilities Array of application capabilities. | 28 * @param {Array<string>} appCapabilities Array of application capabilities. |
| 29 * | 29 * |
| 30 * @constructor | 30 * @constructor |
| 31 * @implements {remoting.Activity} | 31 * @implements {remoting.Activity} |
| 32 */ | 32 */ |
| 33 remoting.AppRemotingActivity = function(appCapabilities) { | 33 remoting.AppRemotingActivity = function(appCapabilities) { |
| 34 /** @private {remoting.AppConnectedView} */ | 34 /** @private {remoting.AppConnectedView} */ |
| 35 this.connectedView_ = null; | 35 this.connectedView_ = null; |
| 36 | 36 |
| 37 /** @private */ | 37 /** @private */ |
| 38 this.connector_ = remoting.SessionConnector.factory.createConnector( | 38 this.sessionFactory_ = new remoting.ClientSessionFactory( |
| 39 document.getElementById('client-container'), appCapabilities, | 39 document.querySelector('#client-container .client-plugin-container'), |
| 40 this); | 40 appCapabilities); |
| 41 | 41 |
| 42 /** @private {remoting.ClientSession} */ | 42 /** @private {remoting.ClientSession} */ |
| 43 this.session_ = null; | 43 this.session_ = null; |
| 44 }; | 44 }; |
| 45 | 45 |
| 46 remoting.AppRemotingActivity.prototype.dispose = function() { | 46 remoting.AppRemotingActivity.prototype.dispose = function() { |
| 47 base.dispose(this.connectedView_); | 47 base.dispose(this.connectedView_); |
| 48 this.connectedView_ = null; | 48 this.connectedView_ = null; |
| 49 remoting.LoadingWindow.close(); | 49 remoting.LoadingWindow.close(); |
| 50 }; | 50 }; |
| (...skipping 11 matching lines...) Expand all Loading... |
| 62 remoting.AppRemotingActivity.prototype.stop = function() { | 62 remoting.AppRemotingActivity.prototype.stop = function() { |
| 63 if (this.session_) { | 63 if (this.session_) { |
| 64 this.session_.disconnect(remoting.Error.none()); | 64 this.session_.disconnect(remoting.Error.none()); |
| 65 } | 65 } |
| 66 }; | 66 }; |
| 67 | 67 |
| 68 /** @private */ | 68 /** @private */ |
| 69 remoting.AppRemotingActivity.prototype.cleanup_ = function() { | 69 remoting.AppRemotingActivity.prototype.cleanup_ = function() { |
| 70 base.dispose(this.connectedView_); | 70 base.dispose(this.connectedView_); |
| 71 this.connectedView_ = null; | 71 this.connectedView_ = null; |
| 72 base.dispose(this.session_); |
| 72 this.session_ = null; | 73 this.session_ = null; |
| 73 }; | 74 }; |
| 74 | 75 |
| 75 /** | 76 /** |
| 76 * @param {string} token | 77 * @param {string} token |
| 77 * @return {Promise<!remoting.Xhr.Response>} | 78 * @return {Promise<!remoting.Xhr.Response>} |
| 78 * @private | 79 * @private |
| 79 */ | 80 */ |
| 80 remoting.AppRemotingActivity.prototype.getAppHostInfo_ = function(token) { | 81 remoting.AppRemotingActivity.prototype.getAppHostInfo_ = function(token) { |
| 81 var url = remoting.settings.APP_REMOTING_API_BASE_URL + '/applications/' + | 82 var url = remoting.settings.APP_REMOTING_API_BASE_URL + '/applications/' + |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 120 * @param {function(string, string):void} onThirdPartyTokenFetched | 121 * @param {function(string, string):void} onThirdPartyTokenFetched |
| 121 * Callback. | 122 * Callback. |
| 122 */ | 123 */ |
| 123 var fetchThirdPartyToken = function( | 124 var fetchThirdPartyToken = function( |
| 124 tokenUrl, hostPublicKey, scope, onThirdPartyTokenFetched) { | 125 tokenUrl, hostPublicKey, scope, onThirdPartyTokenFetched) { |
| 125 // Use the authentication tokens returned by the app-remoting server. | 126 // Use the authentication tokens returned by the app-remoting server. |
| 126 onThirdPartyTokenFetched(host['authorizationCode'], | 127 onThirdPartyTokenFetched(host['authorizationCode'], |
| 127 host['sharedSecret']); | 128 host['sharedSecret']); |
| 128 }; | 129 }; |
| 129 | 130 |
| 130 this.connector_.connect( | 131 remoting.app.setConnectionMode(remoting.Application.Mode.APP_REMOTING); |
| 131 remoting.Application.Mode.APP_REMOTING, host, | 132 var credentialsProvider = new remoting.CredentialsProvider( |
| 132 new remoting.CredentialsProvider( | 133 {fetchThirdPartyToken: fetchThirdPartyToken}); |
| 133 {fetchThirdPartyToken: fetchThirdPartyToken})); | 134 var that = this; |
| 134 | 135 |
| 136 this.sessionFactory_.createSession(this).then( |
| 137 function(/** remoting.ClientSession */ session) { |
| 138 that.session_ = session; |
| 139 session.logHostOfflineErrors(true); |
| 140 session.connect(host, credentialsProvider); |
| 141 }); |
| 135 } else if (response && response.status == 'pending') { | 142 } else if (response && response.status == 'pending') { |
| 136 this.onError(new remoting.Error( | 143 this.onError(new remoting.Error( |
| 137 remoting.Error.Tag.SERVICE_UNAVAILABLE)); | 144 remoting.Error.Tag.SERVICE_UNAVAILABLE)); |
| 138 } | 145 } |
| 139 } else { | 146 } else { |
| 140 console.error('Invalid "runApplication" response from server.'); | 147 console.error('Invalid "runApplication" response from server.'); |
| 141 this.onError(remoting.Error.fromHttpStatus(xhrResponse.status)); | 148 this.onError(remoting.Error.fromHttpStatus(xhrResponse.status)); |
| 142 } | 149 } |
| 143 }; | 150 }; |
| 144 | 151 |
| 145 /** | 152 /** |
| 146 * @param {remoting.ConnectionInfo} connectionInfo | 153 * @param {remoting.ConnectionInfo} connectionInfo |
| 147 */ | 154 */ |
| 148 remoting.AppRemotingActivity.prototype.onConnected = function(connectionInfo) { | 155 remoting.AppRemotingActivity.prototype.onConnected = function(connectionInfo) { |
| 149 this.connectedView_ = new remoting.AppConnectedView( | 156 this.connectedView_ = new remoting.AppConnectedView( |
| 150 document.getElementById('client-container'), connectionInfo); | 157 document.getElementById('client-container'), connectionInfo); |
| 151 | 158 |
| 152 this.session_ = connectionInfo.session(); | |
| 153 var idleDetector = new remoting.IdleDetector( | 159 var idleDetector = new remoting.IdleDetector( |
| 154 document.getElementById('idle-dialog'), this.stop.bind(this)); | 160 document.getElementById('idle-dialog'), this.stop.bind(this)); |
| 155 | 161 |
| 156 // Map Cmd to Ctrl on Mac since hosts typically use Ctrl for keyboard | 162 // Map Cmd to Ctrl on Mac since hosts typically use Ctrl for keyboard |
| 157 // shortcuts, but we want them to act as natively as possible. | 163 // shortcuts, but we want them to act as natively as possible. |
| 158 if (remoting.platformIsMac()) { | 164 if (remoting.platformIsMac()) { |
| 159 connectionInfo.plugin().setRemapKeys('0x0700e3>0x0700e0,0x0700e7>0x0700e4'); | 165 connectionInfo.plugin().setRemapKeys('0x0700e3>0x0700e0,0x0700e7>0x0700e4'); |
| 160 } | 166 } |
| 161 }; | 167 }; |
| 162 | 168 |
| (...skipping 15 matching lines...) Expand all Loading... |
| 178 remoting.AppRemotingActivity.prototype.onError = function(error) { | 184 remoting.AppRemotingActivity.prototype.onError = function(error) { |
| 179 console.error('Connection failed: ' + error.toString()); | 185 console.error('Connection failed: ' + error.toString()); |
| 180 remoting.LoadingWindow.close(); | 186 remoting.LoadingWindow.close(); |
| 181 remoting.MessageWindow.showErrorMessage( | 187 remoting.MessageWindow.showErrorMessage( |
| 182 chrome.i18n.getMessage(/*i18n-content*/'CONNECTION_FAILED'), | 188 chrome.i18n.getMessage(/*i18n-content*/'CONNECTION_FAILED'), |
| 183 chrome.i18n.getMessage(error.getTag())); | 189 chrome.i18n.getMessage(error.getTag())); |
| 184 this.cleanup_(); | 190 this.cleanup_(); |
| 185 }; | 191 }; |
| 186 | 192 |
| 187 })(); | 193 })(); |
| OLD | NEW |