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

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

Issue 976393002: [Android WebView] Implement OnReceivedHttpError callback (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 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/AwContentsIoThreadClient.java
diff --git a/android_webview/java/src/org/chromium/android_webview/AwContentsIoThreadClient.java b/android_webview/java/src/org/chromium/android_webview/AwContentsIoThreadClient.java
index e431139e1558c0a9ff273a36d264bc74fc806451..854c7aa0098029296d18e7b9cdf3ef4c6f0527ac 100644
--- a/android_webview/java/src/org/chromium/android_webview/AwContentsIoThreadClient.java
+++ b/android_webview/java/src/org/chromium/android_webview/AwContentsIoThreadClient.java
@@ -8,6 +8,7 @@ import org.chromium.base.CalledByNative;
import org.chromium.base.JNINamespace;
import java.util.HashMap;
+import java.util.Map;
/**
* Delegate for handling callbacks. All methods are called on the IO thread.
@@ -42,6 +43,9 @@ public abstract class AwContentsIoThreadClient {
public abstract AwWebResourceResponse shouldInterceptRequest(
AwContentsClient.AwWebResourceRequest request);
+ public abstract void onHeadersReceived(AwContentsClient.AwWebResourceRequest request,
+ AwWebResourceResponse response);
+
// Protected methods ---------------------------------------------------------------------------
@CalledByNative
@@ -60,4 +64,42 @@ public abstract class AwContentsIoThreadClient {
}
return shouldInterceptRequest(request);
}
+
+ @CalledByNative
+ protected void onHeadersReceived(
+ // WebResourceRequest
+ String url, boolean isMainFrame, boolean hasUserGesture, String method,
+ String[] requestHeaderNames, String[] requestHeaderValues,
+ // WebResourceResponse
+ String mimeType, String encoding, int statusCode, String reasonPhrase,
+ String[] responseHeaderNames, String[] responseHeaderValues) {
+ AwContentsClient.AwWebResourceRequest request =
+ new AwContentsClient.AwWebResourceRequest();
+ request.url = url;
+ request.isMainFrame = isMainFrame;
+ request.hasUserGesture = hasUserGesture;
+ request.method = method;
+ request.requestHeaders = new HashMap<String, String>(requestHeaderNames.length);
+ for (int i = 0; i < requestHeaderNames.length; ++i) {
+ request.requestHeaders.put(requestHeaderNames[i], requestHeaderValues[i]);
+ }
+ Map<String, String> responseHeaders =
+ new HashMap<String, String>(responseHeaderNames.length);
+ // Note that we receive un-coalesced response header lines, thus we need to combine
+ // values for the same header.
+ for (int i = 0; i < responseHeaderNames.length; ++i) {
+ if (!responseHeaders.containsKey(responseHeaderNames[i])) {
+ responseHeaders.put(responseHeaderNames[i], responseHeaderValues[i]);
+ } else if (!responseHeaderValues[i].isEmpty()) {
+ String currentValue = responseHeaders.get(responseHeaderNames[i]);
+ if (!currentValue.isEmpty()) {
+ currentValue += ", ";
+ }
+ responseHeaders.put(responseHeaderNames[i], currentValue + responseHeaderValues[i]);
+ }
+ }
+ AwWebResourceResponse response = new AwWebResourceResponse(
+ mimeType, encoding, null, statusCode, reasonPhrase, responseHeaders);
+ onHeadersReceived(request, response);
+ }
}

Powered by Google App Engine
This is Rietveld 408576698