|
@@ -197,6 +197,8 @@ public class RNCWebViewManager extends SimpleViewManager<WebView> {
|
197
|
197
|
|
198
|
198
|
webView.setDownloadListener(new DownloadListener() {
|
199
|
199
|
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
|
|
200
|
+ webView.setIgnoreErrFailedForThisURL(url);
|
|
201
|
+
|
200
|
202
|
RNCWebViewModule module = getModule(reactContext);
|
201
|
203
|
|
202
|
204
|
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
|
|
@@ -721,6 +723,11 @@ public class RNCWebViewManager extends SimpleViewManager<WebView> {
|
721
|
723
|
protected boolean mLastLoadFailed = false;
|
722
|
724
|
protected @Nullable
|
723
|
725
|
ReadableArray mUrlPrefixesForDefaultIntent;
|
|
726
|
+ protected @Nullable String ignoreErrFailedForThisURL = null;
|
|
727
|
+
|
|
728
|
+ public void setIgnoreErrFailedForThisURL(@Nullable String url) {
|
|
729
|
+ ignoreErrFailedForThisURL = url;
|
|
730
|
+ }
|
724
|
731
|
|
725
|
732
|
@Override
|
726
|
733
|
public void onPageFinished(WebView webView, String url) {
|
|
@@ -772,6 +779,21 @@ public class RNCWebViewManager extends SimpleViewManager<WebView> {
|
772
|
779
|
int errorCode,
|
773
|
780
|
String description,
|
774
|
781
|
String failingUrl) {
|
|
782
|
+
|
|
783
|
+ if (ignoreErrFailedForThisURL != null
|
|
784
|
+ && failingUrl.equals(ignoreErrFailedForThisURL)
|
|
785
|
+ && errorCode == -1
|
|
786
|
+ && description.equals("net::ERR_FAILED")) {
|
|
787
|
+
|
|
788
|
+ // This is a workaround for a bug in the WebView.
|
|
789
|
+ // See these chromium issues for more context:
|
|
790
|
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=1023678
|
|
791
|
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=1050635
|
|
792
|
+ // This entire commit should be reverted once this bug is resolved in chromium.
|
|
793
|
+ setIgnoreErrFailedForThisURL(null);
|
|
794
|
+ return;
|
|
795
|
+ }
|
|
796
|
+
|
775
|
797
|
super.onReceivedError(webView, errorCode, description, failingUrl);
|
776
|
798
|
mLastLoadFailed = true;
|
777
|
799
|
|
|
@@ -999,6 +1021,10 @@ public class RNCWebViewManager extends SimpleViewManager<WebView> {
|
999
|
1021
|
super(reactContext);
|
1000
|
1022
|
}
|
1001
|
1023
|
|
|
1024
|
+ public void setIgnoreErrFailedForThisURL(String url) {
|
|
1025
|
+ mRNCWebViewClient.setIgnoreErrFailedForThisURL(url);
|
|
1026
|
+ }
|
|
1027
|
+
|
1002
|
1028
|
public void setSendContentSizeChangeEvents(boolean sendContentSizeChangeEvents) {
|
1003
|
1029
|
this.sendContentSizeChangeEvents = sendContentSizeChangeEvents;
|
1004
|
1030
|
}
|