Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Websockets send typed arrays now #20426

Merged
merged 1 commit into from Mar 25, 2018
Merged
Changes from all commits
Commits
File filter...
Filter file types
Jump to…
Jump to file
Failed to load files.

Always

Just for now

@@ -30,6 +30,6 @@ interface WebSocket : EventTarget {
attribute BinaryType binaryType;
[Throws] void send(USVString data);
[Throws] void send(Blob data);
//void send(ArrayBuffer data);
//void send(ArrayBufferView data);
[Throws] void send(ArrayBuffer data);
[Throws] void send(ArrayBufferView data);
};
@@ -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 {

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

@@ -1,9 +1,3 @@
[001.html]
type: testharness
[WebSockets: Send/Receive blob, blob size less than network array buffer]
expected: FAIL


[001.html?wss]
type: testharness
expected: TIMEOUT
@@ -1,9 +1,3 @@
[002.html]
type: testharness
[WebSockets: Send/Receive blob, blob size greater than network array buffer]
expected: FAIL


[002.html?wss]
type: testharness
[WebSockets: Send/Receive blob, blob size greater than network array buffer]
@@ -1,9 +1,3 @@
[004.html]
type: testharness
[WebSockets: Send/Receive ArrayBuffer, size greater than network array buffer]
expected: FAIL


[004.html?wss]
type: testharness
[WebSockets: Send/Receive ArrayBuffer, size greater than network array buffer]
@@ -1,9 +1,3 @@
[005.html]
type: testharness
[WebSockets: Send/Receive ArrayBuffer, size less than network array buffer]
expected: FAIL


[005.html?wss]
type: testharness
expected: TIMEOUT
@@ -1,9 +1,3 @@
[bufferedAmount-arraybuffer.html]
type: testharness
[WebSockets: bufferedAmount for ArrayBuffer]
expected: FAIL


[bufferedAmount-arraybuffer.html?wss]
type: testharness
expected: TIMEOUT
@@ -1,9 +1,3 @@
[bufferedAmount-blob.html]
type: testharness
[WebSockets: bufferedAmount for blob]
expected: FAIL


[bufferedAmount-blob.html?wss]
type: testharness
expected: TIMEOUT
ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.