diff --git a/components/script/dom/dedicatedworkerglobalscope.rs b/components/script/dom/dedicatedworkerglobalscope.rs index 76c822e5679..abc7a9261a8 100644 --- a/components/script/dom/dedicatedworkerglobalscope.rs +++ b/components/script/dom/dedicatedworkerglobalscope.rs @@ -17,7 +17,7 @@ use dom::bindings::str::DOMString; use dom::bindings::structuredclone::StructuredCloneData; use dom::globalscope::GlobalScope; use dom::messageevent::MessageEvent; -use dom::worker::{TrustedWorkerAddress, WorkerErrorHandler, WorkerMessageHandler}; +use dom::worker::{TrustedWorkerAddress, Worker, WorkerErrorHandler}; use dom::workerglobalscope::WorkerGlobalScope; use dom_struct::dom_struct; use ipc_channel::ipc::{self, IpcReceiver, IpcSender}; @@ -375,10 +375,10 @@ impl DedicatedWorkerGlobalScopeMethods for DedicatedWorkerGlobalScope { unsafe fn PostMessage(&self, cx: *mut JSContext, message: HandleValue) -> ErrorResult { let data = StructuredCloneData::write(cx, message)?; let worker = self.worker.borrow().as_ref().unwrap().clone(); - self.parent_sender - .send(CommonScriptMsg::Task(WorkerEvent, - box WorkerMessageHandler::new(worker, data))) - .unwrap(); + let task = box task!(post_worker_message: move || { + Worker::handle_message(worker, data); + }); + self.parent_sender.send(CommonScriptMsg::Task(WorkerEvent, task)).unwrap(); Ok(()) } diff --git a/components/script/dom/worker.rs b/components/script/dom/worker.rs index 70efc86606a..9d9d635ffa5 100644 --- a/components/script/dom/worker.rs +++ b/components/script/dom/worker.rs @@ -198,27 +198,6 @@ impl WorkerMethods for Worker { event_handler!(error, GetOnerror, SetOnerror); } -pub struct WorkerMessageHandler { - addr: TrustedWorkerAddress, - data: StructuredCloneData, -} - -impl WorkerMessageHandler { - pub fn new(addr: TrustedWorkerAddress, data: StructuredCloneData) -> WorkerMessageHandler { - WorkerMessageHandler { - addr: addr, - data: data, - } - } -} - -impl Task for WorkerMessageHandler { - fn run(self: Box) { - let this = *self; - Worker::handle_message(this.addr, this.data); - } -} - impl Task for SimpleWorkerErrorHandler { #[allow(unrooted_must_root)] fn run(self: Box) {