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

Side by Side Diff: remoting/webapp/session_connector.js

Issue 12905012: Webapp changes to support third party authentication (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Rebase, update patch Created 7 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
« no previous file with comments | « remoting/webapp/remoting.js ('k') | remoting/webapp/third_party_host_permissions.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 /** 5 /**
6 * @fileoverview 6 * @fileoverview
7 * Connect set-up state machine for Me2Me and IT2Me 7 * Connect set-up state machine for Me2Me and IT2Me
8 */ 8 */
9 9
10 'use strict'; 10 'use strict';
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 */ 111 */
112 this.clientSession_ = null; 112 this.clientSession_ = null;
113 113
114 /** 114 /**
115 * @type {XMLHttpRequest} 115 * @type {XMLHttpRequest}
116 * @private 116 * @private
117 */ 117 */
118 this.pendingXhr_ = null; 118 this.pendingXhr_ = null;
119 119
120 /** 120 /**
121 * Function to interactively obtain the PIN from the user. 121 * @type {function(function(string):void): void}
122 * @type {function(function(string):void):void}
123 * @private 122 * @private
124 */ 123 */
125 this.fetchPin_ = function(onPinFetched) {}; 124 this.fetchPin_ = function(onPinFetched) {};
126 125
127 /** 126 /**
127 * @type {function(string, string, function(string, string):void): void}
128 * @private
129 */
130 this.fetchThirdPartyToken_ = function(
131 tokenUrl, scope, onThirdPartyTokenFetched) {};
132
133 /**
128 * Host 'name', as displayed in the client tool-bar. For a Me2Me connection, 134 * Host 'name', as displayed in the client tool-bar. For a Me2Me connection,
129 * this is the name of the host; for an IT2Me connection, it is the email 135 * this is the name of the host; for an IT2Me connection, it is the email
130 * address of the person sharing their computer. 136 * address of the person sharing their computer.
131 * 137 *
132 * @type {string} 138 * @type {string}
133 * @private 139 * @private
134 */ 140 */
135 this.hostDisplayName_ = ''; 141 this.hostDisplayName_ = '';
136 }; 142 };
137 143
138 /** 144 /**
139 * Initiate a Me2Me connection. 145 * Initiate a Me2Me connection.
140 * 146 *
141 * @param {remoting.Host} host The Me2Me host to which to connect. 147 * @param {remoting.Host} host The Me2Me host to which to connect.
142 * @param {function(function(string):void):void} fetchPin Function to 148 * @param {function(function(string):void):void} fetchPin Function to
143 * interactively obtain the PIN from the user. 149 * interactively obtain the PIN from the user.
150 * @param {function(string, string, function(string, string): void): void}
151 * fetchThirdPartyToken Function to obtain a token from a third party
152 * authenticaiton server.
144 * @return {void} Nothing. 153 * @return {void} Nothing.
145 */ 154 */
146 remoting.SessionConnector.prototype.connectMe2Me = function(host, fetchPin) { 155 remoting.SessionConnector.prototype.connectMe2Me = function(
156 host, fetchPin, fetchThirdPartyToken) {
147 // Cancel any existing connect operation. 157 // Cancel any existing connect operation.
148 this.cancel(); 158 this.cancel();
149 159
150 this.hostId_ = host.hostId; 160 this.hostId_ = host.hostId;
151 this.hostJid_ = host.jabberId; 161 this.hostJid_ = host.jabberId;
162 this.hostPublicKey_ = host.publicKey;
152 this.fetchPin_ = fetchPin; 163 this.fetchPin_ = fetchPin;
164 this.fetchThirdPartyToken_ = fetchThirdPartyToken;
153 this.hostDisplayName_ = host.hostName; 165 this.hostDisplayName_ = host.hostName;
154 this.connectionMode_ = remoting.ClientSession.Mode.ME2ME; 166 this.connectionMode_ = remoting.ClientSession.Mode.ME2ME;
155 this.createSessionIfReady_(); 167 this.createSessionIfReady_();
156 }; 168 };
157 169
158 /** 170 /**
159 * Initiate an IT2Me connection. 171 * Initiate an IT2Me connection.
160 * 172 *
161 * @param {string} accessCode The access code as entered by the user. 173 * @param {string} accessCode The access code as entered by the user.
162 * @return {void} Nothing. 174 * @return {void} Nothing.
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 * If both the client and host JIDs are available, create a session and connect. 304 * If both the client and host JIDs are available, create a session and connect.
293 * 305 *
294 * @return {void} Nothing. 306 * @return {void} Nothing.
295 * @private 307 * @private
296 */ 308 */
297 remoting.SessionConnector.prototype.createSessionIfReady_ = function() { 309 remoting.SessionConnector.prototype.createSessionIfReady_ = function() {
298 if (!this.clientJid_ || !this.hostJid_) { 310 if (!this.clientJid_ || !this.hostJid_) {
299 return; 311 return;
300 } 312 }
301 313
302 var securityTypes = 'spake2_hmac,spake2_plain'; 314 var securityTypes = 'third_party,spake2_hmac,spake2_plain';
303 this.clientSession_ = new remoting.ClientSession( 315 this.clientSession_ = new remoting.ClientSession(
304 this.hostJid_, this.clientJid_, this.hostPublicKey_, this.passPhrase_, 316 this.hostJid_, this.clientJid_, this.hostPublicKey_, this.passPhrase_,
305 this.fetchPin_, securityTypes, this.hostId_, this.connectionMode_, 317 this.fetchPin_, this.fetchThirdPartyToken_, securityTypes, this.hostId_,
306 this.hostDisplayName_); 318 this.connectionMode_, this.hostDisplayName_);
307 this.clientSession_.logHostOfflineErrors(!this.refreshHostJidIfOffline_); 319 this.clientSession_.logHostOfflineErrors(!this.refreshHostJidIfOffline_);
308 this.clientSession_.setOnStateChange(this.onStateChange_.bind(this)); 320 this.clientSession_.setOnStateChange(this.onStateChange_.bind(this));
309 this.clientSession_.createPluginAndConnect(this.pluginParent_); 321 this.clientSession_.createPluginAndConnect(this.pluginParent_);
310 }; 322 };
311 323
312 /** 324 /**
313 * Handle a change in the state of the client session prior to successful 325 * Handle a change in the state of the client session prior to successful
314 * connection (after connection, this class no longer handles state change 326 * connection (after connection, this class no longer handles state change
315 * events). Errors that occur while connecting either trigger a reconnect 327 * events). Errors that occur while connecting either trigger a reconnect
316 * or notify the onError handler. 328 * or notify the onError handler.
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 398
387 /** 399 /**
388 * @param {boolean} success True if the host list was successfully refreshed; 400 * @param {boolean} success True if the host list was successfully refreshed;
389 * false if an error occurred. 401 * false if an error occurred.
390 * @private 402 * @private
391 */ 403 */
392 remoting.SessionConnector.prototype.onHostListRefresh_ = function(success) { 404 remoting.SessionConnector.prototype.onHostListRefresh_ = function(success) {
393 if (success) { 405 if (success) {
394 var host = remoting.hostList.getHostForId(this.hostId_); 406 var host = remoting.hostList.getHostForId(this.hostId_);
395 if (host) { 407 if (host) {
396 this.connectMe2Me(host, this.fetchPin_); 408 this.connectMe2Me(host, this.fetchPin_, this.fetchThirdPartyToken_);
397 return; 409 return;
398 } 410 }
399 } 411 }
400 this.onError_(remoting.Error.HOST_IS_OFFLINE); 412 this.onError_(remoting.Error.HOST_IS_OFFLINE);
401 }; 413 };
402 414
403 /** 415 /**
404 * Start a timer to periodically refresh the access token used by WCS. Access 416 * Start a timer to periodically refresh the access token used by WCS. Access
405 * tokens have a limited lifespan, and since the WCS driver runs in a sandbox, 417 * tokens have a limited lifespan, and since the WCS driver runs in a sandbox,
406 * it can't obtain a new one directly. 418 * it can't obtain a new one directly.
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
450 * Normalize the access code entered by the user. 462 * Normalize the access code entered by the user.
451 * 463 *
452 * @param {string} accessCode The access code, as entered by the user. 464 * @param {string} accessCode The access code, as entered by the user.
453 * @return {string} The normalized form of the code (whitespace removed). 465 * @return {string} The normalized form of the code (whitespace removed).
454 */ 466 */
455 remoting.SessionConnector.prototype.normalizeAccessCode_ = 467 remoting.SessionConnector.prototype.normalizeAccessCode_ =
456 function(accessCode) { 468 function(accessCode) {
457 // Trim whitespace. 469 // Trim whitespace.
458 return accessCode.replace(/\s/g, ''); 470 return accessCode.replace(/\s/g, '');
459 }; 471 };
OLDNEW
« no previous file with comments | « remoting/webapp/remoting.js ('k') | remoting/webapp/third_party_host_permissions.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698