OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 /** @constructor */ | 10 /** @constructor */ |
11 remoting.HostController = function() { | 11 remoting.HostController = function() { |
12 /** @return {remoting.HostPlugin} */ | 12 this.hostDispatcher_ = this.createDispatcher_(); |
13 var createPluginForMe2Me = function() { | |
14 /** @type {HTMLElement} @private */ | |
15 var container = document.getElementById('daemon-plugin-container'); | |
16 return remoting.createNpapiPlugin(container); | |
17 }; | |
18 | |
19 /** @type {remoting.HostDispatcher} @private */ | |
20 this.hostDispatcher_ = new remoting.HostDispatcher(createPluginForMe2Me); | |
21 | |
22 /** @param {string} version */ | |
23 var printVersion = function(version) { | |
24 if (version == '') { | |
25 console.log('Host not installed.'); | |
26 } else { | |
27 console.log('Host version: ' + version); | |
28 } | |
29 }; | |
30 | |
31 this.hostDispatcher_.getDaemonVersion(printVersion, function() { | |
32 console.log('Host version not available.'); | |
33 }); | |
34 }; | 13 }; |
35 | 14 |
36 // Note that the values in the enums below are copied from | 15 // Note that the values in the enums below are copied from |
37 // daemon_controller.h and must be kept in sync. | 16 // daemon_controller.h and must be kept in sync. |
38 /** @enum {number} */ | 17 /** @enum {number} */ |
39 remoting.HostController.State = { | 18 remoting.HostController.State = { |
40 NOT_IMPLEMENTED: -1, | 19 NOT_IMPLEMENTED: -1, |
41 NOT_INSTALLED: 0, | 20 NOT_INSTALLED: 0, |
42 INSTALLING: 1, | 21 INSTALLING: 1, |
43 STOPPED: 2, | 22 STOPPED: 2, |
(...skipping 27 matching lines...) Expand all Loading... |
71 * @return {remoting.HostController.AsyncResult} The result enum value. | 50 * @return {remoting.HostController.AsyncResult} The result enum value. |
72 */ | 51 */ |
73 remoting.HostController.AsyncResult.fromString = function(result) { | 52 remoting.HostController.AsyncResult.fromString = function(result) { |
74 if (!remoting.HostController.AsyncResult.hasOwnProperty(result)) { | 53 if (!remoting.HostController.AsyncResult.hasOwnProperty(result)) { |
75 throw "Invalid HostController.AsyncResult: " + result; | 54 throw "Invalid HostController.AsyncResult: " + result; |
76 } | 55 } |
77 return remoting.HostController.AsyncResult[result]; | 56 return remoting.HostController.AsyncResult[result]; |
78 } | 57 } |
79 | 58 |
80 /** | 59 /** |
| 60 * @return {remoting.HostDispatcher} |
| 61 * @private |
| 62 */ |
| 63 remoting.HostController.prototype.createDispatcher_ = function() { |
| 64 /** @return {remoting.HostPlugin} */ |
| 65 var createPluginForMe2Me = function() { |
| 66 /** @type {HTMLElement} @private */ |
| 67 var container = document.getElementById('daemon-plugin-container'); |
| 68 return remoting.createNpapiPlugin(container); |
| 69 }; |
| 70 |
| 71 /** @type {remoting.HostDispatcher} @private */ |
| 72 var hostDispatcher = new remoting.HostDispatcher(createPluginForMe2Me); |
| 73 |
| 74 /** @param {string} version */ |
| 75 var printVersion = function(version) { |
| 76 if (version == '') { |
| 77 console.log('Host not installed.'); |
| 78 } else { |
| 79 console.log('Host version: ' + version); |
| 80 } |
| 81 }; |
| 82 |
| 83 hostDispatcher.getDaemonVersion(printVersion, function() { |
| 84 console.log('Host version not available.'); |
| 85 }); |
| 86 |
| 87 return hostDispatcher; |
| 88 }; |
| 89 |
| 90 /** |
81 * Set of features for which hasFeature() can be used to test. | 91 * Set of features for which hasFeature() can be used to test. |
82 * | 92 * |
83 * @enum {string} | 93 * @enum {string} |
84 */ | 94 */ |
85 remoting.HostController.Feature = { | 95 remoting.HostController.Feature = { |
86 PAIRING_REGISTRY: 'pairingRegistry', | 96 PAIRING_REGISTRY: 'pairingRegistry', |
87 OAUTH_CLIENT: 'oauthClient' | 97 OAUTH_CLIENT: 'oauthClient' |
88 }; | 98 }; |
89 | 99 |
90 /** | 100 /** |
(...skipping 11 matching lines...) Expand all Loading... |
102 * @param {function(boolean, boolean, boolean):void} onDone Callback to be | 112 * @param {function(boolean, boolean, boolean):void} onDone Callback to be |
103 * called when done. | 113 * called when done. |
104 * @param {function(remoting.Error):void} onError Callback to be called on | 114 * @param {function(remoting.Error):void} onError Callback to be called on |
105 * error. | 115 * error. |
106 */ | 116 */ |
107 remoting.HostController.prototype.getConsent = function(onDone, onError) { | 117 remoting.HostController.prototype.getConsent = function(onDone, onError) { |
108 this.hostDispatcher_.getUsageStatsConsent(onDone, onError); | 118 this.hostDispatcher_.getUsageStatsConsent(onDone, onError); |
109 }; | 119 }; |
110 | 120 |
111 /** | 121 /** |
| 122 * @param {function(remoting.HostController.AsyncResult):void} onDone |
| 123 * @param {function(remoting.Error):void} onError |
| 124 * @return {void} |
| 125 */ |
| 126 remoting.HostController.prototype.installHost = function(onDone, onError) { |
| 127 this.hostDispatcher_.installHost(onDone, onError); |
| 128 }; |
| 129 |
| 130 /** |
112 * Registers and starts the host. | 131 * Registers and starts the host. |
113 * | 132 * |
114 * @param {string} hostPin Host PIN. | 133 * @param {string} hostPin Host PIN. |
115 * @param {boolean} consent The user's consent to crash dump reporting. | 134 * @param {boolean} consent The user's consent to crash dump reporting. |
116 * @param {function():void} onDone Callback to be called when done. | 135 * @param {function():void} onDone Callback to be called when done. |
117 * @param {function(remoting.Error):void} onError Callback to be called on | 136 * @param {function(remoting.Error):void} onError Callback to be called on |
118 * error. | 137 * error. |
119 * @return {void} Nothing. | 138 * @return {void} Nothing. |
120 */ | 139 */ |
121 remoting.HostController.prototype.start = function(hostPin, consent, onDone, | 140 remoting.HostController.prototype.start = function(hostPin, consent, onDone, |
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
318 | 337 |
319 /** | 338 /** |
320 * @param {string} hostName | 339 * @param {string} hostName |
321 * @return {void} Nothing. | 340 * @return {void} Nothing. |
322 */ | 341 */ |
323 function startWithHostname(hostName) { | 342 function startWithHostname(hostName) { |
324 that.hostDispatcher_.generateKeyPair(onKeyGenerated.bind(null, hostName), | 343 that.hostDispatcher_.generateKeyPair(onKeyGenerated.bind(null, hostName), |
325 onError); | 344 onError); |
326 } | 345 } |
327 | 346 |
328 this.hostDispatcher_.getHostName(startWithHostname, onError); | 347 /** @param {remoting.HostController.AsyncResult} asyncResult */ |
| 348 var onHostInstalled = function(asyncResult) { |
| 349 if (asyncResult == remoting.HostController.AsyncResult.OK) { |
| 350 // Now that the host is installed, we need to get a new dispatcher that |
| 351 // dispatches to the NM host instead of the NPAPI plugin. |
| 352 console.log('Recreating the host dispatcher.'); |
| 353 that.hostDispatcher_ = that.createDispatcher_(); |
| 354 that.hostDispatcher_.getHostName(startWithHostname, onError); |
| 355 } else if (asyncResult == remoting.HostController.AsyncResult.CANCELLED) { |
| 356 onError(remoting.Error.CANCELLED); |
| 357 } else { |
| 358 onError(remoting.Error.UNEXPECTED); |
| 359 } |
| 360 } |
| 361 |
| 362 // Perform the installation step here on Windows. |
| 363 if (navigator.platform == 'Win32') { |
| 364 this.installHost(onHostInstalled, onError); |
| 365 } else { |
| 366 this.hostDispatcher_.getHostName(startWithHostname, onError); |
| 367 } |
329 }; | 368 }; |
330 | 369 |
331 /** | 370 /** |
332 * Stop the daemon process. | 371 * Stop the daemon process. |
333 * @param {function():void} onDone Callback to be called when done. | 372 * @param {function():void} onDone Callback to be called when done. |
334 * @param {function(remoting.Error):void} onError Callback to be called on | 373 * @param {function(remoting.Error):void} onError Callback to be called on |
335 * error. | 374 * error. |
336 * @return {void} Nothing. | 375 * @return {void} Nothing. |
337 */ | 376 */ |
338 remoting.HostController.prototype.stop = function(onDone, onError) { | 377 remoting.HostController.prototype.stop = function(onDone, onError) { |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
495 /** | 534 /** |
496 * Returns true if the NPAPI plugin is being used. | 535 * Returns true if the NPAPI plugin is being used. |
497 * @return {boolean} | 536 * @return {boolean} |
498 */ | 537 */ |
499 remoting.HostController.prototype.usingNpapiPlugin = function() { | 538 remoting.HostController.prototype.usingNpapiPlugin = function() { |
500 return this.hostDispatcher_.usingNpapiPlugin(); | 539 return this.hostDispatcher_.usingNpapiPlugin(); |
501 } | 540 } |
502 | 541 |
503 /** @type {remoting.HostController} */ | 542 /** @type {remoting.HostController} */ |
504 remoting.hostController = null; | 543 remoting.hostController = null; |
OLD | NEW |