4 <script src=
"/js-test-resources/js-test.js"></script>
7 <div id=
"description"></div>
8 <div id=
"console"></div>
10 description("Test WebSocket permessage-deflate extension: window bits.");
12 window
.jsTestIsAsync
= true;
19 "client_max_window_bits=8",
20 "client_max_window_bits=15",
21 "client_no_context_takeover",
22 "client_max_window_bits=8&client_no_context_takeover"
25 // We construct this message so that the test will fail if the client deflater
26 // doesn't care about client_max_window_bits.
27 var alpha
= 'abcdefghijklmnopqrstuvwxyz'
29 for (var i
= 0; i
< 30000; ++i
) {
32 message
= alpha
+ message
+ alpha
;
34 function doTest(queryIndex
)
36 var query
= queries
[queryIndex
];
37 debug("Testing query: \"" + query
+ "\"");
39 var url
= "ws://localhost:8880/permessage-deflate-manual?" + query
;
40 ws
= new WebSocket(url
);
42 ws
.onopen = function(event
)
44 shouldBeTrue("ws.extensions.search('permessage-deflate') != -1");
45 parameters
= query
.split('&');
46 for (var i
= 0; i
< parameters
.length
; ++i
)
47 shouldBeTrue("ws.extensions.search('" + parameters
[i
] + "') != -1");
51 ws
.onmessage = function(event
)
53 // Because message is too long and shouldBe tends to be timed out on fail,
54 // we use custom output rather than shouldBe.
55 if (event
.data
=== message
) {
56 debug('PASS event.data is message');
58 debug('FAIL event.data should be message but is ' + event
.data
);
63 ws
.onclose = function(event
)
65 debug("onclose() was called.");
67 shouldBeTrue("closeEvent.wasClean");
68 if (queryIndex
=== queries
.length
- 1)
71 doTest(queryIndex
+ 1);