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

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

Issue 955283002: Converted remoting.Error from an enum to a class (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Smaller diff. 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
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 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 * @constructor 55 * @constructor
56 * @extends {base.EventSourceImpl} 56 * @extends {base.EventSourceImpl}
57 */ 57 */
58 remoting.ClientSession = function(host, signalStrategy, container, accessCode, 58 remoting.ClientSession = function(host, signalStrategy, container, accessCode,
59 fetchPin, fetchThirdPartyToken, 59 fetchPin, fetchThirdPartyToken,
60 authenticationMethods, mode, clientPairingId, 60 authenticationMethods, mode, clientPairingId,
61 clientPairedSecret, defaultRemapKeys) { 61 clientPairedSecret, defaultRemapKeys) {
62 /** @private */ 62 /** @private */
63 this.state_ = remoting.ClientSession.State.CREATED; 63 this.state_ = remoting.ClientSession.State.CREATED;
64 64
65 /** @private */ 65 /** @private {!remoting.Error} */
66 this.error_ = remoting.Error.NONE; 66 this.error_ = remoting.Error.NONE;
67 67
68 /** @private */ 68 /** @private */
69 this.host_ = host; 69 this.host_ = host;
70 /** @private */ 70 /** @private */
71 this.accessCode_ = accessCode; 71 this.accessCode_ = accessCode;
72 /** @private */ 72 /** @private */
73 this.fetchPin_ = fetchPin; 73 this.fetchPin_ = fetchPin;
74 /** @private */ 74 /** @private */
75 this.fetchThirdPartyToken_ = fetchThirdPartyToken; 75 this.fetchThirdPartyToken_ = fetchThirdPartyToken;
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 * @param {Array<string>} requiredCapabilities A list of capabilities 280 * @param {Array<string>} requiredCapabilities A list of capabilities
281 * required by this application. 281 * required by this application.
282 */ 282 */
283 remoting.ClientSession.prototype.createPluginAndConnect = 283 remoting.ClientSession.prototype.createPluginAndConnect =
284 function(onExtensionMessage, requiredCapabilities) { 284 function(onExtensionMessage, requiredCapabilities) {
285 this.uiHandler_.createPluginAndConnect(onExtensionMessage, 285 this.uiHandler_.createPluginAndConnect(onExtensionMessage,
286 requiredCapabilities); 286 requiredCapabilities);
287 }; 287 };
288 288
289 /** 289 /**
290 * @param {remoting.Error} error 290 * @param {!remoting.Error} error
291 * @param {remoting.ClientPlugin} plugin 291 * @param {remoting.ClientPlugin} plugin
292 */ 292 */
293 remoting.ClientSession.prototype.onPluginInitialized_ = function( 293 remoting.ClientSession.prototype.onPluginInitialized_ = function(
294 error, plugin) { 294 error, plugin) {
295 if (error != remoting.Error.NONE) { 295 if (error.tag != remoting.Error.Tag.NONE) {
296 this.resetWithError_(error); 296 this.resetWithError_(error);
297 } 297 }
298 298
299 this.plugin_ = plugin; 299 this.plugin_ = plugin;
300 plugin.setOnOutgoingIqHandler(this.sendIq_.bind(this)); 300 plugin.setOnOutgoingIqHandler(this.sendIq_.bind(this));
301 plugin.setOnDebugMessageHandler(this.onDebugMessage_.bind(this)); 301 plugin.setOnDebugMessageHandler(this.onDebugMessage_.bind(this));
302 302
303 plugin.setConnectionStatusUpdateHandler( 303 plugin.setConnectionStatusUpdateHandler(
304 this.onConnectionStatusUpdate_.bind(this)); 304 this.onConnectionStatusUpdate_.bind(this));
305 plugin.setRouteChangedHandler(this.onRouteChanged_.bind(this)); 305 plugin.setRouteChangedHandler(this.onRouteChanged_.bind(this));
306 plugin.setConnectionReadyHandler(this.onConnectionReady_.bind(this)); 306 plugin.setConnectionReadyHandler(this.onConnectionReady_.bind(this));
307 plugin.setCapabilitiesHandler(this.onSetCapabilities_.bind(this)); 307 plugin.setCapabilitiesHandler(this.onSetCapabilities_.bind(this));
308 plugin.setGnubbyAuthHandler( 308 plugin.setGnubbyAuthHandler(
309 this.processGnubbyAuthMessage_.bind(this)); 309 this.processGnubbyAuthMessage_.bind(this));
310 plugin.setCastExtensionHandler( 310 plugin.setCastExtensionHandler(
311 this.processCastExtensionMessage_.bind(this)); 311 this.processCastExtensionMessage_.bind(this));
312 312
313 this.initiateConnection_(); 313 this.initiateConnection_();
314 }; 314 };
315 315
316 /** 316 /**
317 * @param {remoting.Error} error 317 * @param {!remoting.Error} error
318 */ 318 */
319 remoting.ClientSession.prototype.resetWithError_ = function(error) { 319 remoting.ClientSession.prototype.resetWithError_ = function(error) {
320 this.signalStrategy_.setIncomingStanzaCallback(null); 320 this.signalStrategy_.setIncomingStanzaCallback(null);
321 this.removePlugin(); 321 this.removePlugin();
322 this.error_ = error; 322 this.error_ = error;
323 this.setState_(remoting.ClientSession.State.FAILED); 323 this.setState_(remoting.ClientSession.State.FAILED);
324 } 324 }
325 325
326 /** 326 /**
327 * Deletes the <embed> element from the container, without sending a 327 * Deletes the <embed> element from the container, without sending a
328 * session_terminate request. This is to be called when the session was 328 * session_terminate request. This is to be called when the session was
329 * disconnected by the Host. 329 * disconnected by the Host.
330 * 330 *
331 * @return {void} Nothing. 331 * @return {void} Nothing.
332 */ 332 */
333 remoting.ClientSession.prototype.removePlugin = function() { 333 remoting.ClientSession.prototype.removePlugin = function() {
334 this.uiHandler_.removePlugin(); 334 this.uiHandler_.removePlugin();
335 this.plugin_ = null; 335 this.plugin_ = null;
336 }; 336 };
337 337
338 /** 338 /**
339 * Disconnect the current session with a particular |error|. The session will 339 * Disconnect the current session with a particular |error|. The session will
340 * raise a |stateChanged| event in response to it. The caller should then call 340 * raise a |stateChanged| event in response to it. The caller should then call
341 * |cleanup| to remove and destroy the <embed> element. 341 * |cleanup| to remove and destroy the <embed> element.
342 * 342 *
343 * @param {remoting.Error} error The reason for the disconnection. Use 343 * @param {!remoting.Error} error The reason for the disconnection. Use
344 * remoting.Error.NONE if there is no error. 344 * remoting.Error.NONE if there is no error.
345 * @return {void} Nothing. 345 * @return {void} Nothing.
346 */ 346 */
347 remoting.ClientSession.prototype.disconnect = function(error) { 347 remoting.ClientSession.prototype.disconnect = function(error) {
348 var state = (error == remoting.Error.NONE) ? 348 var state = (error.tag == remoting.Error.Tag.NONE) ?
349 remoting.ClientSession.State.CLOSED : 349 remoting.ClientSession.State.CLOSED :
350 remoting.ClientSession.State.FAILED; 350 remoting.ClientSession.State.FAILED;
351 351
352 // The plugin won't send a state change notification, so we explicitly log 352 // The plugin won't send a state change notification, so we explicitly log
353 // the fact that the connection has closed. 353 // the fact that the connection has closed.
354 this.logToServer.logClientSessionStateChange(state, error); 354 this.logToServer.logClientSessionStateChange(state, error);
355 this.error_ = error; 355 this.error_ = error;
356 this.setState_(state); 356 this.setState_(state);
357 }; 357 };
358 358
(...skipping 20 matching lines...) Expand all
379 }; 379 };
380 380
381 /** 381 /**
382 * @return {remoting.ClientSession.State} The current state. 382 * @return {remoting.ClientSession.State} The current state.
383 */ 383 */
384 remoting.ClientSession.prototype.getState = function() { 384 remoting.ClientSession.prototype.getState = function() {
385 return this.state_; 385 return this.state_;
386 }; 386 };
387 387
388 /** 388 /**
389 * @return {remoting.Error} The current error code. 389 * @return {!remoting.Error} The current error code.
390 */ 390 */
391 remoting.ClientSession.prototype.getError = function() { 391 remoting.ClientSession.prototype.getError = function() {
392 return this.error_; 392 return this.error_;
393 }; 393 };
394 394
395 /** 395 /**
396 * Called when the client receives its first frame. 396 * Called when the client receives its first frame.
397 * 397 *
398 * @return {void} Nothing. 398 * @return {void} Nothing.
399 */ 399 */
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
624 * @private 624 * @private
625 */ 625 */
626 remoting.ClientSession.prototype.setState_ = function(newState) { 626 remoting.ClientSession.prototype.setState_ = function(newState) {
627 var oldState = this.state_; 627 var oldState = this.state_;
628 this.state_ = newState; 628 this.state_ = newState;
629 var state = this.state_; 629 var state = this.state_;
630 if (oldState == remoting.ClientSession.State.CONNECTING) { 630 if (oldState == remoting.ClientSession.State.CONNECTING) {
631 if (this.state_ == remoting.ClientSession.State.CLOSED) { 631 if (this.state_ == remoting.ClientSession.State.CLOSED) {
632 state = remoting.ClientSession.State.CONNECTION_CANCELED; 632 state = remoting.ClientSession.State.CONNECTION_CANCELED;
633 } else if (this.state_ == remoting.ClientSession.State.FAILED && 633 } else if (this.state_ == remoting.ClientSession.State.FAILED &&
634 this.error_ == remoting.Error.HOST_IS_OFFLINE && 634 this.error_.tag == remoting.Error.Tag.HOST_IS_OFFLINE &&
635 !this.logHostOfflineErrors_) { 635 !this.logHostOfflineErrors_) {
636 // The application requested host-offline errors to be suppressed, for 636 // The application requested host-offline errors to be suppressed, for
637 // example, because this connection attempt is using a cached host JID. 637 // example, because this connection attempt is using a cached host JID.
638 console.log('Suppressing host-offline error.'); 638 console.log('Suppressing host-offline error.');
639 state = remoting.ClientSession.State.CONNECTION_CANCELED; 639 state = remoting.ClientSession.State.CONNECTION_CANCELED;
640 } 640 }
641 } else if (oldState == remoting.ClientSession.State.CONNECTED && 641 } else if (oldState == remoting.ClientSession.State.CONNECTED &&
642 this.state_ == remoting.ClientSession.State.FAILED) { 642 this.state_ == remoting.ClientSession.State.FAILED) {
643 state = remoting.ClientSession.State.CONNECTION_DROPPED; 643 state = remoting.ClientSession.State.CONNECTION_DROPPED;
644 } 644 }
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
768 if (this.state_ != remoting.ClientSession.State.CONNECTED) { 768 if (this.state_ != remoting.ClientSession.State.CONNECTED) {
769 return; 769 return;
770 } 770 }
771 /** @type {remoting.ClientSession} */ 771 /** @type {remoting.ClientSession} */
772 var that = this; 772 var that = this;
773 773
774 /** @param {string} token */ 774 /** @param {string} token */
775 var sendToken = function(token) { 775 var sendToken = function(token) {
776 remoting.clientSession.sendClientMessage('accessToken', token); 776 remoting.clientSession.sendClientMessage('accessToken', token);
777 }; 777 };
778 /** @param {remoting.Error} error */ 778 /** @param {!remoting.Error} error */
779 var sendError = function(error) { 779 var sendError = function(error) {
780 console.log('Failed to refresh access token: ' + error); 780 console.log('Failed to refresh access token: ' + error);
781 }; 781 };
782 remoting.identity.getNewToken(). 782 remoting.identity.getNewToken().
783 then(sendToken). 783 then(sendToken).
784 catch(remoting.Error.handler(sendError)); 784 catch(remoting.Error.handler(sendError));
785 window.setTimeout(this.sendGoogleDriveAccessToken_.bind(this), 785 window.setTimeout(this.sendGoogleDriveAccessToken_.bind(this),
786 remoting.ACCESS_TOKEN_RESEND_INTERVAL_MS); 786 remoting.ACCESS_TOKEN_RESEND_INTERVAL_MS);
787 }; 787 };
788 788
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
844 * @param {boolean} enable True to enable rendering. 844 * @param {boolean} enable True to enable rendering.
845 */ 845 */
846 remoting.ClientSession.prototype.enableDebugRegion = function(enable) { 846 remoting.ClientSession.prototype.enableDebugRegion = function(enable) {
847 if (enable) { 847 if (enable) {
848 this.plugin_.setDebugDirtyRegionHandler( 848 this.plugin_.setDebugDirtyRegionHandler(
849 this.uiHandler_.handleDebugRegion.bind(this.uiHandler_)); 849 this.uiHandler_.handleDebugRegion.bind(this.uiHandler_));
850 } else { 850 } else {
851 this.plugin_.setDebugDirtyRegionHandler(null); 851 this.plugin_.setDebugDirtyRegionHandler(null);
852 } 852 }
853 } 853 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698