aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2016-02-05 08:21:37 +0530
committerbors-servo <lbergstrom+bors@mozilla.com>2016-02-05 08:21:37 +0530
commitb35801bf291466a4db4eb805fc86aba20a29545e (patch)
treef3f20c5383b705cf140358dd7c48c3c1a1d5ac2d
parent87aaa5ffe0ca7da8771883ea40d04d7c1449eea9 (diff)
parent396533c47971d1fad1d38a5e14800b7c107e704e (diff)
downloadservo-b35801bf291466a4db4eb805fc86aba20a29545e.tar.gz
servo-b35801bf291466a4db4eb805fc86aba20a29545e.zip
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 -->
-rw-r--r--components/script/dom/websocket.rs4
-rw-r--r--tests/wpt/metadata/MANIFEST.json11
-rw-r--r--tests/wpt/web-platform-tests/websockets/Send-data.worker.js21
-rw-r--r--tests/wpt/web-platform-tests/websockets/websocket.js2
4 files changed, 34 insertions, 4 deletions
diff --git a/components/script/dom/websocket.rs b/components/script/dom/websocket.rs
index c9658a1b5c2..c8544698ecb 100644
--- a/components/script/dom/websocket.rs
+++ b/components/script/dom/websocket.rs
@@ -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());
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 9dda2cb2e02..fac71bb940d 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -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": {
diff --git a/tests/wpt/web-platform-tests/websockets/Send-data.worker.js b/tests/wpt/web-platform-tests/websockets/Send-data.worker.js
new file mode 100644
index 00000000000..f03776fb323
--- /dev/null
+++ b/tests/wpt/web-platform-tests/websockets/Send-data.worker.js
@@ -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")
+
+
diff --git a/tests/wpt/web-platform-tests/websockets/websocket.js b/tests/wpt/web-platform-tests/websockets/websocket.js
index 79b7bd59c58..4b44a41608e 100644
--- a/tests/wpt/web-platform-tests/websockets/websocket.js
+++ b/tests/wpt/web-platform-tests/websockets/websocket.js
@@ -25,7 +25,7 @@ var closeCode;
var urlToOpen;
function IsWebSocket() {
- if (!window.WebSocket) {
+ if (!self.WebSocket) {
assert_true(false, "Browser does not support WebSocket");
}
}