diff options
Diffstat (limited to 'components/script/dom/abstractworkerglobalscope.rs')
-rw-r--r-- | components/script/dom/abstractworkerglobalscope.rs | 21 |
1 files changed, 6 insertions, 15 deletions
diff --git a/components/script/dom/abstractworkerglobalscope.rs b/components/script/dom/abstractworkerglobalscope.rs index e8e41375b70..d5186f91845 100644 --- a/components/script/dom/abstractworkerglobalscope.rs +++ b/components/script/dom/abstractworkerglobalscope.rs @@ -81,32 +81,27 @@ impl ScriptPort for Receiver<DedicatedWorkerScriptMsg> { } pub trait WorkerEventLoopMethods { - type TimerMsg: Send; type WorkerMsg: QueuedTaskConversion + Send; type Event; - fn timer_event_port(&self) -> &Receiver<Self::TimerMsg>; fn task_queue(&self) -> &TaskQueue<Self::WorkerMsg>; fn handle_event(&self, event: Self::Event); fn handle_worker_post_event(&self, worker: &TrustedWorkerAddress) -> Option<AutoWorkerReset>; fn from_worker_msg(&self, msg: Self::WorkerMsg) -> Self::Event; - fn from_timer_msg(&self, msg: Self::TimerMsg) -> Self::Event; fn from_devtools_msg(&self, msg: DevtoolScriptControlMsg) -> Self::Event; } // https://html.spec.whatwg.org/multipage/#worker-event-loop -pub fn run_worker_event_loop<T, TimerMsg, WorkerMsg, Event>( +pub fn run_worker_event_loop<T, WorkerMsg, Event>( worker_scope: &T, worker: Option<&TrustedWorkerAddress>, ) where - TimerMsg: Send, WorkerMsg: QueuedTaskConversion + Send, - T: WorkerEventLoopMethods<TimerMsg = TimerMsg, WorkerMsg = WorkerMsg, Event = Event> + T: WorkerEventLoopMethods<WorkerMsg = WorkerMsg, Event = Event> + DerivedFrom<WorkerGlobalScope> + DerivedFrom<GlobalScope> + DomObject, { let scope = worker_scope.upcast::<WorkerGlobalScope>(); - let timer_event_port = worker_scope.timer_event_port(); let devtools_port = match scope.from_devtools_sender() { Some(_) => Some(scope.from_devtools_receiver()), None => None, @@ -117,7 +112,6 @@ pub fn run_worker_event_loop<T, TimerMsg, WorkerMsg, Event>( task_queue.take_tasks(msg.unwrap()); worker_scope.from_worker_msg(task_queue.recv().unwrap()) }, - recv(timer_event_port) -> msg => worker_scope.from_timer_msg(msg.unwrap()), recv(devtools_port.unwrap_or(&crossbeam_channel::never())) -> msg => worker_scope.from_devtools_msg(msg.unwrap()), }; @@ -132,13 +126,10 @@ pub fn run_worker_event_loop<T, TimerMsg, WorkerMsg, Event>( // Batch all events that are ready. // The task queue will throttle non-priority tasks if necessary. match task_queue.try_recv() { - Err(_) => match timer_event_port.try_recv() { - Err(_) => match devtools_port.map(|port| port.try_recv()) { - None => {}, - Some(Err(_)) => break, - Some(Ok(ev)) => sequential.push(worker_scope.from_devtools_msg(ev)), - }, - Ok(ev) => sequential.push(worker_scope.from_timer_msg(ev)), + Err(_) => match devtools_port.map(|port| port.try_recv()) { + None => {}, + Some(Err(_)) => break, + Some(Ok(ev)) => sequential.push(worker_scope.from_devtools_msg(ev)), }, Ok(ev) => sequential.push(worker_scope.from_worker_msg(ev)), } |