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

Unified Diff: remoting/webapp/crd/js/client_session.js

Issue 761673008: Add a per-host desktopScale option, available via the JS console. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add setDesktopZoom helper Created 6 years 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/webapp/crd/js/client_session.js
diff --git a/remoting/webapp/crd/js/client_session.js b/remoting/webapp/crd/js/client_session.js
index 4d68335fde00ad9256711aefc89df57b9ad9ce8a..0d4c32fef49b7cce900e69d00119ad14051b8957 100644
--- a/remoting/webapp/crd/js/client_session.js
+++ b/remoting/webapp/crd/js/client_session.js
@@ -129,6 +129,8 @@ remoting.ClientSession = function(signalStrategy, container, hostDisplayName,
/** @private */
this.resizeToClient_ = true;
/** @private */
+ this.desktopZoom_ = 1.0;
+ /** @private */
this.remapKeys_ = '';
/** @private */
this.hasReceivedFrame_ = false;
@@ -377,6 +379,7 @@ remoting.ClientSession.STATS_KEY_ROUNDTRIP_LATENCY = 'roundtripLatency';
remoting.ClientSession.KEY_REMAP_KEYS = 'remapKeys';
remoting.ClientSession.KEY_RESIZE_TO_CLIENT = 'resizeToClient';
remoting.ClientSession.KEY_SHRINK_TO_FIT = 'shrinkToFit';
+remoting.ClientSession.KEY_DESKTOP_ZOOM = 'desktopZoom';
/**
* Set of capabilities for which hasCapability_() can be used to test.
@@ -502,6 +505,12 @@ remoting.ClientSession.prototype.onHostSettingsLoaded_ = function(options) {
this.shrinkToFit_ = /** @type {boolean} */
options[remoting.ClientSession.KEY_SHRINK_TO_FIT];
}
+ if (remoting.ClientSession.KEY_DESKTOP_ZOOM in options &&
+ typeof(options[remoting.ClientSession.KEY_DESKTOP_ZOOM]) ==
+ 'number') {
+ this.desktopZoom_ = /** @type {number} */
+ options[remoting.ClientSession.KEY_DESKTOP_ZOOM];
+ }
/** @param {boolean} result */
this.plugin_.initialize(this.onPluginInitialized_.bind(this));
@@ -772,6 +781,25 @@ remoting.ClientSession.prototype.sendPrintScreen = function() {
}
/**
+ * Sets and stores the zoom factor to apply to host sizing requests.
+ *
+ * @param {number} desktopZoom Scale factor to apply.
+ */
+remoting.ClientSession.prototype.setDesktopZoom =
+ function(desktopZoom) {
+ // Apply the new desktop zoom, if resize to client is enabled.
Jamie 2014/12/15 18:39:06 Nit: resize-to-client
Wez 2014/12/15 21:49:42 Done.
+ this.desktopZoom_ = desktopZoom;
+ if (this.resizeToClient_) {
+ this.notifyClientResolution_();
+ }
+
+ // Save the new desktop zoom setting.
+ var options = {};
+ options[remoting.ClientSession.KEY_DESKTOP_ZOOM] = this.desktopZoom_;
+ remoting.HostSettings.save(this.hostId_, options);
+}
+
+/**
* Sets and stores the key remapping setting for the current host.
*
* @param {string} remappings Comma separated list of key remappings.
@@ -842,10 +870,7 @@ remoting.ClientSession.prototype.applyRemapKeys_ = function(apply) {
remoting.ClientSession.prototype.setScreenMode =
function(shrinkToFit, resizeToClient) {
if (resizeToClient && !this.resizeToClient_) {
- var clientArea = this.getClientArea_();
- this.plugin_.notifyClientResolution(clientArea.width,
- clientArea.height,
- window.devicePixelRatio);
+ this.notifyClientResolution_();
}
// If enabling shrink, reset bump-scroll offsets.
@@ -1008,10 +1033,7 @@ remoting.ClientSession.prototype.onConnectionStatusUpdate_ =
this.setFocusHandlers_();
this.onDesktopSizeChanged_();
if (this.resizeToClient_) {
- var clientArea = this.getClientArea_();
- this.plugin_.notifyClientResolution(clientArea.width,
- clientArea.height,
- window.devicePixelRatio);
+ this.notifyClientResolution_();
}
// Activate full-screen related UX.
remoting.fullscreen.addListener(this.callOnFullScreenChanged_);
@@ -1104,10 +1126,7 @@ remoting.ClientSession.prototype.onSetCapabilities_ = function(capabilities) {
this.capabilities_ = capabilities;
if (this.hasCapability_(
remoting.ClientSession.Capability.SEND_INITIAL_RESOLUTION)) {
- var clientArea = this.getClientArea_();
- this.plugin_.notifyClientResolution(clientArea.width,
- clientArea.height,
- window.devicePixelRatio);
+ this.notifyClientResolution_();
}
if (this.hasCapability_(remoting.ClientSession.Capability.GOOGLE_DRIVE)) {
this.sendGoogleDriveAccessToken_();
@@ -1176,10 +1195,7 @@ remoting.ClientSession.prototype.onResize = function() {
}
var clientArea = this.getClientArea_();
this.notifyClientResolutionTimer_ = window.setTimeout(
- this.plugin_.notifyClientResolution.bind(this.plugin_,
- clientArea.width,
- clientArea.height,
- window.devicePixelRatio),
+ this.notifyClientResolution_.bind(this),
kResizeRateLimitMs);
}
@@ -1633,6 +1649,18 @@ remoting.ClientSession.prototype.getClientArea_ = function() {
};
/**
+ * Notifies the host of the client's current dimensions and DPI.
+ * Also takes into account per-host scaling factor, if configured.
+ * @private
+ */
+remoting.ClientSession.prototype.notifyClientResolution_ = function() {
+ var clientArea = this.getClientArea_();
+ this.plugin_.notifyClientResolution(clientArea.width * this.desktopZoom_,
+ clientArea.height * this.desktopZoom_,
+ window.devicePixelRatio);
Jamie 2014/12/15 18:39:06 Don't you also need to apply the inverse scale to
Wez 2014/12/15 21:49:42 That's a good question. I've added code in update
+}
+
+/**
* @param {string} url
* @param {number} hotspotX
* @param {number} hotspotY
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698