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

Side by Side Diff: remoting/webapp/me2mom/client_session.js

Issue 7511001: Don't transition to in-session mode until the connection has been established. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 9 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « remoting/webapp/me2mom/choice.html ('k') | remoting/webapp/me2mom/remoting.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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 * Session class that handles creation and teardown of a remoting session. 7 * Session class that handles creation and teardown of a remoting session.
8 * 8 *
9 * This abstracts a <embed> element and controls the plugin which does the 9 * This abstracts a <embed> element and controls the plugin which does the
10 * actual remoting work. There should be no UI code inside this class. It 10 * actual remoting work. There should be no UI code inside this class. It
11 * should be purely thought of as a controller of sorts. 11 * should be purely thought of as a controller of sorts.
12 */ 12 */
13 13
14 'use strict'; 14 'use strict';
15 15
16 var remoting = remoting || {}; 16 var remoting = remoting || {};
17 17
18 (function() { 18 (function() {
19 /** 19 /**
20 * @param {string} hostJid The jid of the host to connect to. 20 * @param {string} hostJid The jid of the host to connect to.
21 * @param {string} hostPublicKey The base64 encoded version of the host's 21 * @param {string} hostPublicKey The base64 encoded version of the host's
22 * public key. 22 * public key.
23 * @param {string} accessCode The access code for the IT2Me connection. 23 * @param {string} accessCode The access code for the IT2Me connection.
24 * @param {string} email The username for the talk network. 24 * @param {string} email The username for the talk network.
25 * @param {function(remoting.ClientSession.State):void} onStateChange 25 * @param {function(remoting.ClientSession.State):void} onStateChange
26 * The callback to invoke when the session changes state. 26 * The callback to invoke when the session changes state. This callback
27 * occurs after the state changes and is passed the previous state; the
28 * new state is accessible via ClientSession's |state| property.
27 * @constructor 29 * @constructor
28 */ 30 */
29 remoting.ClientSession = function(hostJid, hostPublicKey, accessCode, email, 31 remoting.ClientSession = function(hostJid, hostPublicKey, accessCode, email,
30 onStateChange) { 32 onStateChange) {
31 this.state = remoting.ClientSession.CREATED; 33 this.state = remoting.ClientSession.CREATED;
32 34
33 this.hostJid = hostJid; 35 this.hostJid = hostJid;
34 this.hostPublicKey = hostPublicKey; 36 this.hostPublicKey = hostPublicKey;
35 this.accessCode = accessCode; 37 this.accessCode = accessCode;
36 this.email = email; 38 this.email = email;
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 * @param {Element} container The element to add the plugin to. 106 * @param {Element} container The element to add the plugin to.
105 * @param {string} oauth2AccessToken A valid OAuth2 access token. 107 * @param {string} oauth2AccessToken A valid OAuth2 access token.
106 * @return {void} Nothing. 108 * @return {void} Nothing.
107 */ 109 */
108 remoting.ClientSession.prototype.createPluginAndConnect = 110 remoting.ClientSession.prototype.createPluginAndConnect =
109 function(container, oauth2AccessToken) { 111 function(container, oauth2AccessToken) {
110 this.plugin = document.createElement('embed'); 112 this.plugin = document.createElement('embed');
111 this.plugin.id = this.PLUGIN_ID; 113 this.plugin.id = this.PLUGIN_ID;
112 this.plugin.src = 'about://none'; 114 this.plugin.src = 'about://none';
113 this.plugin.type = 'pepper-application/x-chromoting'; 115 this.plugin.type = 'pepper-application/x-chromoting';
116 this.plugin.width = 0;
117 this.plugin.height = 0;
114 container.appendChild(this.plugin); 118 container.appendChild(this.plugin);
115 119
116 if (!this.isPluginVersionSupported_(this.plugin)) { 120 if (!this.isPluginVersionSupported_(this.plugin)) {
117 // TODO(ajwong): Remove from parent. 121 // TODO(ajwong): Remove from parent.
118 delete this.plugin; 122 delete this.plugin;
119 this.setState_(remoting.ClientSession.BAD_PLUGIN_VERSION); 123 this.setState_(remoting.ClientSession.BAD_PLUGIN_VERSION);
120 return; 124 return;
121 } 125 }
122 126
123 var that = this; 127 var that = this;
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 } else if (state == this.plugin.STATUS_FAILED) { 317 } else if (state == this.plugin.STATUS_FAILED) {
314 this.setState_(remoting.ClientSession.State.CONNECTION_FAILED); 318 this.setState_(remoting.ClientSession.State.CONNECTION_FAILED);
315 } 319 }
316 }; 320 };
317 321
318 /** 322 /**
319 * @param {remoting.ClientSession.State} state The new state for the session. 323 * @param {remoting.ClientSession.State} state The new state for the session.
320 * @return {void} Nothing. 324 * @return {void} Nothing.
321 */ 325 */
322 remoting.ClientSession.prototype.setState_ = function(state) { 326 remoting.ClientSession.prototype.setState_ = function(state) {
327 var oldState = state;
323 this.state = state; 328 this.state = state;
324 if (this.onStateChange) { 329 if (this.onStateChange) {
325 this.onStateChange(this.state); 330 this.onStateChange(oldState);
326 } 331 }
327 }; 332 };
328 333
329 /** 334 /**
330 * This is a callback that gets called when the desktop size contained in the 335 * This is a callback that gets called when the desktop size contained in the
331 * the plugin has changed. 336 * the plugin has changed.
332 * 337 *
333 * @return {void} Nothing. 338 * @return {void} Nothing.
334 */ 339 */
335 remoting.ClientSession.prototype.onDesktopSizeChanged_ = function() { 340 remoting.ClientSession.prototype.onDesktopSizeChanged_ = function() {
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
397 'video_bandwidth': this.plugin.videoBandwidth, 402 'video_bandwidth': this.plugin.videoBandwidth,
398 'capture_latency': this.plugin.videoCaptureLatency, 403 'capture_latency': this.plugin.videoCaptureLatency,
399 'encode_latency': this.plugin.videoEncodeLatency, 404 'encode_latency': this.plugin.videoEncodeLatency,
400 'decode_latency': this.plugin.videoDecodeLatency, 405 'decode_latency': this.plugin.videoDecodeLatency,
401 'render_latency': this.plugin.videoRenderLatency, 406 'render_latency': this.plugin.videoRenderLatency,
402 'roundtrip_latency': this.plugin.roundTripLatency 407 'roundtrip_latency': this.plugin.roundTripLatency
403 }; 408 };
404 }; 409 };
405 410
406 }()); 411 }());
OLDNEW
« no previous file with comments | « remoting/webapp/me2mom/choice.html ('k') | remoting/webapp/me2mom/remoting.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698