From 6c751c50f15b42545796b3a2b92d5ccfeeed7137 Mon Sep 17 00:00:00 2001 From: Thorben Primke Date: Fri, 19 Apr 2019 11:13:19 -0700 Subject: [PATCH 1/2] [ForwardingCookieHandler] Adds Logic To Catch MissingWebViewPackageException Summary: We are seeing crash reports that the webview is missing. In this case it should fail gracefully so that a missing webview does not block from using an app built with React Native. The contains could also be changed to check for "webview" in general to catch all webview related exception. It's currenlty checking on for the specific string that I'm seeing in our app's crashreporting tool. --- .../modules/network/ForwardingCookieHandler.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) 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 2ad5e8fc59989e..c61ee1ba5b3133 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 @@ -182,6 +182,18 @@ protected void doInBackgroundGuarded(Void... params) { } catch (IllegalArgumentException ex) { // https://bugs.chromium.org/p/chromium/issues/detail?id=559720 return null; + } catch (Exception exception) { + String message = exception.getMessage(); + // We cannot catch MissingWebViewPackageException as it is in a private / system API + // class. This validates the exception's message to ensure we are only handling this + // specific exception. + // https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/ + // webkit/WebViewFactory.java#98 + if (message != null && message.contains("No WebView installed")) { + return null; + } else { + throw exception; + } } if (USES_LEGACY_STORE) { From d2e150b10961411874f54d34db8d389ef8d0a311 Mon Sep 17 00:00:00 2001 From: Christoph Nakazawa Date: Wed, 24 Apr 2019 13:42:17 +0100 Subject: [PATCH 2/2] Update ForwardingCookieHandler.java --- .../react/modules/network/ForwardingCookieHandler.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) 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 c61ee1ba5b3133..23304fe2f2d6d3 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 @@ -187,8 +187,7 @@ protected void doInBackgroundGuarded(Void... params) { // We cannot catch MissingWebViewPackageException as it is in a private / system API // class. This validates the exception's message to ensure we are only handling this // specific exception. - // https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/ - // webkit/WebViewFactory.java#98 + // https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/webkit/WebViewFactory.java#98 if (message != null && message.contains("No WebView installed")) { return null; } else {