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