diff options
author | bors-servo <metajack+bors@gmail.com> | 2015-01-04 06:21:50 -0700 |
---|---|---|
committer | bors-servo <metajack+bors@gmail.com> | 2015-01-04 06:21:50 -0700 |
commit | 076e28795d90a9a8bb523774b993f841602ae9e6 (patch) | |
tree | fb430190365e53cfa56548f827235a29c51c3990 /components/script/dom | |
parent | dd84ae6bfb46872dfb0f0a8dca680452dadce3f0 (diff) | |
parent | 50d53c9fa3802dd5ab27caa4a34b0b141d94ac40 (diff) | |
download | servo-076e28795d90a9a8bb523774b993f841602ae9e6.tar.gz servo-076e28795d90a9a8bb523774b993f841602ae9e6.zip |
auto merge of #4533 : catchmrbharath/servo/4497, r=jdm
A lot of tests were failing when I ran `./mach test tests/wpt/web-platform-tests/workers --processes=4` and
`./mach test tests/wpt/web-platform-tests/XMLHttpRequest --processes=4` on master. So I could not completely test it. I verified that the tests that were failing were the same, before and after the change.
Is there any way to run it here?
Diffstat (limited to 'components/script/dom')
-rw-r--r-- | components/script/dom/dedicatedworkerglobalscope.rs | 7 | ||||
-rw-r--r-- | components/script/dom/worker.rs | 23 |
2 files changed, 24 insertions, 6 deletions
diff --git a/components/script/dom/dedicatedworkerglobalscope.rs b/components/script/dom/dedicatedworkerglobalscope.rs index b095cd7b104..0257f8edc2e 100644 --- a/components/script/dom/dedicatedworkerglobalscope.rs +++ b/components/script/dom/dedicatedworkerglobalscope.rs @@ -16,7 +16,7 @@ use dom::bindings::refcounted::LiveDOMReferences; use dom::bindings::utils::Reflectable; use dom::eventtarget::{EventTarget, EventTargetHelpers, EventTargetTypeId}; use dom::messageevent::MessageEvent; -use dom::worker::{Worker, TrustedWorkerAddress}; +use dom::worker::{TrustedWorkerAddress, WorkerMessageHandler}; use dom::workerglobalscope::{WorkerGlobalScope, WorkerGlobalScopeHelpers}; use dom::workerglobalscope::WorkerGlobalScopeTypeId; use script_task::{ScriptTask, ScriptChan, ScriptMsg, TimerSource}; @@ -216,9 +216,6 @@ impl<'a> PrivateDedicatedWorkerGlobalScopeHelpers for JSRef<'a, DedicatedWorkerG ScriptMsg::RunnableMsg(runnable) => { runnable.handler() }, - ScriptMsg::WorkerPostMessage(addr, data, nbytes) => { - Worker::handle_message(addr, data, nbytes); - }, ScriptMsg::RefcountCleanup(addr) => { let scope: JSRef<WorkerGlobalScope> = WorkerGlobalScopeCast::from_ref(self); LiveDOMReferences::cleanup(scope.get_cx(), addr); @@ -246,7 +243,7 @@ impl<'a> DedicatedWorkerGlobalScopeMethods for JSRef<'a, DedicatedWorkerGlobalSc } let worker = self.worker.borrow().as_ref().unwrap().clone(); - self.parent_sender.send(ScriptMsg::WorkerPostMessage(worker, data, nbytes)); + self.parent_sender.send(ScriptMsg::RunnableMsg(box WorkerMessageHandler::new(worker, data, nbytes))); Ok(()) } diff --git a/components/script/dom/worker.rs b/components/script/dom/worker.rs index 51f9962ed6b..fbf3ca5043d 100644 --- a/components/script/dom/worker.rs +++ b/components/script/dom/worker.rs @@ -16,7 +16,7 @@ use dom::bindings::utils::{Reflectable, reflect_dom_object}; use dom::dedicatedworkerglobalscope::DedicatedWorkerGlobalScope; use dom::eventtarget::{EventTarget, EventTargetHelpers, EventTargetTypeId}; use dom::messageevent::MessageEvent; -use script_task::{ScriptChan, ScriptMsg}; +use script_task::{ScriptChan, ScriptMsg, Runnable}; use servo_util::str::DOMString; @@ -120,3 +120,24 @@ impl<'a> WorkerMethods for JSRef<'a, Worker> { event_handler!(message, GetOnmessage, SetOnmessage) } +pub struct WorkerMessageHandler { + addr: TrustedWorkerAddress, + data: *mut u64, + nbytes: size_t +} + +impl WorkerMessageHandler { + pub fn new(addr: TrustedWorkerAddress, data: *mut u64, nbytes: size_t) -> WorkerMessageHandler { + WorkerMessageHandler { + addr: addr, + data: data, + nbytes: nbytes, + } + } +} + +impl Runnable for WorkerMessageHandler { + fn handler(&self){ + Worker::handle_message(self.addr.clone(), self.data, self.nbytes); + } +} |