Hide display object from RFB callers

This commit is contained in:
Pierre Ossman 2017-10-13 12:46:47 +02:00
parent 6929a0a183
commit b9854a5ca5
3 changed files with 72 additions and 38 deletions

View File

@ -1216,11 +1216,10 @@ var UI = {
var screen = UI.screenSize(); var screen = UI.screenSize();
if (screen && UI.connected && UI.rfb.get_display()) { if (screen && UI.connected) {
var display = UI.rfb.get_display();
var resizeMode = UI.getSetting('resize'); var resizeMode = UI.getSetting('resize');
display.set_scale(1); UI.rfb.set_scale(1);
// Make sure the viewport is adjusted first // Make sure the viewport is adjusted first
UI.updateViewClip(); UI.updateViewClip();
@ -1258,13 +1257,12 @@ var UI = {
var screen = UI.screenSize(); var screen = UI.screenSize();
if (!screen || !UI.connected || !UI.rfb.get_display()) { if (!screen || !UI.connected) {
return; return;
} }
var display = UI.rfb.get_display();
var downscaleOnly = resizeMode === 'downscale'; var downscaleOnly = resizeMode === 'downscale';
display.autoscale(screen.w, screen.h, downscaleOnly); UI.rfb.autoscale(screen.w, screen.h, downscaleOnly);
UI.fixScrollbars(); UI.fixScrollbars();
}, },
@ -1302,8 +1300,7 @@ var UI = {
updateViewClip: function() { updateViewClip: function() {
if (!UI.rfb) return; if (!UI.rfb) return;
var display = UI.rfb.get_display(); var cur_clip = UI.rfb.get_viewport();
var cur_clip = display.get_viewport();
var new_clip = UI.getSetting('view_clip'); var new_clip = UI.getSetting('view_clip');
var resizeSetting = UI.getSetting('resize'); var resizeSetting = UI.getSetting('resize');
@ -1316,7 +1313,7 @@ var UI = {
} }
if (cur_clip !== new_clip) { if (cur_clip !== new_clip) {
display.set_viewport(new_clip); UI.rfb.set_viewport(new_clip);
} }
var size = UI.screenSize(); var size = UI.screenSize();
@ -1324,7 +1321,7 @@ var UI = {
if (new_clip && size) { if (new_clip && size) {
// When clipping is enabled, the screen is limited to // When clipping is enabled, the screen is limited to
// the size of the browser window. // the size of the browser window.
display.viewportChangeSize(size.w, size.h); UI.rfb.viewportChangeSize(size.w, size.h);
UI.fixScrollbars(); UI.fixScrollbars();
} }
@ -1374,8 +1371,8 @@ var UI = {
// Check if viewport drag is possible. It is only possible // Check if viewport drag is possible. It is only possible
// if the remote display is clipping the client display. // if the remote display is clipping the client display.
if (UI.rfb.get_display().get_viewport() && if (UI.rfb.get_viewport() &&
UI.rfb.get_display().clippingDisplay()) { UI.rfb.clippingDisplay()) {
clipping = true; clipping = true;
} }

View File

@ -338,6 +338,21 @@ RFB.prototype = {
RFB.messages.clientCutText(this._sock, text); RFB.messages.clientCutText(this._sock, text);
}, },
autoscale: function (width, height, downscaleOnly) {
if (this._rfb_connection_state !== 'connected') { return; }
this._display.autoscale(width, height, downscaleOnly);
},
viewportChangeSize: function(width, height) {
if (this._rfb_connection_state !== 'connected') { return; }
this._display.viewportChangeSize(width, height);
},
clippingDisplay: function () {
if (this._rfb_connection_state !== 'connected') { return false; }
return this._display.clippingDisplay();
},
// Requests a change of remote desktop size. This message is an extension // Requests a change of remote desktop size. This message is an extension
// and may only be sent if we have received an ExtendedDesktopSize message // and may only be sent if we have received an ExtendedDesktopSize message
requestDesktopSize: function (width, height) { requestDesktopSize: function (width, height) {
@ -1478,6 +1493,8 @@ make_properties(RFB, [
['local_cursor', 'rw', 'bool'], // Request locally rendered cursor ['local_cursor', 'rw', 'bool'], // Request locally rendered cursor
['shared', 'rw', 'bool'], // Request shared mode ['shared', 'rw', 'bool'], // Request shared mode
['view_only', 'rw', 'bool'], // Disable client mouse/keyboard ['view_only', 'rw', 'bool'], // Disable client mouse/keyboard
['scale', 'rw', 'float'], // Display area scale factor
['viewport', 'rw', 'bool'], // Use viewport clipping
['xvp_password_sep', 'rw', 'str'], // Separator for XVP password fields ['xvp_password_sep', 'rw', 'str'], // Separator for XVP password fields
['disconnectTimeout', 'rw', 'int'], // Time (s) to wait for disconnection ['disconnectTimeout', 'rw', 'int'], // Time (s) to wait for disconnection
['wsProtocols', 'rw', 'arr'], // Protocols to use in the WebSocket connection ['wsProtocols', 'rw', 'arr'], // Protocols to use in the WebSocket connection
@ -1532,7 +1549,22 @@ RFB.prototype.set_view_only = function (view_only) {
} }
}; };
RFB.prototype.get_display = function () { return this._display; }; RFB.prototype.set_scale = function (scale) {
this._display.set_scale(scale);
};
RFB.prototype.get_scale = function () {
return this._display.get_scale();
};
RFB.prototype.set_viewport = function (viewport) {
this._display.set_viewport(viewport);
};
RFB.prototype.get_viewport = function () {
return this._display.get_viewport();
};
RFB.prototype.get_keyboard = function () { return this._keyboard; }; RFB.prototype.get_keyboard = function () { return this._keyboard; };
RFB.prototype.get_mouse = function () { return this._mouse; }; RFB.prototype.get_mouse = function () { return this._mouse; };

View File

@ -27,18 +27,20 @@ attribute mode is one of the following:
RW - read write RW - read write
WO - write once WO - write once
| name | type | mode | default | description | name | type | mode | default | description
| ----------------- | ---- | ---- | ---------- | ------------ | ----------------- | ----- | ---- | ---------- | ------------
| target | DOM | WO | null | Canvas element for rendering (passed to Display, Mouse and Keyboard) | target | DOM | WO | null | Canvas element for rendering (passed to Display, Mouse and Keyboard)
| encrypt | bool | RW | false | Use TLS/SSL encryption | encrypt | bool | RW | false | Use TLS/SSL encryption
| local_cursor | bool | RW | false | Request locally rendered cursor | local_cursor | bool | RW | false | Request locally rendered cursor
| shared | bool | RW | true | Request shared VNC mode | shared | bool | RW | true | Request shared VNC mode
| view_only | bool | RW | false | Disable client mouse/keyboard | view_only | bool | RW | false | Disable client mouse/keyboard
| xvp_password_sep | str | RW | '@' | Separator for XVP password fields | scale | float | RW | 1.0 | Display area scale factor
| disconnectTimeout | int | RW | 3 | Time (in seconds) to wait for disconnection | viewport | bool | RW | false | Use viewport clipping
| wsProtocols | arr | RW | ['binary'] | Protocols to use in the WebSocket connection | xvp_password_sep | str | RW | '@' | Separator for XVP password fields
| repeaterID | str | RW | '' | UltraVNC RepeaterID to connect to | disconnectTimeout | int | RW | 3 | Time (in seconds) to wait for disconnection
| viewportDrag | bool | RW | false | Move the viewport on mouse drags | wsProtocols | arr | RW | ['binary'] | Protocols to use in the WebSocket connection
| repeaterID | str | RW | '' | UltraVNC RepeaterID to connect to
| viewportDrag | bool | RW | false | Move the viewport on mouse drags
## 2 Methods ## 2 Methods
@ -47,19 +49,22 @@ In addition to the getter and setter methods to modify configuration
attributes, the RFB object has other methods that are available in the attributes, the RFB object has other methods that are available in the
object instance. object instance.
| name | parameters | description | name | parameters | description
| ------------------ | ---------------------------- | ------------ | ------------------ | ------------------------------ | ------------
| connect | (host, port, password, path) | Connect to the given host:port/path. Optional password and path. | connect | (host, port, password, path) | Connect to the given host:port/path. Optional password and path.
| disconnect | () | Disconnect | disconnect | () | Disconnect
| sendPassword | (passwd) | Send password after onPasswordRequired callback | sendPassword | (passwd) | Send password after onPasswordRequired callback
| sendCtrlAltDel | () | Send Ctrl-Alt-Del key sequence | sendCtrlAltDel | () | Send Ctrl-Alt-Del key sequence
| xvpOp | (ver, op) | Send a XVP operation (2=shutdown, 3=reboot, 4=reset) | xvpOp | (ver, op) | Send a XVP operation (2=shutdown, 3=reboot, 4=reset)
| xvpShutdown | () | Send XVP shutdown. | xvpShutdown | () | Send XVP shutdown.
| xvpReboot | () | Send XVP reboot. | xvpReboot | () | Send XVP reboot.
| xvpReset | () | Send XVP reset. | xvpReset | () | Send XVP reset.
| sendKey | (keysym, code, down) | Send a key press event. If down not specified, send a down and up event. | sendKey | (keysym, code, down) | Send a key press event. If down not specified, send a down and up event.
| clipboardPasteFrom | (text) | Send a clipboard paste event | clipboardPasteFrom | (text) | Send a clipboard paste event
| requestDesktopSize | (width, height) | Send a request to change the remote desktop size. | autoscale | (width, height, downscaleOnly) | Scale the display
| clippingDisplay | () | Check if the remote display is larger than the client display
| requestDesktopSize | (width, height) | Send a request to change the remote desktop size.
| viewportChangeSize | (width, height) | Change size of the viewport
## 3 Callbacks ## 3 Callbacks