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

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

Issue 1054273002: [Webapp Refactor] Implements remoting.Activity. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Reviewer's feedback 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_connect_flow.js
diff --git a/remoting/webapp/crd/js/me2me_connect_flow.js b/remoting/webapp/crd/js/me2me_connect_flow.js
index 4cd4cd9ccdbab2088d782dd7fde45af868302a25..9986bbdca74bdcdda4bc0810850948aa8565dd71 100644
--- a/remoting/webapp/crd/js/me2me_connect_flow.js
+++ b/remoting/webapp/crd/js/me2me_connect_flow.js
@@ -14,21 +14,30 @@ var remoting = remoting || {};
* @param {remoting.Host} host
*
* @constructor
+ * @implements {remoting.Activity}
*/
-remoting.Me2MeConnectFlow = function(sessionConnector, host) {
+remoting.Me2MeActivity = function(sessionConnector, host) {
/** @private */
this.host_ = host;
/** @private */
this.connector_ = sessionConnector;
+ /** @private */
+ this.pinDialog_ =
+ new remoting.PinDialog(document.getElementById('pin-dialog'), host);
+ /** @private */
+ this.hostUpdateDialog_ = new remoting.HostNeedsUpdateDialog(
+ document.getElementById('host-needs-update-dialog'), this.host_);
+ /** @private */
+ this.retryOnHostOffline_ = true;
};
-remoting.Me2MeConnectFlow.prototype.start = function() {
+remoting.Me2MeActivity.prototype.dispose = function() {};
+
+remoting.Me2MeActivity.prototype.start = function() {
var webappVersion = chrome.runtime.getManifest().version;
- var needsUpdateDialog = new remoting.HostNeedsUpdateDialog(
- document.getElementById('host-needs-update-dialog'), this.host_);
var that = this;
- needsUpdateDialog.showIfNecessary(webappVersion).then(function() {
+ this.hostUpdateDialog_.showIfNecessary(webappVersion).then(function() {
return that.host_.options.load();
}).then(function() {
that.connect_();
@@ -40,7 +49,7 @@ remoting.Me2MeConnectFlow.prototype.start = function() {
};
/** @private */
-remoting.Me2MeConnectFlow.prototype.connect_ = function() {
+remoting.Me2MeActivity.prototype.connect_ = function() {
remoting.setMode(remoting.AppMode.CLIENT_CONNECTING);
var host = this.host_;
@@ -58,18 +67,15 @@ remoting.Me2MeConnectFlow.prototype.connect_ = function() {
thirdPartyTokenFetcher.fetchToken();
};
+ var that = this;
/**
* @param {boolean} supportsPairing
* @param {function(string):void} onPinFetched
*/
var requestPin = function(supportsPairing, onPinFetched) {
- var pinDialog =
- new remoting.PinDialog(document.getElementById('pin-dialog'), host);
- pinDialog.show(supportsPairing).then(function(/** string */ pin) {
+ that.pinDialog_.show(supportsPairing).then(function(/** string */ pin) {
remoting.setMode(remoting.AppMode.CLIENT_CONNECTING);
onPinFetched(pin);
- /** @type {boolean} */
- remoting.pairingRequested = pinDialog.pairingRequested();
}).catch(function(/** remoting.Error */ error) {
base.debug.assert(error.hasTag(remoting.Error.Tag.CANCELLED));
remoting.setMode(remoting.AppMode.HOME);
@@ -81,6 +87,61 @@ remoting.Me2MeConnectFlow.prototype.connect_ = function() {
pairingInfo.clientId, pairingInfo.sharedSecret);
};
+/**
+ * @param {!remoting.Error} error
+ */
+remoting.Me2MeActivity.prototype.onConnectionFailed = function(error) {
+ var that = this;
+ var onHostListRefresh = function(/** boolean */ success) {
+ if (success) {
+ // Get the host from the hostList for the refreshed JID.
+ var host = remoting.hostList.getHostForId(that.host_.hostId);
+ that.connector_.retryConnectMe2Me(host);
+ return;
+ }
+ that.onError(error);
+ };
+
+ if (error.hasTag(remoting.Error.Tag.HOST_IS_OFFLINE) &&
+ this.retryOnHostOffline_) {
+ this.retryOnHostOffline_ = false;
+
+ // The plugin will be re-created when the host finished refreshing
+ remoting.hostList.refresh(onHostListRefresh);
+ } else {
+ this.onError(error);
+ }
+};
+
+/**
+ * @param {!remoting.ConnectionInfo} connectionInfo
+ */
+remoting.Me2MeActivity.prototype.onConnected = function(connectionInfo) {
+ // Reset the refresh flag so that the next connection will retry if needed.
+ this.retryOnHostOffline_ = true;
+
+ if (remoting.app.hasCapability(remoting.ClientSession.Capability.CAST)) {
+ this.connector_.registerProtocolExtension(
+ new remoting.CastExtensionHandler());
+ }
+ this.connector_.registerProtocolExtension(new remoting.GnubbyAuthHandler());
+ this.pinDialog_.requestPairingIfNecessary(connectionInfo.plugin(),
+ this.connector_);
+};
+
+remoting.Me2MeActivity.prototype.onDisconnected = function() {
+ remoting.setMode(remoting.AppMode.CLIENT_SESSION_FINISHED_ME2ME);
+};
+
+/**
+ * @param {!remoting.Error} error
+ */
+remoting.Me2MeActivity.prototype.onError = function(error) {
+ this.retryOnHostOffline_ = true;
+ var errorDiv = document.getElementById('connect-error-message');
+ l10n.localizeElementFromTag(errorDiv, error.getTag());
+ remoting.setMode(remoting.AppMode.CLIENT_CONNECT_FAILED_IT2ME);
+};
/**
* @param {HTMLElement} rootElement
@@ -189,9 +250,43 @@ remoting.PinDialog.prototype.show = function(supportsPairing) {
return this.dialog_.show();
};
-/** @return {boolean} */
-remoting.PinDialog.prototype.pairingRequested = function() {
- return this.pairingCheckbox_.checked;
+/**
+ * @param {remoting.ClientPlugin} plugin
+ * @param {remoting.SessionConnector} connector
+ */
+remoting.PinDialog.prototype.requestPairingIfNecessary =
+ function(plugin, connector) {
+ if (this.pairingCheckbox_.checked) {
+ var that = this;
+ /**
+ * @param {string} clientId
+ * @param {string} sharedSecret
+ */
+ var onPairingComplete = function(clientId, sharedSecret) {
+ that.host_.options.pairingInfo.clientId = clientId;
+ that.host_.options.pairingInfo.sharedSecret = sharedSecret;
+ that.host_.options.save();
+ connector.updatePairingInfo(clientId, sharedSecret);
+ };
+
+ // Use the platform name as a proxy for the local computer name.
+ // TODO(jamiewalch): Use a descriptive name for the local computer, for
+ // example, its Chrome Sync name.
+ var clientName = '';
+ if (remoting.platformIsMac()) {
+ clientName = 'Mac';
+ } else if (remoting.platformIsWindows()) {
+ clientName = 'Windows';
+ } else if (remoting.platformIsChromeOS()) {
+ clientName = 'ChromeOS';
+ } else if (remoting.platformIsLinux()) {
+ clientName = 'Linux';
+ } else {
+ console.log('Unrecognized client platform. Using navigator.platform.');
+ clientName = navigator.platform;
+ }
+ plugin.requestPairing(clientName, onPairingComplete);
+ }
};
})();
« remoting/webapp/crd/js/it2me_connect_flow.js ('K') | « remoting/webapp/crd/js/it2me_connect_flow.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698