| 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_;
|
| +};
|
| +
|
| })();
|
|
|