summaryrefslogtreecommitdiff
path: root/core/java/android/webkit/FrameLoader.java
diff options
context:
space:
mode:
authorPatrick Scott <phanna@android.com>2010-11-11 13:16:44 -0500
committerPatrick Scott <phanna@android.com>2010-11-15 09:19:38 -0500
commitc12544a201667383bc3dfb4bd3ad62d98cacd24f (patch)
tree07cb73580be76718cc11bd98b48cb83a0ab3fbec /core/java/android/webkit/FrameLoader.java
parent83d4a23c280bdcaf6c301651b76ddc6fbf08949c (diff)
Offer a callback to intercept url requests.
The new callback allows applications to return a response for a particular url. Deprecate onLoadResource in favor of the new api. onLoadResource is not currently being used by the new network stack and applications can post a message from shouldInterceptRequest to handle onLoadResource. Bug: 2905943 Change-Id: Icf48ab3110d85d76112b3c3b4a1a8c8a333b82f0
Diffstat (limited to 'core/java/android/webkit/FrameLoader.java')
-rw-r--r--core/java/android/webkit/FrameLoader.java16
1 files changed, 14 insertions, 2 deletions
diff --git a/core/java/android/webkit/FrameLoader.java b/core/java/android/webkit/FrameLoader.java
index 0f127d561013..951dab36785a 100644
--- a/core/java/android/webkit/FrameLoader.java
+++ b/core/java/android/webkit/FrameLoader.java
@@ -38,6 +38,7 @@ class FrameLoader {
private String mReferrer;
private String mContentType;
private final String mUaprofHeader;
+ private final WebResourceResponse mInterceptResponse;
private static final int URI_PROTOCOL = 0x100;
@@ -54,12 +55,13 @@ class FrameLoader {
private static final String LOGTAG = "webkit";
FrameLoader(LoadListener listener, WebSettings settings,
- String method) {
+ String method, WebResourceResponse interceptResponse) {
mListener = listener;
mHeaders = null;
mMethod = method;
mCacheMode = WebSettings.LOAD_NORMAL;
mSettings = settings;
+ mInterceptResponse = interceptResponse;
mUaprofHeader = mListener.getContext().getResources().getString(
com.android.internal.R.string.config_useragentprofile_url, Build.MODEL);
}
@@ -100,7 +102,17 @@ class FrameLoader {
public boolean executeLoad() {
String url = mListener.url();
- if (URLUtil.isNetworkUrl(url)){
+ // Process intercepted requests first as they could be any url.
+ if (mInterceptResponse != null) {
+ if (mListener.isSynchronous()) {
+ mInterceptResponse.loader(mListener).load();
+ } else {
+ WebViewWorker.getHandler().obtainMessage(
+ WebViewWorker.MSG_ADD_STREAMLOADER,
+ mInterceptResponse.loader(mListener)).sendToTarget();
+ }
+ return true;
+ } else if (URLUtil.isNetworkUrl(url)){
if (mSettings.getBlockNetworkLoads()) {
mListener.error(EventHandler.ERROR_BAD_URL,
mListener.getContext().getString(