aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/dom/websocket.rs11
-rw-r--r--tests/wpt/metadata/FileAPI/progress.html.ini3
-rw-r--r--tests/wpt/metadata/websockets/Create-Secure-blocked-port.htm.ini4
-rw-r--r--tests/wpt/metadata/websockets/constructor/008.html.ini3
-rw-r--r--tests/wpt/metadata/websockets/constructor/017.html.ini3
-rw-r--r--tests/wpt/metadata/websockets/constructor/021.html.ini4
-rw-r--r--tests/wpt/metadata/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-defineProperty-getter.html.ini3
-rw-r--r--tests/wpt/metadata/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-defineProperty-setter.html.ini3
-rw-r--r--tests/wpt/metadata/websockets/interfaces/WebSocket/events/020.html.ini5
-rw-r--r--tests/wpt/metadata/websockets/interfaces/WebSocket/readyState/004.html.ini3
-rw-r--r--tests/wpt/metadata/websockets/interfaces/WebSocket/readyState/005.html.ini3
-rw-r--r--tests/wpt/metadata/websockets/interfaces/WebSocket/url/005.html.ini3
-rw-r--r--tests/wpt/metadata/websockets/interfaces/WebSocket/url/006.html.ini3
-rw-r--r--tests/wpt/mozilla/meta/MANIFEST.json6
-rw-r--r--tests/wpt/mozilla/tests/mozilla/websocket_connection_fail.html19
15 files changed, 48 insertions, 28 deletions
diff --git a/components/script/dom/websocket.rs b/components/script/dom/websocket.rs
index c0c6a624862..9272346d416 100644
--- a/components/script/dom/websocket.rs
+++ b/components/script/dom/websocket.rs
@@ -141,7 +141,16 @@ impl WebSocket {
// TODO Client::connect does not conform to RFC 6455
// see https://github.com/cyderize/rust-websocket/issues/38
- let request = Client::connect(parsed_url).unwrap();
+ let request = match Client::connect(parsed_url) {
+ Ok(request) => request,
+ Err(_) => {
+ let global_root = ws_root.global.root();
+ let address = Trusted::new(global_root.r().get_cx(), ws_root, global_root.r().script_chan().clone());
+ let task = box WebSocketTaskHandler::new(address, WebSocketTask::Close);
+ global_root.r().script_chan().send(ScriptMsg::RunnableMsg(task)).unwrap();
+ return Ok(Temporary::from_rooted(ws_root));
+ }
+ };
let response = request.send().unwrap();
response.validate().unwrap();
ws_root.ready_state.set(WebSocketRequestState::Open);
diff --git a/tests/wpt/metadata/FileAPI/progress.html.ini b/tests/wpt/metadata/FileAPI/progress.html.ini
index 4a68bc13c80..bd0857516f7 100644
--- a/tests/wpt/metadata/FileAPI/progress.html.ini
+++ b/tests/wpt/metadata/FileAPI/progress.html.ini
@@ -1,3 +1,6 @@
[progress.html]
type: testharness
expected: TIMEOUT
+ [W3C WebSocket API - Create WebSocket - Pass a URL with a non ws/wss scheme - SYNTAX_ERR is thrown]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/websockets/Create-Secure-blocked-port.htm.ini b/tests/wpt/metadata/websockets/Create-Secure-blocked-port.htm.ini
index 3b3e39e8b69..f06483f7ead 100644
--- a/tests/wpt/metadata/websockets/Create-Secure-blocked-port.htm.ini
+++ b/tests/wpt/metadata/websockets/Create-Secure-blocked-port.htm.ini
@@ -1,3 +1,5 @@
[Create-Secure-blocked-port.htm]
type: testharness
- expected: CRASH
+ [W3C WebSocket API - Create Secure WebSocket - Pass a URL with a blocked port - SECURITY_ERR should be thrown]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/websockets/constructor/008.html.ini b/tests/wpt/metadata/websockets/constructor/008.html.ini
deleted file mode 100644
index dc8d6d123e8..00000000000
--- a/tests/wpt/metadata/websockets/constructor/008.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[008.html]
- type: testharness
- expected: CRASH
diff --git a/tests/wpt/metadata/websockets/constructor/017.html.ini b/tests/wpt/metadata/websockets/constructor/017.html.ini
deleted file mode 100644
index 2e28d320587..00000000000
--- a/tests/wpt/metadata/websockets/constructor/017.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[017.html]
- type: testharness
- expected: CRASH
diff --git a/tests/wpt/metadata/websockets/constructor/021.html.ini b/tests/wpt/metadata/websockets/constructor/021.html.ini
index f80c6711af2..450a75a3112 100644
--- a/tests/wpt/metadata/websockets/constructor/021.html.ini
+++ b/tests/wpt/metadata/websockets/constructor/021.html.ini
@@ -1,3 +1,5 @@
[021.html]
type: testharness
- expected: CRASH
+ [WebSockets: Same sub protocol twice]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-defineProperty-getter.html.ini b/tests/wpt/metadata/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-defineProperty-getter.html.ini
deleted file mode 100644
index baf752b0c55..00000000000
--- a/tests/wpt/metadata/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-defineProperty-getter.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[bufferedAmount-defineProperty-getter.html]
- type: testharness
- expected: CRASH
diff --git a/tests/wpt/metadata/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-defineProperty-setter.html.ini b/tests/wpt/metadata/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-defineProperty-setter.html.ini
deleted file mode 100644
index f1f2f87f79f..00000000000
--- a/tests/wpt/metadata/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-defineProperty-setter.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[bufferedAmount-defineProperty-setter.html]
- type: testharness
- expected: CRASH
diff --git a/tests/wpt/metadata/websockets/interfaces/WebSocket/events/020.html.ini b/tests/wpt/metadata/websockets/interfaces/WebSocket/events/020.html.ini
index 3d080960f3d..e12d8871a89 100644
--- a/tests/wpt/metadata/websockets/interfaces/WebSocket/events/020.html.ini
+++ b/tests/wpt/metadata/websockets/interfaces/WebSocket/events/020.html.ini
@@ -1,3 +1,6 @@
[020.html]
type: testharness
- expected: CRASH
+ expected: TIMEOUT
+ [WebSockets: error events]
+ expected: TIMEOUT
+
diff --git a/tests/wpt/metadata/websockets/interfaces/WebSocket/readyState/004.html.ini b/tests/wpt/metadata/websockets/interfaces/WebSocket/readyState/004.html.ini
deleted file mode 100644
index 58468cab4ee..00000000000
--- a/tests/wpt/metadata/websockets/interfaces/WebSocket/readyState/004.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[004.html]
- type: testharness
- expected: CRASH
diff --git a/tests/wpt/metadata/websockets/interfaces/WebSocket/readyState/005.html.ini b/tests/wpt/metadata/websockets/interfaces/WebSocket/readyState/005.html.ini
deleted file mode 100644
index 3c0649a3bd8..00000000000
--- a/tests/wpt/metadata/websockets/interfaces/WebSocket/readyState/005.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[005.html]
- type: testharness
- expected: CRASH
diff --git a/tests/wpt/metadata/websockets/interfaces/WebSocket/url/005.html.ini b/tests/wpt/metadata/websockets/interfaces/WebSocket/url/005.html.ini
deleted file mode 100644
index 3c0649a3bd8..00000000000
--- a/tests/wpt/metadata/websockets/interfaces/WebSocket/url/005.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[005.html]
- type: testharness
- expected: CRASH
diff --git a/tests/wpt/metadata/websockets/interfaces/WebSocket/url/006.html.ini b/tests/wpt/metadata/websockets/interfaces/WebSocket/url/006.html.ini
deleted file mode 100644
index 016efd444be..00000000000
--- a/tests/wpt/metadata/websockets/interfaces/WebSocket/url/006.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[006.html]
- type: testharness
- expected: CRASH
diff --git a/tests/wpt/mozilla/meta/MANIFEST.json b/tests/wpt/mozilla/meta/MANIFEST.json
index 86b5ac0f31e..097dfd3a42c 100644
--- a/tests/wpt/mozilla/meta/MANIFEST.json
+++ b/tests/wpt/mozilla/meta/MANIFEST.json
@@ -539,6 +539,12 @@
"url": "/_mozilla/mozilla/union.html"
}
],
+ "mozilla/websocket_connection_fail.html": [
+ {
+ "path": "mozilla/websocket_connection_fail.html",
+ "url": "/_mozilla/mozilla/websocket_connection_fail.html"
+ }
+ ],
"mozilla/window.html": [
{
"path": "mozilla/window.html",
diff --git a/tests/wpt/mozilla/tests/mozilla/websocket_connection_fail.html b/tests/wpt/mozilla/tests/mozilla/websocket_connection_fail.html
new file mode 100644
index 00000000000..95c56636d53
--- /dev/null
+++ b/tests/wpt/mozilla/tests/mozilla/websocket_connection_fail.html
@@ -0,0 +1,19 @@
+<html>
+<head>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+</head>
+<body>
+<script>
+async_test(function() {
+ var onclose = 0;
+ var ws = new WebSocket("ws://wrong_url");
+
+ ws.onclose = this.step_func_done(function(ev) {
+ onclose++;
+ assert_equals(onclose, 1);
+ });
+});
+</script>
+</body>
+</html>