From 17272eb652a9ffdce757218ab85847edb43da649 Mon Sep 17 00:00:00 2001 From: Gil Birman Date: Wed, 13 May 2026 10:25:40 -0500 Subject: [PATCH] fix(macos): avoid panicking on missing webview URL --- .changes/macos-webview-url-error.md | 5 +++++ src/wkwebview/mod.rs | 12 ++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 .changes/macos-webview-url-error.md diff --git a/.changes/macos-webview-url-error.md b/.changes/macos-webview-url-error.md new file mode 100644 index 000000000..897499ca5 --- /dev/null +++ b/.changes/macos-webview-url-error.md @@ -0,0 +1,5 @@ +--- +"wry": patch +--- + +Return an error instead of panicking when `WebView::url` cannot read a URL from `WKWebView` on macOS and iOS. diff --git a/src/wkwebview/mod.rs b/src/wkwebview/mod.rs index 685634980..4877ff182 100644 --- a/src/wkwebview/mod.rs +++ b/src/wkwebview/mod.rs @@ -1346,8 +1346,16 @@ r#"Object.defineProperty(window, 'ipc', { } pub fn url_from_webview(webview: &WKWebView) -> Result { - let url_obj = unsafe { webview.URL().unwrap() }; - let absolute_url = unsafe { url_obj.absoluteString().unwrap() }; + let Some(url_obj) = (unsafe { webview.URL() }) else { + return Err(Error::Io(std::io::Error::other( + "failed to get WebView URL", + ))); + }; + let Some(absolute_url) = (unsafe { url_obj.absoluteString() }) else { + return Err(Error::Io(std::io::Error::other( + "failed to get absolute WebView URL", + ))); + }; let bytes = { let bytes: *const c_char = absolute_url.UTF8String();