mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
Websockets send typed arrays now
This commit is contained in:
parent
3ce3f39383
commit
bff887c5a6
13 changed files with 32 additions and 90 deletions
|
@ -24,7 +24,8 @@ use dom_struct::dom_struct;
|
|||
use ipc_channel::ipc::{self, IpcReceiver, IpcSender};
|
||||
use js::jsapi::{JSAutoCompartment, JSObject};
|
||||
use js::jsval::UndefinedValue;
|
||||
use js::typedarray::{ArrayBuffer, CreateWith};
|
||||
use js::rust::CustomAutoRooterGuard;
|
||||
use js::typedarray::{ArrayBuffer, ArrayBufferView, CreateWith};
|
||||
use net_traits::{CoreResourceMsg, FetchChannels};
|
||||
use net_traits::{WebSocketDomAction, WebSocketNetworkEvent};
|
||||
use net_traits::MessageData;
|
||||
|
@ -350,6 +351,34 @@ impl WebSocketMethods for WebSocket {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#dom-websocket-send
|
||||
fn Send__(&self, array: CustomAutoRooterGuard<ArrayBuffer>) -> ErrorResult {
|
||||
let bytes = array.to_vec();
|
||||
let data_byte_len = bytes.len();
|
||||
let send_data = self.send_impl(data_byte_len as u64)?;
|
||||
|
||||
if send_data {
|
||||
let mut other_sender = self.sender.borrow_mut();
|
||||
let my_sender = other_sender.as_mut().unwrap();
|
||||
let _ = my_sender.send(WebSocketDomAction::SendMessage(MessageData::Binary(bytes)));
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#dom-websocket-send
|
||||
fn Send___(&self, array: CustomAutoRooterGuard<ArrayBufferView>) -> ErrorResult {
|
||||
let bytes = array.to_vec();
|
||||
let data_byte_len = bytes.len();
|
||||
let send_data = self.send_impl(data_byte_len as u64)?;
|
||||
|
||||
if send_data {
|
||||
let mut other_sender = self.sender.borrow_mut();
|
||||
let my_sender = other_sender.as_mut().unwrap();
|
||||
let _ = my_sender.send(WebSocketDomAction::SendMessage(MessageData::Binary(bytes)));
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#dom-websocket-close
|
||||
fn Close(&self, code: Option<u16>, reason: Option<USVString>) -> ErrorResult {
|
||||
if let Some(code) = code {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue