]> git.proxmox.com Git - mirror_novnc.git/blob - tests/vnc_playback.html
Refactor dynamic script loading. Add util.js:load_scripts()
[mirror_novnc.git] / tests / vnc_playback.html
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <title>VNC Playback</title>
5 <link rel="stylesheet" href="../include/plain.css">
6 </head>
7 <body>
8
9 Iterations: <input id='iterations' style='width:50'>&nbsp;
10 Perftest:<input type='radio' id='mode1' name='mode' checked>&nbsp;
11 Realtime:<input type='radio' id='mode2' name='mode'>&nbsp;&nbsp;
12
13 <input id='startButton' type='button' value='Start' style='width:100px'
14 onclick="start();" disabled>&nbsp;
15
16 <br><br>
17
18 Results:<br>
19 <textarea id="messages" style="font-size: 9;" cols=80 rows=25></textarea>
20
21 <br><br>
22
23 <div id="VNC_screen">
24 <div id="VNC_status_bar" class="VNC_status_bar" style="margin-top: 0px;">
25 <table border=0 width=100%><tr>
26 <td><div id="VNC_status">Loading</div></td>
27 </tr></table>
28 </div>
29 <canvas id="VNC_canvas" width="640px" height="20px">
30 Canvas not supported.
31 </canvas>
32 </div>
33
34 </body>
35
36 <!--
37 <script type='text/javascript'
38 src='http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'></script>
39 -->
40
41 <script type="text/javascript">
42 var INCLUDE_URI= "../include/";
43 </script>
44 <script src="../include/util.js"></script>
45 <script src="../include/webutil.js"></script>
46
47 <script>
48 var fname, start_time;
49
50 function message(str) {
51 console.log(str);
52 var cell = $D('messages');
53 cell.innerHTML += str + "\n";
54 cell.scrollTop = cell.scrollHeight;
55 }
56
57 fname = WebUtil.getQueryVar('data', null);
58 if (fname) {
59 message("Loading " + fname);
60 // Load supporting scripts
61 Util.load_scripts(["base64.js", "websock.js", "des.js",
62 "input.js", "display.js", "jsunzip.js", "rfb.js",
63 "playback.js", fname]);
64
65 } else {
66 message("Must specify data=FOO in query string.");
67 }
68
69 updateState = function (rfb, state, oldstate, msg) {
70 switch (state) {
71 case 'failed':
72 case 'fatal':
73 message("noVNC sent '" + state + "' state during iteration " + iteration + " frame " + frame_idx);
74 test_state = 'failed';
75 break;
76 case 'loaded':
77 $D('startButton').disabled = false;
78 break;
79 }
80 if (typeof msg !== 'undefined') {
81 $D('VNC_status').innerHTML = msg;
82 }
83 }
84
85 function start() {
86 $D('startButton').value = "Running";
87 $D('startButton').disabled = true;
88
89 iterations = $D('iterations').value;
90 iteration = 0;
91 start_time = (new Date()).getTime();
92
93 if ($D('mode1').checked) {
94 message("Starting performance playback (fullspeed) [" + iterations + " iteration(s)]");
95 mode = 'perftest';
96 } else {
97 message("Starting realtime playback [" + iterations + " iteration(s)]");
98 mode = 'realtime';
99 }
100
101 recv_message = rfb.testMode(send_array);
102 next_iteration();
103 }
104
105 function finish() {
106 // Finished with all iterations
107 var total_time, end_time = (new Date()).getTime();
108 total_time = end_time - start_time;
109
110 iter_time = parseInt(total_time / iterations, 10);
111 message(iterations + " iterations took " + total_time + "ms, " +
112 iter_time + "ms per iteration");
113 // Shut-off event interception
114 rfb.get_mouse().ungrab();
115 rfb.get_keyboard().ungrab();
116 $D('startButton').disabled = false;
117 $D('startButton').value = "Start";
118
119 }
120
121 window.onscriptsload = function () {
122 iterations = WebUtil.getQueryVar('iterations', 3);
123 $D('iterations').value = iterations;
124 mode = WebUtil.getQueryVar('mode', 3);
125 if (mode === 'realtime') {
126 $D('mode2').checked = true;
127 } else {
128 $D('mode1').checked = true;
129 }
130 if (fname) {
131 message("VNC_frame_data.length: " + VNC_frame_data.length);
132 rfb = new RFB({'target': $D('VNC_canvas'),
133 'updateState': updateState});
134 }
135 }
136 </script>
137 </html>