From 07ab717b3b36dd5e9e74374562c6d35a78689170 Mon Sep 17 00:00:00 2001 From: alperozturk96 Date: Tue, 18 Aug 2026 08:07:07 +0200 Subject: [PATCH] fix lint Signed-off-by: alperozturk96 --- .../android/ui/NextcloudWebViewClient.kt | 3 +- .../owncloud/android/ui/SafeWebViewClient.kt | 32 +++++++++++++++++++ .../ui/fragment/FeatureWebFragment.java | 4 +-- 3 files changed, 35 insertions(+), 4 deletions(-) create mode 100644 app/src/main/java/com/owncloud/android/ui/SafeWebViewClient.kt diff --git a/app/src/main/java/com/owncloud/android/ui/NextcloudWebViewClient.kt b/app/src/main/java/com/owncloud/android/ui/NextcloudWebViewClient.kt index 3e652019dcb1..24703ea4961c 100644 --- a/app/src/main/java/com/owncloud/android/ui/NextcloudWebViewClient.kt +++ b/app/src/main/java/com/owncloud/android/ui/NextcloudWebViewClient.kt @@ -15,7 +15,6 @@ import android.webkit.SslErrorHandler import android.webkit.WebResourceRequest import android.webkit.WebResourceResponse import android.webkit.WebView -import android.webkit.WebViewClient import androidx.fragment.app.FragmentManager import com.owncloud.android.authentication.AuthenticatorActivity import com.owncloud.android.lib.common.network.AdvancedX509KeyManager @@ -28,7 +27,7 @@ import java.security.cert.CertificateException import java.security.cert.CertificateFactory import java.security.cert.X509Certificate -open class NextcloudWebViewClient(val supportFragmentManager: FragmentManager) : WebViewClient() { +open class NextcloudWebViewClient(val supportFragmentManager: FragmentManager) : SafeWebViewClient() { private val tag: String? = NextcloudWebViewClient::class.simpleName diff --git a/app/src/main/java/com/owncloud/android/ui/SafeWebViewClient.kt b/app/src/main/java/com/owncloud/android/ui/SafeWebViewClient.kt new file mode 100644 index 000000000000..edaf70a3bcb1 --- /dev/null +++ b/app/src/main/java/com/owncloud/android/ui/SafeWebViewClient.kt @@ -0,0 +1,32 @@ +/* + * Nextcloud - Android Client + * + * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +package com.owncloud.android.ui + +import android.view.ViewGroup +import android.webkit.RenderProcessGoneDetail +import android.webkit.WebView +import android.webkit.WebViewClient +import com.owncloud.android.lib.common.utils.Log_OC + +@Suppress("MissingOnRenderProcessGone") +open class SafeWebViewClient : WebViewClient() { + + override fun onRenderProcessGone(view: WebView?, detail: RenderProcessGoneDetail?): Boolean { + Log_OC.e(TAG, "WebView render process gone, did crash: " + detail?.didCrash()) + + view?.let { + (it.parent as? ViewGroup)?.removeView(it) + it.destroy() + } + + return true + } + + companion object { + private val TAG = SafeWebViewClient::class.java.simpleName + } +} diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/FeatureWebFragment.java b/app/src/main/java/com/owncloud/android/ui/fragment/FeatureWebFragment.java index 63e2bbedd815..d9479dec61b3 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/FeatureWebFragment.java +++ b/app/src/main/java/com/owncloud/android/ui/fragment/FeatureWebFragment.java @@ -12,9 +12,9 @@ import android.view.View; import android.view.ViewGroup; import android.webkit.WebView; -import android.webkit.WebViewClient; import com.owncloud.android.R; +import com.owncloud.android.ui.SafeWebViewClient; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -51,7 +51,7 @@ public View onCreateView(@NonNull LayoutInflater inflater, webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setDomStorageEnabled(true); webView.getSettings().setAllowFileAccess(false); - webView.setWebViewClient(new WebViewClient()); + webView.setWebViewClient(new SafeWebViewClient()); webView.loadUrl(mWebUrl); return v;