diff options
author | bors-servo <metajack+bors@gmail.com> | 2015-07-14 03:34:47 -0600 |
---|---|---|
committer | bors-servo <metajack+bors@gmail.com> | 2015-07-14 03:34:47 -0600 |
commit | a2903091e4ff06a1de8792bb6b09cf888c1edbfc (patch) | |
tree | f563b2873886a7377ce6ef1ceb2bb196121e52d7 | |
parent | 556c0e1509cb48b90f492bcf0f25d0ed14b015d1 (diff) | |
parent | 48b94ec02b39b65aab25ec2d65d67d21a3ee1f93 (diff) | |
download | servo-a2903091e4ff06a1de8792bb6b09cf888c1edbfc.tar.gz servo-a2903091e4ff06a1de8792bb6b09cf888c1edbfc.zip |
Auto merge of #6622 - Ms2ger:send-invalid-state, r=metajack
Throw an InvalidStateError from WebSocket#send when it is called too early.
<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/6622)
<!-- Reviewable:end -->
6 files changed, 77 insertions, 14 deletions
diff --git a/components/script/dom/websocket.rs b/components/script/dom/websocket.rs index 13423097cba..e8c6aec8f50 100644 --- a/components/script/dom/websocket.rs +++ b/components/script/dom/websocket.rs @@ -208,7 +208,11 @@ impl<'a> WebSocketMethods for &'a WebSocket { self.ready_state.get() as u16 } - fn Send(self, data: Option<USVString>)-> Fallible<()>{ + fn Send(self, data: Option<USVString>) -> Fallible<()> { + if self.ready_state.get() == WebSocketRequestState::Connecting { + return Err(Error::InvalidState); + } + /*TODO: This is not up to spec see http://html.spec.whatwg.org/multipage/comms.html search for "If argument is a string" TODO: Need to buffer data diff --git a/tests/wpt/metadata/websockets/Send-before-open.htm.ini b/tests/wpt/metadata/websockets/Send-before-open.htm.ini deleted file mode 100644 index 548882ca473..00000000000 --- a/tests/wpt/metadata/websockets/Send-before-open.htm.ini +++ /dev/null @@ -1,5 +0,0 @@ -[Send-before-open.htm] - type: testharness - [W3C WebSocket API - Send data on a WebSocket before connection is opened - INVALID_STATE_ERR is returned] - expected: FAIL - diff --git a/tests/wpt/metadata/websockets/interfaces.html.ini b/tests/wpt/metadata/websockets/interfaces.html.ini index 5e4daae8f67..d26eadcc658 100644 --- a/tests/wpt/metadata/websockets/interfaces.html.ini +++ b/tests/wpt/metadata/websockets/interfaces.html.ini @@ -1,3 +1,71 @@ [interfaces.html] type: testharness - expected: CRASH + [WebSocket interface: existence and properties of interface object] + expected: FAIL + + [WebSocket interface: existence and properties of interface prototype object] + expected: FAIL + + [WebSocket interface: attribute bufferedAmount] + expected: FAIL + + [WebSocket interface: attribute extensions] + expected: FAIL + + [WebSocket interface: attribute protocol] + expected: FAIL + + [WebSocket interface: attribute onmessage] + expected: FAIL + + [WebSocket interface: attribute binaryType] + expected: FAIL + + [WebSocket interface: operation send(DOMString)] + expected: FAIL + + [WebSocket interface: operation send(Blob)] + expected: FAIL + + [WebSocket interface: operation send(ArrayBuffer)] + expected: FAIL + + [WebSocket interface: operation send(ArrayBufferView)] + expected: FAIL + + [Stringification of new WebSocket("ws://foo")] + expected: FAIL + + [WebSocket interface: new WebSocket("ws://foo") must inherit property "bufferedAmount" with the proper type (6)] + expected: FAIL + + [WebSocket interface: new WebSocket("ws://foo") must inherit property "extensions" with the proper type (10)] + expected: FAIL + + [WebSocket interface: new WebSocket("ws://foo") must inherit property "protocol" with the proper type (11)] + expected: FAIL + + [WebSocket interface: new WebSocket("ws://foo") must inherit property "onmessage" with the proper type (13)] + expected: FAIL + + [WebSocket interface: new WebSocket("ws://foo") must inherit property "binaryType" with the proper type (14)] + expected: FAIL + + [WebSocket interface: calling send(DOMString) on new WebSocket("ws://foo") with too few arguments must throw TypeError] + expected: FAIL + + [WebSocket interface: calling send(Blob) on new WebSocket("ws://foo") with too few arguments must throw TypeError] + expected: FAIL + + [WebSocket interface: calling send(ArrayBuffer) on new WebSocket("ws://foo") with too few arguments must throw TypeError] + expected: FAIL + + [WebSocket interface: calling send(ArrayBufferView) on new WebSocket("ws://foo") with too few arguments must throw TypeError] + expected: FAIL + + [CloseEvent interface: existence and properties of interface object] + expected: FAIL + + [CloseEvent interface: existence and properties of interface prototype object] + expected: FAIL + diff --git a/tests/wpt/metadata/websockets/interfaces/WebSocket/send/001.html.ini b/tests/wpt/metadata/websockets/interfaces/WebSocket/send/001.html.ini index 67f5d9b0879..81dc9b1e553 100644 --- a/tests/wpt/metadata/websockets/interfaces/WebSocket/send/001.html.ini +++ b/tests/wpt/metadata/websockets/interfaces/WebSocket/send/001.html.ini @@ -1,3 +1,5 @@ [001.html] type: testharness - expected: CRASH + [WebSockets: send() with no args] + expected: FAIL + diff --git a/tests/wpt/metadata/websockets/interfaces/WebSocket/send/003.html.ini b/tests/wpt/metadata/websockets/interfaces/WebSocket/send/003.html.ini deleted file mode 100644 index f2b01b122e4..00000000000 --- a/tests/wpt/metadata/websockets/interfaces/WebSocket/send/003.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[003.html] - type: testharness - expected: CRASH diff --git a/tests/wpt/metadata/websockets/interfaces/WebSocket/send/004.html.ini b/tests/wpt/metadata/websockets/interfaces/WebSocket/send/004.html.ini deleted file mode 100644 index 58468cab4ee..00000000000 --- a/tests/wpt/metadata/websockets/interfaces/WebSocket/send/004.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[004.html] - type: testharness - expected: CRASH |