diff --git a/Cargo.lock b/Cargo.lock index bdba00cfa01..ca03a193e3b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3693,9 +3693,9 @@ dependencies = [ [[package]] name = "ipc-channel" -version = "0.18.3" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7f4c80f2df4fc64fb7fc2cff69fc034af26e6e6617ea9f1313131af464b9ca0" +checksum = "6fb8251fb7bcd9ccd3725ed8deae9fe7db8e586495c9eb5b0c52e6233e5e75ea" dependencies = [ "bincode", "crossbeam-channel", @@ -4064,7 +4064,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if", - "windows-targets 0.52.6", + "windows-targets 0.48.5", ] [[package]] @@ -6344,7 +6344,7 @@ dependencies = [ [[package]] name = "servo-media" version = "0.1.0" -source = "git+https://github.com/servo/media#ed1d4c7c11c93e7e66afc0224fc15f70d6b1fe83" +source = "git+https://github.com/servo/media#12dfb35619520eb6e78e25e9a975d625f6484a13" dependencies = [ "once_cell", "servo-media-audio", @@ -6357,7 +6357,7 @@ dependencies = [ [[package]] name = "servo-media-audio" version = "0.2.0" -source = "git+https://github.com/servo/media#ed1d4c7c11c93e7e66afc0224fc15f70d6b1fe83" +source = "git+https://github.com/servo/media#12dfb35619520eb6e78e25e9a975d625f6484a13" dependencies = [ "byte-slice-cast", "euclid", @@ -6378,7 +6378,7 @@ dependencies = [ [[package]] name = "servo-media-derive" version = "0.1.0" -source = "git+https://github.com/servo/media#ed1d4c7c11c93e7e66afc0224fc15f70d6b1fe83" +source = "git+https://github.com/servo/media#12dfb35619520eb6e78e25e9a975d625f6484a13" dependencies = [ "proc-macro2", "quote", @@ -6388,7 +6388,7 @@ dependencies = [ [[package]] name = "servo-media-dummy" version = "0.1.0" -source = "git+https://github.com/servo/media#ed1d4c7c11c93e7e66afc0224fc15f70d6b1fe83" +source = "git+https://github.com/servo/media#12dfb35619520eb6e78e25e9a975d625f6484a13" dependencies = [ "ipc-channel", "servo-media", @@ -6402,7 +6402,7 @@ dependencies = [ [[package]] name = "servo-media-gstreamer" version = "0.1.0" -source = "git+https://github.com/servo/media#ed1d4c7c11c93e7e66afc0224fc15f70d6b1fe83" +source = "git+https://github.com/servo/media#12dfb35619520eb6e78e25e9a975d625f6484a13" dependencies = [ "byte-slice-cast", "glib", @@ -6436,7 +6436,7 @@ dependencies = [ [[package]] name = "servo-media-gstreamer-render" version = "0.1.0" -source = "git+https://github.com/servo/media#ed1d4c7c11c93e7e66afc0224fc15f70d6b1fe83" +source = "git+https://github.com/servo/media#12dfb35619520eb6e78e25e9a975d625f6484a13" dependencies = [ "gstreamer", "gstreamer-video", @@ -6446,7 +6446,7 @@ dependencies = [ [[package]] name = "servo-media-gstreamer-render-android" version = "0.1.0" -source = "git+https://github.com/servo/media#ed1d4c7c11c93e7e66afc0224fc15f70d6b1fe83" +source = "git+https://github.com/servo/media#12dfb35619520eb6e78e25e9a975d625f6484a13" dependencies = [ "glib", "gstreamer", @@ -6460,7 +6460,7 @@ dependencies = [ [[package]] name = "servo-media-gstreamer-render-unix" version = "0.1.0" -source = "git+https://github.com/servo/media#ed1d4c7c11c93e7e66afc0224fc15f70d6b1fe83" +source = "git+https://github.com/servo/media#12dfb35619520eb6e78e25e9a975d625f6484a13" dependencies = [ "glib", "gstreamer", @@ -6475,7 +6475,7 @@ dependencies = [ [[package]] name = "servo-media-player" version = "0.1.0" -source = "git+https://github.com/servo/media#ed1d4c7c11c93e7e66afc0224fc15f70d6b1fe83" +source = "git+https://github.com/servo/media#12dfb35619520eb6e78e25e9a975d625f6484a13" dependencies = [ "ipc-channel", "serde", @@ -6487,7 +6487,7 @@ dependencies = [ [[package]] name = "servo-media-streams" version = "0.1.0" -source = "git+https://github.com/servo/media#ed1d4c7c11c93e7e66afc0224fc15f70d6b1fe83" +source = "git+https://github.com/servo/media#12dfb35619520eb6e78e25e9a975d625f6484a13" dependencies = [ "lazy_static", "uuid", @@ -6496,12 +6496,12 @@ dependencies = [ [[package]] name = "servo-media-traits" version = "0.1.0" -source = "git+https://github.com/servo/media#ed1d4c7c11c93e7e66afc0224fc15f70d6b1fe83" +source = "git+https://github.com/servo/media#12dfb35619520eb6e78e25e9a975d625f6484a13" [[package]] name = "servo-media-webrtc" version = "0.1.0" -source = "git+https://github.com/servo/media#ed1d4c7c11c93e7e66afc0224fc15f70d6b1fe83" +source = "git+https://github.com/servo/media#12dfb35619520eb6e78e25e9a975d625f6484a13" dependencies = [ "lazy_static", "log", @@ -8296,7 +8296,7 @@ dependencies = [ [[package]] name = "webxr" version = "0.0.1" -source = "git+https://github.com/servo/webxr#e3249c3df967f16fab9928d053708bfb43487af3" +source = "git+https://github.com/servo/webxr#2094e041f6b59ca8a2aa3ab572e69e3cf7fae6ab" dependencies = [ "crossbeam-channel", "euclid", @@ -8313,7 +8313,7 @@ dependencies = [ [[package]] name = "webxr-api" version = "0.0.1" -source = "git+https://github.com/servo/webxr#e3249c3df967f16fab9928d053708bfb43487af3" +source = "git+https://github.com/servo/webxr#2094e041f6b59ca8a2aa3ab572e69e3cf7fae6ab" dependencies = [ "euclid", "ipc-channel", @@ -8440,7 +8440,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.48.0", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 71bf85e42a6..fc5482dfac9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -70,7 +70,7 @@ icu_segmenter = "1.5.0" image = "0.24" imsz = "0.2" indexmap = { version = "2.5.0", features = ["std"] } -ipc-channel = "0.18" +ipc-channel = "0.19" itertools = "0.13" tikv-jemalloc-sys = "0.6.0" tikv-jemallocator = "0.6.0" @@ -145,6 +145,8 @@ webpki-roots = "0.25" webrender = { git = "https://github.com/servo/webrender", branch = "0.65", features = ["capture"] } webrender_api = { git = "https://github.com/servo/webrender", branch = "0.65" } webrender_traits = { path = "components/shared/webrender" } +webxr = { git = "https://github.com/servo/webxr" } +webxr-api = { git = "https://github.com/servo/webxr" } wgpu-core = { git = "https://github.com/gfx-rs/wgpu", rev = "2b15a2b24b69e105ebdbb5e8a859e2df75e441c1" } wgpu-types = { git = "https://github.com/gfx-rs/wgpu", rev = "2b15a2b24b69e105ebdbb5e8a859e2df75e441c1" } windows-sys = "0.59" diff --git a/components/canvas/Cargo.toml b/components/canvas/Cargo.toml index 793308c0c77..af0ae41a9db 100644 --- a/components/canvas/Cargo.toml +++ b/components/canvas/Cargo.toml @@ -45,5 +45,5 @@ unicode-script = { workspace = true } webrender = { workspace = true } webrender_api = { workspace = true } webrender_traits = { workspace = true } -webxr = { git = "https://github.com/servo/webxr", features = ["ipc"] } -webxr-api = { git = "https://github.com/servo/webxr", features = ["ipc"] } +webxr = { workspace = true, features = ["ipc"] } +webxr-api = { workspace = true, features = ["ipc"] } diff --git a/components/compositing/Cargo.toml b/components/compositing/Cargo.toml index 5d39b8294f0..8fbb092cdce 100644 --- a/components/compositing/Cargo.toml +++ b/components/compositing/Cargo.toml @@ -46,7 +46,7 @@ tracing = { workspace = true, optional = true } webrender = { workspace = true } webrender_api = { workspace = true } webrender_traits = { workspace = true } -webxr = { git = "https://github.com/servo/webxr" } +webxr = { workspace = true } [dev-dependencies] surfman = { workspace = true } diff --git a/components/constellation/Cargo.toml b/components/constellation/Cargo.toml index 22f07f165f4..5e2b36827ec 100644 --- a/components/constellation/Cargo.toml +++ b/components/constellation/Cargo.toml @@ -51,7 +51,7 @@ webgpu = { path = "../webgpu" } webrender = { workspace = true } webrender_api = { workspace = true } webrender_traits = { workspace = true } -webxr-api = { git = "https://github.com/servo/webxr", features = ["ipc"] } +webxr-api = { workspace = true, features = ["ipc"] } [target.'cfg(any(target_os="macos", all(not(target_os = "windows"), not(target_os = "ios"), not(target_os="android"), not(target_arch="arm"), not(target_arch="aarch64"))))'.dependencies] gaol = "0.2.1" diff --git a/components/constellation/constellation.rs b/components/constellation/constellation.rs index be5ad7f8163..4c528c07080 100644 --- a/components/constellation/constellation.rs +++ b/components/constellation/constellation.rs @@ -594,9 +594,11 @@ where T: for<'de> Deserialize<'de> + Serialize + Send + 'static, { let (crossbeam_sender, crossbeam_receiver) = unbounded(); - ROUTER.add_route( - ipc_receiver.to_opaque(), - Box::new(move |message| drop(crossbeam_sender.send(message.to::()))), + ROUTER.add_typed_route( + ipc_receiver, + Box::new(move |message| { + let _ = crossbeam_sender.send(message); + }), ); crossbeam_receiver } diff --git a/components/constellation/network_listener.rs b/components/constellation/network_listener.rs index 12907262ede..bad08d5e630 100644 --- a/components/constellation/network_listener.rs +++ b/components/constellation/network_listener.rs @@ -86,11 +86,10 @@ impl NetworkListener { }, }; - ROUTER.add_route( - ipc_receiver.to_opaque(), + ROUTER.add_typed_route( + ipc_receiver, Box::new(move |message| { - let msg = message.to(); - match msg { + match message { Ok(FetchResponseMsg::ProcessResponse(request_id, res)) => { listener.check_redirect(request_id, res) }, diff --git a/components/constellation/pipeline.rs b/components/constellation/pipeline.rs index 3f5887fa6ed..1765d98bcc3 100644 --- a/components/constellation/pipeline.rs +++ b/components/constellation/pipeline.rs @@ -240,21 +240,19 @@ impl Pipeline { let (script_to_devtools_ipc_sender, script_to_devtools_ipc_receiver) = ipc::channel().expect("Pipeline script to devtools chan"); let devtools_sender = (*devtools_sender).clone(); - ROUTER.add_route( - script_to_devtools_ipc_receiver.to_opaque(), - Box::new(move |message| { - match message.to::() { - Err(e) => { - error!("Cast to ScriptToDevtoolsControlMsg failed ({}).", e) - }, - Ok(message) => { - if let Err(e) = devtools_sender - .send(DevtoolsControlMsg::FromScript(message)) - { - warn!("Sending to devtools failed ({:?})", e) - } - }, - } + ROUTER.add_typed_route( + script_to_devtools_ipc_receiver, + Box::new(move |message| match message { + Err(e) => { + error!("Cast to ScriptToDevtoolsControlMsg failed ({}).", e) + }, + Ok(message) => { + if let Err(e) = devtools_sender + .send(DevtoolsControlMsg::FromScript(message)) + { + warn!("Sending to devtools failed ({:?})", e) + } + }, }), ); script_to_devtools_ipc_sender diff --git a/components/media/media_channel/mod.rs b/components/media/media_channel/mod.rs index d01a80b7550..3468d67bbec 100644 --- a/components/media/media_channel/mod.rs +++ b/components/media/media_channel/mod.rs @@ -69,9 +69,9 @@ where } #[allow(clippy::wrong_self_convention)] // It is an alias to the underlying module - pub fn to_opaque(self) -> ipc_channel::ipc::OpaqueIpcReceiver { + pub fn to_ipc_receiver(self) -> ipc_channel::ipc::IpcReceiver { match self { - GLPlayerReceiver::Ipc(receiver) => receiver.to_opaque(), + GLPlayerReceiver::Ipc(receiver) => receiver, _ => unreachable!(), } } diff --git a/components/net/http_loader.rs b/components/net/http_loader.rs index 33f063db570..53dba14a0ce 100644 --- a/components/net/http_loader.rs +++ b/components/net/http_loader.rs @@ -560,11 +560,11 @@ async fn obtain_response( let devtools_bytes = devtools_bytes.clone(); let chunk_requester2 = chunk_requester.clone(); - ROUTER.add_route( - body_port.to_opaque(), + ROUTER.add_typed_route( + body_port, Box::new(move |message| { info!("Received message"); - let bytes: Vec = match message.to().unwrap() { + let bytes: Vec = match message.unwrap() { BodyChunkResponse::Chunk(bytes) => bytes, BodyChunkResponse::Done => { // Step 3, abort these parallel steps. diff --git a/components/net/tests/http_loader.rs b/components/net/tests/http_loader.rs index bfa87f5df20..d19febcbd7e 100644 --- a/components/net/tests/http_loader.rs +++ b/components/net/tests/http_loader.rs @@ -98,10 +98,10 @@ fn create_request_body_with_content(content: Vec) -> RequestBody { let content_len = content.len(); let (chunk_request_sender, chunk_request_receiver) = ipc::channel().unwrap(); - ROUTER.add_route( - chunk_request_receiver.to_opaque(), + ROUTER.add_typed_route( + chunk_request_receiver, Box::new(move |message| { - let request = message.to().unwrap(); + let request = message.unwrap(); if let BodyChunkRequest::Connect(sender) = request { let _ = sender.send(BodyChunkResponse::Chunk(content.clone())); let _ = sender.send(BodyChunkResponse::Done); diff --git a/components/net/websocket_loader.rs b/components/net/websocket_loader.rs index 9ea59dce3ff..d672476bdb0 100644 --- a/components/net/websocket_loader.rs +++ b/components/net/websocket_loader.rs @@ -157,10 +157,10 @@ fn setup_dom_listener( ) -> UnboundedReceiver { let (sender, receiver) = unbounded_channel(); - ROUTER.add_route( - dom_action_receiver.to_opaque(), + ROUTER.add_typed_route( + dom_action_receiver, Box::new(move |message| { - let dom_action = message.to().expect("Ws dom_action message to deserialize"); + let dom_action = message.expect("Ws dom_action message to deserialize"); trace!("handling WS DOM action: {:?}", dom_action); match dom_action { WebSocketDomAction::SendMessage(MessageData::Text(data)) => { diff --git a/components/profile/mem.rs b/components/profile/mem.rs index 0471aadbe0f..342e5dfb7d3 100644 --- a/components/profile/mem.rs +++ b/components/profile/mem.rs @@ -65,10 +65,10 @@ impl Profiler { // be unregistered, because as long as the memory profiler is running the system memory // reporter can make measurements. let (system_reporter_sender, system_reporter_receiver) = ipc::channel().unwrap(); - ROUTER.add_route( - system_reporter_receiver.to_opaque(), + ROUTER.add_typed_route( + system_reporter_receiver, Box::new(|message| { - let request: ReporterRequest = message.to().unwrap(); + let request: ReporterRequest = message.unwrap(); system_reporter::collect_reports(request) }), ); diff --git a/components/script/Cargo.toml b/components/script/Cargo.toml index c5b64d5a675..7438d35aca4 100644 --- a/components/script/Cargo.toml +++ b/components/script/Cargo.toml @@ -116,7 +116,7 @@ webdriver = { workspace = true } webgpu = { path = "../webgpu" } webrender_api = { workspace = true } webrender_traits = { workspace = true } -webxr-api = { git = "https://github.com/servo/webxr", features = ["ipc"] } +webxr-api = { workspace = true, features = ["ipc"] } xml5ever = { workspace = true } [target.'cfg(not(target_os = "ios"))'.dependencies] diff --git a/components/script/body.rs b/components/script/body.rs index efdcaf3b312..e5e77514bb6 100644 --- a/components/script/body.rs +++ b/components/script/body.rs @@ -114,10 +114,10 @@ impl TransmitBodyConnectHandler { let mut body_handler = self.clone(); body_handler.reset_in_memory_done(); - ROUTER.add_route( - chunk_request_receiver.to_opaque(), + ROUTER.add_typed_route( + chunk_request_receiver, Box::new(move |message| { - let request = message.to().unwrap(); + let request = message.unwrap(); match request { BodyChunkRequest::Connect(sender) => { body_handler.start_reading(sender); @@ -397,11 +397,10 @@ impl ExtractedBody { source, ); - ROUTER.add_route( - chunk_request_receiver.to_opaque(), + ROUTER.add_typed_route( + chunk_request_receiver, Box::new(move |message| { - let request = message.to().unwrap(); - match request { + match message.unwrap() { BodyChunkRequest::Connect(sender) => { body_handler.start_reading(sender); }, diff --git a/components/script/dom/analysernode.rs b/components/script/dom/analysernode.rs index ddee7e39f5d..486747ec8fb 100644 --- a/components/script/dom/analysernode.rs +++ b/components/script/dom/analysernode.rs @@ -116,14 +116,14 @@ impl AnalyserNode { .dom_manipulation_task_source_with_canceller(); let this = Trusted::new(&*object); - ROUTER.add_route( - recv.to_opaque(), + ROUTER.add_typed_route( + recv, Box::new(move |block| { let this = this.clone(); let _ = source.queue_with_canceller( task!(append_analysis_block: move || { let this = this.root(); - this.push_block(block.to().unwrap()) + this.push_block(block.unwrap()) }), &canceller, ); diff --git a/components/script/dom/bluetooth.rs b/components/script/dom/bluetooth.rs index 7ae54893064..ce22ce26ad6 100644 --- a/components/script/dom/bluetooth.rs +++ b/components/script/dom/bluetooth.rs @@ -245,8 +245,8 @@ pub fn response_async( promise: Some(TrustedPromise::new(promise.clone())), receiver: Trusted::new(receiver), })); - ROUTER.add_route( - action_receiver.to_opaque(), + ROUTER.add_typed_route( + action_receiver, Box::new(move |message| { struct ListenerTask { context: Arc>>, @@ -265,7 +265,7 @@ pub fn response_async( let task = ListenerTask { context: context.clone(), - action: message.to().unwrap(), + action: message.unwrap(), }; let result = task_source.queue_unconditionally(task); diff --git a/components/script/dom/eventsource.rs b/components/script/dom/eventsource.rs index 4e8f0d03db1..0ec539e28ef 100644 --- a/components/script/dom/eventsource.rs +++ b/components/script/dom/eventsource.rs @@ -607,10 +607,10 @@ impl EventSourceMethods for EventSource { task_source: global.networking_task_source(), canceller: Some(global.task_canceller(TaskSourceName::Networking)), }; - ROUTER.add_route( - action_receiver.to_opaque(), + ROUTER.add_typed_route( + action_receiver, Box::new(move |message| { - listener.notify_fetch(message.to().unwrap()); + listener.notify_fetch(message.unwrap()); }), ); let cancel_receiver = ev.canceller.borrow_mut().initialize(); diff --git a/components/script/dom/fakexrdevice.rs b/components/script/dom/fakexrdevice.rs index ee2d587f257..720fb19df33 100644 --- a/components/script/dom/fakexrdevice.rs +++ b/components/script/dom/fakexrdevice.rs @@ -306,8 +306,9 @@ impl FakeXRDeviceMethods for FakeXRDevice { .task_manager() .dom_manipulation_task_source_with_canceller(); let (sender, receiver) = ipc::channel(global.time_profiler_chan().clone()).unwrap(); - ROUTER.add_route( - receiver.to_opaque(), + + ROUTER.add_typed_route( + receiver.to_ipc_receiver(), Box::new(move |_| { let trusted = trusted .take() diff --git a/components/script/dom/gamepadhapticactuator.rs b/components/script/dom/gamepadhapticactuator.rs index 54be5de11dd..483a6a25a07 100644 --- a/components/script/dom/gamepadhapticactuator.rs +++ b/components/script/dom/gamepadhapticactuator.rs @@ -229,14 +229,11 @@ impl GamepadHapticActuatorMethods for GamepadHapticActuator { context, }; - ROUTER.add_route( - effect_complete_receiver.to_opaque(), - Box::new(move |message| { - let msg = message.to::(); - match msg { - Ok(msg) => listener.handle_completed(msg), - Err(err) => warn!("Error receiving a GamepadMsg: {:?}", err), - } + ROUTER.add_typed_route( + effect_complete_receiver, + Box::new(move |message| match message { + Ok(msg) => listener.handle_completed(msg), + Err(err) => warn!("Error receiving a GamepadMsg: {:?}", err), }), ); @@ -301,14 +298,11 @@ impl GamepadHapticActuatorMethods for GamepadHapticActuator { context, }; - ROUTER.add_route( - effect_stop_receiver.to_opaque(), - Box::new(move |message| { - let msg = message.to::(); - match msg { - Ok(msg) => listener.handle_stopped(msg), - Err(err) => warn!("Error receiving a GamepadMsg: {:?}", err), - } + ROUTER.add_typed_route( + effect_stop_receiver, + Box::new(move |message| match message { + Ok(msg) => listener.handle_stopped(msg), + Err(err) => warn!("Error receiving a GamepadMsg: {:?}", err), }), ); diff --git a/components/script/dom/globalscope.rs b/components/script/dom/globalscope.rs index 0e9ec399f4b..0c48267abc9 100644 --- a/components/script/dom/globalscope.rs +++ b/components/script/dom/globalscope.rs @@ -847,10 +847,10 @@ impl GlobalScope { task_source, canceller, }; - ROUTER.add_route( - timer_ipc_port.to_opaque(), + ROUTER.add_typed_route( + timer_ipc_port, Box::new(move |message| { - let event = message.to().unwrap(); + let event = message.unwrap(); timer_listener.handle(event); }), ); @@ -1435,14 +1435,11 @@ impl GlobalScope { task_source, context, }; - ROUTER.add_route( - broadcast_control_receiver.to_opaque(), - Box::new(move |message| { - let msg = message.to(); - match msg { - Ok(msg) => listener.handle(msg), - Err(err) => warn!("Error receiving a BroadcastMsg: {:?}", err), - } + ROUTER.add_typed_route( + broadcast_control_receiver, + Box::new(move |message| match message { + Ok(msg) => listener.handle(msg), + Err(err) => warn!("Error receiving a BroadcastMsg: {:?}", err), }), ); let router_id = BroadcastChannelRouterId::new(); @@ -1491,14 +1488,11 @@ impl GlobalScope { task_source, context, }; - ROUTER.add_route( - port_control_receiver.to_opaque(), - Box::new(move |message| { - let msg = message.to(); - match msg { - Ok(msg) => listener.notify(msg), - Err(err) => warn!("Error receiving a MessagePortMsg: {:?}", err), - } + ROUTER.add_typed_route( + port_control_receiver, + Box::new(move |message| match message { + Ok(msg) => listener.notify(msg), + Err(err) => warn!("Error receiving a MessagePortMsg: {:?}", err), }), ); let router_id = MessagePortRouterId::new(); @@ -2021,13 +2015,10 @@ impl GlobalScope { task_canceller, }; - ROUTER.add_route( - recv.to_opaque(), + ROUTER.add_typed_route( + recv.to_ipc_receiver(), Box::new(move |msg| { - file_listener.handle( - msg.to() - .expect("Deserialization of file listener msg failed."), - ); + file_listener.handle(msg.expect("Deserialization of file listener msg failed.")); }), ); @@ -2050,13 +2041,10 @@ impl GlobalScope { task_canceller, }; - ROUTER.add_route( - recv.to_opaque(), + ROUTER.add_typed_route( + recv.to_ipc_receiver(), Box::new(move |msg| { - file_listener.handle( - msg.to() - .expect("Deserialization of file listener msg failed."), - ); + file_listener.handle(msg.expect("Deserialization of file listener msg failed.")); }), ); } diff --git a/components/script/dom/gpu.rs b/components/script/dom/gpu.rs index 84e1a2fd481..cdac3a5a2e0 100644 --- a/components/script/dom/gpu.rs +++ b/components/script/dom/gpu.rs @@ -76,8 +76,8 @@ pub fn response_async( .task_canceller(TaskSourceName::DOMManipulation); let mut trusted: Option = Some(TrustedPromise::new(promise.clone())); let trusted_receiver = Trusted::new(receiver); - ROUTER.add_route( - action_receiver.to_opaque(), + ROUTER.add_typed_route( + action_receiver, Box::new(move |message| { let trusted = if let Some(trusted) = trusted.take() { trusted @@ -92,7 +92,7 @@ pub fn response_async( }; let result = task_source.queue_with_canceller( task!(process_webgpu_task: move|| { - context.response(message.to().unwrap(), CanGc::note()); + context.response(message.unwrap(), CanGc::note()); }), &canceller, ); diff --git a/components/script/dom/htmlimageelement.rs b/components/script/dom/htmlimageelement.rs index 7d818e4a803..797ff8557fc 100644 --- a/components/script/dom/htmlimageelement.rs +++ b/components/script/dom/htmlimageelement.rs @@ -1077,14 +1077,15 @@ impl HTMLImageElement { .task_manager() .networking_task_source_with_canceller(); let generation = elem.generation.get(); - ROUTER.add_route( - responder_receiver.to_opaque(), + + ROUTER.add_typed_route( + responder_receiver, Box::new(move |message| { debug!("Got image {:?}", message); // Return the image via a message to the script thread, which marks // the element as dirty and triggers a reflow. let element = trusted_node.clone(); - let image: PendingImageResponse = message.to().unwrap(); + let image: PendingImageResponse = message.unwrap(); let selected_source_clone = selected_source.clone(); let _ = task_source.queue_with_canceller( task!(process_image_response_for_environment_change: move || { diff --git a/components/script/dom/htmlmediaelement.rs b/components/script/dom/htmlmediaelement.rs index d37fd854ac0..08c63143ea3 100644 --- a/components/script/dom/htmlmediaelement.rs +++ b/components/script/dom/htmlmediaelement.rs @@ -1372,10 +1372,10 @@ impl HTMLMediaElement { let (task_source, canceller) = window .task_manager() .media_element_task_source_with_canceller(); - ROUTER.add_route( - action_receiver.to_opaque(), + ROUTER.add_typed_route( + action_receiver, Box::new(move |message| { - let event = message.to().unwrap(); + let event = message.unwrap(); trace!("Player event {:?}", event); let this = trusted_node.clone(); if let Err(err) = task_source.queue_with_canceller( @@ -1415,10 +1415,10 @@ impl HTMLMediaElement { let (task_source, canceller) = window .task_manager() .media_element_task_source_with_canceller(); - ROUTER.add_route( - image_receiver.to_opaque(), + ROUTER.add_typed_route( + image_receiver.to_ipc_receiver(), Box::new(move |message| { - let msg = message.to().unwrap(); + let msg = message.unwrap(); let this = trusted_node.clone(); if let Err(err) = task_source.queue_with_canceller( task!(handle_glplayer_message: move || { diff --git a/components/script/dom/serviceworkercontainer.rs b/components/script/dom/serviceworkercontainer.rs index dc75fb01e80..e582fcd91e0 100644 --- a/components/script/dom/serviceworkercontainer.rs +++ b/components/script/dom/serviceworkercontainer.rs @@ -153,14 +153,11 @@ impl ServiceWorkerContainerMethods for ServiceWorkerContainer { let (job_result_sender, job_result_receiver) = ipc::channel().expect("ipc channel failure"); - ROUTER.add_route( - job_result_receiver.to_opaque(), - Box::new(move |message| { - let msg = message.to(); - match msg { - Ok(msg) => handler.handle(msg), - Err(err) => warn!("Error receiving a JobResult: {:?}", err), - } + ROUTER.add_typed_route( + job_result_receiver, + Box::new(move |message| match message { + Ok(msg) => handler.handle(msg), + Err(err) => warn!("Error receiving a JobResult: {:?}", err), }), ); diff --git a/components/script/dom/websocket.rs b/components/script/dom/websocket.rs index ba82450f5df..83edfbc0846 100644 --- a/components/script/dom/websocket.rs +++ b/components/script/dom/websocket.rs @@ -268,9 +268,9 @@ impl WebSocketMethods for WebSocket { let task_source = global.websocket_task_source(); let canceller = global.task_canceller(WebsocketTaskSource::NAME); - ROUTER.add_route( - dom_event_receiver.to_opaque(), - Box::new(move |message| match message.to().unwrap() { + ROUTER.add_typed_route( + dom_event_receiver.to_ipc_receiver(), + Box::new(move |message| match message.unwrap() { WebSocketNetworkEvent::ConnectionEstablished { protocol_in_use } => { let open_thread = ConnectionEstablishedTask { address: address.clone(), diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs index 24c32223520..4eec2ddfff5 100644 --- a/components/script/dom/window.rs +++ b/components/script/dom/window.rs @@ -1934,10 +1934,10 @@ impl Window { let (responder, responder_listener) = ProfiledIpc::channel(self.global().time_profiler_chan().clone()).unwrap(); let image_cache_chan = self.image_cache_chan.clone(); - ROUTER.add_route( - responder_listener.to_opaque(), + ROUTER.add_typed_route( + responder_listener.to_ipc_receiver(), Box::new(move |message| { - let _ = image_cache_chan.send((pipeline_id, message.to().unwrap())); + let _ = image_cache_chan.send((pipeline_id, message.unwrap())); }), ); self.image_cache diff --git a/components/script/dom/xrsession.rs b/components/script/dom/xrsession.rs index 9734d1e3fac..d5765a75b1c 100644 --- a/components/script/dom/xrsession.rs +++ b/components/script/dom/xrsession.rs @@ -204,10 +204,10 @@ impl XRSession { let (task_source, canceller) = window .task_manager() .dom_manipulation_task_source_with_canceller(); - ROUTER.add_route( - frame_receiver.to_opaque(), + ROUTER.add_typed_route( + frame_receiver, Box::new(move |message| { - let frame: Frame = message.to().unwrap(); + let frame: Frame = message.unwrap(); let time = CrossProcessInstant::now(); let this = this.clone(); let _ = task_source.queue_with_canceller( @@ -235,13 +235,13 @@ impl XRSession { .dom_manipulation_task_source_with_canceller(); let (sender, receiver) = ipc::channel(global.time_profiler_chan().clone()).unwrap(); - ROUTER.add_route( - receiver.to_opaque(), + ROUTER.add_typed_route( + receiver.to_ipc_receiver(), Box::new(move |message| { let this = this.clone(); let _ = task_source.queue_with_canceller( task!(xr_event_callback: move || { - this.root().event_callback(message.to().unwrap(), CanGc::note()); + this.root().event_callback(message.unwrap(), CanGc::note()); }), &canceller, ); @@ -1047,14 +1047,14 @@ impl XRSessionMethods for XRSession { .dom_manipulation_task_source_with_canceller(); let (sender, receiver) = ipc::channel(global.time_profiler_chan().clone()).unwrap(); - ROUTER.add_route( - receiver.to_opaque(), + ROUTER.add_typed_route( + receiver.to_ipc_receiver(), Box::new(move |message| { let this = this.clone(); let _ = task_source.queue_with_canceller( task!(update_session_framerate: move || { let session = this.root(); - session.apply_nominal_framerate(message.to().unwrap()); + session.apply_nominal_framerate(message.unwrap()); if let Some(promise) = session.update_framerate_promise.borrow_mut().take() { promise.resolve_native(&()); }; diff --git a/components/script/dom/xrsystem.rs b/components/script/dom/xrsystem.rs index cb22dce6a18..6b88fa2cc8e 100644 --- a/components/script/dom/xrsystem.rs +++ b/components/script/dom/xrsystem.rs @@ -121,8 +121,8 @@ impl XRSystemMethods for XRSystem { .task_manager() .dom_manipulation_task_source_with_canceller(); let (sender, receiver) = ipc::channel(global.time_profiler_chan().clone()).unwrap(); - ROUTER.add_route( - receiver.to_opaque(), + ROUTER.add_typed_route( + receiver.to_ipc_receiver(), Box::new(move |message| { // router doesn't know this is only called once let trusted = if let Some(trusted) = trusted.take() { @@ -131,7 +131,7 @@ impl XRSystemMethods for XRSystem { error!("supportsSession callback called twice!"); return; }; - let message: Result<(), webxr_api::Error> = if let Ok(message) = message.to() { + let message: Result<(), webxr_api::Error> = if let Ok(message) = message { message } else { error!("supportsSession callback given incorrect payload"); @@ -242,14 +242,14 @@ impl XRSystemMethods for XRSystem { let (sender, receiver) = ipc::channel(global.time_profiler_chan().clone()).unwrap(); let (frame_sender, frame_receiver) = ipc_crate::channel().unwrap(); let mut frame_receiver = Some(frame_receiver); - ROUTER.add_route( - receiver.to_opaque(), + ROUTER.add_typed_route( + receiver.to_ipc_receiver(), Box::new(move |message| { // router doesn't know this is only called once let trusted = trusted.take().unwrap(); let this = this.clone(); let frame_receiver = frame_receiver.take().unwrap(); - let message: Result = if let Ok(message) = message.to() { + let message: Result = if let Ok(message) = message { message } else { error!("requestSession callback given incorrect payload"); diff --git a/components/script/dom/xrtest.rs b/components/script/dom/xrtest.rs index 5633a99d864..bd0a8b2206a 100644 --- a/components/script/dom/xrtest.rs +++ b/components/script/dom/xrtest.rs @@ -154,16 +154,16 @@ impl XRTestMethods for XRTest { .task_manager() .dom_manipulation_task_source_with_canceller(); let (sender, receiver) = ipc::channel(global.time_profiler_chan().clone()).unwrap(); - ROUTER.add_route( - receiver.to_opaque(), + + ROUTER.add_typed_route( + receiver.to_ipc_receiver(), Box::new(move |message| { let trusted = trusted .take() .expect("SimulateDeviceConnection callback called twice"); let this = this.clone(); - let message = message - .to() - .expect("SimulateDeviceConnection callback given incorrect payload"); + let message = + message.expect("SimulateDeviceConnection callback given incorrect payload"); let _ = task_source.queue_with_canceller( task!(request_session: move || { @@ -209,8 +209,8 @@ impl XRTestMethods for XRTest { .task_manager() .dom_manipulation_task_source_with_canceller(); - ROUTER.add_route( - receiver.to_opaque(), + ROUTER.add_typed_route( + receiver.to_ipc_receiver(), Box::new(move |_| { len -= 1; if len == 0 { diff --git a/components/script/image_listener.rs b/components/script/image_listener.rs index f58dd3f3a68..23489faebab 100644 --- a/components/script/image_listener.rs +++ b/components/script/image_listener.rs @@ -32,11 +32,12 @@ pub fn generate_cache_listener_for_element< .task_manager() .networking_task_source_with_canceller(); let generation = elem.generation_id(); - ROUTER.add_route( - responder_receiver.to_opaque(), + + ROUTER.add_typed_route( + responder_receiver, Box::new(move |message| { let element = trusted_node.clone(); - let image: PendingImageResponse = message.to().unwrap(); + let image: PendingImageResponse = message.unwrap(); debug!("Got image {:?}", image); let _ = task_source.queue_with_canceller( task!(process_image_response: move || { diff --git a/components/servo/Cargo.toml b/components/servo/Cargo.toml index 1def35ad40b..f87790abb14 100644 --- a/components/servo/Cargo.toml +++ b/components/servo/Cargo.toml @@ -83,8 +83,8 @@ webgpu = { path = "../webgpu" } webrender = { workspace = true } webrender_api = { workspace = true } webrender_traits = { workspace = true } -webxr = { git = "https://github.com/servo/webxr" } -webxr-api = { git = "https://github.com/servo/webxr" } +webxr = { workspace = true } +webxr-api = { workspace = true } [target.'cfg(all(not(target_os = "windows"), not(target_os = "ios"), not(target_os = "android"), not(target_arch = "arm"), not(target_arch = "aarch64")))'.dependencies] gaol = "0.2.1" diff --git a/components/servo/lib.rs b/components/servo/lib.rs index 86c7d07dfe1..2731431e471 100644 --- a/components/servo/lib.rs +++ b/components/servo/lib.rs @@ -991,11 +991,11 @@ fn create_compositor_channel( }; let compositor_proxy_clone = compositor_proxy.clone(); - ROUTER.add_route( - compositor_ipc_receiver.to_opaque(), + ROUTER.add_typed_route( + compositor_ipc_receiver, Box::new(move |message| { compositor_proxy_clone.send(CompositorMsg::CrossProcess( - message.to().expect("Could not convert Compositor message"), + message.expect("Could not convert Compositor message"), )); }), ); diff --git a/components/shared/canvas/Cargo.toml b/components/shared/canvas/Cargo.toml index 1e3c22d5750..62070161f3e 100644 --- a/components/shared/canvas/Cargo.toml +++ b/components/shared/canvas/Cargo.toml @@ -28,4 +28,4 @@ servo_config = { path = "../../config" } sparkle = { workspace = true } style = { workspace = true } webrender_api = { workspace = true } -webxr-api = { git = "https://github.com/servo/webxr", features = ["ipc"] } +webxr-api = { workspace = true, features = ["ipc"] } diff --git a/components/shared/embedder/Cargo.toml b/components/shared/embedder/Cargo.toml index 319ccb69309..1973cf3cb4b 100644 --- a/components/shared/embedder/Cargo.toml +++ b/components/shared/embedder/Cargo.toml @@ -23,4 +23,4 @@ num-traits = { workspace = true } serde = { workspace = true } servo_url = { path = "../../url" } webrender_api = { workspace = true } -webxr-api = { git = "https://github.com/servo/webxr", features = ["ipc"] } +webxr-api = { workspace = true, features = ["ipc"] } diff --git a/components/shared/net/lib.rs b/components/shared/net/lib.rs index bd02b26748b..72abb691eab 100644 --- a/components/shared/net/lib.rs +++ b/components/shared/net/lib.rs @@ -532,10 +532,10 @@ impl FetchThread { let (to_fetch_sender, from_fetch_sender) = ipc::channel().unwrap(); let sender_clone = sender.clone(); - ROUTER.add_route( - from_fetch_sender.to_opaque(), + ROUTER.add_typed_route( + from_fetch_sender, Box::new(move |message| { - let message: FetchResponseMsg = message.to().unwrap(); + let message: FetchResponseMsg = message.unwrap(); let _ = sender_clone.send(ToFetchThreadMessage::FetchResponse(message)); }), ); diff --git a/components/shared/profile/ipc.rs b/components/shared/profile/ipc.rs index 7a005939a98..f9ee1a87141 100644 --- a/components/shared/profile/ipc.rs +++ b/components/shared/profile/ipc.rs @@ -35,8 +35,8 @@ where self.ipc_receiver.try_recv() } - pub fn to_opaque(self) -> ipc::OpaqueIpcReceiver { - self.ipc_receiver.to_opaque() + pub fn to_ipc_receiver(self) -> ipc::IpcReceiver { + self.ipc_receiver } } diff --git a/components/shared/profile/mem.rs b/components/shared/profile/mem.rs index 87b6f26597c..5b92d2eee17 100644 --- a/components/shared/profile/mem.rs +++ b/components/shared/profile/mem.rs @@ -75,11 +75,11 @@ impl ProfilerChan { { // Register the memory reporter. let (reporter_sender, reporter_receiver) = ipc::channel().unwrap(); - ROUTER.add_route( - reporter_receiver.to_opaque(), + ROUTER.add_typed_route( + reporter_receiver, Box::new(move |message| { // Just injects an appropriate event into the paint thread's queue. - let request: ReporterRequest = message.to().unwrap(); + let request: ReporterRequest = message.unwrap(); channel_for_reporter.send(msg(request.reports_channel)); }), ); diff --git a/components/shared/script/Cargo.toml b/components/shared/script/Cargo.toml index 3536b59c68e..94279827822 100644 --- a/components/shared/script/Cargo.toml +++ b/components/shared/script/Cargo.toml @@ -45,4 +45,4 @@ webdriver = { workspace = true } webgpu = { path = "../../webgpu" } webrender_api = { workspace = true } webrender_traits = { workspace = true } -webxr-api = { git = "https://github.com/servo/webxr", features = ["ipc"] } +webxr-api = { workspace = true, features = ["ipc"] } diff --git a/ports/servoshell/Cargo.toml b/ports/servoshell/Cargo.toml index cc18a5b51e8..6bde939bcc3 100644 --- a/ports/servoshell/Cargo.toml +++ b/ports/servoshell/Cargo.toml @@ -95,7 +95,7 @@ ohos-vsync = "0.1" nix = { workspace = true, features = ["fs"] } surfman = { workspace = true, features = ["sm-angle-default"] } serde_json = { workspace = true } -webxr = { git = "https://github.com/servo/webxr" } +webxr = { workspace = true } [target.'cfg(not(any(target_os = "android", target_env = "ohos")))'.dependencies] @@ -118,7 +118,7 @@ raw-window-handle = "0.6" shellwords = "1.0.0" surfman = { workspace = true, features = ["sm-x11", "sm-raw-window-handle-06"] } tinyfiledialogs = "3.0" -webxr = { git = "https://github.com/servo/webxr", features = ["ipc", "glwindow", "headless"] } +webxr = { workspace = true, features = ["ipc", "glwindow", "headless"] } winit = "0.30.5" [target.'cfg(any(all(target_os = "linux", not(target_env = "ohos")), target_os = "windows"))'.dependencies] @@ -128,6 +128,6 @@ image = { workspace = true } sig = "1.0" [target.'cfg(target_os = "windows")'.dependencies] -webxr = { git = "https://github.com/servo/webxr", features = ["ipc", "glwindow", "headless", "openxr-api"] } +webxr = { workspace = true, features = ["ipc", "glwindow", "headless", "openxr-api"] } windows-sys = { workspace = true, features = ["Win32_Graphics_Gdi"] } libservo = { path = "../../components/servo", features = ["no-wgl"] }