diff options
author | Ms2ger <ms2ger@gmail.com> | 2014-07-18 12:24:15 +0200 |
---|---|---|
committer | Ms2ger <ms2ger@gmail.com> | 2014-08-12 17:47:18 +0200 |
commit | 82514dad6e11b4ef9fed334cbc554d8e782fe898 (patch) | |
tree | 75736addaa923a6e3e6354db07e03b7c2f3a4f6a /src/components/script/dom/worker.rs | |
parent | e8bd66cfa9ae46be42d22b74275c8af80c055faa (diff) | |
download | servo-82514dad6e11b4ef9fed334cbc554d8e782fe898.tar.gz servo-82514dad6e11b4ef9fed334cbc554d8e782fe898.zip |
Implement DedicatedWorkerGlobalScope.postMessage.
Diffstat (limited to 'src/components/script/dom/worker.rs')
-rw-r--r-- | src/components/script/dom/worker.rs | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/components/script/dom/worker.rs b/src/components/script/dom/worker.rs index ff41b09e273..3b17375ee46 100644 --- a/src/components/script/dom/worker.rs +++ b/src/components/script/dom/worker.rs @@ -4,12 +4,14 @@ use dom::bindings::codegen::Bindings::WorkerBinding; use dom::bindings::codegen::Bindings::WorkerBinding::WorkerMethods; +use dom::bindings::codegen::InheritTypes::EventTargetCast; use dom::bindings::error::{Fallible, Syntax}; use dom::bindings::global::{GlobalRef, GlobalField}; use dom::bindings::js::{JS, JSRef, Temporary}; use dom::bindings::utils::{Reflectable, Reflector, reflect_dom_object}; use dom::dedicatedworkerglobalscope::DedicatedWorkerGlobalScope; use dom::eventtarget::{EventTarget, WorkerTypeId}; +use dom::messageevent::MessageEvent; use script_task::{ScriptChan, DOMMessage}; use servo_util::str::DOMString; @@ -66,6 +68,14 @@ impl Worker { Ok(Temporary::from_rooted(&*worker)) } + + pub fn handle_message(address: TrustedWorkerAddress, message: DOMString) { + let worker = unsafe { JS::from_trusted_worker_address(address).root() }; + + let target: &JSRef<EventTarget> = EventTargetCast::from_ref(&*worker); + let global = worker.global.root(); + MessageEvent::dispatch(target, &global.root_ref(), message); + } } impl Worker { |