瀏覽代碼

Fix playback of recorded VNC.

- Update test mode calls to work with separate websock module.

- Pull in include/websock.js update 7f487fdbd from websockify.
Joel Martin 14 年之前
父節點
當前提交
fa8f14d56d
共有 3 個文件被更改,包括 26 次插入10 次删除
  1. 2 4
      include/rfb.js
  2. 20 4
      include/websock.js
  3. 4 2
      tests/vnc_playback.html

+ 2 - 4
include/rfb.js

@@ -1512,12 +1512,10 @@ that.clipboardPasteFrom = function(text) {
     //Util.Debug("<< clipboardPasteFrom");
 };
 
+// Override internal functions for testing
 that.testMode = function(override_send) {
-    // Overridable internal functions for testing
     test_mode = true;
-    // TODO figure out what to do here
-    ws.send = override_send;
-    that.recv_message = ws.recv_message;  // Expose it
+    that.recv_message = ws.testMode(override_send);
 
     checkEvents = function () { /* Stub Out */ };
     that.connect = function(host, port, password) {

+ 20 - 4
include/websock.js

@@ -59,7 +59,9 @@ var api = {},         // Public API
         'open'    : function() {},
         'close'   : function() {},
         'error'   : function() {}
-    };
+    },
+
+    test_mode = false;
 
 
 //
@@ -253,9 +255,13 @@ function init() {
 function open(uri) {
     init();
 
-    websocket = new WebSocket(uri, 'base64');
-    // TODO: future native binary support
-    //websocket = new WebSocket(uri, ['binary', 'base64']);
+    if (test_mode) {
+        websocket = {};
+    } else {
+        websocket = new WebSocket(uri, 'base64');
+        // TODO: future native binary support
+        //websocket = new WebSocket(uri, ['binary', 'base64']);
+    }
 
     websocket.onmessage = recv_message;
     websocket.onopen = function() {
@@ -289,6 +295,15 @@ function close() {
     }
 }
 
+// Override internal functions for testing
+// Takes a send function, returns reference to recv function
+function testMode(override_send) {
+    test_mode = true;
+    api.send = override_send;
+    api.close = function () {};
+    return recv_message;
+}
+
 function constructor() {
     // Configuration settings
     api.maxBufferedAmount = 200;
@@ -319,6 +334,7 @@ function constructor() {
     api.init         = init;
     api.open         = open;
     api.close        = close;
+    api.testMode     = testMode;
 
     return api;
 }

+ 4 - 2
tests/vnc_playback.html

@@ -95,6 +95,7 @@
                 mode = 'realtime';
             }
 
+            recv_message = rfb.testMode(send_array);
             next_iteration();
         }
 
@@ -106,7 +107,9 @@
             iter_time = parseInt(total_time / iterations, 10);
             message(iterations + " iterations took " + total_time + "ms, " +
                     iter_time + "ms per iteration");
-            rfb.get_canvas().stop();   // Shut-off event interception
+            // Shut-off event interception
+            rfb.get_mouse().ungrab();
+            rfb.get_keyboard().ungrab();
             $D('startButton').disabled = false;
             $D('startButton').value = "Start";
 
@@ -125,7 +128,6 @@
                 message("VNC_frame_data.length: " + VNC_frame_data.length);
                 rfb = new RFB({'target': $D('VNC_canvas'),
                                'updateState': updateState});
-                rfb.testMode(send_array);
             }
         }
     </script>