Auto merge of #21430 - Eijebong:ws-origin, r=jdm

Properly set the origin on websocket messages

<!-- Reviewable:start -->
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/21430)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2018-08-22 15:53:26 -04:00 committed by GitHub
commit aac4a3485f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 17 additions and 17 deletions

View file

@ -313,7 +313,7 @@ impl DedicatedWorkerGlobalScope {
scope.reflector().get_jsobject().get());
rooted!(in(scope.get_cx()) let mut message = UndefinedValue());
data.read(scope.upcast(), message.handle_mut());
MessageEvent::dispatch_jsval(target, scope.upcast(), message.handle());
MessageEvent::dispatch_jsval(target, scope.upcast(), message.handle(), None);
},
WorkerScriptMsg::Common(msg) => {
self.upcast::<WorkerGlobalScope>().process_event(msg);

View file

@ -82,14 +82,15 @@ impl MessageEvent {
impl MessageEvent {
pub fn dispatch_jsval(target: &EventTarget,
scope: &GlobalScope,
message: HandleValue) {
message: HandleValue,
origin: Option<&str>) {
let messageevent = MessageEvent::new(
scope,
atom!("message"),
false,
false,
message,
DOMString::new(),
DOMString::from(origin.unwrap_or("")),
DOMString::new());
messageevent.upcast::<Event>().fire(target);
}

View file

@ -33,7 +33,7 @@ use net_traits::request::{RequestInit, RequestMode};
use profile_traits::ipc as ProfiledIpc;
use script_runtime::CommonScriptMsg;
use script_runtime::ScriptThreadEventCategory::WebSocketEvent;
use servo_url::ServoUrl;
use servo_url::{ImmutableOrigin, ServoUrl};
use std::borrow::ToOwned;
use std::cell::Cell;
use std::ptr;
@ -274,6 +274,10 @@ impl WebSocket {
Ok(true)
}
pub fn origin(&self) -> ImmutableOrigin {
self.url.origin()
}
}
impl WebSocketMethods for WebSocket {
@ -549,7 +553,12 @@ impl TaskOnce for MessageReceivedTask {
}
},
}
MessageEvent::dispatch_jsval(ws.upcast(), &global, message.handle());
MessageEvent::dispatch_jsval(
ws.upcast(),
&global,
message.handle(),
Some(&ws.origin().ascii_serialization())
);
}
}
}

View file

@ -2114,6 +2114,7 @@ impl Window {
this.upcast(),
this.upcast(),
message_clone.handle(),
None
);
});
// FIXME(nox): Why are errors silenced here?

View file

@ -130,7 +130,7 @@ impl Worker {
let _ac = JSAutoCompartment::new(global.get_cx(), target.reflector().get_jsobject().get());
rooted!(in(global.get_cx()) let mut message = UndefinedValue());
data.read(&global, message.handle_mut());
MessageEvent::dispatch_jsval(target, &global, message.handle());
MessageEvent::dispatch_jsval(target, &global, message.handle(), None);
}
pub fn dispatch_simple_error(address: TrustedWorkerAddress) {

View file

@ -1,11 +0,0 @@
[003.html]
type: testharness
[WebSockets: origin]
expected: FAIL
[003.html?wss]
type: testharness
[WebSockets: origin]
expected: FAIL