Auto merge of #9521 - Manishearth:ws-worker, r=Ms2ger

Make websockets work in a worker scope

r? @jdm

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.svg" height="40" alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9521)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2016-02-05 08:21:37 +05:30
commit b35801bf29
4 changed files with 34 additions and 4 deletions

View file

@ -8,7 +8,6 @@ use dom::bindings::codegen::Bindings::EventHandlerBinding::EventHandlerNonNull;
use dom::bindings::codegen::Bindings::LocationBinding::LocationMethods;
use dom::bindings::codegen::Bindings::WebSocketBinding;
use dom::bindings::codegen::Bindings::WebSocketBinding::{BinaryType, WebSocketMethods};
use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
use dom::bindings::codegen::UnionTypes::StringOrStringSequence::{self, eString, eStringSequence};
use dom::bindings::conversions::{ToJSValConvertible};
use dom::bindings::error::{Error, Fallible};
@ -24,6 +23,7 @@ use dom::closeevent::CloseEvent;
use dom::event::{Event, EventBubbles, EventCancelable};
use dom::eventtarget::EventTarget;
use dom::messageevent::MessageEvent;
use dom::urlhelper::UrlHelper;
use ipc_channel::ipc::{self, IpcReceiver, IpcSender};
use js::jsapi::{JSAutoCompartment, JSAutoRequest, RootedValue};
use js::jsapi::{JS_GetArrayBufferData, JS_NewArrayBuffer};
@ -233,7 +233,7 @@ impl WebSocket {
}
// Step 6: Origin.
let origin = global.as_window().Location().Origin().0;
let origin = UrlHelper::Origin(&global.get_url()).0;
// Step 7.
let ws = WebSocket::new(global, resource_url.clone());

View file

@ -33717,7 +33717,16 @@
},
"local_changes": {
"deleted": [],
"items": {},
"items": {
"testharness": {
"websockets/Send-data.worker.js": [
{
"path": "websockets/Send-data.worker.js",
"url": "/websockets/Send-data.worker"
}
]
}
},
"reftest_nodes": {}
},
"reftest_nodes": {

View file

@ -0,0 +1,21 @@
importScripts("/resources/testharness.js");
importScripts('websocket.js?pipe=sub')
var data = "test data";
async_test(function(t) {
var wsocket = CreateWebSocket(false, false, false);
wsocket.addEventListener('open', function (e) {
wsocket.send(data)
}, true)
wsocket.addEventListener('message', t.step_func_done(function(e) {
assert_equals(e.data, data);
done();
}), true);
}, "W3C WebSocket API - Send data on a WebSocket in a Worker")

View file

@ -25,7 +25,7 @@ var closeCode;
var urlToOpen;
function IsWebSocket() {
if (!window.WebSocket) {
if (!self.WebSocket) {
assert_true(false, "Browser does not support WebSocket");
}
}