Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / WebKit / LayoutTests / http / tests / websocket / permessage-deflate-parameter.html
blobbde606b4e3b64a063d1116f3c13f1199689f6fe7
1 <!DOCTYPE HTML>
2 <html>
3 <head>
4 <script src="/js-test-resources/js-test.js"></script>
5 </head>
6 <body>
7 <div id="description"></div>
8 <div id="console"></div>
9 <script>
10 description("Test WebSocket permessage-deflate extension.");
12 window.jsTestIsAsync = true;
14 var closeEvent;
15 var ws;
16 var messageIndex;
18 var queries = [
19 "client_max_window_bits=8",
20 "client_no_context_takeover",
21 "client_max_window_bits=8&client_no_context_takeover"
24 // The first message consists of a lot of 'b' and a few 'a' at the head and
25 // the tail, while the second one consists of 'a'.
26 var firstMessage = '';
27 var secondMessage = '';
28 for (var i = 0; i < 16; ++i) {
29 firstMessage += 'a';
30 secondMessage += 'a';
32 for (var i = 0; i < 1024; ++i) {
33 firstMessage += 'b';
34 secondMessage += 'a';
36 for (var i = 0; i < 16; ++i) {
37 firstMessage += 'a';
38 secondMessage += 'a';
41 function doTest(queryIndex)
43 var query = queries[queryIndex];
44 debug("Testing query: \"" + query + "\"");
46 var url = "ws://localhost:8880/permessage-deflate?" + query;
47 ws = new WebSocket(url);
48 messageIndex = 0;
50 ws.onopen = function(event)
52 shouldBeTrue("ws.extensions.search('permessage-deflate') != -1");
53 parameters = query.split('&');
54 for (var i = 0; i < parameters.length; ++i)
55 shouldBeTrue("ws.extensions.search('" + parameters[i] + "') != -1");
56 ws.send(firstMessage);
59 ws.onmessage = function(event)
61 if (messageIndex === 0) {
62 shouldBe("event.data", "firstMessage");
63 messageIndex += 1
64 ws.send(secondMessage);
65 } else {
66 shouldBe("event.data", "secondMessage");
67 ws.close();
71 ws.onclose = function(event)
73 debug("onclose() was called.");
74 closeEvent = event;
75 shouldBeTrue("closeEvent.wasClean");
76 if (queryIndex === queries.length - 1)
77 finishJSTest();
78 else
79 doTest(queryIndex + 1);
83 doTest(0);
85 </script>
86 </body>
87 </html>