Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2325)

Unified Diff: android_webview/java/src/org/chromium/android_webview/AwContentsClient.java

Issue 992593003: [Android WebView] Lay the groundwork for a better onReceivedError (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Comments addressed Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: android_webview/java/src/org/chromium/android_webview/AwContentsClient.java
diff --git a/android_webview/java/src/org/chromium/android_webview/AwContentsClient.java b/android_webview/java/src/org/chromium/android_webview/AwContentsClient.java
index a81b2ed48452b74ec0e6dcd16ee959e6c00b831f..2b5514bc844ca75921e66cae73cac21bd1b39cf1 100644
--- a/android_webview/java/src/org/chromium/android_webview/AwContentsClient.java
+++ b/android_webview/java/src/org/chromium/android_webview/AwContentsClient.java
@@ -92,6 +92,14 @@ public abstract class AwContentsClient {
public HashMap<String, String> requestHeaders;
}
+ /**
+ * Parameters for {@link AwContentsClient#onReceivedError} method.
+ */
+ public static class AwWebResourceError {
+ public int errorCode = ErrorCodeConversionHelper.ERROR_UNKNOWN;
+ public String description;
+ }
+
public abstract void getVisitedHistory(ValueCallback<String[]> callback);
public abstract void doUpdateVisitedHistory(String url, boolean isReload);
@@ -256,7 +264,33 @@ public abstract class AwContentsClient {
public abstract void onPageFinished(String url);
- public abstract void onReceivedError(int errorCode, String description, String failingUrl);
+ public final void onReceivedError(AwWebResourceRequest request, AwWebResourceError error) {
+ // Only one of these callbacks actually reaches out the client code. The first callback
+ // is used on API versions up to and including L, the second on subsequent releases.
+ // Below is the calls diagram:
+ //
+ // Old (<= L) glue Old (<= L) android.webkit API
+ // onReceivedError ---------> onReceivedError
+ // AwContentsClient onReceivedError2 ->X /
+ // abs. onReceivedError /
+ // abs. onReceivedError2 /
+ // New (M+) glue / New (M+) android.webkit API
+ // onReceivedError / -> onReceviedError <new>
+ // "->X" = "do nothing" if (!<M API>) --- / if (isMainFrame) -\
+ // else ->X / else ->X |
+ // onReceivedError2 / V
+ // if (<M API>) ------- onReceivedError <old>
+ // else ->X
+ if (request.isMainFrame) {
+ onReceivedError(error.errorCode, error.description, request.url);
+ }
+ onReceivedError2(request, error);
+ }
+
+ protected abstract void onReceivedError(int errorCode, String description, String failingUrl);
+
+ protected abstract void onReceivedError2(
+ AwWebResourceRequest request, AwWebResourceError error);
// TODO (michaelbai): Remove this method once the same method remove from
// WebViewContentsClientAdapter.

Powered by Google App Engine
This is Rietveld 408576698