diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2018-08-22 15:53:26 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-22 15:53:26 -0400 |
commit | aac4a3485f1080b43485a4349cbcdfd9bae09767 (patch) | |
tree | 65046195a031fef99ffdac281192e8247840b95e /components/script | |
parent | 73df3ad2ea27c562311993599e1af9f9b4232ee9 (diff) | |
parent | a1925aab52bee832e67c8178df6144ec38fa1845 (diff) | |
download | servo-aac4a3485f1080b43485a4349cbcdfd9bae09767.tar.gz servo-aac4a3485f1080b43485a4349cbcdfd9bae09767.zip |
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 -->
Diffstat (limited to 'components/script')
-rw-r--r-- | components/script/dom/dedicatedworkerglobalscope.rs | 2 | ||||
-rw-r--r-- | components/script/dom/messageevent.rs | 5 | ||||
-rw-r--r-- | components/script/dom/websocket.rs | 13 | ||||
-rw-r--r-- | components/script/dom/window.rs | 1 | ||||
-rw-r--r-- | components/script/dom/worker.rs | 2 |
5 files changed, 17 insertions, 6 deletions
diff --git a/components/script/dom/dedicatedworkerglobalscope.rs b/components/script/dom/dedicatedworkerglobalscope.rs index 8ef8e5ad696..1c8c2316dde 100644 --- a/components/script/dom/dedicatedworkerglobalscope.rs +++ b/components/script/dom/dedicatedworkerglobalscope.rs @@ -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); diff --git a/components/script/dom/messageevent.rs b/components/script/dom/messageevent.rs index c7cc693c7ba..f7a47488558 100644 --- a/components/script/dom/messageevent.rs +++ b/components/script/dom/messageevent.rs @@ -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); } diff --git a/components/script/dom/websocket.rs b/components/script/dom/websocket.rs index 14ff325f56d..2de8f97d98e 100644 --- a/components/script/dom/websocket.rs +++ b/components/script/dom/websocket.rs @@ -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()) + ); } } } diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs index f15e2824db4..48b0861216c 100644 --- a/components/script/dom/window.rs +++ b/components/script/dom/window.rs @@ -2114,6 +2114,7 @@ impl Window { this.upcast(), this.upcast(), message_clone.handle(), + None ); }); // FIXME(nox): Why are errors silenced here? diff --git a/components/script/dom/worker.rs b/components/script/dom/worker.rs index 35d8c932de4..b3ba42afb2b 100644 --- a/components/script/dom/worker.rs +++ b/components/script/dom/worker.rs @@ -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) { |