Move parseFontFaceDescriptor to CSSPropertyParser.cpp
[chromium-blink-merge.git] / third_party / WebKit / LayoutTests / http / tests / websocket / bufferedAmount-after-close-in-busy.html
blobf096d4e0fc28ec594816b0dd3174b0f7a4a8418b
1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
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 type="text/javascript">
10 description("WebSocket bufferedAmount after closed in busy");
12 window.jsTestIsAsync = true;
14 function createStringWithLength(length)
16 var string = 'x';
17 while (string.length < length)
18 string = string + string;
19 return string.substring(0, length);
22 function createBlobWithLength(length)
24 return new Blob([new Uint8Array(length)]);
27 var ws = new WebSocket("ws://localhost:8880/echo");
29 var bufferedAmountBeforeClose = 0;
30 var bufferedAmountAfterClose = 0;
31 var bufferedAmountAfterClosed = 0;
32 var closeFrameSize = 6;
34 ws.onopen = function()
36 debug("Connected.");
38 var data = createStringWithLength(8193);
39 for (var i = 0; i < 100; ++i) {
40 ws.send(data);
41 if (ws.bufferedAmount > 262144)
42 break;
44 bufferedAmountBeforeClose = ws.bufferedAmount;
45 ws.close();
46 bufferedAmountAfterClose = ws.bufferedAmount;
47 shouldBeTrue("bufferedAmountBeforeClose + closeFrameSize >= bufferedAmountAfterClose");
50 ws.onclose = function()
52 debug("Closed.");
53 shouldBe("ws.readyState", "3");
54 shouldBeTrue("ws.bufferedAmount <= bufferedAmountAfterClose");
56 debug("Testing send(string)...");
57 testBufferedAmount('send to closed socket', 21);
58 testBufferedAmount('', 0);
59 testBufferedAmount('a', 1);
60 testBufferedAmount(createStringWithLength(125), 125);
61 testBufferedAmount(createStringWithLength(126), 126); // With 16-bit extended payload length field.
62 testBufferedAmount(createStringWithLength(0xFFFF), 0xFFFF);
63 testBufferedAmount(createStringWithLength(0x10000), 0x10000); // With 64-bit extended payload length field.
65 debug("Testing send(ArrayBuffer)...");
66 testBufferedAmount(new ArrayBuffer(0), 0);
67 testBufferedAmount(new ArrayBuffer(1), 1);
68 testBufferedAmount(new ArrayBuffer(125), 125);
69 testBufferedAmount(new ArrayBuffer(126), 126);
70 testBufferedAmount(new ArrayBuffer(0xFFFF), 0xFFFF);
71 testBufferedAmount(new ArrayBuffer(0x10000), 0x10000);
73 debug("Testing send(Blob)...");
74 testBufferedAmount(createBlobWithLength(0), 0);
75 testBufferedAmount(createBlobWithLength(1), 1);
76 testBufferedAmount(createBlobWithLength(125), 125);
77 testBufferedAmount(createBlobWithLength(126), 126);
78 testBufferedAmount(createBlobWithLength(0xFFFF), 0xFFFF);
79 testBufferedAmount(createBlobWithLength(0x10000), 0x10000);
80 finishJSTest();
83 ws.onerror = function()
85 debug("Error.");
88 var messageToSend;
89 var bufferedAmountDifference;
91 function testBufferedAmount(message, expectedBufferedAmountDifference)
93 // If the connection is closed, bufferedAmount attribute's value will only
94 // increase with each call to the send() method.
95 // (the number does not reset to zero once the connection closes).
96 messageToSend = message;
97 var bufferedAmountBeforeSend = ws.bufferedAmount;
98 shouldBeUndefined("ws.send(messageToSend)");
99 var bufferedAmountAfterSend = ws.bufferedAmount;
100 bufferedAmountDifference = bufferedAmountAfterSend - bufferedAmountBeforeSend;
101 shouldEvaluateTo("bufferedAmountDifference", expectedBufferedAmountDifference);
104 </script>
105 </body>
106 </html>