diff options
Diffstat (limited to 'components/script/dom/websocket.rs')
-rw-r--r-- | components/script/dom/websocket.rs | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/components/script/dom/websocket.rs b/components/script/dom/websocket.rs index 88f3c6a2f8e..eb010902b40 100644 --- a/components/script/dom/websocket.rs +++ b/components/script/dom/websocket.rs @@ -6,14 +6,15 @@ use dom::bindings::cell::DOMRefCell; use dom::bindings::codegen::Bindings::EventHandlerBinding::EventHandlerNonNull; use dom::bindings::codegen::Bindings::WebSocketBinding; use dom::bindings::codegen::Bindings::WebSocketBinding::{BinaryType, WebSocketMethods}; -use dom::bindings::conversions::{Castable, ToJSValConvertible}; +use dom::bindings::conversions::{ToJSValConvertible}; use dom::bindings::error::{Error, Fallible}; use dom::bindings::global::{GlobalField, GlobalRef}; +use dom::bindings::inheritance::Castable; use dom::bindings::js::Root; use dom::bindings::refcounted::Trusted; +use dom::bindings::reflector::{Reflectable, reflect_dom_object}; use dom::bindings::str::USVString; use dom::bindings::trace::JSTraceable; -use dom::bindings::utils::{Reflectable, reflect_dom_object}; use dom::blob::Blob; use dom::closeevent::CloseEvent; use dom::event::{Event, EventBubbles, EventCancelable}; @@ -28,7 +29,7 @@ use net_traits::hosts::replace_hosts; use script_task::ScriptTaskEventCategory::WebSocketEvent; use script_task::{CommonScriptMsg, Runnable}; use std::borrow::ToOwned; -use std::cell::{Cell, RefCell}; +use std::cell::Cell; use std::sync::{Arc, Mutex}; use std::{ptr, slice}; use util::str::DOMString; @@ -133,12 +134,12 @@ pub struct WebSocket { buffered_amount: Cell<u32>, clearing_buffer: Cell<bool>, //Flag to tell if there is a running task to clear buffered_amount #[ignore_heap_size_of = "Defined in std"] - sender: RefCell<Option<Arc<Mutex<Sender<WebSocketStream>>>>>, + sender: DOMRefCell<Option<Arc<Mutex<Sender<WebSocketStream>>>>>, failed: Cell<bool>, //Flag to tell if websocket was closed due to failure full: Cell<bool>, //Flag to tell if websocket queue is full clean_close: Cell<bool>, //Flag to tell if the websocket closed cleanly (not due to full or fail) code: Cell<u16>, //Closing code - reason: DOMRefCell<DOMString>, //Closing reason + reason: DOMRefCell<String>, //Closing reason binary_type: Cell<BinaryType>, } @@ -175,7 +176,7 @@ impl WebSocket { buffered_amount: Cell::new(0), clearing_buffer: Cell::new(false), failed: Cell::new(false), - sender: RefCell::new(None), + sender: DOMRefCell::new(None), full: Cell::new(false), clean_close: Cell::new(true), code: Cell::new(0), @@ -308,7 +309,7 @@ impl WebSocketMethods for WebSocket { // https://html.spec.whatwg.org/multipage/#dom-websocket-url fn Url(&self) -> DOMString { - self.url.serialize() + DOMString(self.url.serialize()) } // https://html.spec.whatwg.org/multipage/#dom-websocket-readystate @@ -438,7 +439,7 @@ impl Runnable for ConnectionEstablishedTask { fn handler(self: Box<Self>) { let ws = self.addr.root(); - *ws.r().sender.borrow_mut() = Some(self.sender); + *ws.sender.borrow_mut() = Some(self.sender); // Step 1: Protocols. @@ -451,7 +452,7 @@ impl Runnable for ConnectionEstablishedTask { // Step 6. let global = ws.global.root(); - let event = Event::new(global.r(), "open".to_owned(), + let event = Event::new(global.r(), DOMString("open".to_owned()), EventBubbles::DoesNotBubble, EventCancelable::NotCancelable); event.fire(ws.upcast()); @@ -493,23 +494,22 @@ impl Runnable for CloseTask { //A Bad close ws.clean_close.set(false); let event = Event::new(global.r(), - "error".to_owned(), + DOMString("error".to_owned()), EventBubbles::DoesNotBubble, EventCancelable::Cancelable); event.fire(ws.upcast()); } - let rsn = ws.reason.borrow(); - let rsn_clone = rsn.clone(); + let reason = ws.reason.borrow().clone(); /*In addition, we also have to fire a close even if error event fired https://html.spec.whatwg.org/multipage/#closeWebSocket */ let close_event = CloseEvent::new(global.r(), - "close".to_owned(), + DOMString("close".to_owned()), EventBubbles::DoesNotBubble, EventCancelable::NotCancelable, ws.clean_close.get(), ws.code.get(), - rsn_clone); + DOMString(reason)); close_event.upcast::<Event>().fire(ws.upcast()); } } |