OLD | NEW |
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 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
85 | 85 |
86 /** @private {remoting.ClientPlugin} */ | 86 /** @private {remoting.ClientPlugin} */ |
87 this.plugin_ = plugin; | 87 this.plugin_ = plugin; |
88 plugin.setConnectionEventHandler(this); | 88 plugin.setConnectionEventHandler(this); |
89 | 89 |
90 this.defineEvents(Object.keys(remoting.ClientSession.Events)); | 90 this.defineEvents(Object.keys(remoting.ClientSession.Events)); |
91 }; | 91 }; |
92 | 92 |
93 /** @enum {string} */ | 93 /** @enum {string} */ |
94 remoting.ClientSession.Events = { | 94 remoting.ClientSession.Events = { |
95 stateChanged: 'stateChanged', | 95 stateChanged: 'stateChanged', // deprecated. |
96 videoChannelStateChanged: 'videoChannelStateChanged', | 96 videoChannelStateChanged: 'videoChannelStateChanged', |
97 }; | 97 }; |
98 | 98 |
| 99 /** |
| 100 * @interface |
| 101 * [START]-------> [onConnected] ------> [onDisconnected] |
| 102 * | | |
| 103 * |-----> [OnConnectionFailed] |----> [onError] |
| 104 * |
| 105 * TODO(kelvinp): Route session state changes through this interface. |
| 106 */ |
| 107 remoting.ClientSession.EventHandler = function() {}; |
| 108 |
| 109 /** |
| 110 * Called when the connection failed before it is connected. |
| 111 * |
| 112 * @param {!remoting.Error} error |
| 113 */ |
| 114 remoting.ClientSession.EventHandler.prototype.onConnectionFailed = |
| 115 function(error) {}; |
| 116 |
| 117 /** |
| 118 * Called when a new session has been connected. The |connectionInfo| will be |
| 119 * valid until onDisconnected() or onError() is called. |
| 120 * |
| 121 * @param {!remoting.ConnectionInfo} connectionInfo |
| 122 */ |
| 123 remoting.ClientSession.EventHandler.prototype.onConnected = |
| 124 function(connectionInfo) {}; |
| 125 |
| 126 /** |
| 127 * Called when the current session has been disconnected. |
| 128 */ |
| 129 remoting.ClientSession.EventHandler.prototype.onDisconnected = function() {}; |
| 130 |
| 131 /** |
| 132 * Called when an error needs to be displayed to the user. |
| 133 * @param {!remoting.Error} error |
| 134 */ |
| 135 remoting.ClientSession.EventHandler.prototype.onError = function(error) {}; |
| 136 |
99 // Note that the positive values in both of these enums are copied directly | 137 // Note that the positive values in both of these enums are copied directly |
100 // from connection_to_host.h and must be kept in sync. Code in | 138 // from connection_to_host.h and must be kept in sync. Code in |
101 // chromoting_instance.cc converts the C++ enums into strings that must match | 139 // chromoting_instance.cc converts the C++ enums into strings that must match |
102 // the names given here. | 140 // the names given here. |
103 // The negative values represent state transitions that occur within the | 141 // The negative values represent state transitions that occur within the |
104 // web-app that have no corresponding plugin state transition. | 142 // web-app that have no corresponding plugin state transition. |
105 /** @enum {number} */ | 143 /** @enum {number} */ |
106 remoting.ClientSession.State = { | 144 remoting.ClientSession.State = { |
107 CONNECTION_CANCELED: -3, // Connection closed (gracefully) before connecting. | 145 CONNECTION_CANCELED: -3, // Connection closed (gracefully) before connecting. |
108 CONNECTION_DROPPED: -2, // Succeeded, but subsequently closed with an error. | 146 CONNECTION_DROPPED: -2, // Succeeded, but subsequently closed with an error. |
(...skipping 428 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
537 * errors should not be logged because the JID will be refreshed and the | 575 * errors should not be logged because the JID will be refreshed and the |
538 * connection retried. | 576 * connection retried. |
539 * | 577 * |
540 * @param {boolean} enable True to log host-offline errors; false to suppress. | 578 * @param {boolean} enable True to log host-offline errors; false to suppress. |
541 */ | 579 */ |
542 remoting.ClientSession.prototype.logHostOfflineErrors = function(enable) { | 580 remoting.ClientSession.prototype.logHostOfflineErrors = function(enable) { |
543 this.logHostOfflineErrors_ = enable; | 581 this.logHostOfflineErrors_ = enable; |
544 }; | 582 }; |
545 | 583 |
546 /** | 584 /** |
547 * Request pairing with the host for PIN-less authentication. | |
548 * | |
549 * @param {string} clientName The human-readable name of the client. | |
550 * @param {function(string, string):void} onDone Callback to receive the | |
551 * client id and shared secret when they are available. | |
552 */ | |
553 remoting.ClientSession.prototype.requestPairing = function(clientName, onDone) { | |
554 if (this.plugin_) { | |
555 this.plugin_.requestPairing(clientName, onDone); | |
556 } | |
557 }; | |
558 | |
559 /** | |
560 * Sends a clipboard item to the host. | 585 * Sends a clipboard item to the host. |
561 * | 586 * |
562 * @param {string} mimeType The MIME type of the clipboard item. | 587 * @param {string} mimeType The MIME type of the clipboard item. |
563 * @param {string} item The clipboard item. | 588 * @param {string} item The clipboard item. |
564 */ | 589 */ |
565 remoting.ClientSession.prototype.sendClipboardItem = function(mimeType, item) { | 590 remoting.ClientSession.prototype.sendClipboardItem = function(mimeType, item) { |
566 if (!this.plugin_) | 591 if (!this.plugin_) |
567 return; | 592 return; |
568 this.plugin_.sendClipboardItem(mimeType, item); | 593 this.plugin_.sendClipboardItem(mimeType, item); |
569 }; | 594 }; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
603 'https://docs.google.com/feeds/', | 628 'https://docs.google.com/feeds/', |
604 'https://www.googleapis.com/auth/drive' | 629 'https://www.googleapis.com/auth/drive' |
605 ]; | 630 ]; |
606 remoting.identity.getNewToken(googleDriveScopes). | 631 remoting.identity.getNewToken(googleDriveScopes). |
607 then(sendToken). | 632 then(sendToken). |
608 catch(remoting.Error.handler(sendError)); | 633 catch(remoting.Error.handler(sendError)); |
609 window.setTimeout(this.sendGoogleDriveAccessToken_.bind(this), | 634 window.setTimeout(this.sendGoogleDriveAccessToken_.bind(this), |
610 remoting.ACCESS_TOKEN_RESEND_INTERVAL_MS); | 635 remoting.ACCESS_TOKEN_RESEND_INTERVAL_MS); |
611 }; | 636 }; |
612 | 637 |
OLD | NEW |