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

Side by Side 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: for review Created 5 years, 7 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 'use strict'; 5 'use strict';
6 6
7 /** @suppress {duplicate} */ 7 /** @suppress {duplicate} */
8 var remoting = remoting || {}; 8 var remoting = remoting || {};
9 9
10 /** @constructor */ 10 /** @constructor */
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 } 164 }
165 }); 165 });
166 var newHostId = base.generateUuid(); 166 var newHostId = base.generateUuid();
167 var pinHashPromise = this.hostDaemonFacade_.getPinHash(newHostId, hostPin); 167 var pinHashPromise = this.hostDaemonFacade_.getPinHash(newHostId, hostPin);
168 168
169 /** @type {boolean} */ 169 /** @type {boolean} */
170 var hostRegistered = false; 170 var hostRegistered = false;
171 171
172 // Register the host and extract an optional auth code from the host 172 // Register the host and extract an optional auth code from the host
173 // response. The absence of an auth code is represented by an empty 173 // response. The absence of an auth code is represented by an empty
174 // string. 174 // string.
Jamie 2015/04/27 23:24:24 Is this comment still correct?
John Williams 2015/04/28 20:27:40 Fixed.
175 /** @type {!Promise<string>} */ 175 /** @type {!Promise<remoting.HostListApi.RegisterResult>} */
176 var authCodePromise = Promise.all([ 176 var regResultPromise = Promise.all([
177 hostClientIdPromise, 177 hostClientIdPromise,
178 hostNamePromise, 178 hostNamePromise,
179 keyPairPromise 179 keyPairPromise
180 ]).then(function(/** Array */ a) { 180 ]).then(function(/** Array */ a) {
181 var hostClientId = /** @type {string} */ (a[0]); 181 var hostClientId = /** @type {string} */ (a[0]);
182 var hostName = /** @type {string} */ (a[1]); 182 var hostName = /** @type {string} */ (a[1]);
183 var keyPair = /** @type {remoting.KeyPair} */ (a[2]); 183 var keyPair = /** @type {remoting.KeyPair} */ (a[2]);
184 184
185 return remoting.HostListApi.getInstance().register( 185 return remoting.HostListApi.getInstance().register(
186 newHostId, hostName, keyPair.publicKey, hostClientId); 186 newHostId, hostName, keyPair.publicKey, hostClientId);
187 }).then(function(/** string */ result) { 187 }).then(function(/** remoting.HostListApi.RegisterResult */ result) {
188 hostRegistered = true; 188 hostRegistered = true;
189 return result; 189 return result;
190 }); 190 });
191 191
192 // Get XMPP creditials. 192 // Get XMPP creditials.
193 var xmppCredsPromise = authCodePromise.then(function(authCode) { 193 var xmppCredsPromise = regResultPromise.then(function(regResult) {
194 if (authCode) { 194 if (regResult.authCode && regResult.email) {
195 // Use auth code and email supplied by GCD.
196 return that.hostDaemonFacade_.getRefreshTokenFromAuthCode(
197 regResult.authCode).then(function(token) {
198 return {
199 userEmail: regResult.email,
200 refreshToken: token
201 };
202 });
203 } else if (regResult.authCode) {
195 // Use auth code supplied by Chromoting registry. 204 // Use auth code supplied by Chromoting registry.
196 return that.hostDaemonFacade_.getCredentialsFromAuthCode(authCode); 205 return that.hostDaemonFacade_.getCredentialsFromAuthCode(
206 regResult.authCode);
197 } else { 207 } else {
198 // No authorization code returned, use regular Chrome 208 // No authorization code returned, use regular Chrome
199 // identity credential flow. 209 // identity credential flow.
200 return remoting.identity.getEmail().then(function(/** string */ email) { 210 return remoting.identity.getEmail().then(function(/** string */ email) {
201 return { 211 return {
202 userEmail: email, 212 userEmail: email,
203 refreshToken: remoting.oauth2.getRefreshToken() 213 refreshToken: remoting.oauth2.getRefreshToken()
Jamie 2015/04/27 23:24:24 remoting.oauth2 is null for v2, so I think this sh
John Williams 2015/04/28 20:27:40 Done.
204 }; 214 };
205 }); 215 });
206 } 216 }
207 }); 217 });
208 218
209 // Get as JID to use as the host owner. 219 // Get as JID to use as the host owner.
210 var hostOwnerPromise = authCodePromise.then(function(authCode) { 220 var hostOwnerPromise = regResultPromise.then(function(regResult) {
211 if (authCode) { 221 if (regResult.authCode && !regResult.email) {
Jamie 2015/04/27 23:24:24 This doesn't look right. You're never using regRes
John Williams 2015/04/28 20:27:40 Done.
212 return that.getClientBaseJid_(); 222 return that.getClientBaseJid_();
213 } else { 223 } else {
214 return remoting.identity.getEmail(); 224 return remoting.identity.getEmail();
215 } 225 }
216 }); 226 });
217 227
218 // Build an initial host configuration. 228 // Build an initial host configuration.
219 /** @type {!Promise<!Object>} */ 229 /** @type {!Promise<!Object>} */
220 var hostConfigNoOwnerPromise = Promise.all([ 230 var hostConfigNoOwnerPromise = Promise.all([
221 hostNamePromise, 231 hostNamePromise,
(...skipping 13 matching lines...) Expand all
235 host_secret_hash: hostSecretHash, 245 host_secret_hash: hostSecretHash,
236 private_key: keyPair.privateKey 246 private_key: keyPair.privateKey
237 }; 247 };
238 }); 248 });
239 249
240 // Add host_owner and host_owner_email fields to the host config if 250 // Add host_owner and host_owner_email fields to the host config if
241 // necessary. This promise resolves to the same value as 251 // necessary. This promise resolves to the same value as
242 // hostConfigNoOwnerPromise, with not until the extra fields are 252 // hostConfigNoOwnerPromise, with not until the extra fields are
243 // either added or determined to be redundant. 253 // either added or determined to be redundant.
244 /** @type {!Promise<!Object>} */ 254 /** @type {!Promise<!Object>} */
245 var hostConfigWithOwnerPromise = Promise.all([ 255 var hostConfigWithOwnerPromise = Promise.all([
John Williams 2015/04/28 20:27:40 I merged this with the function above since I real
246 hostConfigNoOwnerPromise, 256 hostConfigNoOwnerPromise,
247 hostOwnerPromise, 257 hostOwnerPromise,
248 remoting.identity.getEmail(), 258 remoting.identity.getEmail(),
249 xmppCredsPromise 259 xmppCredsPromise
250 ]).then(function(/** Array */ a) { 260 ]).then(function(/** Array */ a) {
251 var hostConfig = /** @type {!Object} */ (a[0]); 261 var hostConfig = /** @type {!Object} */ (a[0]);
252 var hostOwner = /** @type {string} */ (a[1]); 262 var hostOwner = /** @type {string} */ (a[1]);
253 var hostOwnerEmail = /** @type {string} */ (a[2]); 263 var hostOwnerEmail = /** @type {string} */ (a[2]);
254 var xmppCreds = /** @type {remoting.XmppCredentials} */ (a[3]); 264 var xmppCreds = /** @type {remoting.XmppCredentials} */ (a[3]);
255 if (hostOwner != xmppCreds.userEmail) { 265 if (hostOwner != xmppCreds.userEmail) {
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
507 emailPromise.then(function(/** string */ email) { 517 emailPromise.then(function(/** string */ email) {
508 signalStrategy.connect(remoting.settings.XMPP_SERVER, email, token); 518 signalStrategy.connect(remoting.settings.XMPP_SERVER, email, token);
509 }); 519 });
510 }); 520 });
511 521
512 return result; 522 return result;
513 }; 523 };
514 524
515 /** @type {remoting.HostController} */ 525 /** @type {remoting.HostController} */
516 remoting.hostController = null; 526 remoting.hostController = null;
OLDNEW
« no previous file with comments | « no previous file | remoting/webapp/crd/js/host_controller_unittest.js » ('j') | remoting/webapp/crd/js/host_list_api_impl.js » ('J')

Powered by Google App Engine
This is Rietveld 408576698