1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 package org.chromium.android_webview;
7 import org.chromium.base.CalledByNative;
8 import org.chromium.base.JNINamespace;
10 import java.util.HashMap;
13 * Delegate for handling callbacks. All methods are called on the IO thread.
15 * You should create a separate instance for every WebContents that requires the
16 * provided functionality.
18 @JNINamespace("android_webview")
19 public abstract class AwContentsIoThreadClient {
21 public abstract int getCacheMode();
24 public abstract boolean shouldBlockContentUrls();
27 public abstract boolean shouldBlockFileUrls();
30 public abstract boolean shouldBlockNetworkLoads();
33 public abstract boolean shouldAcceptThirdPartyCookies();
36 public abstract void onDownloadStart(String url, String userAgent,
37 String contentDisposition, String mimeType, long contentLength);
40 public abstract void newLoginRequest(String realm, String account, String args);
42 public abstract AwWebResourceResponse shouldInterceptRequest(
43 AwContentsClient.ShouldInterceptRequestParams params);
45 // Protected methods ---------------------------------------------------------------------------
48 protected AwWebResourceResponse shouldInterceptRequest(String url, boolean isMainFrame,
49 boolean hasUserGesture, String method, String[] requestHeaderNames,
50 String[] requestHeaderValues) {
51 AwContentsClient.ShouldInterceptRequestParams params =
52 new AwContentsClient.ShouldInterceptRequestParams();
54 params.isMainFrame = isMainFrame;
55 params.hasUserGesture = hasUserGesture;
56 params.method = method;
57 params.requestHeaders = new HashMap<String, String>(requestHeaderNames.length);
58 for (int i = 0; i < requestHeaderNames.length; ++i) {
59 params.requestHeaders.put(requestHeaderNames[i], requestHeaderValues[i]);
61 return shouldInterceptRequest(params);