]> git.proxmox.com Git - mirror_novnc.git/blobdiff - tests/playback-ui.js
Work around Siemens touch panel authentication bug
[mirror_novnc.git] / tests / playback-ui.js
index f47b9d86dca447afd597178c5b39ac43de7bf0b2..1565b8ffb8ccb50db424b3c89be688e052870b1f 100644 (file)
@@ -1,12 +1,13 @@
+/* global VNC_frame_data, VNC_frame_encoding */
+
 import * as WebUtil from '../app/webutil.js';
 import RecordingPlayer from './playback.js';
 
-var frames = null;
-var encoding = null;
+let frames = null;
+let encoding = null;
 
 function message(str) {
-    console.log(str);
-    var cell = document.getElementById('messages');
+    const cell = document.getElementById('messages');
     cell.textContent += str + "\n";
     cell.scrollTop = cell.scrollHeight;
 }
@@ -19,32 +20,37 @@ function loadFile() {
     }
 
     message("Loading " + fname);
-    return import(`../recordings/${fname}#nocache`);
+
+    return new Promise(function (resolve, reject) {
+        const script = document.createElement("script");
+        script.onload = resolve;
+        script.onerror = reject;
+        document.body.appendChild(script);
+        script.src = "../recordings/" + fname;
+    });
 }
 
-function enableUI(recording) {
-    var iterations = WebUtil.getQueryVar('iterations', 3);
+function enableUI() {
+    const iterations = WebUtil.getQueryVar('iterations', 3);
     document.getElementById('iterations').value = iterations;
 
-    var mode = WebUtil.getQueryVar('mode', 3);
+    const mode = WebUtil.getQueryVar('mode', 3);
     if (mode === 'realtime') {
         document.getElementById('mode2').checked = true;
     } else {
         document.getElementById('mode1').checked = true;
     }
 
-    message("VNC_frame_data.length: " + recording.VNC_frame_data.length);
+    message("VNC_frame_data.length: " + VNC_frame_data.length);
 
     const startButton = document.getElementById('startButton');
-    startButton.disabled = false
+    startButton.disabled = false;
     startButton.addEventListener('click', start);
 
-    frames = recording.VNC_frame_data;
-    encoding = recording.VNC_frame_encoding;
-}
-
-const notification = function (rfb, mesg, level, options) {
-    document.getElementById('VNC_status').textContent = mesg;
+    frames = VNC_frame_data;
+    // Only present in older recordings
+    if (window.VNC_frame_encoding)
+        encoding = VNC_frame_encoding;
 }
 
 function IterationPlayer (iterations, frames, encoding) {
@@ -63,7 +69,6 @@ function IterationPlayer (iterations, frames, encoding) {
     this.onfinish = function() {};
     this.oniterationfinish = function() {};
     this.rfbdisconnected = function() {};
-    this.rfbnotification = function() {};
 }
 
 IterationPlayer.prototype = {
@@ -78,7 +83,7 @@ IterationPlayer.prototype = {
     },
 
     _nextIteration: function () {
-        const player = new RecordingPlayer(this._frames, this._encoding, this._disconnected.bind(this), this._notification.bind(this));
+        const player = new RecordingPlayer(this._frames, this._encoding, this._disconnected.bind(this));
         player.onfinish = this._iterationFinish.bind(this);
 
         if (this._state !== 'running') { return; }
@@ -111,26 +116,18 @@ IterationPlayer.prototype = {
         this._nextIteration();
     },
 
-    _disconnected: function (rfb, reason, frame) {
-        if (reason) {
+    _disconnected: function (clean, frame) {
+        if (!clean) {
             this._state = 'failed';
         }
 
-        var evt = new Event('rfbdisconnected');
-        evt.reason = reason;
+        const evt = new Event('rfbdisconnected');
+        evt.clean = clean;
         evt.frame = frame;
+        evt.iteration = this._iteration;
 
         this.onrfbdisconnected(evt);
     },
-
-    _notification: function (rfb, msg, level, options) {
-        var evt = new Event('rfbnotification');
-        evt.message = msg;
-        evt.level = level;
-        evt.options = options;
-
-        this.onrfbnotification(evt);
-    },
 };
 
 function start() {
@@ -139,7 +136,7 @@ function start() {
 
     const iterations = document.getElementById('iterations').value;
 
-    var mode;
+    let mode;
 
     if (document.getElementById('mode1').checked) {
         message(`Starting performance playback (fullspeed) [${iterations} iteration(s)]`);
@@ -154,13 +151,10 @@ function start() {
         message(`Iteration ${evt.number} took ${evt.duration}ms`);
     };
     player.onrfbdisconnected = function (evt) {
-        if (evt.reason) {
+        if (!evt.clean) {
             message(`noVNC sent disconnected during iteration ${evt.iteration} frame ${evt.frame}`);
         }
     };
-    player.onrfbnotification = function (evt) {
-        document.getElementById('VNC_status').textContent = evt.message;
-    };
     player.onfinish = function (evt) {
         const iterTime = parseInt(evt.duration / evt.iterations, 10);
         message(`${evt.iterations} iterations took ${evt.duration}ms (average ${iterTime}ms / iteration)`);
@@ -171,4 +165,4 @@ function start() {
     player.start(mode);
 }
 
-loadFile().then(enableUI).catch(message);
+loadFile().then(enableUI).catch(function (e) { message("Error loading recording: " + e); });