From 783ef0f2d331f520fa827c3112f36c0b519b9292 Mon Sep 17 00:00:00 2001 From: Amr Bashir Date: Tue, 7 May 2024 17:16:17 +0300 Subject: [PATCH] refactor!(core): return result in `Webview/WebviewWindow::url` getter (#9647) * refactor!(core): return result in `Webview/WebviewWindow::url` getter * clippy * Apply suggestions from code review --- .changes/url-result-runtime.md | 6 ++++++ .changes/url-result.md | 5 +++++ core/tauri-runtime-wry/src/lib.rs | 4 ++-- core/tauri-runtime/src/lib.rs | 2 +- core/tauri/src/test/mock_runtime.rs | 9 ++------- core/tauri/src/webview/mod.rs | 9 ++++++--- core/tauri/src/webview/webview_window.rs | 3 +-- examples/api/src-tauri/Cargo.lock | 22 ++++++++++++++++++++++ 8 files changed, 45 insertions(+), 15 deletions(-) create mode 100644 .changes/url-result-runtime.md create mode 100644 .changes/url-result.md diff --git a/.changes/url-result-runtime.md b/.changes/url-result-runtime.md new file mode 100644 index 000000000..4407a349b --- /dev/null +++ b/.changes/url-result-runtime.md @@ -0,0 +1,6 @@ +--- +"tauri-runtime": "patch" +"tauri-runtime-wry": "patch" +--- + +Changed `WebviewDispatch::url` getter to return a result. diff --git a/.changes/url-result.md b/.changes/url-result.md new file mode 100644 index 000000000..978d2cc81 --- /dev/null +++ b/.changes/url-result.md @@ -0,0 +1,5 @@ +--- +"tauri": "patch:breaking" +--- + +Changed `WebviewWindow::url` and `Webview::url` getter to return a result. diff --git a/core/tauri-runtime-wry/src/lib.rs b/core/tauri-runtime-wry/src/lib.rs index 5aeff3592..3b016145e 100644 --- a/core/tauri-runtime-wry/src/lib.rs +++ b/core/tauri-runtime-wry/src/lib.rs @@ -1190,7 +1190,7 @@ pub enum WebviewMessage { SetAutoResize(bool), SetZoom(f64), // Getters - Url(Sender>), + Url(Sender>), Bounds(Sender>), Position(Sender>>), Size(Sender>>), @@ -1305,7 +1305,7 @@ impl WebviewDispatch for WryWebviewDispatcher { // Getters - fn url(&self) -> Result { + fn url(&self) -> Result { webview_getter!(self, WebviewMessage::Url)? } diff --git a/core/tauri-runtime/src/lib.rs b/core/tauri-runtime/src/lib.rs index 68ae9cb5c..64ef2692d 100644 --- a/core/tauri-runtime/src/lib.rs +++ b/core/tauri-runtime/src/lib.rs @@ -445,7 +445,7 @@ pub trait WebviewDispatch: Debug + Clone + Send + Sync + Sized + ' // GETTERS /// Returns the webview's current URL. - fn url(&self) -> Result; + fn url(&self) -> Result; /// Returns the webview's bounds. fn bounds(&self) -> Result; diff --git a/core/tauri/src/test/mock_runtime.rs b/core/tauri/src/test/mock_runtime.rs index 3b5f408fd..ee74e7888 100644 --- a/core/tauri/src/test/mock_runtime.rs +++ b/core/tauri/src/test/mock_runtime.rs @@ -502,13 +502,8 @@ impl WebviewDispatch for MockWebviewDispatcher { Ok(()) } - fn url(&self) -> Result { - self - .url - .lock() - .unwrap() - .parse() - .map_err(|_| Error::FailedToReceiveMessage) + fn url(&self) -> Result { + Ok(self.url.lock().unwrap().clone()) } fn bounds(&self) -> Result { diff --git a/core/tauri/src/webview/mod.rs b/core/tauri/src/webview/mod.rs index c055c9960..29967c0f6 100644 --- a/core/tauri/src/webview/mod.rs +++ b/core/tauri/src/webview/mod.rs @@ -1073,9 +1073,12 @@ fn main() { } /// Returns the current url of the webview. - // TODO: in v2, change this type to Result - pub fn url(&self) -> Url { - self.webview.dispatcher.url().unwrap() + pub fn url(&self) -> crate::Result { + self + .webview + .dispatcher + .url() + .map(|url| url.parse().map_err(crate::Error::InvalidUrl))? } /// Navigates the webview to the defined url. diff --git a/core/tauri/src/webview/webview_window.rs b/core/tauri/src/webview/webview_window.rs index 3f101ec55..d097b3ffd 100644 --- a/core/tauri/src/webview/webview_window.rs +++ b/core/tauri/src/webview/webview_window.rs @@ -1605,8 +1605,7 @@ impl WebviewWindow { } /// Returns the current url of the webview. - // TODO: in v2, change this type to Result - pub fn url(&self) -> Url { + pub fn url(&self) -> crate::Result { self.webview.url() } diff --git a/examples/api/src-tauri/Cargo.lock b/examples/api/src-tauri/Cargo.lock index 20285fae9..a1bab0a35 100644 --- a/examples/api/src-tauri/Cargo.lock +++ b/examples/api/src-tauri/Cargo.lock @@ -4002,6 +4002,17 @@ dependencies = [ "syn 2.0.61", ] +[[package]] +name = "windows-implement" +version = "0.56.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6fc35f58ecd95a9b71c4f2329b911016e6bec66b3f2e6a4aad86bd2e99e2f9b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.52", +] + [[package]] name = "windows-interface" version = "0.56.0" @@ -4013,6 +4024,17 @@ dependencies = [ "syn 2.0.61", ] +[[package]] +name = "windows-interface" +version = "0.56.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08990546bf4edef8f431fa6326e032865f27138718c587dc21bc0265bbcb57cc" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.52", +] + [[package]] name = "windows-result" version = "0.1.1"