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

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

Issue 13932020: Set the initial resolution of an RDP session to the client screen resolution if it is available. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix Clang Created 7 years, 8 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/client_plugin_async.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 (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 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 remoting.ClientSession.ConnectionError.NONE; 221 remoting.ClientSession.ConnectionError.NONE;
222 222
223 /** 223 /**
224 * The id of the client plugin 224 * The id of the client plugin
225 * 225 *
226 * @const 226 * @const
227 */ 227 */
228 remoting.ClientSession.prototype.PLUGIN_ID = 'session-client-plugin'; 228 remoting.ClientSession.prototype.PLUGIN_ID = 'session-client-plugin';
229 229
230 /** 230 /**
231 * Set of capabilities for which hasCapability_() can be used to test.
232 *
233 * @enum {string}
234 */
235 remoting.ClientSession.Capability = {
236 // When enabled this capability causes the client to send its screen
237 // resolution to the host once connection has been established. See
238 // this.plugin.notifyClientResolution().
239 SEND_INITIAL_RESOLUTION: 'sendInitialResolution'
240 };
241
242 /**
243 * The set of capabilities negotiated between the client and host.
244 * @type {Array.<string>}
245 * @private
246 */
247 remoting.ClientSession.prototype.capabilities_ = null;
248
249 /**
250 * @param {remoting.ClientSession.Capability} capability The capability to test
251 * for.
252 * @return {boolean} True if the capability has been negotiated between
253 * the client and host.
254 * @private
255 */
256 remoting.ClientSession.prototype.hasCapability_ = function(capability) {
257 if (this.capabilities_ == null)
258 return false;
259
260 return this.capabilities_.indexOf(capability) > -1;
261 };
262
263 /**
231 * @param {Element} container The element to add the plugin to. 264 * @param {Element} container The element to add the plugin to.
232 * @param {string} id Id to use for the plugin element . 265 * @param {string} id Id to use for the plugin element .
233 * @return {remoting.ClientPlugin} Create plugin object for the locally 266 * @return {remoting.ClientPlugin} Create plugin object for the locally
234 * installed plugin. 267 * installed plugin.
235 */ 268 */
236 remoting.ClientSession.prototype.createClientPlugin_ = function(container, id) { 269 remoting.ClientSession.prototype.createClientPlugin_ = function(container, id) {
237 var plugin = /** @type {remoting.ViewerPlugin} */ 270 var plugin = /** @type {remoting.ViewerPlugin} */
238 document.createElement('embed'); 271 document.createElement('embed');
239 272
240 plugin.id = id; 273 plugin.id = id;
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 this.plugin.onDebugMessageHandler = function(msg) { 395 this.plugin.onDebugMessageHandler = function(msg) {
363 console.log('plugin: ' + msg); 396 console.log('plugin: ' + msg);
364 }; 397 };
365 398
366 this.plugin.onConnectionStatusUpdateHandler = 399 this.plugin.onConnectionStatusUpdateHandler =
367 this.onConnectionStatusUpdate_.bind(this); 400 this.onConnectionStatusUpdate_.bind(this);
368 this.plugin.onConnectionReadyHandler = 401 this.plugin.onConnectionReadyHandler =
369 this.onConnectionReady_.bind(this); 402 this.onConnectionReady_.bind(this);
370 this.plugin.onDesktopSizeUpdateHandler = 403 this.plugin.onDesktopSizeUpdateHandler =
371 this.onDesktopSizeChanged_.bind(this); 404 this.onDesktopSizeChanged_.bind(this);
405 this.plugin.onSetCapabilitiesHandler =
406 this.onSetCapabilities_.bind(this);
372 407
373 this.connectPluginToWcs_(); 408 this.connectPluginToWcs_();
374 }; 409 };
375 410
376 /** 411 /**
377 * Deletes the <embed> element from the container, without sending a 412 * Deletes the <embed> element from the container, without sending a
378 * session_terminate request. This is to be called when the session was 413 * session_terminate request. This is to be called when the session was
379 * disconnected by the Host. 414 * disconnected by the Host.
380 * 415 *
381 * @return {void} Nothing. 416 * @return {void} Nothing.
(...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after
754 */ 789 */
755 remoting.ClientSession.prototype.onConnectionReady_ = function(ready) { 790 remoting.ClientSession.prototype.onConnectionReady_ = function(ready) {
756 if (!ready) { 791 if (!ready) {
757 this.plugin.element().classList.add("session-client-inactive"); 792 this.plugin.element().classList.add("session-client-inactive");
758 } else { 793 } else {
759 this.plugin.element().classList.remove("session-client-inactive"); 794 this.plugin.element().classList.remove("session-client-inactive");
760 } 795 }
761 } 796 }
762 797
763 /** 798 /**
799 * Called when the client-host capabilities negotiation is complete.
800 *
801 * @param {!Array.<string>} capabilities The set of capabilities negotiated
802 * between the client and host.
803 * @return {void} Nothing.
804 * @private
805 */
806 remoting.ClientSession.prototype.onSetCapabilities_ = function(capabilities) {
807 if (this.capabilities_ != null) {
808 console.error('onSetCapabilities_() is called more than once');
809 return;
810 }
811
812 this.capabilities_ = capabilities;
813 if (this.hasCapability_(
814 remoting.ClientSession.Capability.SEND_INITIAL_RESOLUTION)) {
815 this.plugin.notifyClientResolution(window.innerWidth,
816 window.innerHeight,
817 window.devicePixelRatio);
818 }
819 };
820
821 /**
764 * @private 822 * @private
765 * @param {remoting.ClientSession.State} newState The new state for the session. 823 * @param {remoting.ClientSession.State} newState The new state for the session.
766 * @return {void} Nothing. 824 * @return {void} Nothing.
767 */ 825 */
768 remoting.ClientSession.prototype.setState_ = function(newState) { 826 remoting.ClientSession.prototype.setState_ = function(newState) {
769 var oldState = this.state; 827 var oldState = this.state;
770 this.state = newState; 828 this.state = newState;
771 var state = this.state; 829 var state = this.state;
772 if (oldState == remoting.ClientSession.State.CONNECTING) { 830 if (oldState == remoting.ClientSession.State.CONNECTING) {
773 if (this.state == remoting.ClientSession.State.CLOSED) { 831 if (this.state == remoting.ClientSession.State.CLOSED) {
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after
1130 var lateAdjustment = 1 + (now - expected) / timeout; 1188 var lateAdjustment = 1 + (now - expected) / timeout;
1131 if (!that.scroll_(lateAdjustment * dx, lateAdjustment * dy)) { 1189 if (!that.scroll_(lateAdjustment * dx, lateAdjustment * dy)) {
1132 that.bumpScrollTimer_ = window.setTimeout( 1190 that.bumpScrollTimer_ = window.setTimeout(
1133 function() { repeatScroll(now + timeout); }, 1191 function() { repeatScroll(now + timeout); },
1134 timeout); 1192 timeout);
1135 } 1193 }
1136 }; 1194 };
1137 repeatScroll(new Date().getTime()); 1195 repeatScroll(new Date().getTime());
1138 } 1196 }
1139 }; 1197 };
OLDNEW
« no previous file with comments | « remoting/webapp/client_plugin_async.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698