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

Side by Side Diff: remoting/webapp/client_session.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/client_screen.js ('k') | remoting/webapp/cs_third_party_auth_trampoline.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 (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 /** 5 /**
6 * @fileoverview 6 * @fileoverview
7 * Class handling creation and teardown of a remoting client session. 7 * Class handling creation and teardown of a remoting client session.
8 * 8 *
9 * The ClientSession class controls lifetime of the client plugin 9 * The ClientSession class controls lifetime of the client plugin
10 * object and provides the plugin with the functionality it needs to 10 * object and provides the plugin with the functionality it needs to
(...skipping 12 matching lines...) Expand all
23 var remoting = remoting || {}; 23 var remoting = remoting || {};
24 24
25 /** 25 /**
26 * @param {string} hostJid The jid of the host to connect to. 26 * @param {string} hostJid The jid of the host to connect to.
27 * @param {string} clientJid The jid of the WCS client. 27 * @param {string} clientJid The jid of the WCS client.
28 * @param {string} hostPublicKey The base64 encoded version of the host's 28 * @param {string} hostPublicKey The base64 encoded version of the host's
29 * public key. 29 * public key.
30 * @param {string} accessCode The IT2Me access code. Blank for Me2Me. 30 * @param {string} accessCode The IT2Me access code. Blank for Me2Me.
31 * @param {function(function(string): void): void} fetchPin Called by Me2Me 31 * @param {function(function(string): void): void} fetchPin Called by Me2Me
32 * connections when a PIN needs to be obtained interactively. 32 * connections when a PIN needs to be obtained interactively.
33 * @param {function(string, string, function(string, string): void): void}
34 * fetchThirdPartyToken Called by Me2Me connections when a third party
35 * authentication token must be obtained.
33 * @param {string} authenticationMethods Comma-separated list of 36 * @param {string} authenticationMethods Comma-separated list of
34 * authentication methods the client should attempt to use. 37 * authentication methods the client should attempt to use.
35 * @param {string} hostId The host identifier for Me2Me, or empty for IT2Me. 38 * @param {string} hostId The host identifier for Me2Me, or empty for IT2Me.
36 * Mixed into authentication hashes for some authentication methods. 39 * Mixed into authentication hashes for some authentication methods.
37 * @param {remoting.ClientSession.Mode} mode The mode of this connection. 40 * @param {remoting.ClientSession.Mode} mode The mode of this connection.
38 * @param {string} hostDisplayName The name of the host for display purposes. 41 * @param {string} hostDisplayName The name of the host for display purposes.
39 * @constructor 42 * @constructor
40 */ 43 */
41 remoting.ClientSession = function(hostJid, clientJid, hostPublicKey, accessCode, 44 remoting.ClientSession = function(hostJid, clientJid, hostPublicKey, accessCode,
42 fetchPin, authenticationMethods, hostId, 45 fetchPin, fetchThirdPartyToken,
46 authenticationMethods, hostId,
43 mode, hostDisplayName) { 47 mode, hostDisplayName) {
44 this.state = remoting.ClientSession.State.CREATED; 48 this.state = remoting.ClientSession.State.CREATED;
45 49
46 this.hostJid = hostJid; 50 this.hostJid = hostJid;
47 this.clientJid = clientJid; 51 this.clientJid = clientJid;
48 this.hostPublicKey = hostPublicKey; 52 this.hostPublicKey = hostPublicKey;
49 /** @private */ 53 /** @private */
50 this.accessCode_ = accessCode; 54 this.accessCode_ = accessCode;
51 /** @private */ 55 /** @private */
52 this.fetchPin_ = fetchPin; 56 this.fetchPin_ = fetchPin;
57 /** @private */
58 this.fetchThirdPartyToken_ = fetchThirdPartyToken;
53 this.authenticationMethods = authenticationMethods; 59 this.authenticationMethods = authenticationMethods;
54 this.hostId = hostId; 60 this.hostId = hostId;
55 /** @type {string} */ 61 /** @type {string} */
56 this.hostDisplayName = hostDisplayName; 62 this.hostDisplayName = hostDisplayName;
57 /** @type {remoting.ClientSession.Mode} */ 63 /** @type {remoting.ClientSession.Mode} */
58 this.mode = mode; 64 this.mode = mode;
59 this.sessionId = ''; 65 this.sessionId = '';
60 /** @type {remoting.ClientPlugin} */ 66 /** @type {remoting.ClientPlugin} */
61 this.plugin = null; 67 this.plugin = null;
62 /** @private */ 68 /** @private */
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after
397 }; 403 };
398 404
399 this.plugin.onConnectionStatusUpdateHandler = 405 this.plugin.onConnectionStatusUpdateHandler =
400 this.onConnectionStatusUpdate_.bind(this); 406 this.onConnectionStatusUpdate_.bind(this);
401 this.plugin.onConnectionReadyHandler = 407 this.plugin.onConnectionReadyHandler =
402 this.onConnectionReady_.bind(this); 408 this.onConnectionReady_.bind(this);
403 this.plugin.onDesktopSizeUpdateHandler = 409 this.plugin.onDesktopSizeUpdateHandler =
404 this.onDesktopSizeChanged_.bind(this); 410 this.onDesktopSizeChanged_.bind(this);
405 this.plugin.onSetCapabilitiesHandler = 411 this.plugin.onSetCapabilitiesHandler =
406 this.onSetCapabilities_.bind(this); 412 this.onSetCapabilities_.bind(this);
407
408 this.connectPluginToWcs_(); 413 this.connectPluginToWcs_();
409 }; 414 };
410 415
411 /** 416 /**
412 * Deletes the <embed> element from the container, without sending a 417 * Deletes the <embed> element from the container, without sending a
413 * session_terminate request. This is to be called when the session was 418 * session_terminate request. This is to be called when the session was
414 * disconnected by the Host. 419 * disconnected by the Host.
415 * 420 *
416 * @return {void} Nothing. 421 * @return {void} Nothing.
417 */ 422 */
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after
714 } catch (err) { 719 } catch (err) {
715 // Pass message as is when it is malformed. 720 // Pass message as is when it is malformed.
716 } 721 }
717 722
718 console.log(remoting.timestamp(), 723 console.log(remoting.timestamp(),
719 remoting.formatIq.prettifyReceiveIq(stanza)); 724 remoting.formatIq.prettifyReceiveIq(stanza));
720 forwardIq(stanza); 725 forwardIq(stanza);
721 }; 726 };
722 remoting.wcsSandbox.setOnIq(onIncomingIq); 727 remoting.wcsSandbox.setOnIq(onIncomingIq);
723 728
729 /** @type remoting.ClientSession */
730 var that = this;
731 if (plugin.hasFeature(remoting.ClientPlugin.Feature.THIRD_PARTY_AUTH)) {
732 /** @type{function(string, string, string): void} */
733 var fetchThirdPartyToken = function(tokenUrl, hostPublicKey, scope) {
734 that.fetchThirdPartyToken_(
735 tokenUrl, hostPublicKey, scope,
736 plugin.onThirdPartyTokenFetched.bind(plugin));
737 };
738 plugin.fetchThirdPartyTokenHandler = fetchThirdPartyToken;
739 }
724 if (this.accessCode_) { 740 if (this.accessCode_) {
725 // Shared secret was already supplied before connecting (It2Me case). 741 // Shared secret was already supplied before connecting (It2Me case).
726 this.connectToHost_(this.accessCode_); 742 this.connectToHost_(this.accessCode_);
727
728 } else if (plugin.hasFeature( 743 } else if (plugin.hasFeature(
729 remoting.ClientPlugin.Feature.ASYNC_PIN)) { 744 remoting.ClientPlugin.Feature.ASYNC_PIN)) {
730 // Plugin supports asynchronously asking for the PIN. 745 // Plugin supports asynchronously asking for the PIN.
731 plugin.useAsyncPinDialog(); 746 plugin.useAsyncPinDialog();
732 /** @type remoting.ClientSession */
733 var that = this;
734 var fetchPin = function() { 747 var fetchPin = function() {
735 that.fetchPin_(plugin.onPinFetched.bind(plugin)); 748 that.fetchPin_(plugin.onPinFetched.bind(plugin));
736 }; 749 };
737 plugin.fetchPinHandler = fetchPin; 750 plugin.fetchPinHandler = fetchPin;
738 this.connectToHost_(''); 751 this.connectToHost_('');
739
740 } else { 752 } else {
741 // Plugin doesn't support asynchronously asking for the PIN, ask now. 753 // Plugin doesn't support asynchronously asking for the PIN, ask now.
742 this.fetchPin_(this.connectToHost_.bind(this)); 754 this.fetchPin_(this.connectToHost_.bind(this));
743 } 755 }
744 }; 756 };
745 757
746 /** 758 /**
747 * Connects to the host. 759 * Connects to the host.
748 * 760 *
749 * @param {string} sharedSecret Shared secret for SPAKE negotiation. 761 * @param {string} sharedSecret Shared secret for SPAKE negotiation.
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
786 * 798 *
787 * @private 799 * @private
788 * @param {boolean} ready True if the connection is ready. 800 * @param {boolean} ready True if the connection is ready.
789 */ 801 */
790 remoting.ClientSession.prototype.onConnectionReady_ = function(ready) { 802 remoting.ClientSession.prototype.onConnectionReady_ = function(ready) {
791 if (!ready) { 803 if (!ready) {
792 this.plugin.element().classList.add("session-client-inactive"); 804 this.plugin.element().classList.add("session-client-inactive");
793 } else { 805 } else {
794 this.plugin.element().classList.remove("session-client-inactive"); 806 this.plugin.element().classList.remove("session-client-inactive");
795 } 807 }
796 } 808 };
797 809
798 /** 810 /**
799 * Called when the client-host capabilities negotiation is complete. 811 * Called when the client-host capabilities negotiation is complete.
800 * 812 *
801 * @param {!Array.<string>} capabilities The set of capabilities negotiated 813 * @param {!Array.<string>} capabilities The set of capabilities negotiated
802 * between the client and host. 814 * between the client and host.
803 * @return {void} Nothing. 815 * @return {void} Nothing.
804 * @private 816 * @private
805 */ 817 */
806 remoting.ClientSession.prototype.onSetCapabilities_ = function(capabilities) { 818 remoting.ClientSession.prototype.onSetCapabilities_ = function(capabilities) {
(...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after
1188 var lateAdjustment = 1 + (now - expected) / timeout; 1200 var lateAdjustment = 1 + (now - expected) / timeout;
1189 if (!that.scroll_(lateAdjustment * dx, lateAdjustment * dy)) { 1201 if (!that.scroll_(lateAdjustment * dx, lateAdjustment * dy)) {
1190 that.bumpScrollTimer_ = window.setTimeout( 1202 that.bumpScrollTimer_ = window.setTimeout(
1191 function() { repeatScroll(now + timeout); }, 1203 function() { repeatScroll(now + timeout); },
1192 timeout); 1204 timeout);
1193 } 1205 }
1194 }; 1206 };
1195 repeatScroll(new Date().getTime()); 1207 repeatScroll(new Date().getTime());
1196 } 1208 }
1197 }; 1209 };
OLDNEW
« no previous file with comments | « remoting/webapp/client_screen.js ('k') | remoting/webapp/cs_third_party_auth_trampoline.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698