aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/dom/worker.rs
diff options
context:
space:
mode:
authorMs2ger <ms2ger@gmail.com>2014-07-18 12:24:15 +0200
committerMs2ger <ms2ger@gmail.com>2014-08-12 17:47:18 +0200
commit82514dad6e11b4ef9fed334cbc554d8e782fe898 (patch)
tree75736addaa923a6e3e6354db07e03b7c2f3a4f6a /src/components/script/dom/worker.rs
parente8bd66cfa9ae46be42d22b74275c8af80c055faa (diff)
downloadservo-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.rs10
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 {