diff --git a/components/script/dom/webidls/WebSocket.webidl b/components/script/dom/webidls/WebSocket.webidl index d80537d43c2..7f378edbd65 100644 --- a/components/script/dom/webidls/WebSocket.webidl +++ b/components/script/dom/webidls/WebSocket.webidl @@ -6,7 +6,7 @@ enum BinaryType { "blob", "arraybuffer" }; -[Constructor(DOMString url, optional /*(*/DOMString /*or DOMString[])*/ protocols)] +[Constructor(DOMString url, optional (DOMString or sequence) protocols)] interface WebSocket : EventTarget { readonly attribute DOMString url; //ready state diff --git a/components/script/dom/websocket.rs b/components/script/dom/websocket.rs index 08e528297a2..031b66cb8d8 100644 --- a/components/script/dom/websocket.rs +++ b/components/script/dom/websocket.rs @@ -7,6 +7,7 @@ use dom::bindings::codegen::Bindings::BlobBinding::BlobMethods; use dom::bindings::codegen::Bindings::EventHandlerBinding::EventHandlerNonNull; use dom::bindings::codegen::Bindings::WebSocketBinding; use dom::bindings::codegen::Bindings::WebSocketBinding::{BinaryType, WebSocketMethods}; +use dom::bindings::codegen::UnionTypes::StringOrStringSequence::{self, eString, eStringSequence}; use dom::bindings::conversions::{ToJSValConvertible}; use dom::bindings::error::{Error, Fallible}; use dom::bindings::global::GlobalRef; @@ -31,7 +32,6 @@ use net_traits::MessageData; use net_traits::hosts::replace_hosts; use net_traits::unwrap_websocket_protocol; use net_traits::{WebSocketCommunicate, WebSocketConnectData, WebSocketDomAction, WebSocketNetworkEvent}; -use ref_slice::ref_slice; use script_thread::ScriptThreadEventCategory::WebSocketEvent; use script_thread::{CommonScriptMsg, Runnable}; use std::borrow::ToOwned; @@ -176,7 +176,7 @@ impl WebSocket { pub fn Constructor(global: GlobalRef, url: DOMString, - protocols: Option) + protocols: Option) -> Fallible> { // Step 1. let resource_url = try!(Url::parse(&url).map_err(|_| Error::Syntax)); @@ -193,9 +193,13 @@ impl WebSocket { } // Step 4. - let protocols: &[DOMString] = protocols - .as_ref() - .map_or(&[], |ref string| ref_slice(string)); + let protocols = match protocols { + Some(eString(string)) => vec![String::from(string)], + Some(eStringSequence(sequence)) => { + sequence.into_iter().map(String::from).collect() + }, + _ => Vec::new(), + }; // Step 5. for (i, protocol) in protocols.iter().enumerate() { @@ -223,7 +227,6 @@ impl WebSocket { let address = Trusted::new(ws.r(), global.networking_thread_source()); let origin = global.get_url().serialize(); - let protocols: Vec = protocols.iter().map(|x| String::from(x.clone())).collect(); let connect_data = WebSocketConnectData { resource_url: resource_url.clone(), diff --git a/tests/wpt/metadata/websockets/Create-Secure-valid-url-array-protocols.htm.ini b/tests/wpt/metadata/websockets/Create-Secure-valid-url-array-protocols.htm.ini deleted file mode 100644 index f1617ea3c85..00000000000 --- a/tests/wpt/metadata/websockets/Create-Secure-valid-url-array-protocols.htm.ini +++ /dev/null @@ -1,9 +0,0 @@ -[Create-Secure-valid-url-array-protocols.htm] - type: testharness - expected: TIMEOUT - [W3C WebSocket API - Create Secure WebSocket - Pass a valid URL and array of protocol strings - Connection should be opened] - expected: NOTRUN - - [W3C WebSocket API - Create Secure WebSocket - Pass a valid URL and array of protocol strings - Connection should be closed] - expected: FAIL - diff --git a/tests/wpt/metadata/websockets/Create-protocols-repeated.htm.ini b/tests/wpt/metadata/websockets/Create-protocols-repeated.htm.ini deleted file mode 100644 index e5f3bfc0acf..00000000000 --- a/tests/wpt/metadata/websockets/Create-protocols-repeated.htm.ini +++ /dev/null @@ -1,5 +0,0 @@ -[Create-protocols-repeated.htm] - type: testharness - [W3C WebSocket API - Create WebSocket - Pass a valid URL and an array of protocol strings with repeated values - SYNTAX_ERR is thrown] - expected: FAIL - diff --git a/tests/wpt/metadata/websockets/Create-valid-url-array-protocols.htm.ini b/tests/wpt/metadata/websockets/Create-valid-url-array-protocols.htm.ini deleted file mode 100644 index dccba045ceb..00000000000 --- a/tests/wpt/metadata/websockets/Create-valid-url-array-protocols.htm.ini +++ /dev/null @@ -1,9 +0,0 @@ -[Create-valid-url-array-protocols.htm] - type: testharness - expected: TIMEOUT - [W3C WebSocket API - Create WebSocket - Pass a valid URL and array of protocol strings - Connection should be opened] - expected: NOTRUN - - [W3C WebSocket API - Create WebSocket - Pass a valid URL and array of protocol strings - Connection should be closed] - expected: FAIL - diff --git a/tests/wpt/metadata/websockets/constructor/022.html.ini b/tests/wpt/metadata/websockets/constructor/022.html.ini deleted file mode 100644 index 8cc8624b3a9..00000000000 --- a/tests/wpt/metadata/websockets/constructor/022.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[022.html] - type: testharness - expected: TIMEOUT - [WebSockets: protocol array] - expected: TIMEOUT -