Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(96)

Unified Diff: remoting/webapp/crd/js/me2me_activity.js

Issue 1101613003: [Webapp Refactor] Reliably cancels a connection. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@ImproveUnittest
Patch Set: Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: remoting/webapp/crd/js/me2me_activity.js
diff --git a/remoting/webapp/crd/js/me2me_activity.js b/remoting/webapp/crd/js/me2me_activity.js
index 7d2b090e1b6095b86fdb3fa4ebd46ff7ca05bacb..1a7ec539ea23423bba8c0729e88e8accb194b361 100644
--- a/remoting/webapp/crd/js/me2me_activity.js
+++ b/remoting/webapp/crd/js/me2me_activity.js
@@ -11,14 +11,17 @@ var remoting = remoting || {};
/**
* @param {remoting.Host} host
+ * @param {remoting.HostList} hostList
*
* @constructor
* @implements {remoting.Activity}
*/
-remoting.Me2MeActivity = function(host) {
+remoting.Me2MeActivity = function(host, hostList) {
/** @private */
this.host_ = host;
/** @private */
+ this.hostList_ = hostList;
+ /** @private */
this.pinDialog_ =
new remoting.PinDialog(document.getElementById('pin-dialog'), host);
/** @private */
@@ -48,11 +51,11 @@ remoting.Me2MeActivity.prototype.start = function() {
return that.host_.options.load();
}).then(function() {
that.connect_(true);
- }).catch(function(/** remoting.Error */ error) {
+ }).catch(remoting.Error.handler(function(/** remoting.Error */ error) {
if (error.hasTag(remoting.Error.Tag.CANCELLED)) {
remoting.setMode(remoting.AppMode.HOME);
}
- });
+ }));
};
remoting.Me2MeActivity.prototype.stop = function() {
@@ -69,9 +72,9 @@ remoting.Me2MeActivity.prototype.getDesktopActivity = function() {
* @private
*/
remoting.Me2MeActivity.prototype.connect_ = function(suppressHostOfflineError) {
- remoting.setMode(remoting.AppMode.CLIENT_CONNECTING);
base.dispose(this.desktopActivity_);
this.desktopActivity_ = new remoting.DesktopRemotingActivity(this);
+ this.desktopActivity_.getConnectingDialog().show();
remoting.app.setConnectionMode(remoting.Application.Mode.ME2ME);
this.desktopActivity_.start(this.host_, this.createCredentialsProvider_(),
suppressHostOfflineError);
@@ -104,13 +107,15 @@ remoting.Me2MeActivity.prototype.createCredentialsProvider_ = function() {
* @param {function(string):void} onPinFetched
*/
var requestPin = function(supportsPairing, onPinFetched) {
+ that.desktopActivity_.getConnectingDialog().hide();
that.pinDialog_.show(supportsPairing).then(function(/** string */ pin) {
- remoting.setMode(remoting.AppMode.CLIENT_CONNECTING);
+ that.desktopActivity_.getConnectingDialog().show();
onPinFetched(pin);
- }).catch(function(/** remoting.Error */ error) {
+ }).catch(remoting.Error.handler(function(/** remoting.Error */ error) {
base.debug.assert(error.hasTag(remoting.Error.Tag.CANCELLED));
remoting.setMode(remoting.AppMode.HOME);
- });
+ that.stop();
+ }));
};
return new remoting.CredentialsProvider({
@@ -131,19 +136,22 @@ remoting.Me2MeActivity.prototype.onConnectionFailed = function(error) {
var onHostListRefresh = function(/** boolean */ success) {
if (success) {
// Get the host from the hostList for the refreshed JID.
- that.host_ = remoting.hostList.getHostForId(that.host_.hostId);
+ that.host_ = that.hostList_.getHostForId(that.host_.hostId);
that.connect_(false);
return;
}
- that.onError(error);
+ that.showErrorMessage_(error);
};
this.retryOnHostOffline_ = false;
// The plugin will be re-created when the host finished refreshing
remoting.hostList.refresh(onHostListRefresh);
- } else {
- this.onError(error);
+ } else if (!error.isNone()) {
+ this.showErrorMessage_(error);
}
+
+ base.dispose(this.desktopActivity_);
+ this.desktopActivity_ = null;
};
/**
@@ -162,19 +170,29 @@ remoting.Me2MeActivity.prototype.onConnected = function(connectionInfo) {
base.dispose(this.reconnector_);
this.reconnector_ = new remoting.SmartReconnector(
+ this.desktopActivity_.getConnectingDialog(),
this.connect_.bind(this, false),
this.stop.bind(this),
connectionInfo.session());
};
-remoting.Me2MeActivity.prototype.onDisconnected = function() {
- this.showFinishDialog_(remoting.AppMode.CLIENT_SESSION_FINISHED_ME2ME);
+remoting.Me2MeActivity.prototype.onDisconnected = function(error) {
+ if (error.isNone()) {
+ this.showFinishDialog_(remoting.AppMode.CLIENT_SESSION_FINISHED_ME2ME);
+ } else {
+ this.reconnector_.onConnectionDropped(error);
+ this.showErrorMessage_(error);
+ }
+
+ base.dispose(this.desktopActivity_);
+ this.desktopActivity_ = null;
};
/**
* @param {!remoting.Error} error
+ * @private
*/
-remoting.Me2MeActivity.prototype.onError = function(error) {
+remoting.Me2MeActivity.prototype.showErrorMessage_ = function(error) {
var errorDiv = document.getElementById('connect-error-message');
l10n.localizeElementFromTag(errorDiv, error.getTag());
this.showFinishDialog_(remoting.AppMode.CLIENT_CONNECT_FAILED_ME2ME);

Powered by Google App Engine
This is Rietveld 408576698