summaryrefslogtreecommitdiffstats
path: root/WebKit/android/jni/WebCoreFrameBridge.cpp
diff options
context:
space:
mode:
authorKristian Monsen <kristianm@google.com>2010-08-18 09:51:37 +0100
committerKristian Monsen <kristianm@google.com>2010-08-24 16:49:31 +0100
commit021eb475906bf08d90d93e6a3434fe2439e42cf0 (patch)
treed74f708d6f033a80d8d47d741d47bce4db140234 /WebKit/android/jni/WebCoreFrameBridge.cpp
parentd860f17fbcf0206db479aca22945b713027fe0a3 (diff)
downloadexternal_webkit-021eb475906bf08d90d93e6a3434fe2439e42cf0.zip
external_webkit-021eb475906bf08d90d93e6a3434fe2439e42cf0.tar.gz
external_webkit-021eb475906bf08d90d93e6a3434fe2439e42cf0.tar.bz2
Special file uris have to be handled in Java.
This depends on: https://android-git.corp.google.com/g/#change,62112 Request an java.io.InputStream from java and queries this for that until all is read. Change-Id: Ia3e7ad973700bd49be9cae9b432661d61a5470b8
Diffstat (limited to 'WebKit/android/jni/WebCoreFrameBridge.cpp')
-rw-r--r--WebKit/android/jni/WebCoreFrameBridge.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/WebKit/android/jni/WebCoreFrameBridge.cpp b/WebKit/android/jni/WebCoreFrameBridge.cpp
index 52f1551..0e8a7a2 100644
--- a/WebKit/android/jni/WebCoreFrameBridge.cpp
+++ b/WebKit/android/jni/WebCoreFrameBridge.cpp
@@ -184,6 +184,7 @@ struct WebFrame::JavaBrowserFrame
{
jweak mObj;
jweak mHistoryList; // WebBackForwardList object
+ jmethodID mInputStreamForAndroidResource;
jmethodID mStartLoadingResource;
jmethodID mLoadStarted;
jmethodID mTransitionToCommitted;
@@ -225,6 +226,7 @@ WebFrame::WebFrame(JNIEnv* env, jobject obj, jobject historyList, WebCore::Page*
mJavaFrame = new JavaBrowserFrame;
mJavaFrame->mObj = env->NewWeakGlobalRef(obj);
mJavaFrame->mHistoryList = env->NewWeakGlobalRef(historyList);
+ mJavaFrame->mInputStreamForAndroidResource = env->GetMethodID(clazz, "inputStreamForAndroidResource", "(Ljava/lang/String;I)Ljava/io/InputStream;");
mJavaFrame->mStartLoadingResource = env->GetMethodID(clazz, "startLoadingResource",
"(ILjava/lang/String;Ljava/lang/String;Ljava/util/HashMap;[BJIZZZLjava/lang/String;Ljava/lang/String;)Landroid/webkit/LoadListener;");
mJavaFrame->mLoadStarted = env->GetMethodID(clazz, "loadStarted",
@@ -263,6 +265,7 @@ WebFrame::WebFrame(JNIEnv* env, jobject obj, jobject historyList, WebCore::Page*
mJavaFrame->mGetFileSize = env->GetMethodID(clazz, "getFileSize", "(Ljava/lang/String;)I");
mJavaFrame->mGetFile = env->GetMethodID(clazz, "getFile", "(Ljava/lang/String;[BII)I");
+ LOG_ASSERT(mJavaFrame->mInputStreamForAndroidResource, "Could not find method inputStreamForAndroidResource");
LOG_ASSERT(mJavaFrame->mStartLoadingResource, "Could not find method startLoadingResource");
LOG_ASSERT(mJavaFrame->mLoadStarted, "Could not find method loadStarted");
LOG_ASSERT(mJavaFrame->mTransitionToCommitted, "Could not find method transitionToCommitted");
@@ -363,6 +366,18 @@ private:
int m_size;
};
+int WebFrame::inputStreamForAndroidResource(const char* url, int type)
+{
+ JNIEnv* env = getJNIEnv();
+ AutoJObject obj = mJavaFrame->frame(env);
+ jstring jUrlStr = env->NewStringUTF(url);
+
+ jobject jInputStream = env->CallObjectMethod(obj.get(), mJavaFrame->mInputStreamForAndroidResource, jUrlStr, type);
+ env->DeleteLocalRef(jUrlStr);
+
+ return (int)jInputStream;
+}
+
PassRefPtr<WebCore::ResourceLoaderAndroid>
WebFrame::startLoadingResource(WebCore::ResourceHandle* loader,
const WebCore::ResourceRequest& request,