aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/websocket.rs
diff options
context:
space:
mode:
authorMs2ger <ms2ger@gmail.com>2015-07-13 15:22:06 +0200
committerMs2ger <ms2ger@gmail.com>2015-07-13 16:03:02 +0200
commitf93f49490f54669ff586d3ff6d89af5434dedd6a (patch)
treebf5850be2e1aa1fb1d7a0e7654f600243c765d44 /components/script/dom/websocket.rs
parent17bd7e5ec3e39ab62568e80298a54078e65c41e0 (diff)
downloadservo-f93f49490f54669ff586d3ff6d89af5434dedd6a.tar.gz
servo-f93f49490f54669ff586d3ff6d89af5434dedd6a.zip
Replace WebSocketTask::Open by ConnectionEstablished.
Diffstat (limited to 'components/script/dom/websocket.rs')
-rw-r--r--components/script/dom/websocket.rs36
1 files changed, 22 insertions, 14 deletions
diff --git a/components/script/dom/websocket.rs b/components/script/dom/websocket.rs
index b27ab3f75f7..0c0ab25a3ea 100644
--- a/components/script/dom/websocket.rs
+++ b/components/script/dom/websocket.rs
@@ -151,7 +151,6 @@ impl WebSocket {
};
let response = request.send().unwrap();
response.validate().unwrap();
- ws.r().ready_state.set(WebSocketRequestState::Open);
let (temp_sender, temp_receiver) = response.begin().split();
*ws.r().sender.borrow_mut() = Some(temp_sender);
@@ -161,7 +160,7 @@ impl WebSocket {
let global_root = ws.r().global.root();
let addr: Trusted<WebSocket> =
Trusted::new(global_root.r().get_cx(), ws.r(), global_root.r().script_chan().clone());
- let open_task = box WebSocketTaskHandler::new(addr.clone(), WebSocketTask::Open);
+ let open_task = box WebSocketTaskHandler::new(addr, WebSocketTask::ConnectionEstablished);
global_root.r().script_chan().send(ScriptMsg::RunnableMsg(open_task)).unwrap();
//TODO: Spawn thread here for receive loop
/*TODO: Add receive loop here and make new thread run this
@@ -268,7 +267,8 @@ impl<'a> WebSocketMethods for &'a WebSocket {
pub enum WebSocketTask {
- Open,
+ /// Task queued when *the WebSocket connection is established*.
+ ConnectionEstablished,
Close,
}
@@ -285,19 +285,27 @@ impl WebSocketTaskHandler {
}
}
- fn dispatch_open(&self) {
+ fn connection_established(&self) {
/*TODO: Items 1, 3, 4, & 5 under "WebSocket connection is established" as specified here:
https://html.spec.whatwg.org/multipage/#feedback-from-the-protocol
*/
- let ws = self.addr.root(); //Get root
- let ws = ws.r(); //Get websocket reference
+ let ws = self.addr.root();
+
+ // Step 1: Protocols.
+
+ // Step 2.
+ ws.ready_state.set(WebSocketRequestState::Open);
+
+ // Step 3: Extensions.
+ // Step 4: Protocols.
+ // Step 5: Cookies.
+
+ // Step 6.
let global = ws.global.root();
- let event = Event::new(global.r(),
- "open".to_owned(),
- EventBubbles::DoesNotBubble,
- EventCancelable::NotCancelable);
- let target = EventTargetCast::from_ref(ws);
- event.r().fire(target);
+ let event = Event::new(global.r(), "open".to_owned(),
+ EventBubbles::DoesNotBubble,
+ EventCancelable::NotCancelable);
+ event.fire(EventTargetCast::from_ref(ws.r()));
}
fn dispatch_close(&self) {
@@ -339,8 +347,8 @@ impl WebSocketTaskHandler {
impl Runnable for WebSocketTaskHandler {
fn handler(self: Box<WebSocketTaskHandler>) {
match self.task {
- WebSocketTask::Open => {
- self.dispatch_open();
+ WebSocketTask::ConnectionEstablished => {
+ self.connection_established();
}
WebSocketTask::Close => {
self.dispatch_close();