diff --git a/src/wkwebview/class/document_title_changed_observer.rs b/src/wkwebview/class/document_title_changed_observer.rs index 1e0e0edff5..90c6cdbfd0 100644 --- a/src/wkwebview/class/document_title_changed_observer.rs +++ b/src/wkwebview/class/document_title_changed_observer.rs @@ -92,7 +92,7 @@ impl Drop for DocumentTitleChangedObserver { self .ivars() .object - .removeObserver_forKeyPath(&self, &NSString::from_str("title")); + .removeObserver_forKeyPath(self, &NSString::from_str("title")); } } } diff --git a/src/wkwebview/class/mod.rs b/src/wkwebview/class/mod.rs index 0381ef9909..22bd404ef8 100644 --- a/src/wkwebview/class/mod.rs +++ b/src/wkwebview/class/mod.rs @@ -2,11 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT -pub mod wry_web_view; -pub mod wry_web_view_delegate; pub mod document_title_changed_observer; -pub mod wry_navigation_delegate; +pub mod url_scheme_handler; pub mod wry_download_delegate; -pub mod wry_web_view_ui_delegate; +pub mod wry_navigation_delegate; +pub mod wry_web_view; +pub mod wry_web_view_delegate; pub mod wry_web_view_parent; -pub mod url_scheme_handler; \ No newline at end of file +pub mod wry_web_view_ui_delegate; diff --git a/src/wkwebview/class/url_scheme_handler.rs b/src/wkwebview/class/url_scheme_handler.rs index 9d924f1d23..29d3f3089f 100644 --- a/src/wkwebview/class/url_scheme_handler.rs +++ b/src/wkwebview/class/url_scheme_handler.rs @@ -25,7 +25,7 @@ pub fn create(name: &str) -> &AnyClass { unsafe { let scheme_name = format!("{}URLSchemeHandler", name); let cls = ClassBuilder::new(&scheme_name, NSObject::class()); - let cls = match cls { + match cls { Some(mut cls) => { cls.add_ivar::<*mut c_void>("function"); cls.add_ivar::("webview_id"); @@ -40,13 +40,12 @@ pub fn create(name: &str) -> &AnyClass { cls.register() } None => AnyClass::get(&scheme_name).expect("Failed to get the class definition"), - }; - cls + } } } // Task handler for custom protocol -extern "C" fn start_task<'a>( +extern "C" fn start_task( this: &AnyObject, _sel: objc2::runtime::Sel, webview: *mut WryWebView, @@ -61,7 +60,7 @@ extern "C" fn start_task<'a>( let task_uuid = (*webview).add_custom_task_key(task_key); let ivar = this.class().instance_variable("webview_id").unwrap(); - let webview_id: u32 = ivar.load::(this).clone(); + let webview_id: u32 = *ivar.load::(this); let ivar = this.class().instance_variable("function").unwrap(); let function: &*mut c_void = ivar.load(this); if !function.is_null() { diff --git a/src/wkwebview/class/wry_download_delegate.rs b/src/wkwebview/class/wry_download_delegate.rs index 5ac2814ff2..0fb143c6f0 100644 --- a/src/wkwebview/class/wry_download_delegate.rs +++ b/src/wkwebview/class/wry_download_delegate.rs @@ -88,12 +88,12 @@ impl WryDownloadDelegate { impl Drop for WryDownloadDelegate { fn drop(&mut self) { - if self.ivars().started != null_mut() { + if !self.ivars().started.is_null() { unsafe { drop(Box::from_raw(self.ivars().started)); } } - if self.ivars().completed != null_mut() { + if !self.ivars().completed.is_null() { unsafe { drop(Box::from_raw(self.ivars().completed)); } diff --git a/src/wkwebview/mod.rs b/src/wkwebview/mod.rs index c1cd4fee23..e5073db5e2 100644 --- a/src/wkwebview/mod.rs +++ b/src/wkwebview/mod.rs @@ -218,14 +218,13 @@ impl InnerWebView { let config_unwind_safe = AssertUnwindSafe(&config); let handler_unwind_safe = AssertUnwindSafe(handler); - if catch_unwind(|| { + let set_result = catch_unwind(|| { config_unwind_safe.setURLSchemeHandler_forURLScheme( Some(&*(handler_unwind_safe.cast::>())), &NSString::from_str(&name), ); - }) - .is_err() - { + }); + if set_result.is_err() { return Err(Error::UrlSchemeRegisterError(name)); } } @@ -261,7 +260,8 @@ impl InnerWebView { } }; - let proxies: Retained> = NSArray::arrayWithObject(&*proxy_config); + let proxies: Retained> = + objc2_foundation::NSArray::arrayWithObject(&*proxy_config); data_store.setValue_forKey(Some(&proxies), ns_string!("proxyConfigurations")); } @@ -375,7 +375,7 @@ impl InnerWebView { if attributes.devtools { let has_inspectable_property: bool = NSObject::respondsToSelector(&webview, objc2::sel!(setInspectable:)); - if has_inspectable_property == true { + if has_inspectable_property { webview.setInspectable(true); } // this cannot be on an `else` statement, it does not work on macOS :( @@ -433,7 +433,7 @@ impl InnerWebView { let ui_delegate: Retained = WryWebViewUIDelegate::new(mtm); let proto_ui_delegate = ProtocolObject::from_ref(ui_delegate.as_ref()); - webview.setUIDelegate(Some(&proto_ui_delegate)); + webview.setUIDelegate(Some(proto_ui_delegate)); // ns window is required for the print operation #[cfg(target_os = "macos")] @@ -538,7 +538,7 @@ r#"Object.defineProperty(window, 'ipc', { let mut result = String::new(); - if val != null_mut() { + if !val.is_null() { let json_ns_data = NSJSONSerialization::dataWithJSONObject_options_error( &*val, objc2_foundation::NSJSONWritingOptions::NSJSONWritingFragmentsAllowed, @@ -566,9 +566,19 @@ r#"Object.defineProperty(window, 'ipc', { }) .copy(); + #[cfg(feature = "tracing")] + let handler = Some( + block2::RcBlock::new(move |val: *mut AnyObject, _err: *mut NSError| { + span.lock().unwrap().take(); + }) + .copy(), + ); + #[cfg(not(feature = "tracing"))] + let handler: Option> = None; + self .webview - .evaluateJavaScript_completionHandler(&NSString::from_str(js), None); + .evaluateJavaScript_completionHandler(&NSString::from_str(js), handler.as_deref()); } } } diff --git a/src/wkwebview/navigation.rs b/src/wkwebview/navigation.rs index ef9fad38ff..4a5d2dbf9d 100644 --- a/src/wkwebview/navigation.rs +++ b/src/wkwebview/navigation.rs @@ -25,7 +25,7 @@ pub(crate) fn did_commit_navigation( let mut pending_scripts = this.ivars().pending_scripts.lock().unwrap(); if let Some(scripts) = &*pending_scripts { for script in scripts { - webview.evaluateJavaScript_completionHandler(&NSString::from_str(&script), None); + webview.evaluateJavaScript_completionHandler(&NSString::from_str(script), None); } *pending_scripts = None; }