Index: remoting/webapp/crd/js/desktop_remoting_activity.js |
diff --git a/remoting/webapp/crd/js/desktop_remoting_activity.js b/remoting/webapp/crd/js/desktop_remoting_activity.js |
index f9614032888818e4e30b5d30aa7c7eda9c5f6b4d..a422d55d615f652aef7592a7110a25477196245f 100644 |
--- a/remoting/webapp/crd/js/desktop_remoting_activity.js |
+++ b/remoting/webapp/crd/js/desktop_remoting_activity.js |
@@ -30,6 +30,9 @@ remoting.DesktopRemotingActivity = function(parentActivity) { |
remoting.app_capabilities()); |
/** @private {remoting.ClientSession} */ |
this.session_ = null; |
+ /** @private {remoting.ConnectingDialog} */ |
+ this.connectingDialog_ = |
+ new remoting.ConnectingDialog(parentActivity.stop.bind(parentActivity)); |
}; |
/** |
@@ -48,7 +51,10 @@ remoting.DesktopRemotingActivity.prototype.start = |
that.session_ = session; |
session.logHostOfflineErrors(!opt_suppressOfflineError); |
session.connect(host, credentialsProvider); |
- }); |
+ }).catch(remoting.Error.handler( |
+ function(/** !remoting.Error */ error) { |
+ that.parentActivity_.onConnectionFailed(error); |
+ })); |
}; |
remoting.DesktopRemotingActivity.prototype.stop = function() { |
@@ -63,6 +69,7 @@ remoting.DesktopRemotingActivity.prototype.stop = function() { |
*/ |
remoting.DesktopRemotingActivity.prototype.onConnected = |
function(connectionInfo) { |
+ this.connectingDialog_.hide(); |
remoting.setMode(remoting.AppMode.IN_SESSION); |
if (!base.isAppsV2()) { |
remoting.toolbar.center(); |
@@ -88,9 +95,11 @@ remoting.DesktopRemotingActivity.prototype.onConnected = |
this.parentActivity_.onConnected(connectionInfo); |
}; |
-remoting.DesktopRemotingActivity.prototype.onDisconnected = function() { |
- this.parentActivity_.onDisconnected(); |
- this.dispose(); |
+remoting.DesktopRemotingActivity.prototype.onDisconnected = function(reason) { |
+ if (this.handleError_(reason)) { |
+ return; |
+ } |
+ this.parentActivity_.onDisconnected(reason); |
}; |
/** |
@@ -98,24 +107,24 @@ remoting.DesktopRemotingActivity.prototype.onDisconnected = function() { |
*/ |
remoting.DesktopRemotingActivity.prototype.onConnectionFailed = |
function(error) { |
+ if (this.handleError_(error)) { |
+ return; |
+ } |
this.parentActivity_.onConnectionFailed(error); |
}; |
/** |
* @param {!remoting.Error} error The error to be localized and displayed. |
+ * @return {boolean} returns true if the error is handled. |
+ * @private |
*/ |
-remoting.DesktopRemotingActivity.prototype.onError = function(error) { |
- console.error('Connection failed: ' + error.toString()); |
- |
+remoting.DesktopRemotingActivity.prototype.handleError_ = function(error) { |
if (error.hasTag(remoting.Error.Tag.AUTHENTICATION_FAILED)) { |
remoting.setMode(remoting.AppMode.HOME); |
remoting.handleAuthFailureAndRelaunch(); |
- return; |
+ return true; |
} |
- |
- this.parentActivity_.onError(error); |
- |
- this.dispose(); |
+ return false; |
}; |
remoting.DesktopRemotingActivity.prototype.dispose = function() { |
@@ -123,6 +132,7 @@ remoting.DesktopRemotingActivity.prototype.dispose = function() { |
this.connectedView_ = null; |
base.dispose(this.session_); |
this.session_ = null; |
+ this.connectingDialog_.hide(); |
}; |
/** @return {remoting.DesktopConnectedView} */ |
@@ -137,4 +147,9 @@ remoting.DesktopRemotingActivity.prototype.getSession = function() { |
return this.session_; |
}; |
+/** @return {remoting.ConnectingDialog} */ |
+remoting.DesktopRemotingActivity.prototype.getConnectingDialog = function() { |
+ return this.connectingDialog_; |
+}; |
+ |
})(); |