diff --git a/tests/playback.js b/tests/playback.js
index 23bddf28..5c94f1e2 100644
--- a/tests/playback.js
+++ b/tests/playback.js
@@ -9,7 +9,7 @@
/*global Util, VNC_frame_data, finish */
var rfb, mode, test_state, frame_idx, frame_length,
- iteration, iterations, istart_time,
+ iteration, iterations, istart_time, encoding,
// Pre-declarations for jslint
send_array, next_iteration, queue_next_packet, do_packet, enable_test_mode;
@@ -20,7 +20,6 @@ send_array = function (arr) {
};
enable_test_mode = function () {
- rfb._sock._mode = VNC_frame_encoding;
rfb._sock.send = send_array;
rfb._sock.close = function () {};
rfb._sock.flush = function () {};
@@ -40,6 +39,19 @@ next_iteration = function () {
'onUpdateState': updateState});
enable_test_mode();
+ // Missing in older recordings
+ if (typeof VNC_frame_encoding === 'undefined') {
+ var frame = VNC_frame_data[0];
+ var start = frame.indexOf('{', 1) + 1;
+ if (frame.slice(start).startsWith('UkZC')) {
+ encoding = 'base64';
+ } else {
+ encoding = 'binary';
+ }
+ } else {
+ encoding = VNC_frame_encoding;
+ }
+
if (iteration === 0) {
frame_length = VNC_frame_data.length;
test_state = 'running';
@@ -93,7 +105,7 @@ queue_next_packet = function () {
setTimeout(do_packet, delay);
} else {
- setTimeout(do_packet, 1);
+ setTimeout(do_packet, 0);
}
};
@@ -103,16 +115,18 @@ do_packet = function () {
//Util.Debug("Processing frame: " + frame_idx);
var frame = VNC_frame_data[frame_idx],
start = frame.indexOf('{', 1) + 1;
- bytes_processed += frame.length - start;
- if (VNC_frame_encoding === 'binary') {
- var u8 = new Uint8Array(frame.length - start);
+ var u8;
+ if (encoding === 'base64') {
+ u8 = Base64.decode(frame.slice(start));
+ start = 0;
+ } else {
+ u8 = new Uint8Array(frame.length - start);
for (var i = 0; i < frame.length - start; i++) {
u8[i] = frame.charCodeAt(start + i);
}
- rfb._sock._recv_message({'data' : u8});
- } else {
- rfb._sock._recv_message({'data' : frame.slice(start)});
}
+ bytes_processed += u8.length;
+ rfb._sock._recv_message({'data' : u8});
frame_idx += 1;
queue_next_packet();
diff --git a/tests/vnc_perf.html b/tests/vnc_perf.html
index 098575be..03f4f352 100644
--- a/tests/vnc_perf.html
+++ b/tests/vnc_perf.html
@@ -37,8 +37,6 @@
diff --git a/tests/vnc_playback.html b/tests/vnc_playback.html
index b8f9eb19..edfcacc3 100644
--- a/tests/vnc_playback.html
+++ b/tests/vnc_playback.html
@@ -39,8 +39,6 @@