4 <title>VNC Playback
</title>
8 Iterations:
<input id='iterations' style='width:
50'
>
9 Perftest:
<input type='radio' id='mode1' name='mode' checked
>
10 Realtime:
<input type='radio' id='mode2' name='mode'
>
12 <input id='startButton' type='button' value='Start' style='width:
100px'
13 onclick=
"start();" disabled
>
18 <textarea id=
"messages" style=
"font-size: 9;" cols=
80 rows=
25></textarea>
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>
28 <canvas id=
"VNC_canvas" width=
"640px" height=
"20px">
36 <script type='text/javascript'
37 src='http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'></script>
40 <script type=
"text/javascript">
41 var INCLUDE_URI=
"../";
42 // TODO: Data file should override
43 var VNC_frame_encoding =
"binary";
45 <script src=
"../core/util.js"></script>
46 <script src=
"../app/webutil.js"></script>
49 var fname, start_time;
51 function message(str) {
53 var cell = document.getElementById('messages');
54 cell.innerHTML += str +
"\n";
55 cell.scrollTop = cell.scrollHeight;
58 fname = WebUtil.getQueryVar('data', null);
60 message(
"Loading " + fname);
61 // Load supporting scripts
62 WebUtil.load_scripts({
63 'core': [
"base64.js",
"websock.js",
"des.js",
"keysym.js",
64 "keysymdef.js",
"xtscancodes.js",
"keyboard.js",
65 "input.js",
"display.js",
"rfb.js",
"inflator.js"],
66 'tests': [
"playback.js"],
67 'recordings': [fname]});
70 message(
"Must specify data=FOO in query string.");
73 updateState = function (rfb, state, oldstate, msg) {
77 message(
"noVNC sent '" + state +
"' state during iteration " + iteration +
" frame " + frame_idx);
78 test_state = 'failed';
83 if (typeof msg !== 'undefined') {
84 document.getElementById('VNC_status').innerHTML = msg;
89 document.getElementById('startButton').value =
"Running";
90 document.getElementById('startButton').disabled = true;
92 iterations = document.getElementById('iterations').value;
94 start_time = (new Date()).getTime();
96 if (document.getElementById('mode1').checked) {
97 message(
"Starting performance playback (fullspeed) [" + iterations +
" iteration(s)]");
100 message(
"Starting realtime playback [" + iterations +
" iteration(s)]");
104 //recv_message = rfb.testMode(send_array, VNC_frame_encoding);
110 // Finished with all iterations
111 var total_time, end_time = (new Date()).getTime();
112 total_time = end_time - start_time;
114 iter_time = parseInt(total_time / iterations,
10);
115 message(iterations +
" iterations took " + total_time +
"ms, " +
116 iter_time +
"ms per iteration");
117 // Shut-off event interception
118 rfb.get_mouse().ungrab();
119 rfb.get_keyboard().ungrab();
120 document.getElementById('startButton').disabled = false;
121 document.getElementById('startButton').value =
"Start";
125 window.onscriptsload = function () {
126 iterations = WebUtil.getQueryVar('iterations',
3);
127 document.getElementById('iterations').value = iterations;
128 mode = WebUtil.getQueryVar('mode',
3);
129 if (mode === 'realtime') {
130 document.getElementById('mode2').checked = true;
132 document.getElementById('mode1').checked = true;
135 message(
"VNC_frame_data.length: " + VNC_frame_data.length);
137 document.getElementById('startButton').disabled = false;