From 577c7ffc45ef005403cdf698e595614038c7d1e1 Mon Sep 17 00:00:00 2001 From: Mateusz Kurowski Date: Mon, 14 Apr 2025 22:57:44 +0200 Subject: [PATCH] fix(webdriver): windows: make native webdriver close with parent process (fix #8610) (#10108) * fix(webdriver): windows: make native webdriver close with parent process * add change file --------- Co-authored-by: Lucas Nogueira --- .changes/webdriver-cleanup.md | 5 +++++ Cargo.lock | 21 +++++++++++++++++++++ crates/tauri-driver/Cargo.toml | 3 +++ crates/tauri-driver/src/main.rs | 10 ++++++++++ 4 files changed, 39 insertions(+) create mode 100644 .changes/webdriver-cleanup.md diff --git a/.changes/webdriver-cleanup.md b/.changes/webdriver-cleanup.md new file mode 100644 index 000000000..f607309b9 --- /dev/null +++ b/.changes/webdriver-cleanup.md @@ -0,0 +1,5 @@ +--- +"tauri-driver": patch:bug +--- + +Ensure the webdriver process is closed when the tauri-driver process finishes. diff --git a/Cargo.lock b/Cargo.lock index a159e3fe0..1a18055e3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8644,6 +8644,7 @@ dependencies = [ "signal-hook-tokio", "tokio", "which", + "win32job", ] [[package]] @@ -10161,6 +10162,16 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311" +[[package]] +name = "win32job" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b2b1bf557d947847a30eb73f79aa6cdb3eaf3ce02f5e9599438f77896a62b3c" +dependencies = [ + "thiserror 1.0.69", + "windows 0.52.0", +] + [[package]] name = "winapi" version = "0.3.9" @@ -10207,6 +10218,16 @@ dependencies = [ "windows-version", ] +[[package]] +name = "windows" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +dependencies = [ + "windows-core 0.52.0", + "windows-targets 0.52.6", +] + [[package]] name = "windows" version = "0.59.0" diff --git a/crates/tauri-driver/Cargo.toml b/crates/tauri-driver/Cargo.toml index 74908f999..d23b1095e 100644 --- a/crates/tauri-driver/Cargo.toml +++ b/crates/tauri-driver/Cargo.toml @@ -33,3 +33,6 @@ which = "7" [target."cfg(unix)".dependencies] signal-hook = "0.3" signal-hook-tokio = { version = "0.3", features = ["futures-v0_3"] } + +[target."cfg(windows)".dependencies] +win32job = "2" diff --git a/crates/tauri-driver/src/main.rs b/crates/tauri-driver/src/main.rs index 6967b2ccf..02f0dbabd 100644 --- a/crates/tauri-driver/src/main.rs +++ b/crates/tauri-driver/src/main.rs @@ -28,6 +28,16 @@ fn main() { fn main() { let args = pico_args::Arguments::from_env().into(); + #[cfg(windows)] + let _job_handle = { + let job = win32job::Job::create().unwrap(); + let mut info = job.query_extended_limit_info().unwrap(); + info.limit_kill_on_job_close(); + job.set_extended_limit_info(&mut info).unwrap(); + job.assign_current_process().unwrap(); + job + }; + // start the native webdriver on the port specified in args let mut driver = webdriver::native(&args); let driver = driver