From 5a10b631f677c427d291c08c4a97ed9321eee468 Mon Sep 17 00:00:00 2001 From: dimitris Date: Wed, 20 May 2026 14:24:21 +0200 Subject: [PATCH] MainActivity#printText: surface WebView main-frame load errors The hidden WebView built in printText() drives the print flow via onPageFinished -> createWebPrintJob. The WebViewClient does not override onReceivedError, so if loadData() fails for any reason (very large note that exceeds WebView limits, transient renderer error, etc.) the user gets nothing - no toast, no log, and the print never starts because onPageFinished is also not called. Add onReceivedError on the same anonymous WebViewClient. Guard with request.isForMainFrame so any future sub-resource error does not toast twice, and reuse the existing commons string unknown_error_occurred so the message is already translated. --- .../kotlin/org/fossify/notes/activities/MainActivity.kt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/src/main/kotlin/org/fossify/notes/activities/MainActivity.kt b/app/src/main/kotlin/org/fossify/notes/activities/MainActivity.kt index 72577845..58656237 100644 --- a/app/src/main/kotlin/org/fossify/notes/activities/MainActivity.kt +++ b/app/src/main/kotlin/org/fossify/notes/activities/MainActivity.kt @@ -24,6 +24,7 @@ import android.view.ActionMode import android.view.Gravity import android.view.MenuItem import android.view.inputmethod.EditorInfo +import android.webkit.WebResourceError import android.webkit.WebResourceRequest import android.webkit.WebView import android.webkit.WebViewClient @@ -1286,6 +1287,13 @@ class MainActivity : SimpleActivity() { override fun onPageFinished(view: WebView, url: String) { createWebPrintJob(view) } + + override fun onReceivedError(view: WebView, request: WebResourceRequest, error: WebResourceError) { + super.onReceivedError(view, request, error) + if (request.isForMainFrame) { + toast(org.fossify.commons.R.string.unknown_error_occurred) + } + } } webView.loadData(getPrintableText().replace("#", "%23"), "text/plain", "UTF-8")