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=
"../include/";
42 // TODO: Data file should override
43 var VNC_frame_encoding =
"base64";
45 <script src=
"../include/util.js"></script>
46 <script src=
"../include/webutil.js"></script>
49 var fname, start_time;
51 function message(str) {
53 var cell = $D('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 Util.load_scripts([
"base64.js",
"websock.js",
"des.js",
63 "keysymdef.js",
"keyboard.js",
"input.js",
"display.js",
64 "jsunzip.js",
"rfb.js",
"playback.js", fname]);
67 message(
"Must specify data=FOO in query string.");
70 updateState = function (rfb, state, oldstate, msg) {
74 message(
"noVNC sent '" + state +
"' state during iteration " + iteration +
" frame " + frame_idx);
75 test_state = 'failed';
78 $D('startButton').disabled = false;
81 if (typeof msg !== 'undefined') {
82 $D('VNC_status').innerHTML = msg;
87 $D('startButton').value =
"Running";
88 $D('startButton').disabled = true;
90 iterations = $D('iterations').value;
92 start_time = (new Date()).getTime();
94 if ($D('mode1').checked) {
95 message(
"Starting performance playback (fullspeed) [" + iterations +
" iteration(s)]");
98 message(
"Starting realtime playback [" + iterations +
" iteration(s)]");
102 recv_message = rfb.testMode(send_array, VNC_frame_encoding);
107 // Finished with all iterations
108 var total_time, end_time = (new Date()).getTime();
109 total_time = end_time - start_time;
111 iter_time = parseInt(total_time / iterations,
10);
112 message(iterations +
" iterations took " + total_time +
"ms, " +
113 iter_time +
"ms per iteration");
114 // Shut-off event interception
115 rfb.get_mouse().ungrab();
116 rfb.get_keyboard().ungrab();
117 $D('startButton').disabled = false;
118 $D('startButton').value =
"Start";
122 window.onscriptsload = function () {
123 iterations = WebUtil.getQueryVar('iterations',
3);
124 $D('iterations').value = iterations;
125 mode = WebUtil.getQueryVar('mode',
3);
126 if (mode === 'realtime') {
127 $D('mode2').checked = true;
129 $D('mode1').checked = true;
132 message(
"VNC_frame_data.length: " + VNC_frame_data.length);
133 rfb = new RFB({'target': $D('VNC_canvas'),
134 'onUpdateState': updateState});