[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

commit-queue at webkit.org commit-queue at webkit.org
Wed Dec 22 11:10:15 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit a2fd534edc4bdbc73960ef93f76b6a17f7846925
Author: commit-queue at webkit.org <commit-queue at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Wed Jul 14 09:35:42 2010 +0000

    2010-07-14  Yuta Kitamura  <yutak at chromium.org>
    
            Reviewed by Alexey Proskuryakov.
    
            Add tests to check if WebSocket's challenge value is random
            https://bugs.webkit.org/show_bug.cgi?id=42163
    
            Chromium has a bug that it always sends a same challenge value due to
            inability to generate a random value in a worker process. The new test checks
            if WebSocket does not generate the same challenge value in a row.
    
            In theory, there is a very small possibility of collision between two challenge
            values, but you will not observe such an event in reality (unless random number
            generator is broken).
    
            * websocket/tests/echo-challenge_wsh.py: Added.
            * websocket/tests/handshake-challenge-randomness-expected.txt: Added.
            * websocket/tests/handshake-challenge-randomness.html: Added.
            * websocket/tests/script-tests/handshake-challenge-randomness.js: Added.
            (endTest):
            (ws1.onmessage):
            (ws1.onclose.ws2.onmessage):
            (ws1.onclose.ws2.onclose):
            (ws1.onclose):
            * websocket/tests/workers/resources/worker-handshake-challenge-randomness.js: Added.
            (endTest):
            (runTests.try.ws1.onmessage):
            (runTests.try.ws1.onclose.ws2.onmessage):
            (runTests.try.ws1.onclose.ws2.onclose):
            (runTests.try.ws1.onclose):
            (runTests):
            * websocket/tests/workers/worker-handshake-challenge-randomness-expected.txt: Added.
            * websocket/tests/workers/worker-handshake-challenge-randomness.html: Added.
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@63298 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 0f32216..87502db 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,37 @@
+2010-07-14  Yuta Kitamura  <yutak at chromium.org>
+
+        Reviewed by Alexey Proskuryakov.
+
+        Add tests to check if WebSocket's challenge value is random
+        https://bugs.webkit.org/show_bug.cgi?id=42163
+
+        Chromium has a bug that it always sends a same challenge value due to
+        inability to generate a random value in a worker process. The new test checks
+        if WebSocket does not generate the same challenge value in a row.
+
+        In theory, there is a very small possibility of collision between two challenge
+        values, but you will not observe such an event in reality (unless random number
+        generator is broken).
+
+        * websocket/tests/echo-challenge_wsh.py: Added.
+        * websocket/tests/handshake-challenge-randomness-expected.txt: Added.
+        * websocket/tests/handshake-challenge-randomness.html: Added.
+        * websocket/tests/script-tests/handshake-challenge-randomness.js: Added.
+        (endTest):
+        (ws1.onmessage):
+        (ws1.onclose.ws2.onmessage):
+        (ws1.onclose.ws2.onclose):
+        (ws1.onclose):
+        * websocket/tests/workers/resources/worker-handshake-challenge-randomness.js: Added.
+        (endTest):
+        (runTests.try.ws1.onmessage):
+        (runTests.try.ws1.onclose.ws2.onmessage):
+        (runTests.try.ws1.onclose.ws2.onclose):
+        (runTests.try.ws1.onclose):
+        (runTests):
+        * websocket/tests/workers/worker-handshake-challenge-randomness-expected.txt: Added.
+        * websocket/tests/workers/worker-handshake-challenge-randomness.html: Added.
+
 2010-07-14  Eric Seidel  <eric at webkit.org>
 
         Reviewed by Nikolas Zimmermann.
diff --git a/LayoutTests/websocket/tests/echo-challenge_wsh.py b/LayoutTests/websocket/tests/echo-challenge_wsh.py
new file mode 100644
index 0000000..0fd1485
--- /dev/null
+++ b/LayoutTests/websocket/tests/echo-challenge_wsh.py
@@ -0,0 +1,10 @@
+from mod_pywebsocket import msgutil
+
+def web_socket_do_extra_handshake(request):
+    pass
+
+def web_socket_transfer_data(request):
+    msgutil.send_message(request, _hexify(request.ws_challenge))
+
+def _hexify(bytes):
+    return ':'.join(['%02X' % ord(byte) for byte in bytes])
diff --git a/LayoutTests/websocket/tests/handshake-challenge-randomness-expected.txt b/LayoutTests/websocket/tests/handshake-challenge-randomness-expected.txt
new file mode 100644
index 0000000..c1bdcd7
--- /dev/null
+++ b/LayoutTests/websocket/tests/handshake-challenge-randomness-expected.txt
@@ -0,0 +1,9 @@
+Handshake request should contain random challenge values.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+PASS challenge1 === challenge2 is false
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/websocket/tests/handshake-challenge-randomness.html b/LayoutTests/websocket/tests/handshake-challenge-randomness.html
new file mode 100644
index 0000000..1160f77
--- /dev/null
+++ b/LayoutTests/websocket/tests/handshake-challenge-randomness.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+<script src="../../fast/js/resources/js-test-post-function.js"></script>
+</head>
+<body>
+<div id="description"></div>
+<div id="console"></div>
+<script src="script-tests/handshake-challenge-randomness.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/websocket/tests/script-tests/handshake-challenge-randomness.js b/LayoutTests/websocket/tests/script-tests/handshake-challenge-randomness.js
new file mode 100644
index 0000000..5bc1200
--- /dev/null
+++ b/LayoutTests/websocket/tests/script-tests/handshake-challenge-randomness.js
@@ -0,0 +1,45 @@
+description('Handshake request should contain random challenge values.');
+
+if (window.layoutTestController)
+    layoutTestController.waitUntilDone();
+
+var challenge1;
+var challenge2;
+
+function endTest()
+{
+    shouldBeFalse('challenge1 === challenge2');
+    if (challenge1 === challenge2)
+        debug('challenge was ' + challenge1);
+
+    isSuccessfullyParsed();
+    if (window.layoutTestController)
+        layoutTestController.notifyDone();
+}
+
+var url = 'ws://localhost:8880/websocket/tests/echo-challenge';
+var ws1 = new WebSocket(url);
+
+ws1.onmessage = function(messageEvent)
+{
+    challenge1 = messageEvent.data;
+    ws1.close();
+}
+
+ws1.onclose = function()
+{
+    var ws2 = new WebSocket(url);
+
+    ws2.onmessage = function(messageEvent)
+    {
+        challenge2 = messageEvent.data;
+        ws2.close();
+    }
+
+    ws2.onclose = function()
+    {
+        endTest();
+    }
+}
+
+var successfullyParsed = true;
diff --git a/LayoutTests/websocket/tests/workers/resources/worker-handshake-challenge-randomness.js b/LayoutTests/websocket/tests/workers/resources/worker-handshake-challenge-randomness.js
new file mode 100644
index 0000000..9bd42ac
--- /dev/null
+++ b/LayoutTests/websocket/tests/workers/resources/worker-handshake-challenge-randomness.js
@@ -0,0 +1,48 @@
+var challenge1;
+var challenge2;
+
+function endTest()
+{
+    if (challenge1 === challenge2)
+        postMessage('FAIL: worker: challenge1 === challenge2 (challenge was ' + challenge1 + ')');
+    else
+        postMessage('PASS: worker: challenge1 !== challenge2');
+
+    postMessage('DONE');
+}
+
+function runTests()
+{
+    try {
+        var url = 'ws://localhost:8880/websocket/tests/echo-challenge';
+        var ws1 = new WebSocket(url);
+
+        ws1.onmessage = function(messageEvent)
+        {
+            challenge1 = messageEvent.data;
+            ws1.close();
+        }
+
+        ws1.onclose = function()
+        {
+            var ws2 = new WebSocket(url);
+
+            ws2.onmessage = function(messageEvent)
+            {
+                challenge2 = messageEvent.data;
+                ws2.close();
+            }
+
+            ws2.onclose = function()
+            {
+                endTest();
+            }
+        }
+    } catch (e) {
+        postMessage('FAIL: worker: Unexpected exception: ' + e);
+    } finally {
+        postMessage('PASS: worker: Parsed successfully.');
+    }
+}
+
+runTests();
diff --git a/LayoutTests/websocket/tests/workers/worker-handshake-challenge-randomness-expected.txt b/LayoutTests/websocket/tests/workers/worker-handshake-challenge-randomness-expected.txt
new file mode 100644
index 0000000..18c9880
--- /dev/null
+++ b/LayoutTests/websocket/tests/workers/worker-handshake-challenge-randomness-expected.txt
@@ -0,0 +1,9 @@
+Handshake request should contain random challenge values (in a worker process).
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+PASS: worker: Parsed successfully.
+PASS: worker: challenge1 !== challenge2
+DONE
+TEST COMPLETE
+
diff --git a/LayoutTests/websocket/tests/workers/worker-handshake-challenge-randomness.html b/LayoutTests/websocket/tests/workers/worker-handshake-challenge-randomness.html
new file mode 100644
index 0000000..b846daa
--- /dev/null
+++ b/LayoutTests/websocket/tests/workers/worker-handshake-challenge-randomness.html
@@ -0,0 +1,35 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head></head>
+<body>
+<p>Handshake request should contain random challenge values (in a worker process).</p>
+<p></p>
+<p>On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".</p>
+<pre id=log>
+</pre>
+<script>
+if (window.layoutTestController) {
+    layoutTestController.dumpAsText();
+    layoutTestController.waitUntilDone();
+}
+
+function log(message)
+{
+    document.getElementById("log").innerHTML += message + "\n";
+}
+
+function endTest()
+{
+    log("TEST COMPLETE");
+    if (window.layoutTestController)
+        layoutTestController.notifyDone();
+}
+var worker = new Worker('resources/worker-handshake-challenge-randomness.js');
+worker.onmessage = function (evt) {
+    log(evt.data);
+    if (evt.data == "DONE")
+        endTest();
+};
+</script>
+</body>
+</html>

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list