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

Side by Side Diff: remoting/webapp/crd/js/session_connector_impl.js

Issue 1016623002: [Webapp Refactor] Reparent the ConnectedView into the delegate. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebasing Created 5 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 unified diff | Download patch
« no previous file with comments | « remoting/webapp/crd/js/remoting.js ('k') | no next file » | 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';
11 11
12 /** @suppress {duplicate} */ 12 /** @suppress {duplicate} */
13 var remoting = remoting || {}; 13 var remoting = remoting || {};
14 14
15 /** 15 /**
16 * @type {remoting.ClientSession} The client session object, set once the 16 * @type {remoting.ClientSession} The client session object, set once the
17 * connector has invoked its onOk callback. 17 * connector has invoked its onOk callback.
18 * TODO(garykac): Have this owned by someone instead of being global. 18 * TODO(garykac): Have this owned by someone instead of being global.
19 */ 19 */
20 remoting.clientSession = null; 20 remoting.clientSession = null;
21 21
22 /** 22 /**
23 * @type {remoting.DesktopConnectedView} The client session view object, set
24 * once the connector has invoked its onOk callback.
25 * TODO(garykac): Have this owned by someone instead of being global.
26 */
27 remoting.desktopConnectedView = null;
28
29 /**
30 * @param {HTMLElement} clientContainer Container element for the client view. 23 * @param {HTMLElement} clientContainer Container element for the client view.
31 * @param {function(remoting.ConnectionInfo):void} onConnected Callback on 24 * @param {function(remoting.ConnectionInfo):void} onConnected Callback on
32 * success. 25 * success.
33 * @param {function(!remoting.Error):void} onError Callback on error. 26 * @param {function(!remoting.Error):void} onError Callback on error.
34 * @param {function(!remoting.Error):void} onConnectionFailed Callback for when 27 * @param {function(!remoting.Error):void} onConnectionFailed Callback for when
35 * the connection fails. 28 * the connection fails.
36 * @param {Array<string>} requiredCapabilities Connector capabilities 29 * @param {Array<string>} requiredCapabilities Connector capabilities
37 * required by this application. 30 * required by this application.
38 * @param {string} defaultRemapKeys The default set of key mappings for the 31 * @param {string} defaultRemapKeys The default set of key mappings for the
39 * client session to use. 32 * client session to use.
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 86
94 /** @private {boolean} */ 87 /** @private {boolean} */
95 this.logHostOfflineErrors_ = false; 88 this.logHostOfflineErrors_ = false;
96 89
97 /** @private {remoting.ClientPlugin} */ 90 /** @private {remoting.ClientPlugin} */
98 this.plugin_ = null; 91 this.plugin_ = null;
99 92
100 /** @private {remoting.ClientSession} */ 93 /** @private {remoting.ClientSession} */
101 this.clientSession_ = null; 94 this.clientSession_ = null;
102 95
103 /** @private {remoting.DesktopConnectedView} */
104 this.connectedView_ = null;
105
106 /** @private {XMLHttpRequest} */ 96 /** @private {XMLHttpRequest} */
107 this.pendingXhr_ = null; 97 this.pendingXhr_ = null;
108 98
109 /** @private {remoting.CredentialsProvider} */ 99 /** @private {remoting.CredentialsProvider} */
110 this.credentialsProvider_ = null; 100 this.credentialsProvider_ = null;
111 101
112 /** @private {Object<string,remoting.ProtocolExtension>} */ 102 /** @private {Object<string,remoting.ProtocolExtension>} */
113 this.protocolExtensions_ = {}; 103 this.protocolExtensions_ = {};
114 104
115 /** 105 /**
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
354 this.pluginError_(new remoting.Error( 344 this.pluginError_(new remoting.Error(
355 remoting.Error.Tag.BAD_PLUGIN_VERSION)); 345 remoting.Error.Tag.BAD_PLUGIN_VERSION));
356 return; 346 return;
357 } 347 }
358 348
359 this.clientSession_ = new remoting.ClientSession( 349 this.clientSession_ = new remoting.ClientSession(
360 this.plugin_, this.host_, this.signalStrategy_, this.connectionMode_, 350 this.plugin_, this.host_, this.signalStrategy_, this.connectionMode_,
361 this.onProtocolExtensionMessage_.bind(this)); 351 this.onProtocolExtensionMessage_.bind(this));
362 remoting.clientSession = this.clientSession_; 352 remoting.clientSession = this.clientSession_;
363 353
364 this.connectedView_ = new remoting.DesktopConnectedView(
365 this.plugin_, this.clientContainer_, this.host_,
366 this.connectionMode_, this.defaultRemapKeys_);
367 remoting.desktopConnectedView = this.connectedView_;
368
369 this.clientSession_.logHostOfflineErrors(this.logHostOfflineErrors_); 354 this.clientSession_.logHostOfflineErrors(this.logHostOfflineErrors_);
370 this.clientSession_.addEventListener( 355 this.clientSession_.addEventListener(
371 remoting.ClientSession.Events.stateChanged, 356 remoting.ClientSession.Events.stateChanged,
372 this.bound_.onStateChange); 357 this.bound_.onStateChange);
373 358
374 this.plugin_.connect( 359 this.plugin_.connect(
375 this.host_, this.signalStrategy_.getJid(), this.credentialsProvider_); 360 this.host_, this.signalStrategy_.getJid(), this.credentialsProvider_);
376 }; 361 };
377 362
378 /** 363 /**
379 * @param {!remoting.Error} error 364 * @param {!remoting.Error} error
380 * @private 365 * @private
381 */ 366 */
382 remoting.SessionConnectorImpl.prototype.pluginError_ = function(error) { 367 remoting.SessionConnectorImpl.prototype.pluginError_ = function(error) {
383 this.signalStrategy_.setIncomingStanzaCallback(null); 368 this.signalStrategy_.setIncomingStanzaCallback(null);
384 this.clientSession_.disconnect(error); 369 this.clientSession_.disconnect(error);
385 this.removePlugin_(); 370 this.removePlugin_();
386 }; 371 };
387 372
388 /** @private */ 373 /** @private */
389 remoting.SessionConnectorImpl.prototype.removePlugin_ = function() { 374 remoting.SessionConnectorImpl.prototype.removePlugin_ = function() {
390 if (this.clientSession_) { 375 if (this.clientSession_) {
391 this.clientSession_.removePlugin(); 376 this.clientSession_.removePlugin();
392 } 377 }
393 this.clientSession_ = null; 378 this.clientSession_ = null;
394 remoting.clientSession = null; 379 remoting.clientSession = null;
395 380
396 base.dispose(this.connectedView_);
397 this.connectedView_ = null;
398 remoting.desktopConnectedView = null;
399
400 base.dispose(this.plugin_); 381 base.dispose(this.plugin_);
401 this.plugin_ = null; 382 this.plugin_ = null;
402 }; 383 };
403 384
404 /** 385 /**
405 * @param {remoting.ProtocolExtension} extension 386 * @param {remoting.ProtocolExtension} extension
406 */ 387 */
407 remoting.SessionConnectorImpl.prototype.registerProtocolExtension = 388 remoting.SessionConnectorImpl.prototype.registerProtocolExtension =
408 function(extension) { 389 function(extension) {
409 var types = extension.getExtensionTypes(); 390 var types = extension.getExtensionTypes();
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
474 handled = extension.onExtensionMessage(type, message); 455 handled = extension.onExtensionMessage(type, message);
475 } catch (/** @type {*} */ err) { 456 } catch (/** @type {*} */ err) {
476 console.error('Failed to process protocol extension ' + type + 457 console.error('Failed to process protocol extension ' + type +
477 ' message: ' + err); 458 ' message: ' + err);
478 } 459 }
479 if (handled) { 460 if (handled) {
480 return true; 461 return true;
481 } 462 }
482 } 463 }
483 464
484 if (remoting.desktopConnectedView) {
485 return remoting.desktopConnectedView.handleExtensionMessage(type, message);
486 }
487
488 return false; 465 return false;
489 }; 466 };
490 467
491 /** 468 /**
492 * Handle a change in the state of the client session prior to successful 469 * Handle a change in the state of the client session prior to successful
493 * connection (after connection, this class no longer handles state change 470 * connection (after connection, this class no longer handles state change
494 * events). Errors that occur while connecting either trigger a reconnect 471 * events). Errors that occur while connecting either trigger a reconnect
495 * or notify the onError handler. 472 * or notify the onError handler.
496 * 473 *
497 * @param {remoting.ClientSession.StateEvent=} event 474 * @param {remoting.ClientSession.StateEvent=} event
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
587 */ 564 */
588 remoting.DefaultSessionConnectorFactory.prototype.createConnector = 565 remoting.DefaultSessionConnectorFactory.prototype.createConnector =
589 function(clientContainer, onConnected, onError, 566 function(clientContainer, onConnected, onError,
590 onConnectionFailed, requiredCapabilities, defaultRemapKeys) { 567 onConnectionFailed, requiredCapabilities, defaultRemapKeys) {
591 return new remoting.SessionConnectorImpl(clientContainer, onConnected, 568 return new remoting.SessionConnectorImpl(clientContainer, onConnected,
592 onError, 569 onError,
593 onConnectionFailed, 570 onConnectionFailed,
594 requiredCapabilities, 571 requiredCapabilities,
595 defaultRemapKeys); 572 defaultRemapKeys);
596 }; 573 };
OLDNEW
« no previous file with comments | « remoting/webapp/crd/js/remoting.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698