summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre Ossman <ossman@cendio.se>2017-10-14 11:24:16 +0200
committerPierre Ossman <ossman@cendio.se>2017-10-31 15:23:59 +0100
commit05846c8a8898c84098db4da299cde320283abdad (patch)
treeee728af6e38d3ef1521e809bc7b1f21e5957cd08
parent3fde04b9e5ecd9cc76c8f2b8630a7123d9054164 (diff)
downloadnovnc-05846c8a8898c84098db4da299cde320283abdad.tar.gz
Tidy up variable initialisation
Sort things by category, and organise everything in the same place. We don't support reuse of RFB objects so we can safely init everything in the constructor.
-rw-r--r--core/rfb.js83
-rw-r--r--tests/test.rfb.js6
2 files changed, 33 insertions, 56 deletions
diff --git a/core/rfb.js b/core/rfb.js
index f03ae28..9ca0d84 100644
--- a/core/rfb.js
+++ b/core/rfb.js
@@ -34,42 +34,59 @@ export default function RFB(defaults) {
defaults = {};
}
+ // Connection details
this._rfb_host = '';
this._rfb_port = 5900;
this._rfb_credentials = {};
this._rfb_path = '';
+ // Internal state
this._rfb_connection_state = '';
this._rfb_init_state = '';
- this._rfb_version = 0;
- this._rfb_max_version = 3.8;
this._rfb_auth_scheme = '';
this._rfb_disconnect_reason = "";
+ // Server capabilities
+ this._rfb_version = 0;
+ this._rfb_max_version = 3.8;
this._rfb_tightvnc = false;
this._rfb_xvp_ver = 0;
+ this._fb_width = 0;
+ this._fb_height = 0;
+
+ this._fb_name = "";
+
this._capabilities = { power: false, resize: false };
- this._encHandlers = {};
- this._encStats = {};
+ this._supportsFence = false;
+ this._supportsContinuousUpdates = false;
+ this._enabledContinuousUpdates = false;
+
+ this._supportsSetDesktopSize = false;
+ this._screen_id = 0;
+ this._screen_flags = 0;
+
+ this._qemuExtKeyEventSupported = false;
+
+ // Internal objects
this._sock = null; // Websock object
this._display = null; // Display object
this._flushing = false; // Display flushing state
this._keyboard = null; // Keyboard input handler object
this._mouse = null; // Mouse input handler object
- this._disconnTimer = null; // disconnection timer
- this._supportsFence = false;
+ // Timers
+ this._disconnTimer = null; // disconnection timer
- this._supportsContinuousUpdates = false;
- this._enabledContinuousUpdates = false;
+ // Decoder states and stats
+ this._encHandlers = {};
+ this._encStats = {};
- // Frame buffer update state
this._FBU = {
rects: 0,
- subrects: 0, // RRE
+ subrects: 0, // RRE and HEXTILE
lines: 0, // RAW
tiles: 0, // HEXTILE
bytes: 0,
@@ -80,12 +97,11 @@ export default function RFB(defaults) {
encoding: 0,
subencoding: -1,
background: null,
- zlib: [] // TIGHT zlib streams
+ zlibs: [] // TIGHT zlib streams
};
-
- this._fb_width = 0;
- this._fb_height = 0;
- this._fb_name = "";
+ for (var i = 0; i < 4; i++) {
+ this._FBU.zlibs[i] = new Inflator();
+ }
this._destBuff = null;
this._paletteBuff = new Uint8Array(1024); // 256 * 4 (max palette size * max bytes-per-pixel)
@@ -105,10 +121,6 @@ export default function RFB(defaults) {
pixels: 0
};
- this._supportsSetDesktopSize = false;
- this._screen_id = 0;
- this._screen_flags = 0;
-
// Mouse state
this._mouse_buttonMask = 0;
this._mouse_arr = [];
@@ -116,9 +128,6 @@ export default function RFB(defaults) {
this._viewportDragPos = {};
this._viewportHasMoved = false;
- // QEMU Extended Key Event support - default to false
- this._qemuExtKeyEventSupported = false;
-
// set the default value on user-facing properties
set_defaults(this, defaults, {
'target': 'null', // VNC display rendering Canvas object
@@ -173,6 +182,7 @@ export default function RFB(defaults) {
Log.Error("Display exception: " + exc);
throw exc;
}
+ this._display.clear();
this._keyboard = new Keyboard({target: this._target,
onKeyEvent: this._handleKeyEvent.bind(this)});
@@ -229,9 +239,6 @@ export default function RFB(defaults) {
Log.Warn("WebSocket on-error event");
});
- this._init_vars();
- this._cleanup();
-
var rmode = this._display.get_render_mode();
Log.Info("Using native WebSockets, render mode: " + rmode);
@@ -368,7 +375,6 @@ RFB.prototype = {
_connect: function () {
Log.Debug(">> RFB.connect");
- this._init_vars();
var uri;
if (typeof UsingSocketIO !== 'undefined') {
@@ -413,29 +419,6 @@ RFB.prototype = {
Log.Debug("<< RFB.disconnect");
},
- _init_vars: function () {
- // reset state
- this._FBU.rects = 0;
- this._FBU.subrects = 0; // RRE and HEXTILE
- this._FBU.lines = 0; // RAW
- this._FBU.tiles = 0; // HEXTILE
- this._FBU.zlibs = []; // TIGHT zlib encoders
- this._mouse_buttonMask = 0;
- this._mouse_arr = [];
- this._rfb_tightvnc = false;
-
- // Clear the per connection encoding stats
- var stats = this._encStats;
- Object.keys(stats).forEach(function (key) {
- stats[key][0] = 0;
- });
-
- var i;
- for (i = 0; i < 4; i++) {
- this._FBU.zlibs[i] = new Inflator();
- }
- },
-
_print_stats: function () {
var stats = this._encStats;
@@ -459,7 +442,7 @@ RFB.prototype = {
if (!this._view_only) { this._mouse.ungrab(); }
this._display.defaultCursor();
if (Log.get_logging() !== 'debug') {
- // Show noVNC logo on load and when disconnected, unless in
+ // Show noVNC logo when disconnected, unless in
// debug mode
this._display.clear();
}
diff --git a/tests/test.rfb.js b/tests/test.rfb.js
index 3e590e6..436c549 100644
--- a/tests/test.rfb.js
+++ b/tests/test.rfb.js
@@ -459,12 +459,6 @@ describe('Remote Frame Buffer Protocol Client', function() {
var client;
beforeEach(function () { client = make_rfb(); });
- it('should reset the variable states', function () {
- sinon.spy(client, '_init_vars');
- client._updateConnectionState('connecting');
- expect(client._init_vars).to.have.been.calledOnce;
- });
-
it('should actually connect to the websocket', function () {
sinon.spy(client._sock, 'open');
client._updateConnectionState('connecting');