diff options
Diffstat (limited to 'components/script/dom')
-rw-r--r-- | components/script/dom/abstractworkerglobalscope.rs | 30 | ||||
-rw-r--r-- | components/script/dom/bindings/trace.rs | 2 | ||||
-rw-r--r-- | components/script/dom/dedicatedworkerglobalscope.rs | 13 | ||||
-rw-r--r-- | components/script/dom/paintworkletglobalscope.rs | 14 | ||||
-rw-r--r-- | components/script/dom/serviceworkerglobalscope.rs | 10 | ||||
-rw-r--r-- | components/script/dom/servoparser/async_html.rs | 6 | ||||
-rw-r--r-- | components/script/dom/testworkletglobalscope.rs | 2 | ||||
-rw-r--r-- | components/script/dom/vrdisplay.rs | 4 | ||||
-rw-r--r-- | components/script/dom/window.rs | 23 | ||||
-rw-r--r-- | components/script/dom/worker.rs | 4 | ||||
-rw-r--r-- | components/script/dom/workerglobalscope.rs | 2 | ||||
-rw-r--r-- | components/script/dom/worklet.rs | 12 | ||||
-rw-r--r-- | components/script/dom/workletglobalscope.rs | 2 |
13 files changed, 63 insertions, 61 deletions
diff --git a/components/script/dom/abstractworkerglobalscope.rs b/components/script/dom/abstractworkerglobalscope.rs index e01b98cf944..14cbabd3cf0 100644 --- a/components/script/dom/abstractworkerglobalscope.rs +++ b/components/script/dom/abstractworkerglobalscope.rs @@ -11,8 +11,8 @@ use crate::dom::worker::TrustedWorkerAddress; use crate::dom::workerglobalscope::WorkerGlobalScope; use crate::script_runtime::{CommonScriptMsg, ScriptChan, ScriptPort}; use crate::task_queue::{QueuedTaskConversion, TaskQueue}; +use crossbeam_channel::{Receiver, Sender}; use devtools_traits::DevtoolScriptControlMsg; -use servo_channel::{Receiver, Sender}; /// A ScriptChan that can be cloned freely and will silently send a TrustedWorkerAddress with /// common event loop messages. While this SendableWorkerScriptChan is alive, the associated @@ -69,9 +69,9 @@ impl ScriptChan for WorkerThreadWorkerChan { impl ScriptPort for Receiver<DedicatedWorkerScriptMsg> { fn recv(&self) -> Result<CommonScriptMsg, ()> { let common_msg = match self.recv() { - Some(DedicatedWorkerScriptMsg::CommonWorker(_worker, common_msg)) => common_msg, - None => return Err(()), - Some(DedicatedWorkerScriptMsg::WakeUp) => panic!("unexpected worker event message!"), + Ok(DedicatedWorkerScriptMsg::CommonWorker(_worker, common_msg)) => common_msg, + Err(_) => return Err(()), + Ok(DedicatedWorkerScriptMsg::WakeUp) => panic!("unexpected worker event message!"), }; match common_msg { WorkerScriptMsg::Common(script_msg) => Ok(script_msg), @@ -108,17 +108,18 @@ pub fn run_worker_event_loop<T, TimerMsg, WorkerMsg, Event>( 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().select()), + Some(_) => Some(scope.from_devtools_receiver()), None => None, }; let task_queue = worker_scope.task_queue(); let event = select! { - recv(task_queue.select(), msg) => { + recv(task_queue.select()) -> msg => { task_queue.take_tasks(msg.unwrap()); worker_scope.from_worker_msg(task_queue.recv().unwrap()) }, - recv(timer_event_port.select(), msg) => worker_scope.from_timer_msg(msg.unwrap()), - recv(devtools_port, msg) => worker_scope.from_devtools_msg(msg.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()), }; let mut sequential = vec![]; sequential.push(event); @@ -131,14 +132,15 @@ 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() { - None => match timer_event_port.try_recv() { - None => match devtools_port.and_then(|port| port.try_recv()) { - None => break, - Some(ev) => sequential.push(worker_scope.from_devtools_msg(ev)), + 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)), }, - Some(ev) => sequential.push(worker_scope.from_timer_msg(ev)), + Ok(ev) => sequential.push(worker_scope.from_timer_msg(ev)), }, - Some(ev) => sequential.push(worker_scope.from_worker_msg(ev)), + Ok(ev) => sequential.push(worker_scope.from_worker_msg(ev)), } } // Step 3 diff --git a/components/script/dom/bindings/trace.rs b/components/script/dom/bindings/trace.rs index f3cc904e807..c1b059b0ea0 100644 --- a/components/script/dom/bindings/trace.rs +++ b/components/script/dom/bindings/trace.rs @@ -49,6 +49,7 @@ use crate::dom::bindings::utils::WindowProxyHandler; use crate::dom::document::PendingRestyle; use crate::dom::htmlimageelement::SourceSet; use crate::dom::htmlmediaelement::MediaFrameRenderer; +use crossbeam_channel::{Receiver, Sender}; use cssparser::RGBA; use devtools_traits::{CSSError, TimelineMarkerType, WorkerId}; use encoding_rs::{Decoder, Encoding}; @@ -93,7 +94,6 @@ use selectors::matching::ElementSelectorFlags; use serde::{Deserialize, Serialize}; use servo_arc::Arc as ServoArc; use servo_atoms::Atom; -use servo_channel::{Receiver, Sender}; use servo_media::audio::analyser_node::AnalysisEngine; use servo_media::audio::buffer_source_node::AudioBuffer; use servo_media::audio::context::AudioContext; diff --git a/components/script/dom/dedicatedworkerglobalscope.rs b/components/script/dom/dedicatedworkerglobalscope.rs index f9a3debe9b4..362177ea72b 100644 --- a/components/script/dom/dedicatedworkerglobalscope.rs +++ b/components/script/dom/dedicatedworkerglobalscope.rs @@ -26,6 +26,7 @@ use crate::script_runtime::ScriptThreadEventCategory::WorkerEvent; use crate::script_runtime::{new_rt_and_cx, CommonScriptMsg, Runtime, ScriptChan, ScriptPort}; use crate::task_queue::{QueuedTask, QueuedTaskConversion, TaskQueue}; use crate::task_source::TaskSourceName; +use crossbeam_channel::{unbounded, Receiver, Sender}; use devtools_traits::DevtoolScriptControlMsg; use dom_struct::dom_struct; use ipc_channel::ipc::{self, IpcReceiver, IpcSender}; @@ -38,7 +39,6 @@ use msg::constellation_msg::TopLevelBrowsingContextId; use net_traits::request::{CredentialsMode, Destination, RequestInit}; use net_traits::{load_whole_resource, IpcSend}; use script_traits::{TimerEvent, TimerSource, WorkerGlobalScopeInit, WorkerScriptLoadOrigin}; -use servo_channel::{channel, route_ipc_receiver_to_new_servo_sender, Receiver, Sender}; use servo_rand::random; use servo_url::ServoUrl; use std::mem::replace; @@ -329,10 +329,13 @@ impl DedicatedWorkerGlobalScope { let runtime = unsafe { new_rt_and_cx() }; - let (devtools_mpsc_chan, devtools_mpsc_port) = channel(); - route_ipc_receiver_to_new_servo_sender(from_devtools_receiver, devtools_mpsc_chan); + let (devtools_mpsc_chan, devtools_mpsc_port) = unbounded(); + ROUTER.route_ipc_receiver_to_crossbeam_sender( + from_devtools_receiver, + devtools_mpsc_chan, + ); - let (timer_tx, timer_rx) = channel(); + let (timer_tx, timer_rx) = unbounded(); let (timer_ipc_chan, timer_ipc_port) = ipc::channel().unwrap(); let worker_for_route = worker.clone(); ROUTER.add_route( @@ -404,7 +407,7 @@ impl DedicatedWorkerGlobalScope { } pub fn new_script_pair(&self) -> (Box<dyn ScriptChan + Send>, Box<dyn ScriptPort + Send>) { - let (tx, rx) = channel(); + let (tx, rx) = unbounded(); let chan = Box::new(SendableWorkerScriptChan { sender: tx, worker: self.worker.borrow().as_ref().unwrap().clone(), diff --git a/components/script/dom/paintworkletglobalscope.rs b/components/script/dom/paintworkletglobalscope.rs index 6a9a517298f..61eaabb1b03 100644 --- a/components/script/dom/paintworkletglobalscope.rs +++ b/components/script/dom/paintworkletglobalscope.rs @@ -23,6 +23,7 @@ use crate::dom::worklet::WorkletExecutor; use crate::dom::workletglobalscope::WorkletGlobalScope; use crate::dom::workletglobalscope::WorkletGlobalScopeInit; use crate::dom::workletglobalscope::WorkletTask; +use crossbeam_channel::{unbounded, Sender}; use dom_struct::dom_struct; use euclid::TypedScale; use euclid::TypedSize2D; @@ -49,8 +50,6 @@ use profile_traits::ipc; use script_traits::Painter; use script_traits::{DrawAPaintImageResult, PaintWorkletError}; use servo_atoms::Atom; -use servo_channel::base_channel; -use servo_channel::{channel, Sender}; use servo_config::prefs::PREFS; use servo_url::ServoUrl; use std::cell::Cell; @@ -426,7 +425,7 @@ impl PaintWorkletGlobalScope { arguments: Vec<String>, ) -> Result<DrawAPaintImageResult, PaintWorkletError> { let name = self.name.clone(); - let (sender, receiver) = channel(); + let (sender, receiver) = unbounded(); let task = PaintWorkletTask::DrawAPaintImage( name, size, @@ -445,12 +444,9 @@ impl PaintWorkletGlobalScope { .as_u64() .unwrap_or(10u64); - select! { - recv(base_channel::after(Duration::from_millis(timeout))) => { - Err(PaintWorkletError::Timeout) - } - recv(receiver.select(), msg) => msg.ok_or(PaintWorkletError::Timeout) - } + receiver + .recv_timeout(Duration::from_millis(timeout)) + .map_err(|e| PaintWorkletError::from(e)) } } Box::new(WorkletPainter { diff --git a/components/script/dom/serviceworkerglobalscope.rs b/components/script/dom/serviceworkerglobalscope.rs index 45e8934d0de..6916cd41f96 100644 --- a/components/script/dom/serviceworkerglobalscope.rs +++ b/components/script/dom/serviceworkerglobalscope.rs @@ -22,9 +22,11 @@ use crate::dom::workerglobalscope::WorkerGlobalScope; use crate::script_runtime::{new_rt_and_cx, CommonScriptMsg, Runtime, ScriptChan}; use crate::task_queue::{QueuedTask, QueuedTaskConversion, TaskQueue}; use crate::task_source::TaskSourceName; +use crossbeam_channel::{unbounded, Receiver, Sender}; use devtools_traits::DevtoolScriptControlMsg; use dom_struct::dom_struct; use ipc_channel::ipc::{self, IpcReceiver, IpcSender}; +use ipc_channel::router::ROUTER; use js::jsapi::{JSAutoCompartment, JSContext, JS_AddInterruptCallback}; use js::jsval::UndefinedValue; use net_traits::request::{CredentialsMode, Destination, RequestInit}; @@ -32,7 +34,6 @@ use net_traits::{load_whole_resource, CustomResponseMediator, IpcSend}; use script_traits::{ ScopeThings, ServiceWorkerMsg, TimerEvent, WorkerGlobalScopeInit, WorkerScriptLoadOrigin, }; -use servo_channel::{channel, route_ipc_receiver_to_new_servo_sender, Receiver, Sender}; use servo_config::prefs::PREFS; use servo_rand::random; use servo_url::ServoUrl; @@ -293,11 +294,12 @@ impl ServiceWorkerGlobalScope { let runtime = unsafe { new_rt_and_cx() }; - let (devtools_mpsc_chan, devtools_mpsc_port) = channel(); - route_ipc_receiver_to_new_servo_sender(devtools_receiver, devtools_mpsc_chan); + let (devtools_mpsc_chan, devtools_mpsc_port) = unbounded(); + ROUTER + .route_ipc_receiver_to_crossbeam_sender(devtools_receiver, devtools_mpsc_chan); // TODO XXXcreativcoder use this timer_ipc_port, when we have a service worker instance here let (timer_ipc_chan, _timer_ipc_port) = ipc::channel().unwrap(); - let (timer_chan, timer_port) = channel(); + let (timer_chan, timer_port) = unbounded(); let global = ServiceWorkerGlobalScope::new( init, url, diff --git a/components/script/dom/servoparser/async_html.rs b/components/script/dom/servoparser/async_html.rs index d982c75e975..39b94c9c644 100644 --- a/components/script/dom/servoparser/async_html.rs +++ b/components/script/dom/servoparser/async_html.rs @@ -20,6 +20,7 @@ use crate::dom::node::Node; use crate::dom::processinginstruction::ProcessingInstruction; use crate::dom::servoparser::{create_element_for_token, ElementAttribute, ParsingAlgorithm}; use crate::dom::virtualmethods::vtable_for; +use crossbeam_channel::{unbounded, Receiver, Sender}; use html5ever::buffer_queue::BufferQueue; use html5ever::tendril::fmt::UTF8; use html5ever::tendril::{SendTendril, StrTendril, Tendril}; @@ -29,7 +30,6 @@ use html5ever::tree_builder::{ }; use html5ever::tree_builder::{TreeBuilder, TreeBuilderOpts}; use html5ever::{Attribute as HtmlAttribute, ExpandedName, QualName}; -use servo_channel::{channel, Receiver, Sender}; use servo_url::ServoUrl; use std::borrow::Cow; use std::cell::Cell; @@ -215,9 +215,9 @@ impl Tokenizer { fragment_context: Option<super::FragmentContext>, ) -> Self { // Messages from the Tokenizer (main thread) to HtmlTokenizer (parser thread) - let (to_html_tokenizer_sender, html_tokenizer_receiver) = channel(); + let (to_html_tokenizer_sender, html_tokenizer_receiver) = unbounded(); // Messages from HtmlTokenizer and Sink (parser thread) to Tokenizer (main thread) - let (to_tokenizer_sender, tokenizer_receiver) = channel(); + let (to_tokenizer_sender, tokenizer_receiver) = unbounded(); let mut tokenizer = Tokenizer { document: Dom::from_ref(document), diff --git a/components/script/dom/testworkletglobalscope.rs b/components/script/dom/testworkletglobalscope.rs index e443dfa8e6b..a7e6f4f9de5 100644 --- a/components/script/dom/testworkletglobalscope.rs +++ b/components/script/dom/testworkletglobalscope.rs @@ -10,10 +10,10 @@ use crate::dom::bindings::str::DOMString; use crate::dom::worklet::WorkletExecutor; use crate::dom::workletglobalscope::WorkletGlobalScope; use crate::dom::workletglobalscope::WorkletGlobalScopeInit; +use crossbeam_channel::Sender; use dom_struct::dom_struct; use js::rust::Runtime; use msg::constellation_msg::PipelineId; -use servo_channel::Sender; use servo_url::ServoUrl; use std::collections::HashMap; diff --git a/components/script/dom/vrdisplay.rs b/components/script/dom/vrdisplay.rs index 1cf43df4553..312ee71a9a3 100644 --- a/components/script/dom/vrdisplay.rs +++ b/components/script/dom/vrdisplay.rs @@ -33,11 +33,11 @@ use crate::dom::webglrenderingcontext::WebGLRenderingContext; use crate::script_runtime::CommonScriptMsg; use crate::script_runtime::ScriptThreadEventCategory::WebVREvent; use crate::task_source::TaskSourceName; +use crossbeam_channel::{unbounded, Sender}; use dom_struct::dom_struct; use ipc_channel::ipc::IpcSender; use profile_traits::ipc; use serde_bytes::ByteBuf; -use servo_channel::{channel, Sender}; use std::cell::Cell; use std::mem; use std::ops::Deref; @@ -538,7 +538,7 @@ impl VRDisplay { thread::Builder::new() .name("WebVR_RAF".into()) .spawn(move || { - let (raf_sender, raf_receiver) = channel(); + let (raf_sender, raf_receiver) = unbounded(); let mut near = near_init; let mut far = far_init; diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs index 51c379145c2..a8a9ce1d960 100644 --- a/components/script/dom/window.rs +++ b/components/script/dom/window.rs @@ -68,6 +68,7 @@ use crate::task_manager::TaskManager; use crate::task_source::TaskSourceName; use crate::timers::{IsInterval, TimerCallback}; use crate::webdriver_handlers::jsval_to_webdriver; +use crossbeam_channel::{unbounded, Sender, TryRecvError}; use cssparser::{Parser, ParserInput}; use devtools_traits::{ScriptToDevtoolsControlMsg, TimelineMarker, TimelineMarkerType}; use dom_struct::dom_struct; @@ -104,7 +105,6 @@ use script_traits::{ConstellationControlMsg, DocumentState, LoadData}; use script_traits::{ScriptMsg, ScriptToConstellationChan, ScrollState, TimerEvent, TimerEventId}; use script_traits::{TimerSchedulerMsg, UntrustedNodeAddress, WindowSizeData, WindowSizeType}; use selectors::attr::CaseSensitivity; -use servo_channel::{channel, Sender}; use servo_config::opts; use servo_geometry::{f32_rect_to_au_rect, MaxRect}; use servo_url::{Host, ImmutableOrigin, MutableOrigin, ServoUrl}; @@ -348,7 +348,7 @@ impl Window { } pub fn new_script_pair(&self) -> (Box<dyn ScriptChan + Send>, Box<dyn ScriptPort + Send>) { - let (tx, rx) = channel(); + let (tx, rx) = unbounded(); (Box::new(SendableMainThreadScriptChan(tx)), Box::new(rx)) } @@ -1394,7 +1394,7 @@ impl Window { }; // Layout will let us know when it's done. - let (join_chan, join_port) = channel(); + let (join_chan, join_port) = unbounded(); // On debug mode, print the reflow event information. if opts::get().relayout_event { @@ -1427,16 +1427,15 @@ impl Window { debug!("script: layout forked"); - let complete = select! { - recv(join_port.select(), msg) => if let Some(reflow_complete) = msg { - reflow_complete - } else { - panic!("Layout thread failed while script was waiting for a result."); - }, - default => { + let complete = match join_port.try_recv() { + Err(TryRecvError::Empty) => { info!("script: waiting on layout"); join_port.recv().unwrap() - } + }, + Ok(reflow_complete) => reflow_complete, + Err(TryRecvError::Disconnected) => { + panic!("Layout thread failed while script was waiting for a result."); + }, }; debug!("script: layout joined"); @@ -2033,7 +2032,7 @@ impl Window { webrender_api_sender: RenderApiSender, ) -> DomRoot<Self> { let layout_rpc: Box<dyn LayoutRPC + Send> = { - let (rpc_send, rpc_recv) = channel(); + let (rpc_send, rpc_recv) = unbounded(); layout_chan.send(Msg::GetRPC(rpc_send)).unwrap(); rpc_recv.recv().unwrap() }; diff --git a/components/script/dom/worker.rs b/components/script/dom/worker.rs index 957d630ece1..ca55ba8ee98 100644 --- a/components/script/dom/worker.rs +++ b/components/script/dom/worker.rs @@ -21,6 +21,7 @@ use crate::dom::globalscope::GlobalScope; use crate::dom::messageevent::MessageEvent; use crate::dom::workerglobalscope::prepare_workerscope_init; use crate::task::TaskOnce; +use crossbeam_channel::{unbounded, Sender}; use devtools_traits::{DevtoolsPageInfo, ScriptToDevtoolsControlMsg}; use dom_struct::dom_struct; use ipc_channel::ipc; @@ -28,7 +29,6 @@ use js::jsapi::{JSAutoCompartment, JSContext, JS_RequestInterruptCallback}; use js::jsval::UndefinedValue; use js::rust::HandleValue; use script_traits::WorkerScriptLoadOrigin; -use servo_channel::{channel, Sender}; use std::cell::Cell; use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::Arc; @@ -79,7 +79,7 @@ impl Worker { Err(_) => return Err(Error::Syntax), }; - let (sender, receiver) = channel(); + let (sender, receiver) = unbounded(); let closing = Arc::new(AtomicBool::new(false)); let worker = Worker::new(global, sender.clone(), closing.clone()); global.track_worker(closing.clone()); diff --git a/components/script/dom/workerglobalscope.rs b/components/script/dom/workerglobalscope.rs index 015c18f2644..59307e5700d 100644 --- a/components/script/dom/workerglobalscope.rs +++ b/components/script/dom/workerglobalscope.rs @@ -32,6 +32,7 @@ use crate::task_source::performance_timeline::PerformanceTimelineTaskSource; use crate::task_source::remote_event::RemoteEventTaskSource; use crate::task_source::websocket::WebsocketTaskSource; use crate::timers::{IsInterval, TimerCallback}; +use crossbeam_channel::Receiver; use devtools_traits::{DevtoolScriptControlMsg, WorkerId}; use dom_struct::dom_struct; use ipc_channel::ipc::IpcSender; @@ -44,7 +45,6 @@ use net_traits::request::{CredentialsMode, Destination, RequestInit as NetReques use net_traits::{load_whole_resource, IpcSend}; use script_traits::WorkerGlobalScopeInit; use script_traits::{TimerEvent, TimerEventId}; -use servo_channel::Receiver; use servo_url::{MutableOrigin, ServoUrl}; use std::default::Default; use std::rc::Rc; diff --git a/components/script/dom/worklet.rs b/components/script/dom/worklet.rs index 48405c626fb..312c362e61e 100644 --- a/components/script/dom/worklet.rs +++ b/components/script/dom/worklet.rs @@ -39,6 +39,7 @@ use crate::script_runtime::ScriptThreadEventCategory; use crate::script_thread::{MainThreadScriptMsg, ScriptThread}; use crate::task::TaskBox; use crate::task_source::TaskSourceName; +use crossbeam_channel::{unbounded, Receiver, Sender}; use dom_struct::dom_struct; use js::jsapi::JSGCParamKey; use js::jsapi::JSTracer; @@ -50,7 +51,6 @@ use net_traits::request::Destination; use net_traits::request::RequestInit; use net_traits::request::RequestMode; use net_traits::IpcSend; -use servo_channel::{channel, Receiver, Sender}; use servo_url::ImmutableOrigin; use servo_url::ServoUrl; use std::cmp::max; @@ -334,7 +334,7 @@ impl WorkletThreadPool { /// For testing. pub fn test_worklet_lookup(&self, id: WorkletId, key: String) -> Option<String> { - let (sender, receiver) = channel(); + let (sender, receiver) = unbounded(); let msg = WorkletData::Task(id, WorkletTask::Test(TestWorkletTask::Lookup(key, sender))); let _ = self.primary_sender.send(msg); receiver.recv().expect("Test worklet has died?") @@ -388,7 +388,7 @@ struct WorkletThreadRole { impl WorkletThreadRole { fn new(is_hot_backup: bool, is_cold_backup: bool) -> WorkletThreadRole { - let (sender, receiver) = channel(); + let (sender, receiver) = unbounded(); WorkletThreadRole { sender: sender, receiver: receiver, @@ -452,7 +452,7 @@ impl WorkletThread { #[allow(unsafe_code)] #[allow(unrooted_must_root)] fn spawn(role: WorkletThreadRole, init: WorkletThreadInit) -> Sender<WorkletControl> { - let (control_sender, control_receiver) = channel(); + let (control_sender, control_receiver) = unbounded(); // TODO: name this thread thread::spawn(move || { // TODO: add a new IN_WORKLET thread state? @@ -522,12 +522,12 @@ impl WorkletThread { if let Some(control) = self.control_buffer.take() { self.process_control(control); } - while let Some(control) = self.control_receiver.try_recv() { + while let Ok(control) = self.control_receiver.try_recv() { self.process_control(control); } self.gc(); } else if self.control_buffer.is_none() { - if let Some(control) = self.control_receiver.try_recv() { + if let Ok(control) = self.control_receiver.try_recv() { self.control_buffer = Some(control); let msg = WorkletData::StartSwapRoles(self.role.sender.clone()); let _ = self.cold_backup_sender.send(msg); diff --git a/components/script/dom/workletglobalscope.rs b/components/script/dom/workletglobalscope.rs index 3d971390614..65b837ac350 100644 --- a/components/script/dom/workletglobalscope.rs +++ b/components/script/dom/workletglobalscope.rs @@ -11,6 +11,7 @@ use crate::dom::testworkletglobalscope::TestWorkletGlobalScope; use crate::dom::testworkletglobalscope::TestWorkletTask; use crate::dom::worklet::WorkletExecutor; use crate::script_thread::MainThreadScriptMsg; +use crossbeam_channel::Sender; use devtools_traits::ScriptToDevtoolsControlMsg; use dom_struct::dom_struct; use ipc_channel::ipc; @@ -26,7 +27,6 @@ use profile_traits::time; use script_traits::{Painter, ScriptMsg}; use script_traits::{ScriptToConstellationChan, TimerSchedulerMsg}; use servo_atoms::Atom; -use servo_channel::Sender; use servo_url::ImmutableOrigin; use servo_url::MutableOrigin; use servo_url::ServoUrl; |