| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 to communicate with the host daemon via Native Messaging. | 7 * Class to communicate with the host daemon via Native Messaging. |
| 8 */ | 8 */ |
| 9 | 9 |
| 10 'use strict'; | 10 'use strict'; |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 84 }; | 84 }; |
| 85 | 85 |
| 86 /** | 86 /** |
| 87 * Connects to the native messaging host and sends a hello message. | 87 * Connects to the native messaging host and sends a hello message. |
| 88 * | 88 * |
| 89 * @return {Promise} A promise that fulfills when the connection attempt | 89 * @return {Promise} A promise that fulfills when the connection attempt |
| 90 * succeeds or fails. | 90 * succeeds or fails. |
| 91 * @private | 91 * @private |
| 92 */ | 92 */ |
| 93 remoting.HostDaemonFacade.prototype.connectNative_ = function() { | 93 remoting.HostDaemonFacade.prototype.connectNative_ = function() { |
| 94 return new Promise( | 94 /** |
| 95 /** | 95 * @this {remoting.HostDaemonFacade} |
| 96 * @param {function(*=):void} resolve | 96 * @param {function(?):void} resolve |
| 97 * @param {function(*=):void} reject | 97 * @param {function(*):void} reject |
| 98 * @this {remoting.HostDaemonFacade} | 98 */ |
| 99 */ | 99 var connect = function(resolve, reject) { |
| 100 function(resolve, reject) { | 100 try { |
| 101 try { | 101 this.port_ = chrome.runtime.connectNative( |
| 102 this.port_ = chrome.runtime.connectNative( | 102 'com.google.chrome.remote_desktop'); |
| 103 'com.google.chrome.remote_desktop'); | 103 this.port_.onMessage.addListener(this.onIncomingMessageCallback_); |
| 104 this.port_.onMessage.addListener(this.onIncomingMessageCallback_); | 104 this.port_.onDisconnect.addListener(this.onDisconnectCallback_); |
| 105 this.port_.onDisconnect.addListener(this.onDisconnectCallback_); | 105 this.postMessageInternal_({type: 'hello'}, resolve, reject); |
| 106 this.postMessageInternal_({type: 'hello'}, resolve, reject); | 106 } catch (/** @type {*} */ err) { |
| 107 } catch (err) { | 107 console.log('Native Messaging initialization failed: ', err); |
| 108 console.log('Native Messaging initialization failed: ', | 108 reject(false); |
| 109 /** @type {*} */ (err)); | 109 } |
| 110 reject(); | 110 }; |
| 111 } | 111 |
| 112 }.bind(this) | 112 return new Promise(connect.bind(this)); |
| 113 ); | |
| 114 }; | 113 }; |
| 115 | 114 |
| 116 /** | 115 /** |
| 117 * Type used for entries of |pendingReplies_| list. | 116 * Type used for entries of |pendingReplies_| list. |
| 118 * | 117 * |
| 119 * @param {string} type Type of the originating request. | 118 * @param {string} type Type of the originating request. |
| 120 * @param {function(...):void} onDone Response callback. Parameters depend on | 119 * @param {function(...):void} onDone Response callback. Parameters depend on |
| 121 * the request type. | 120 * the request type. |
| 122 * @param {function(remoting.Error):void} onError Callback to call on error. | 121 * @param {function(remoting.Error):void} onError Callback to call on error. |
| 123 * @constructor | 122 * @constructor |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 206 } | 205 } |
| 207 delete this.pendingReplies_[id]; | 206 delete this.pendingReplies_[id]; |
| 208 | 207 |
| 209 try { | 208 try { |
| 210 var type = getStringAttr(message, 'type'); | 209 var type = getStringAttr(message, 'type'); |
| 211 if (type != reply.type) { | 210 if (type != reply.type) { |
| 212 throw 'Expected reply type: ' + reply.type + ', got: ' + type; | 211 throw 'Expected reply type: ' + reply.type + ', got: ' + type; |
| 213 } | 212 } |
| 214 | 213 |
| 215 this.handleIncomingMessage_(message, reply.onDone); | 214 this.handleIncomingMessage_(message, reply.onDone); |
| 216 } catch (e) { | 215 } catch (/** @type {*} */ e) { |
| 217 console.error('Error while processing native message' + | 216 console.error('Error while processing native message' + e); |
| 218 /** @type {*} */ (e)); | |
| 219 reply.onError(remoting.Error.UNEXPECTED); | 217 reply.onError(remoting.Error.UNEXPECTED); |
| 220 } | 218 } |
| 221 } | 219 } |
| 222 | 220 |
| 223 /** | 221 /** |
| 224 * Handler for incoming Native Messages. | 222 * Handler for incoming Native Messages. |
| 225 * | 223 * |
| 226 * @param {Object} message The received message. | 224 * @param {Object} message The received message. |
| 227 * @param {function(...):void} onDone Function to call when we're done | 225 * @param {function(...):void} onDone Function to call when we're done |
| 228 * processing the message. | 226 * processing the message. |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 333 | 331 |
| 334 // If initialization hasn't finished then assume that the port was | 332 // If initialization hasn't finished then assume that the port was |
| 335 // disconnected because Native Messaging host is not installed. | 333 // disconnected because Native Messaging host is not installed. |
| 336 this.error_ = this.initializingPromise_ ? remoting.Error.MISSING_PLUGIN : | 334 this.error_ = this.initializingPromise_ ? remoting.Error.MISSING_PLUGIN : |
| 337 remoting.Error.UNEXPECTED; | 335 remoting.Error.UNEXPECTED; |
| 338 | 336 |
| 339 // Notify the error-handlers of any requests that are still outstanding. | 337 // Notify the error-handlers of any requests that are still outstanding. |
| 340 var pendingReplies = this.pendingReplies_; | 338 var pendingReplies = this.pendingReplies_; |
| 341 this.pendingReplies_ = {}; | 339 this.pendingReplies_ = {}; |
| 342 for (var id in pendingReplies) { | 340 for (var id in pendingReplies) { |
| 343 pendingReplies[/** @type {number} */(id)].onError(this.error_); | 341 var num_id = parseInt(id, 10); |
| 342 pendingReplies[num_id].onError(this.error_); |
| 344 } | 343 } |
| 345 } | 344 } |
| 346 | 345 |
| 347 /** | 346 /** |
| 348 * Gets local hostname. | 347 * Gets local hostname. |
| 349 * | 348 * |
| 350 * @param {function(string):void} onDone Callback to return result. | 349 * @param {function(string):void} onDone Callback to return result. |
| 351 * @param {function(remoting.Error):void} onError Callback to call on error. | 350 * @param {function(remoting.Error):void} onError Callback to call on error. |
| 352 * @return {void} Nothing. | 351 * @return {void} Nothing. |
| 353 */ | 352 */ |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 559 * @param {function(remoting.Error):void} onError Callback to call on error. | 558 * @param {function(remoting.Error):void} onError Callback to call on error. |
| 560 * @return {void} Nothing. | 559 * @return {void} Nothing. |
| 561 */ | 560 */ |
| 562 remoting.HostDaemonFacade.prototype.getCredentialsFromAuthCode = | 561 remoting.HostDaemonFacade.prototype.getCredentialsFromAuthCode = |
| 563 function(authorizationCode, onDone, onError) { | 562 function(authorizationCode, onDone, onError) { |
| 564 this.postMessage_({ | 563 this.postMessage_({ |
| 565 type: 'getCredentialsFromAuthCode', | 564 type: 'getCredentialsFromAuthCode', |
| 566 authorizationCode: authorizationCode | 565 authorizationCode: authorizationCode |
| 567 }, onDone, onError); | 566 }, onDone, onError); |
| 568 }; | 567 }; |
| OLD | NEW |