diff options
| author | Patrick Scott <phanna@android.com> | 2010-11-11 13:16:44 -0500 |
|---|---|---|
| committer | Patrick Scott <phanna@android.com> | 2010-11-15 09:19:38 -0500 |
| commit | c12544a201667383bc3dfb4bd3ad62d98cacd24f (patch) | |
| tree | 07cb73580be76718cc11bd98b48cb83a0ab3fbec /core/java/android/webkit/FrameLoader.java | |
| parent | 83d4a23c280bdcaf6c301651b76ddc6fbf08949c (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.java | 16 |
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( |
