diff options
| -rw-r--r-- | core/java/android/webkit/ContentLoader.java | 13 | ||||
| -rw-r--r-- | core/java/android/webkit/DataLoader.java | 20 | ||||
| -rw-r--r-- | core/java/android/webkit/FileLoader.java | 14 | ||||
| -rw-r--r-- | core/java/android/webkit/FrameLoader.java | 15 | ||||
| -rw-r--r-- | core/java/android/webkit/StreamLoader.java | 5 |
5 files changed, 36 insertions, 31 deletions
diff --git a/core/java/android/webkit/ContentLoader.java b/core/java/android/webkit/ContentLoader.java index 19aa087c49e6..5eb54b0368a6 100644 --- a/core/java/android/webkit/ContentLoader.java +++ b/core/java/android/webkit/ContentLoader.java @@ -31,7 +31,6 @@ import java.io.FileInputStream; class ContentLoader extends StreamLoader { private String mUrl; - private Context mContext; private String mContentType; /** @@ -40,11 +39,9 @@ class ContentLoader extends StreamLoader { * @param rawUrl "content:" url pointing to content to be loaded. This url * is the same url passed in to the WebView. * @param loadListener LoadListener to pass the content to - * @param context Context to use to access the asset. */ - ContentLoader(String rawUrl, LoadListener loadListener, Context context) { + ContentLoader(String rawUrl, LoadListener loadListener) { super(loadListener); - mContext = context; /* strip off mimetype */ int mimeIndex = rawUrl.lastIndexOf('?'); @@ -81,7 +78,7 @@ class ContentLoader extends StreamLoader { try { mDataStream = mContext.getContentResolver().openInputStream(uri); - mHandler.status(1, 1, 0, "OK"); + mHandler.status(1, 1, 200, "OK"); } catch (java.io.FileNotFoundException ex) { mHandler.error(EventHandler.FILE_NOT_FOUND_ERROR, errString(ex)); return false; @@ -112,11 +109,9 @@ class ContentLoader extends StreamLoader { * * @param url "content:" url pointing to content to be loaded * @param loadListener LoadListener to pass the content to - * @param context Context to use to access the asset. */ - public static void requestUrl(String url, LoadListener loadListener, - Context context) { - ContentLoader loader = new ContentLoader(url, loadListener, context); + public static void requestUrl(String url, LoadListener loadListener) { + ContentLoader loader = new ContentLoader(url, loadListener); loader.load(); } diff --git a/core/java/android/webkit/DataLoader.java b/core/java/android/webkit/DataLoader.java index 6c5d10dc7049..2a68a5d85fc5 100644 --- a/core/java/android/webkit/DataLoader.java +++ b/core/java/android/webkit/DataLoader.java @@ -16,6 +16,10 @@ package android.webkit; +import android.net.http.EventHandler; + +import com.android.internal.R; + import java.io.ByteArrayInputStream; import org.apache.harmony.luni.util.Base64; @@ -49,14 +53,22 @@ class DataLoader extends StreamLoader { } else { data = url.getBytes(); } - mDataStream = new ByteArrayInputStream(data); - mContentLength = data.length; + if (data != null) { + mDataStream = new ByteArrayInputStream(data); + mContentLength = data.length; + } } @Override protected boolean setupStreamAndSendStatus() { - mHandler.status(1, 1, 0, "OK"); - return true; + if (mDataStream != null) { + mHandler.status(1, 1, 200, "OK"); + return true; + } else { + mHandler.error(EventHandler.ERROR, + mContext.getString(R.string.httpError)); + return false; + } } @Override diff --git a/core/java/android/webkit/FileLoader.java b/core/java/android/webkit/FileLoader.java index 974ccbf4ac59..e856cdea372c 100644 --- a/core/java/android/webkit/FileLoader.java +++ b/core/java/android/webkit/FileLoader.java @@ -38,7 +38,6 @@ import java.lang.reflect.Field; class FileLoader extends StreamLoader { private String mPath; // Full path to the file to load - private Context mContext; // Application context, used for asset/res loads private int mType; // Indicates the type of the load private boolean mAllowFileAccess; // Allow/block file system access @@ -57,16 +56,14 @@ class FileLoader extends StreamLoader { * * @param url Full file url pointing to content to be loaded * @param loadListener LoadListener to pass the content to - * @param context Context to use to access the asset. * @param asset true if url points to an asset. * @param allowFileAccess true if this WebView is allowed to access files * on the file system. */ - FileLoader(String url, LoadListener loadListener, Context context, - int type, boolean allowFileAccess) { + FileLoader(String url, LoadListener loadListener, int type, + boolean allowFileAccess) { super(loadListener); mType = type; - mContext = context; mAllowFileAccess = allowFileAccess; // clean the Url @@ -174,7 +171,7 @@ class FileLoader extends StreamLoader { mDataStream = new FileInputStream(mPath); mContentLength = (new File(mPath)).length(); } - mHandler.status(1, 1, 0, "OK"); + mHandler.status(1, 1, 200, "OK"); } catch (java.io.FileNotFoundException ex) { mHandler.error(EventHandler.FILE_NOT_FOUND_ERROR, errString(ex)); @@ -198,14 +195,13 @@ class FileLoader extends StreamLoader { * * @param url Full file url pointing to content to be loaded * @param loadListener LoadListener to pass the content to - * @param context Context to use to access the asset. * @param asset true if url points to an asset. * @param allowFileAccess true if this FileLoader can load files from the * file system. */ public static void requestUrl(String url, LoadListener loadListener, - Context context, int type, boolean allowFileAccess) { - FileLoader loader = new FileLoader(url, loadListener, context, type, + int type, boolean allowFileAccess) { + FileLoader loader = new FileLoader(url, loadListener, type, allowFileAccess); loader.load(); } diff --git a/core/java/android/webkit/FrameLoader.java b/core/java/android/webkit/FrameLoader.java index 51f60c39a9b5..58eca38edae2 100644 --- a/core/java/android/webkit/FrameLoader.java +++ b/core/java/android/webkit/FrameLoader.java @@ -141,22 +141,21 @@ class FrameLoader { return true; } if (URLUtil.isAssetUrl(url)) { - FileLoader.requestUrl(url, loadListener, loadListener.getContext(), - FileLoader.TYPE_ASSET, true); + FileLoader.requestUrl(url, loadListener, FileLoader.TYPE_ASSET, + true); return true; } else if (URLUtil.isResourceUrl(url)) { - FileLoader.requestUrl(url, loadListener, loadListener.getContext(), - FileLoader.TYPE_RES, true); + FileLoader.requestUrl(url, loadListener, FileLoader.TYPE_RES, + true); return true; } else if (URLUtil.isFileUrl(url)) { - FileLoader.requestUrl(url, loadListener, loadListener.getContext(), - FileLoader.TYPE_FILE, settings.getAllowFileAccess()); + FileLoader.requestUrl(url, loadListener, FileLoader.TYPE_FILE, + settings.getAllowFileAccess()); return true; } else if (URLUtil.isContentUrl(url)) { // Send the raw url to the ContentLoader because it will do a // permission check and the url has to match.. - ContentLoader.requestUrl(loadListener.url(), loadListener, - loadListener.getContext()); + ContentLoader.requestUrl(loadListener.url(), loadListener); return true; } else if (URLUtil.isDataUrl(url)) { DataLoader.requestUrl(url, loadListener); diff --git a/core/java/android/webkit/StreamLoader.java b/core/java/android/webkit/StreamLoader.java index 623ff2958714..ce26268c72a1 100644 --- a/core/java/android/webkit/StreamLoader.java +++ b/core/java/android/webkit/StreamLoader.java @@ -16,6 +16,7 @@ package android.webkit; +import android.content.Context; import android.net.http.EventHandler; import android.net.http.Headers; import android.os.Handler; @@ -52,7 +53,8 @@ abstract class StreamLoader extends Handler { private static final int MSG_DATA = 102; // Send data to loader private static final int MSG_END = 103; // Send endData to loader - protected LoadListener mHandler; // loader class + protected final Context mContext; + protected final LoadListener mHandler; // loader class protected InputStream mDataStream; // stream to read data from protected long mContentLength; // content length of data private byte [] mData; // buffer to pass data to loader with. @@ -66,6 +68,7 @@ abstract class StreamLoader extends Handler { */ StreamLoader(LoadListener loadlistener) { mHandler = loadlistener; + mContext = loadlistener.getContext(); } /** |