From 5451cd48bd0166ba70d516e3a11c6786bc22171a Mon Sep 17 00:00:00 2001 From: Rasmus Eneman Date: Tue, 30 Aug 2022 06:57:07 -0700 Subject: [PATCH] fix: Crash if WebView is disabled (#34483) Summary: When the webview is updated by play store, all apps that has loaded webview gets killed. For background see https://issuetracker.google.com/issues/228611949?pli=1 We have a long-running app and don't want this to happen and while we are not using webview anywhere, we are using websockets that loads it for reading cookies, however we are not using cookies to authenticate the websocket and thus want to disable the webview to avoid loading it unnecessarily and then getting killed unnecessarily. The webview has support for beeing disabled https://developer.android.com/reference/android/webkit/WebView#disableWebView() however as-is this crashes React Native. It seems to me like this case is very similar to not having web view installed and should be handled in the same way. ## Changelog [Android] [Fixed] - Avoid crash in ForwardingCookieHandler if webview is disabled Pull Request resolved: https://github.com/facebook/react-native/pull/34483 Test Plan: Add `WebView.disableWebView();` as the first line in `MainActivity.onCreate`. Reviewed By: christophpurrer Differential Revision: D38981827 Pulled By: cipolleschi fbshipit-source-id: 335a8420568ad0c80b834ae8a3b164e55ebe26f3 --- .../react/modules/network/ForwardingCookieHandler.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/network/ForwardingCookieHandler.java b/ReactAndroid/src/main/java/com/facebook/react/modules/network/ForwardingCookieHandler.java index def2f4e3957e0d..6b228d09aa7bc6 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/network/ForwardingCookieHandler.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/network/ForwardingCookieHandler.java @@ -152,7 +152,9 @@ protected void doInBackgroundGuarded(Void... params) { || (message != null && (message.contains("WebView provider") || message.contains("No WebView installed") - || message.contains("Cannot load WebView")))) { + || message.contains("Cannot load WebView") + || message.contains("disableWebView") + || message.contains("WebView is disabled")))) { return null; } else { throw exception;