diff options
author | Rebecca <rebstar6@gmail.com> | 2016-02-08 17:26:22 -0500 |
---|---|---|
committer | Rebecca <rebstar6@gmail.com> | 2016-02-17 14:50:52 -0500 |
commit | cf6fd6dafe9b4abf73dc1c38fa270e786de82952 (patch) | |
tree | e2705e9aca73a42cba01e88f6b646de05a0f4ebd /components/script/dom/websocket.rs | |
parent | 7c249b1d539c37ab54e9fabfaf0442a5ac0243a9 (diff) | |
download | servo-cf6fd6dafe9b4abf73dc1c38fa270e786de82952.tar.gz servo-cf6fd6dafe9b4abf73dc1c38fa270e786de82952.zip |
Add support for websocket request and response cookies
Also change expected behavior to pass for all in tests/wpt/web-platform-tests/websockets/cookies
Diffstat (limited to 'components/script/dom/websocket.rs')
-rw-r--r-- | components/script/dom/websocket.rs | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/components/script/dom/websocket.rs b/components/script/dom/websocket.rs index c8544698ecb..d87374e33f8 100644 --- a/components/script/dom/websocket.rs +++ b/components/script/dom/websocket.rs @@ -29,7 +29,8 @@ use js::jsapi::{JSAutoCompartment, JSAutoRequest, RootedValue}; use js::jsapi::{JS_GetArrayBufferData, JS_NewArrayBuffer}; use js::jsval::UndefinedValue; use libc::{uint32_t, uint8_t}; -use net_traits::ControlMsg::WebsocketConnect; +use net_traits::ControlMsg::{WebsocketConnect, SetCookiesForUrl}; +use net_traits::CookieSource::HTTP; use net_traits::MessageData; use net_traits::hosts::replace_hosts; use net_traits::unwrap_websocket_protocol; @@ -485,6 +486,15 @@ impl Runnable for ConnectionEstablishedTask { }; // Step 5: Cookies. + if let Some(cookies) = self.headers.get_raw("set-cookie") { + for cookie in cookies.iter() { + if let Ok(cookie_value) = String::from_utf8(cookie.clone()) { + let _ = ws.global().r().resource_thread().send(SetCookiesForUrl(ws.url.clone(), + cookie_value, + HTTP)); + } + } + } // Step 6. ws.upcast().fire_simple_event("open", global.r()); |