From 021eb475906bf08d90d93e6a3434fe2439e42cf0 Mon Sep 17 00:00:00 2001 From: Kristian Monsen Date: Wed, 18 Aug 2010 09:51:37 +0100 Subject: 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 --- WebKit/android/jni/WebCoreFrameBridge.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'WebKit/android/jni/WebCoreFrameBridge.cpp') 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 WebFrame::startLoadingResource(WebCore::ResourceHandle* loader, const WebCore::ResourceRequest& request, -- cgit v1.1