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

Unified Diff: remoting/webapp/client_session.js

Issue 12867004: Webapp changes to support asking for a PIN (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 7 years, 9 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/client_session.js
diff --git a/remoting/webapp/client_session.js b/remoting/webapp/client_session.js
index 89fcc82eb70c599e38ebb407f7156e06890978b4..9d8733f28a58ccbba55993ea5816a210285671b7 100644
--- a/remoting/webapp/client_session.js
+++ b/remoting/webapp/client_session.js
@@ -27,8 +27,9 @@ var remoting = remoting || {};
* @param {string} clientJid The jid of the WCS client.
* @param {string} hostPublicKey The base64 encoded version of the host's
* public key.
- * @param {string} sharedSecret The access code for IT2Me or the PIN
- * for Me2Me.
+ * @param {string} passPhrase The pre-determined pass phrase for connection.
Jamie 2013/03/18 20:28:23 I think it's worth keeping the style of the origin
rmsousa 2013/03/18 21:58:01 Done.
+ * @param {function(function(string): void): void} fetchPin Called
+ * when a PIN needs to be obtained interactively.
Jamie 2013/03/18 20:28:23 I think we should be consistent with referring to
rmsousa 2013/03/18 21:58:01 I tried to differentiate between a user-generated
* @param {string} authenticationMethods Comma-separated list of
* authentication methods the client should attempt to use.
* @param {string} hostId The host identifier for Me2Me, or empty for IT2Me.
@@ -37,14 +38,16 @@ var remoting = remoting || {};
* @constructor
*/
remoting.ClientSession = function(hostJid, clientJid,
- hostPublicKey, sharedSecret,
+ hostPublicKey, passPhrase,
+ fetchPin,
Jamie 2013/03/18 20:28:23 Nit: I'm not sure what the intended line-break sch
rmsousa 2013/03/18 21:58:01 Done.
authenticationMethods, hostId, mode) {
this.state = remoting.ClientSession.State.CREATED;
this.hostJid = hostJid;
this.clientJid = clientJid;
this.hostPublicKey = hostPublicKey;
- this.sharedSecret = sharedSecret;
+ this.passPhrase_ = passPhrase;
+ this.fetchPin_ = fetchPin;
Jamie 2013/03/18 20:28:23 Please add @private annotations to these members.
rmsousa 2013/03/18 21:58:01 Done.
this.authenticationMethods = authenticationMethods;
this.hostId = hostId;
/** @type {remoting.ClientSession.Mode} */
@@ -290,14 +293,19 @@ remoting.ClientSession.prototype.onHostSettingsLoaded_ = function(options) {
options[remoting.ClientSession.KEY_SHRINK_TO_FIT];
}
- this.plugin.element().focus();
-
/** @param {boolean} result */
this.plugin.initialize(this.onPluginInitialized_.bind(this));
+};
+
+/**
+ * Constrains the focus to the plugin element.
Jamie 2013/03/18 20:28:23 Add @private
rmsousa 2013/03/18 21:58:01 Done.
+ */
+remoting.ClientSession.prototype.setFocusHandlers_ = function() {
this.plugin.element().addEventListener(
'focus', this.callPluginGotFocus_, false);
this.plugin.element().addEventListener(
'blur', this.callPluginLostFocus_, false);
+ this.plugin.element().focus();
};
/**
@@ -588,6 +596,7 @@ remoting.ClientSession.prototype.sendIq_ = function(msg) {
*/
remoting.ClientSession.prototype.connectPluginToWcs_ = function() {
remoting.formatIq.setJids(this.clientJid, this.hostJid);
+ /** @type remoting.ClientPlugin */
Jamie 2013/03/18 20:28:23 Brackets around the type, please.
rmsousa 2013/03/18 21:58:01 Done.
var plugin = this.plugin;
var forwardIq = plugin.onIncomingIq.bind(plugin);
/** @param {string} stanza The IQ stanza received. */
@@ -611,8 +620,36 @@ remoting.ClientSession.prototype.connectPluginToWcs_ = function() {
forwardIq(stanza);
}
remoting.wcsSandbox.setOnIq(onIncomingIq);
Jamie 2013/03/18 20:28:23 Blank line here, please.
rmsousa 2013/03/18 21:58:01 Done.
+ // Pass phrase was already supplied before connecting (It2Me case).
Jamie 2013/03/18 20:28:23 Can you move this comment inside the if, for consi
rmsousa 2013/03/18 21:58:01 Done.
+ if (this.passPhrase_) {
+ this.connectToHost_(this.passPhrase_);
+ } else if (plugin.hasFeature(
+ remoting.ClientPlugin.Feature.USE_ASYNC_PIN_DIALOG)) {
+ // Plugin supports asynchronously asking for passphrase.
+ plugin.useAsyncPinDialog();
+ /** @type remoting.ClientSession */
+ var that = this;
+ var fetchPin = function() {
+ that.fetchPin_(plugin.onPinFetched.bind(plugin));
+ };
+ plugin.fetchPinHandler = fetchPin;
+ this.connectToHost_('');
+ } else {
+ // Plugin doesn't support asynchronously asking for passphrase, ask now.
+ this.fetchPin_(this.connectToHost_.bind(this));
+ }
+};
+
+/**
+ * Connects to the host.
+ *
+ * @private
Jamie 2013/03/18 20:28:23 Nit: We're pretty consistent about @private being
rmsousa 2013/03/18 21:58:01 Done.
+ * @param {string} sharedSecret Shared secret for SPAKE negotiation.
+ * @return {void} Nothing.
+ */
+remoting.ClientSession.prototype.connectToHost_ = function(sharedSecret) {
this.plugin.connect(this.hostJid, this.hostPublicKey, this.clientJid,
- this.sharedSecret, this.authenticationMethods,
+ sharedSecret, this.authenticationMethods,
this.hostId);
};
@@ -627,6 +664,7 @@ remoting.ClientSession.prototype.connectPluginToWcs_ = function() {
remoting.ClientSession.prototype.onConnectionStatusUpdate_ =
function(status, error) {
if (status == remoting.ClientSession.State.CONNECTED) {
+ this.setFocusHandlers_();
this.onDesktopSizeChanged_();
if (this.resizeToClient_) {
this.plugin.notifyClientResolution(window.innerWidth,

Powered by Google App Engine
This is Rietveld 408576698