4 <title>VNC Playback
</title>
5 <link rel=
"stylesheet" href=
"../include/plain.css">
9 Iterations:
<input id='iterations' style='width:
50'
>
10 Perftest:
<input type='radio' id='mode1' name='mode' checked
>
11 Realtime:
<input type='radio' id='mode2' name='mode'
>
13 <input id='startButton' type='button' value='Start' style='width:
100px'
14 onclick=
"start();" disabled
>
19 <textarea id=
"messages" style=
"font-size: 9;" cols=
80 rows=
25></textarea>
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>
29 <canvas id=
"VNC_canvas" width=
"640px" height=
"20px">
37 <script type='text/javascript'
38 src='http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'></script>
41 <script type=
"text/javascript">
42 var INCLUDE_URI=
"../include/";
44 <script src=
"../include/util.js"></script>
45 <script src=
"../include/webutil.js"></script>
48 var fname, start_time;
50 function message(str) {
52 var cell = $D('messages');
53 cell.innerHTML += str +
"\n";
54 cell.scrollTop = cell.scrollHeight;
57 fname = WebUtil.getQueryVar('data', null);
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]);
66 message(
"Must specify data=FOO in query string.");
69 updateState = function (rfb, state, oldstate, msg) {
73 message(
"noVNC sent '" + state +
"' state during iteration " + iteration +
" frame " + frame_idx);
74 test_state = 'failed';
77 $D('startButton').disabled = false;
80 if (typeof msg !== 'undefined') {
81 $D('VNC_status').innerHTML = msg;
86 $D('startButton').value =
"Running";
87 $D('startButton').disabled = true;
89 iterations = $D('iterations').value;
91 start_time = (new Date()).getTime();
93 if ($D('mode1').checked) {
94 message(
"Starting performance playback (fullspeed) [" + iterations +
" iteration(s)]");
97 message(
"Starting realtime playback [" + iterations +
" iteration(s)]");
101 recv_message = rfb.testMode(send_array);
106 // Finished with all iterations
107 var total_time, end_time = (new Date()).getTime();
108 total_time = end_time - start_time;
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";
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;
128 $D('mode1').checked = true;
131 message(
"VNC_frame_data.length: " + VNC_frame_data.length);
132 rfb = new RFB({'target': $D('VNC_canvas'),
133 'updateState': updateState});