]>
Commit | Line | Data |
---|---|---|
f8990704 | 1 | <!DOCTYPE html> |
4ed717ad JM |
2 | <html> |
3 | <head> | |
67b4e987 | 4 | <title>VNC Playback</title> |
4ed717ad JM |
5 | </head> |
6 | <body> | |
7 | ||
b8bd88d0 JM |
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'> | |
4ed717ad JM |
11 | |
12 | <input id='startButton' type='button' value='Start' style='width:100px' | |
13 | onclick="start();" disabled> | |
14 | ||
15 | <br><br> | |
16 | ||
b8bd88d0 JM |
17 | Results:<br> |
18 | <textarea id="messages" style="font-size: 9;" cols=80 rows=25></textarea> | |
19 | ||
20 | <br><br> | |
21 | ||
4ed717ad JM |
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 | ||
4ed717ad JM |
33 | </body> |
34 | ||
35 | <!-- | |
ae510306 | 36 | <script type='text/javascript' |
4ed717ad JM |
37 | src='http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'></script> |
38 | --> | |
39 | ||
5e55378b | 40 | <script type="text/javascript"> |
ae510306 | 41 | var INCLUDE_URI= "../"; |
35785a90 | 42 | // TODO: Data file should override |
4ee55e01 | 43 | var VNC_frame_encoding = "binary"; |
5e55378b | 44 | </script> |
ae510306 SR |
45 | <script src="../core/util.js"></script> |
46 | <script src="../app/webutil.js"></script> | |
4ed717ad JM |
47 | |
48 | <script> | |
b8bd88d0 | 49 | var fname, start_time; |
4ed717ad JM |
50 | |
51 | function message(str) { | |
52 | console.log(str); | |
ae510306 | 53 | var cell = document.getElementById('messages'); |
4ed717ad JM |
54 | cell.innerHTML += str + "\n"; |
55 | cell.scrollTop = cell.scrollHeight; | |
56 | } | |
57 | ||
8d5d2c82 | 58 | fname = WebUtil.getQueryVar('data', null); |
4ed717ad JM |
59 | if (fname) { |
60 | message("Loading " + fname); | |
6f4b1e40 | 61 | // Load supporting scripts |
72bdd06e | 62 | WebUtil.load_scripts({ |
ae510306 SR |
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]}); | |
6f4b1e40 | 68 | |
4ed717ad JM |
69 | } else { |
70 | message("Must specify data=FOO in query string."); | |
71 | } | |
72 | ||
4ed717ad JM |
73 | updateState = function (rfb, state, oldstate, msg) { |
74 | switch (state) { | |
75 | case 'failed': | |
76 | case 'fatal': | |
2f6a1c2b | 77 | message("noVNC sent '" + state + "' state during iteration " + iteration + " frame " + frame_idx); |
4ed717ad JM |
78 | test_state = 'failed'; |
79 | break; | |
b8bd88d0 | 80 | case 'loaded': |
4ed717ad JM |
81 | break; |
82 | } | |
83 | if (typeof msg !== 'undefined') { | |
ae510306 | 84 | document.getElementById('VNC_status').innerHTML = msg; |
4ed717ad JM |
85 | } |
86 | } | |
87 | ||
b8bd88d0 | 88 | function start() { |
ae510306 SR |
89 | document.getElementById('startButton').value = "Running"; |
90 | document.getElementById('startButton').disabled = true; | |
4ed717ad | 91 | |
ae510306 | 92 | iterations = document.getElementById('iterations').value; |
4ed717ad | 93 | iteration = 0; |
4ed717ad JM |
94 | start_time = (new Date()).getTime(); |
95 | ||
ae510306 | 96 | if (document.getElementById('mode1').checked) { |
b8bd88d0 JM |
97 | message("Starting performance playback (fullspeed) [" + iterations + " iteration(s)]"); |
98 | mode = 'perftest'; | |
99 | } else { | |
100 | message("Starting realtime playback [" + iterations + " iteration(s)]"); | |
101 | mode = 'realtime'; | |
4ed717ad JM |
102 | } |
103 | ||
efed2eea SR |
104 | //recv_message = rfb.testMode(send_array, VNC_frame_encoding); |
105 | ||
b8bd88d0 | 106 | next_iteration(); |
4ed717ad JM |
107 | } |
108 | ||
b8bd88d0 JM |
109 | function finish() { |
110 | // Finished with all iterations | |
111 | var total_time, end_time = (new Date()).getTime(); | |
112 | total_time = end_time - start_time; | |
4ed717ad | 113 | |
b8bd88d0 JM |
114 | iter_time = parseInt(total_time / iterations, 10); |
115 | message(iterations + " iterations took " + total_time + "ms, " + | |
116 | iter_time + "ms per iteration"); | |
fa8f14d5 JM |
117 | // Shut-off event interception |
118 | rfb.get_mouse().ungrab(); | |
119 | rfb.get_keyboard().ungrab(); | |
ae510306 SR |
120 | document.getElementById('startButton').disabled = false; |
121 | document.getElementById('startButton').value = "Start"; | |
4ed717ad | 122 | |
4ed717ad JM |
123 | } |
124 | ||
6f4b1e40 | 125 | window.onscriptsload = function () { |
8d5d2c82 | 126 | iterations = WebUtil.getQueryVar('iterations', 3); |
ae510306 | 127 | document.getElementById('iterations').value = iterations; |
8d5d2c82 | 128 | mode = WebUtil.getQueryVar('mode', 3); |
b8bd88d0 | 129 | if (mode === 'realtime') { |
ae510306 | 130 | document.getElementById('mode2').checked = true; |
b8bd88d0 | 131 | } else { |
ae510306 | 132 | document.getElementById('mode1').checked = true; |
b8bd88d0 | 133 | } |
4ed717ad JM |
134 | if (fname) { |
135 | message("VNC_frame_data.length: " + VNC_frame_data.length); | |
4ed717ad | 136 | } |
ae510306 | 137 | document.getElementById('startButton').disabled = false; |
4ed717ad JM |
138 | } |
139 | </script> | |
140 | </html> |