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

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

Issue 1111603002: Added ability to register new hosts using GCD. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@host-list-delete
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/host_controller.js
diff --git a/remoting/webapp/crd/js/host_controller.js b/remoting/webapp/crd/js/host_controller.js
index b8015721ee913f309cb5b1e1e262af9e75e518f6..900b0a35f98600b1f4f49f7f2aefdadc00fb9031 100644
--- a/remoting/webapp/crd/js/host_controller.js
+++ b/remoting/webapp/crd/js/host_controller.js
@@ -165,15 +165,15 @@ remoting.HostController.prototype.start = function(hostPin, consent) {
});
var newHostId = base.generateUuid();
var pinHashPromise = this.hostDaemonFacade_.getPinHash(newHostId, hostPin);
+ var hostOwnerPromise = this.getClientBaseJid_();
/** @type {boolean} */
var hostRegistered = false;
- // Register the host and extract an optional auth code from the host
- // response. The absence of an auth code is represented by an empty
- // string.
- /** @type {!Promise<string>} */
- var authCodePromise = Promise.all([
+ // Register the host and extract an auth code from the host response
+ // and, optionally an email address for the robot account.
+ /** @type {!Promise<remoting.HostListApi.RegisterResult>} */
+ var regResultPromise = Promise.all([
hostClientIdPromise,
hostNamePromise,
keyPairPromise
@@ -184,79 +184,57 @@ remoting.HostController.prototype.start = function(hostPin, consent) {
return remoting.HostListApi.getInstance().register(
newHostId, hostName, keyPair.publicKey, hostClientId);
- }).then(function(/** string */ result) {
+ }).then(function(/** remoting.HostListApi.RegisterResult */ result) {
hostRegistered = true;
return result;
});
// Get XMPP creditials.
- var xmppCredsPromise = authCodePromise.then(function(authCode) {
- if (authCode) {
- // Use auth code supplied by Chromoting registry.
- return that.hostDaemonFacade_.getCredentialsFromAuthCode(authCode);
- } else {
- // No authorization code returned, use regular Chrome
- // identity credential flow.
- return remoting.identity.getEmail().then(function(/** string */ email) {
- return {
- userEmail: email,
- refreshToken: remoting.oauth2.getRefreshToken()
- };
- });
- }
- });
-
- // Get as JID to use as the host owner.
- var hostOwnerPromise = authCodePromise.then(function(authCode) {
- if (authCode) {
- return that.getClientBaseJid_();
+ var xmppCredsPromise = regResultPromise.then(function(regResult) {
+ base.debug.assert(regResult.authCode != '');
+ if (regResult.email) {
+ // Use auth code and email supplied by GCD.
+ return that.hostDaemonFacade_.getRefreshTokenFromAuthCode(
+ regResult.authCode).then(function(token) {
+ return {
+ userEmail: regResult.email,
+ refreshToken: token
+ };
+ });
} else {
- return remoting.identity.getEmail();
+ // Use auth code supplied by Chromoting registry.
+ return that.hostDaemonFacade_.getCredentialsFromAuthCode(
+ regResult.authCode);
}
});
- // Build an initial host configuration.
+ // Build the host configuration.
/** @type {!Promise<!Object>} */
- var hostConfigNoOwnerPromise = Promise.all([
+ var hostConfigPromise = Promise.all([
hostNamePromise,
pinHashPromise,
xmppCredsPromise,
- keyPairPromise
+ keyPairPromise,
+ hostOwnerPromise,
+ remoting.identity.getEmail()
]).then(function(/** Array */ a) {
var hostName = /** @type {string} */ (a[0]);
var hostSecretHash = /** @type {string} */ (a[1]);
var xmppCreds = /** @type {remoting.XmppCredentials} */ (a[2]);
var keyPair = /** @type {remoting.KeyPair} */ (a[3]);
- return {
+ var hostOwner = /** @type {string} */ (a[4]);
+ var hostOwnerEmail = /** @type {string} */ (a[5]);
+ var hostConfig = {
xmpp_login: xmppCreds.userEmail,
oauth_refresh_token: xmppCreds.refreshToken,
host_id: newHostId,
host_name: hostName,
host_secret_hash: hostSecretHash,
- private_key: keyPair.privateKey
+ private_key: keyPair.privateKey,
+ host_owner: hostOwner
};
- });
-
- // Add host_owner and host_owner_email fields to the host config if
- // necessary. This promise resolves to the same value as
- // hostConfigNoOwnerPromise, with not until the extra fields are
- // either added or determined to be redundant.
- /** @type {!Promise<!Object>} */
- var hostConfigWithOwnerPromise = Promise.all([
- hostConfigNoOwnerPromise,
- hostOwnerPromise,
- remoting.identity.getEmail(),
- xmppCredsPromise
- ]).then(function(/** Array */ a) {
- var hostConfig = /** @type {!Object} */ (a[0]);
- var hostOwner = /** @type {string} */ (a[1]);
- var hostOwnerEmail = /** @type {string} */ (a[2]);
- var xmppCreds = /** @type {remoting.XmppCredentials} */ (a[3]);
- if (hostOwner != xmppCreds.userEmail) {
- hostConfig['host_owner'] = hostOwner;
- if (hostOwnerEmail != hostOwner) {
- hostConfig['host_owner_email'] = hostOwnerEmail;
- }
+ if (hostOwnerEmail != hostOwner) {
+ hostConfig['host_owner_email'] = hostOwnerEmail;
}
return hostConfig;
});
@@ -264,7 +242,7 @@ remoting.HostController.prototype.start = function(hostPin, consent) {
// Start the daemon.
/** @type {!Promise<remoting.HostController.AsyncResult>} */
var startDaemonResultPromise =
- hostConfigWithOwnerPromise.then(function(hostConfig) {
+ hostConfigPromise.then(function(hostConfig) {
return that.hostDaemonFacade_.startDaemon(hostConfig, consent);
});
« no previous file with comments | « no previous file | remoting/webapp/crd/js/host_controller_unittest.js » ('j') | remoting/webapp/crd/js/host_controller_unittest.js » ('J')

Powered by Google App Engine
This is Rietveld 408576698