diff options
-rw-r--r-- | remoting/webapp/error.js | 8 | ||||
-rw-r--r-- | remoting/webapp/host_it2me_dispatcher.js | 25 | ||||
-rw-r--r-- | remoting/webapp/host_it2me_native_messaging.js | 23 | ||||
-rw-r--r-- | remoting/webapp/remoting.js | 2 |
4 files changed, 26 insertions, 32 deletions
diff --git a/remoting/webapp/error.js b/remoting/webapp/error.js index 04abb60..1b81a33 100644 --- a/remoting/webapp/error.js +++ b/remoting/webapp/error.js @@ -33,11 +33,3 @@ remoting.Error = { P2P_FAILURE: /*i18n-content*/'ERROR_P2P_FAILURE', REGISTRATION_FAILED: /*i18n-content*/'ERROR_HOST_REGISTRATION_FAILED' }; - -/** - * Message returned by chrome.runtime.lastError.message when chrome fails - * to find a native messaging host. - * @type {string} - */ -remoting.NATIVE_MESSAGING_HOST_NOT_FOUND_ERROR = - 'Specified native messaging host not found.'; diff --git a/remoting/webapp/host_it2me_dispatcher.js b/remoting/webapp/host_it2me_dispatcher.js index 1098e4b..f2a7e90 100644 --- a/remoting/webapp/host_it2me_dispatcher.js +++ b/remoting/webapp/host_it2me_dispatcher.js @@ -42,25 +42,24 @@ remoting.HostIt2MeDispatcher = function() { * @param {function():remoting.HostPlugin} createPluginCallback Callback to * instantiate the NPAPI plugin when NativeMessaging is determined to be * unsupported. - * @param {function():void} onDone Callback to be called after initialization - * has finished successfully. - * @param {function(remoting.Error):void} onError Callback to invoke if neither - * the native messaging host nor the NPAPI plugin works. + * @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(createPluginCallback, onDone, onError) { + function(createPluginCallback, onDispatcherInitialized, + onDispatcherInitializationFailed) { /** @type {remoting.HostIt2MeDispatcher} */ var that = this; function onNativeMessagingStarted() { console.log('Native Messaging supported.'); - onDone(); + onDispatcherInitialized(); } - /** - * @param {remoting.Error} error - */ - function onNativeMessagingFailed(error) { + function onNativeMessagingInitFailed() { console.log('Native Messaging unsupported, falling back to NPAPI.'); that.nativeMessagingHost_ = null; @@ -69,15 +68,15 @@ remoting.HostIt2MeDispatcher.prototype.initialize = // TODO(weitaosu): is there a better way to check whether NPAPI plugin is // supported? if (that.npapiHost_) { - onDone(); + onDispatcherInitialized(); } else { - onError(error); + onDispatcherInitializationFailed(remoting.Error.MISSING_PLUGIN); } } this.nativeMessagingHost_ = new remoting.HostIt2MeNativeMessaging(); this.nativeMessagingHost_.initialize(onNativeMessagingStarted, - onNativeMessagingFailed, + onNativeMessagingInitFailed, this.onNativeMessagingError_.bind(this)); } diff --git a/remoting/webapp/host_it2me_native_messaging.js b/remoting/webapp/host_it2me_native_messaging.js index 45efaa9..6af8168 100644 --- a/remoting/webapp/host_it2me_native_messaging.js +++ b/remoting/webapp/host_it2me_native_messaging.js @@ -60,10 +60,9 @@ remoting.HostIt2MeNativeMessaging = function() { /** * Called if Native Messaging host has failed to start. - * @param {remoting.Error} error * @private * */ - this.onHostInitFailed_ = function(error) {}; + this.onHostInitFailed_ = function() {}; /** * Called if the It2Me Native Messaging host sends a malformed message: @@ -94,8 +93,7 @@ remoting.HostIt2MeNativeMessaging = function() { * * @param {function():void} onHostStarted Called after successful * initialization. - * @param {function(remoting.Error):void} onHostInitFailed Called if cannot - * connect to host. + * @param {function():void} onHostInitFailed Called if cannot connect to host. * @param {function(remoting.Error):void} onError Called on host error after * successfully connecting to the host. * @return {void} @@ -115,7 +113,7 @@ remoting.HostIt2MeNativeMessaging.prototype.initialize = } catch (err) { console.log('Native Messaging initialization failed: ', /** @type {*} */ (err)); - onHostInitFailed(remoting.Error.UNEXPECTED); + onHostInitFailed(); return; } }; @@ -290,12 +288,15 @@ remoting.HostIt2MeNativeMessaging.prototype.onConnected_ = */ remoting.HostIt2MeNativeMessaging.prototype.onHostDisconnect_ = function() { if (!this.initialized_) { - var error = (chrome.runtime.lastError.message == - remoting.NATIVE_MESSAGING_HOST_NOT_FOUND_ERROR) - ? remoting.Error.MISSING_PLUGIN - : remoting.Error.UNEXPECTED; - console.error('Native Messaging initialization failed.'); - this.onHostInitFailed_(error); + // If the host is disconnected before it is initialized, it probably means + // the host is not propertly installed (or not installed at all). + // E.g., if the host manifest is not present we get "Specified native + // messaging host not found" error. If the host manifest is present but + // the host binary cannot be found we get the "Native host has exited" + // error. + console.log('Native Messaging initialization failed: ' + + chrome.runtime.lastError.message); + this.onHostInitFailed_(); } else { console.error('Native Messaging port disconnected.'); this.onError_(remoting.Error.UNEXPECTED); diff --git a/remoting/webapp/remoting.js b/remoting/webapp/remoting.js index 8b69379..4c5efadd 100644 --- a/remoting/webapp/remoting.js +++ b/remoting/webapp/remoting.js @@ -184,6 +184,8 @@ remoting.createNpapiPlugin = function(container) { remoting.isMe2MeInstallable = function() { /** @type {string} */ var platform = navigator.platform; + // Chromoting host is not installable on ChromeOS and any linux distro other + // than Ubuntu. return platform == 'Win32' || platform == 'MacIntel'; } |