| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| /** |
| * @fileoverview |
| * This class provides an interface between the HostSession and either the |
| * NativeMessaging Host |
| * |
| * TODO(sergeyu): Remove this class. |
| */ |
| |
| 'use strict'; |
| |
| /** @suppress {duplicate} */ |
| var remoting = remoting || {}; |
| |
| /** |
| * @constructor |
| */ |
| remoting.HostIt2MeDispatcher = function() { |
| /** |
| * @type {remoting.HostIt2MeNativeMessaging} |
| * @private */ |
| this.nativeMessagingHost_ = null; |
| |
| /** |
| * @param {remoting.Error} error |
| * @private */ |
| this.onErrorHandler_ = function(error) {} |
| }; |
| |
| /** |
| * @param {function():void} onDispatcherInitialized Callback to be called after |
| * initialization has finished successfully. |
| * @param {function(remoting.Error):void} onDispatcherInitializationFailed |
| * Callback to invoke if neither the native messaging host nor the NPAPI |
| * plugin works. |
| */ |
| remoting.HostIt2MeDispatcher.prototype.initialize = |
| function(onDispatcherInitialized, |
| onDispatcherInitializationFailed) { |
| /** @type {remoting.HostIt2MeDispatcher} */ |
| var that = this; |
| |
| function onNativeMessagingStarted() { |
| onDispatcherInitialized(); |
| } |
| |
| function onNativeMessagingInitFailed() { |
| that.nativeMessagingHost_ = null; |
| onDispatcherInitializationFailed(remoting.Error.MISSING_PLUGIN); |
| } |
| |
| this.nativeMessagingHost_ = new remoting.HostIt2MeNativeMessaging(); |
| this.nativeMessagingHost_.initialize(onNativeMessagingStarted, |
| onNativeMessagingInitFailed, |
| this.onNativeMessagingError_.bind(this)); |
| } |
| |
| /** |
| * @param {remoting.Error} error |
| */ |
| remoting.HostIt2MeDispatcher.prototype.onNativeMessagingError_ = |
| function(error) { |
| this.nativeMessagingHost_ = null; |
| this.onErrorHandler_(error); |
| } |
| |
| /** |
| * @param {string} email The user's email address. |
| * @param {string} authServiceWithToken Concatenation of the auth service |
| * (e.g. oauth2) and the access token. |
| * @param {function(remoting.HostSession.State):void} onStateChanged Callback to |
| * invoke when the host state changes. |
| * @param {function(boolean):void} onNatPolicyChanged Callback to invoke when |
| * the nat traversal policy changes. |
| * @param {function(string):void} logDebugInfo Callback allowing the plugin |
| * to log messages to the debug log. |
| * @param {string} xmppServerAddress XMPP server host name (or IP address) and |
| * port. |
| * @param {boolean} xmppServerUseTls Whether to use TLS on connections to the |
| * XMPP server |
| * @param {string} directoryBotJid XMPP JID for the remoting directory server |
| * bot. |
| * @param {function(remoting.Error):void} onError Callback to invoke in case of |
| * an error. |
| */ |
| remoting.HostIt2MeDispatcher.prototype.connect = |
| function(email, authServiceWithToken, onStateChanged, |
| onNatPolicyChanged, logDebugInfo, xmppServerAddress, |
| xmppServerUseTls, directoryBotJid, onError) { |
| this.onErrorHandler_ = onError; |
| if (this.nativeMessagingHost_) { |
| this.nativeMessagingHost_.connect( |
| email, authServiceWithToken, onStateChanged, onNatPolicyChanged, |
| xmppServerAddress, xmppServerUseTls, directoryBotJid); |
| } else { |
| console.error( |
| 'remoting.HostIt2MeDispatcher.connect() without initialization.'); |
| onError(remoting.Error.UNEXPECTED); |
| } |
| }; |
| |
| /** |
| * @return {void} |
| */ |
| remoting.HostIt2MeDispatcher.prototype.disconnect = function() { |
| this.nativeMessagingHost_.disconnect(); |
| }; |
| |
| /** |
| * @return {string} The access code generated by the it2me host. |
| */ |
| remoting.HostIt2MeDispatcher.prototype.getAccessCode = function() { |
| return this.nativeMessagingHost_.getAccessCode(); |
| }; |
| |
| /** |
| * @return {number} The access code lifetime, in seconds. |
| */ |
| remoting.HostIt2MeDispatcher.prototype.getAccessCodeLifetime = function() { |
| return this.nativeMessagingHost_.getAccessCodeLifetime(); |
| }; |
| |
| /** |
| * @return {string} The client's email address. |
| */ |
| remoting.HostIt2MeDispatcher.prototype.getClient = function() { |
| return this.nativeMessagingHost_.getClient(); |
| }; |