diff --git a/framework/src/org/apache/cordova/CordovaResourceApi.java b/framework/src/org/apache/cordova/CordovaResourceApi.java index ebf88016..cb857441 100644 --- a/framework/src/org/apache/cordova/CordovaResourceApi.java +++ b/framework/src/org/apache/cordova/CordovaResourceApi.java @@ -156,9 +156,24 @@ public class CordovaResourceApi { * @throws Throws an InvalidArgumentException for relative URIs. Relative URIs should be * resolved before being passed into this function. * @throws Throws an IOException if the URI cannot be opened. + * @throws Throws an IllegalStateException if called on a foreground thread. */ public OpenForReadResult openForRead(Uri uri) throws IOException { - assertBackgroundThread(); + return openForRead(uri, false); + } + + /** + * Opens a stream to the givne URI, also providing the MIME type & length. + * @return Never returns null. + * @throws Throws an InvalidArgumentException for relative URIs. Relative URIs should be + * resolved before being passed into this function. + * @throws Throws an IOException if the URI cannot be opened. + * @throws Throws an IllegalStateException if called on a foreground thread and skipThreadCheck is false. + */ + public OpenForReadResult openForRead(Uri uri, boolean skipThreadCheck) throws IOException { + if (!skipThreadCheck) { + assertBackgroundThread(); + } switch (getUriType(uri)) { case URI_TYPE_FILE: { FileInputStream inputStream = new FileInputStream(uri.getPath()); diff --git a/framework/src/org/apache/cordova/IceCreamCordovaWebViewClient.java b/framework/src/org/apache/cordova/IceCreamCordovaWebViewClient.java index 519a8ff2..f1fcbf0b 100644 --- a/framework/src/org/apache/cordova/IceCreamCordovaWebViewClient.java +++ b/framework/src/org/apache/cordova/IceCreamCordovaWebViewClient.java @@ -59,7 +59,7 @@ public class IceCreamCordovaWebViewClient extends CordovaWebViewClient { Uri remappedUri = resourceApi.remapUri(origUri); if (!origUri.equals(remappedUri) || needsSpecialsInAssetUrlFix(origUri)) { - OpenForReadResult result = resourceApi.openForRead(remappedUri); + OpenForReadResult result = resourceApi.openForRead(remappedUri, true); return new WebResourceResponse(result.mimeType, "UTF-8", result.inputStream); } // If we don't need to special-case the request, let the browser load it.