Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changes/reload.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'wry': 'patch'
Comment thread
lucasfernog marked this conversation as resolved.
---

feat: add `Webview.reload`
2 changes: 1 addition & 1 deletion src/android/kotlin/RustWebView.kt
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import kotlin.collections.Map
@SuppressLint("RestrictedApi")
class RustWebView(context: Context, val initScripts: Array<String>, val id: String): WebView(context) {
val isDocumentStartScriptEnabled: Boolean

init {
settings.javaScriptEnabled = true
settings.domStorageEnabled = true
Expand Down
2 changes: 1 addition & 1 deletion src/android/kotlin/proguard-wry.pro
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,4 @@

-keep class {{package-unescaped}}.RustWebChromeClient,{{package-unescaped}}.RustWebViewClient {
public <init>(...);
}
}
11 changes: 11 additions & 0 deletions src/android/main_pipe.rs
Original file line number Diff line number Diff line change
Expand Up @@ -341,6 +341,11 @@ impl<'a> MainPipe<'a> {
load_html(&mut self.env, webview.as_obj(), &html)?;
}
}
WebViewMessage::Reload => {
if let Some(webview) = &self.webview {
reload(&mut self.env, webview.as_obj())?;
}
}
WebViewMessage::GetCookies(tx, url) => {
if let Some(webview) = &self.webview {
let url = self.env.new_string(url)?;
Expand Down Expand Up @@ -425,6 +430,11 @@ fn load_html<'a>(env: &mut JNIEnv<'a>, webview: &JObject<'a>, html: &JString<'a>
Ok(())
}

fn reload<'a>(env: &mut JNIEnv<'a>, webview: &JObject<'a>) -> JniResult<()> {
env.call_method(webview, "reload", "()V", &[])?;
Ok(())
}

fn set_background_color<'a>(
env: &mut JNIEnv<'a>,
webview: &JObject<'a>,
Expand All @@ -445,6 +455,7 @@ pub(crate) enum WebViewMessage {
Jni(Box<dyn FnOnce(&mut JNIEnv, &JObject, &JObject) + Send>),
LoadUrl(String, Option<http::HeaderMap>),
LoadHtml(String),
Reload,
ClearAllBrowsingData,
OnDestroy,
}
Expand Down
5 changes: 5 additions & 0 deletions src/android/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -400,6 +400,11 @@ impl InnerWebView {
Ok(())
}

pub fn reload(&self) -> Result<()> {
MainPipe::send(WebViewMessage::Reload);
Ok(())
}

pub fn clear_all_browsing_data(&self) -> Result<()> {
MainPipe::send(WebViewMessage::ClearAllBrowsingData);
Ok(())
Expand Down
5 changes: 5 additions & 0 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1883,6 +1883,11 @@ impl WebView {
self.webview.load_url(url)
}

/// Reloads the current page.
pub fn reload(&self) -> crate::Result<()> {
self.webview.reload()
}

/// Navigate to the specified url using the specified headers
pub fn load_url_with_headers(&self, url: &str, headers: http::HeaderMap) -> Result<()> {
self.webview.load_url_with_headers(url, headers)
Expand Down
5 changes: 5 additions & 0 deletions src/webkitgtk/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -695,6 +695,11 @@ impl InnerWebView {
Ok(())
}

pub fn reload(&self) -> Result<()> {
self.webview.reload();
Ok(())
}

pub fn clear_all_browsing_data(&self) -> Result<()> {
if let Some(context) = self.webview.context() {
if let Some(data_manger) = context.website_data_manager() {
Expand Down
4 changes: 4 additions & 0 deletions src/webview2/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1300,6 +1300,10 @@ impl InnerWebView {
unsafe { self.webview.NavigateToString(&html) }.map_err(Into::into)
}

pub fn reload(&self) -> Result<()> {
unsafe { self.webview.Reload() }.map_err(Into::into)
}

pub fn bounds(&self) -> Result<Rect> {
let mut bounds = Rect::default();
let mut rect = RECT::default();
Expand Down
7 changes: 7 additions & 0 deletions src/wkwebview/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -683,6 +683,13 @@ r#"Object.defineProperty(window, 'ipc', {
Ok(())
}

/// Reloads the current page.
pub fn reload(&self) -> crate::Result<()> {
// Safety: objc runtime calls are unsafe
unsafe { self.webview.reload() };
Ok(())
}

pub fn clear_all_browsing_data(&self) -> Result<()> {
unsafe {
let config = self.webview.configuration();
Expand Down