diff options
Diffstat (limited to 'WebKit')
| -rw-r--r-- | WebKit/android/WebCoreSupport/MediaPlayerPrivateAndroid.cpp | 8 | ||||
| -rwxr-xr-x | WebKit/android/jni/GeolocationPermissionsBridge.cpp | 2 | ||||
| -rw-r--r-- | WebKit/android/jni/JavaBridge.cpp | 13 | ||||
| -rw-r--r-- | WebKit/android/jni/MIMETypeRegistry.cpp | 5 | ||||
| -rw-r--r-- | WebKit/android/jni/WebCoreFrameBridge.cpp | 66 | ||||
| -rw-r--r-- | WebKit/android/jni/WebCoreJni.cpp | 7 | ||||
| -rw-r--r-- | WebKit/android/jni/WebCoreJni.h | 8 | ||||
| -rw-r--r-- | WebKit/android/jni/WebCoreResourceLoader.cpp | 5 | ||||
| -rw-r--r-- | WebKit/android/jni/WebHistory.cpp | 11 | ||||
| -rw-r--r-- | WebKit/android/jni/WebStorage.cpp | 2 | ||||
| -rw-r--r-- | WebKit/android/jni/WebViewCore.cpp | 68 | ||||
| -rw-r--r-- | WebKit/android/nav/WebView.cpp | 30 |
12 files changed, 94 insertions, 131 deletions
diff --git a/WebKit/android/WebCoreSupport/MediaPlayerPrivateAndroid.cpp b/WebKit/android/WebCoreSupport/MediaPlayerPrivateAndroid.cpp index 9711d26..c05a417 100644 --- a/WebKit/android/WebCoreSupport/MediaPlayerPrivateAndroid.cpp +++ b/WebKit/android/WebCoreSupport/MediaPlayerPrivateAndroid.cpp @@ -178,7 +178,7 @@ public: return; m_paused = false; - jstring jUrl = env->NewString((unsigned short *)m_url.characters(), m_url.length()); + jstring jUrl = WtfStringToJstring(env, m_url); env->CallVoidMethod(m_glue->m_javaProxy, m_glue->m_play, jUrl); env->DeleteLocalRef(jUrl); @@ -191,7 +191,7 @@ public: if (!env || !m_glue->m_javaProxy || !m_posterUrl.length()) return; // Send the poster - jstring jUrl = env->NewString((unsigned short *)m_posterUrl.characters(), m_posterUrl.length()); + jstring jUrl = WtfStringToJstring(env, m_posterUrl); env->CallVoidMethod(m_glue->m_javaProxy, m_glue->m_loadPoster, jUrl); env->DeleteLocalRef(jUrl); } @@ -297,7 +297,7 @@ public: // Send the poster jstring jUrl = 0; if (m_posterUrl.length()) - jUrl = env->NewString((unsigned short *)m_posterUrl.characters(), m_posterUrl.length()); + jUrl = WtfStringToJstring(env, m_posterUrl); // Sending a NULL jUrl allows the Java side to try to load the default poster. env->CallVoidMethod(m_glue->m_javaProxy, m_glue->m_loadPoster, jUrl); if (jUrl) @@ -324,7 +324,7 @@ public: if (!m_glue->m_javaProxy) return; - jstring jUrl = env->NewString((unsigned short *)m_url.characters(), m_url.length()); + jstring jUrl = WtfStringToJstring(env, m_url); // start loading the data asynchronously env->CallVoidMethod(m_glue->m_javaProxy, m_glue->m_setDataSource, jUrl); env->DeleteLocalRef(jUrl); diff --git a/WebKit/android/jni/GeolocationPermissionsBridge.cpp b/WebKit/android/jni/GeolocationPermissionsBridge.cpp index 17628ab..e4275bf 100755 --- a/WebKit/android/jni/GeolocationPermissionsBridge.cpp +++ b/WebKit/android/jni/GeolocationPermissionsBridge.cpp @@ -51,7 +51,7 @@ static jobject getOrigins(JNIEnv* env, jobject obj) GeolocationPermissions::OriginSet::const_iterator end = origins.end(); for (GeolocationPermissions::OriginSet::const_iterator iter = origins.begin(); iter != end; ++iter) { - jstring originString = env->NewString(iter->characters(), iter->length()); + jstring originString = WtfStringToJstring(env, *iter); env->CallBooleanMethod(set, addMethod, originString); env->DeleteLocalRef(originString); } diff --git a/WebKit/android/jni/JavaBridge.cpp b/WebKit/android/jni/JavaBridge.cpp index 49fb1b1..cb8a8af 100644 --- a/WebKit/android/jni/JavaBridge.cpp +++ b/WebKit/android/jni/JavaBridge.cpp @@ -198,8 +198,8 @@ JavaBridge::setCookies(WebCore::KURL const& url, WTF::String const& value) { JNIEnv* env = JSC::Bindings::getJNIEnv(); const WTF::String& urlStr = url.string(); - jstring jUrlStr = env->NewString(urlStr.characters(), urlStr.length()); - jstring jValueStr = env->NewString(value.characters(), value.length()); + jstring jUrlStr = WtfStringToJstring(env, urlStr); + jstring jValueStr = WtfStringToJstring(env, value); AutoJObject obj = getRealObject(env, mJavaObject); env->CallVoidMethod(obj.get(), mSetCookies, jUrlStr, jValueStr); @@ -212,7 +212,7 @@ JavaBridge::cookies(WebCore::KURL const& url) { JNIEnv* env = JSC::Bindings::getJNIEnv(); const WTF::String& urlStr = url.string(); - jstring jUrlStr = env->NewString(urlStr.characters(), urlStr.length()); + jstring jUrlStr = WtfStringToJstring(env, urlStr); AutoJObject obj = getRealObject(env, mJavaObject); jstring string = (jstring)(env->CallObjectMethod(obj.get(), mCookies, jUrlStr)); @@ -301,10 +301,9 @@ WTF::Vector<WTF::String>JavaBridge::getSupportedKeyStrengthList() { WTF::String JavaBridge::getSignedPublicKeyAndChallengeString(unsigned index, const WTF::String& challenge, const WebCore::KURL& url) { JNIEnv* env = JSC::Bindings::getJNIEnv(); - jstring jChallenge = env->NewString(challenge.characters(), - challenge.length()); + jstring jChallenge = WtfStringToJstring(env, challenge); const WTF::String& urlStr = url.string(); - jstring jUrl = env->NewString(urlStr.characters(), urlStr.length()); + jstring jUrl = WtfStringToJstring(env, urlStr); AutoJObject obj = getRealObject(env, mJavaObject); jstring key = (jstring) env->CallObjectMethod(obj.get(), mGetSignedPublicKey, index, jChallenge, jUrl); @@ -317,7 +316,7 @@ WTF::String JavaBridge::getSignedPublicKeyAndChallengeString(unsigned index, WTF::String JavaBridge::resolveFilePathForContentUri(const WTF::String& uri) { JNIEnv* env = JSC::Bindings::getJNIEnv(); - jstring jUri = env->NewString(uri.characters(), uri.length()); + jstring jUri = WtfStringToJstring(env, uri); AutoJObject obj = getRealObject(env, mJavaObject); jstring path = static_cast<jstring>(env->CallObjectMethod(obj.get(), mResolveFilePathForContentUri, jUri)); WTF::String ret = jstringToWtfString(env, path); diff --git a/WebKit/android/jni/MIMETypeRegistry.cpp b/WebKit/android/jni/MIMETypeRegistry.cpp index f885d57..85da12a 100644 --- a/WebKit/android/jni/MIMETypeRegistry.cpp +++ b/WebKit/android/jni/MIMETypeRegistry.cpp @@ -35,6 +35,8 @@ #include <jni.h> #include <utils/Log.h> +using namespace android; + namespace WebCore { String MIMETypeRegistry::getMIMETypeForExtension(const String& ext) @@ -47,8 +49,7 @@ String MIMETypeRegistry::getMIMETypeForExtension(const String& ext) "(Ljava/lang/String;)Ljava/lang/String;"); LOG_ASSERT(mimeTypeFromExtension, "Could not find method mimeTypeFromExtension"); - jstring extString = - env->NewString((const jchar*) ext.characters(), ext.length()); + jstring extString = WtfStringToJstring(env, ext); jobject mimeType = env->CallStaticObjectMethod(mimeClass, mimeTypeFromExtension, extString); String result = android::jstringToWtfString(env, (jstring) mimeType); diff --git a/WebKit/android/jni/WebCoreFrameBridge.cpp b/WebKit/android/jni/WebCoreFrameBridge.cpp index bc20c47..9cd5c79 100644 --- a/WebKit/android/jni/WebCoreFrameBridge.cpp +++ b/WebKit/android/jni/WebCoreFrameBridge.cpp @@ -341,8 +341,8 @@ static jobject createJavaMapFromHTTPHeaders(JNIEnv* env, const WebCore::HTTPHead for (WebCore::HTTPHeaderMap::const_iterator i = map.begin(); i != end; ++i) { if (i->first.length() == 0 || i->second.length() == 0) continue; - jstring key = env->NewString(i->first.characters(), i->first.length()); - jstring val = env->NewString(i->second.characters(), i->second.length()); + jstring key = WtfStringToJstring(env, i->first); + jstring val = WtfStringToJstring(env, i->second); if (key && val) { env->CallObjectMethod(hashMap, put, key, val); } @@ -363,7 +363,7 @@ static jobject createJavaMapFromHTTPHeaders(JNIEnv* env, const WebCore::HTTPHead class FileInfo { public: FileInfo(JNIEnv* env, const WTF::String& name) { - m_uri = env->NewString(name.characters(), name.length()); + m_uri = WtfStringToJstring(env, name); checkException(env); m_size = 0; m_env = env; @@ -424,10 +424,10 @@ WebFrame::startLoadingResource(WebCore::ResourceHandle* loader, } } LOGV("%s lower=%s", __FUNCTION__, urlStr.latin1().data()); - jstring jUrlStr = env->NewString(urlStr.characters(), urlStr.length()); + jstring jUrlStr = WtfStringToJstring(env, urlStr); jstring jMethodStr = NULL; if (!method.isEmpty()) - jMethodStr = env->NewString(method.characters(), method.length()); + jMethodStr = WtfStringToJstring(env, method); jbyteArray jPostDataStr = NULL; WebCore::FormData* formdata = request.httpBody(); AutoJObject obj = mJavaFrame->frame(env); @@ -512,9 +512,9 @@ WebFrame::startLoadingResource(WebCore::ResourceHandle* loader, ResourceHandleInternal* loaderInternal = loader->getInternal(); jstring jUsernameString = loaderInternal->m_user.isEmpty() ? - NULL : env->NewString(loaderInternal->m_user.characters(), loaderInternal->m_user.length()); + NULL : WtfStringToJstring(env, loaderInternal->m_user); jstring jPasswordString = loaderInternal->m_pass.isEmpty() ? - NULL : env->NewString(loaderInternal->m_pass.characters(), loaderInternal->m_pass.length()); + NULL : WtfStringToJstring(env, loaderInternal->m_pass); bool isUserGesture = UserGestureIndicator::processingUserGesture(); jobject jLoadListener = @@ -550,8 +550,8 @@ WebFrame::reportError(int errorCode, const WTF::String& description, LOGV("::WebCore:: reportError(%d, %s)", errorCode, description.ascii().data()); JNIEnv* env = getJNIEnv(); - jstring descStr = env->NewString(description.characters(), description.length()); - jstring failUrl = env->NewString(failingUrl.characters(), failingUrl.length()); + jstring descStr = WtfStringToJstring(env, description); + jstring failUrl = WtfStringToJstring(env, failingUrl); env->CallVoidMethod(mJavaFrame->frame(env).get(), mJavaFrame->mReportError, errorCode, descStr, failUrl); env->DeleteLocalRef(descStr); @@ -594,7 +594,7 @@ WebFrame::loadStarted(WebCore::Frame* frame) favicon = webcoreImageToJavaBitmap(env, icon); LOGV("favicons", "Starting load with icon %p for %s", icon, url.string().utf8().data()); } - jstring urlStr = env->NewString(urlString.characters(), urlString.length()); + jstring urlStr = WtfStringToJstring(env, urlString); env->CallVoidMethod(mJavaFrame->frame(env).get(), mJavaFrame->mLoadStarted, urlStr, favicon, (int)loadType, isMainFrame); @@ -650,7 +650,7 @@ WebFrame::didFinishLoad(WebCore::Frame* frame) bool isMainFrame = (!frame->tree() || !frame->tree()->parent()); WebCore::FrameLoadType loadType = loader->loadType(); WTF::String urlString(url.string()); - jstring urlStr = env->NewString(urlString.characters(), urlString.length()); + jstring urlStr = WtfStringToJstring(env, urlString); env->CallVoidMethod(mJavaFrame->frame(env).get(), mJavaFrame->mLoadFinished, urlStr, (int)loadType, isMainFrame); checkException(env); @@ -707,10 +707,9 @@ WebFrame::setTitle(const WTF::String& title) LOGV("setTitle(%s)", title.ascii().data()); #endif JNIEnv* env = getJNIEnv(); - jstring jTitleStr = env->NewString(title.characters(), title.length()); + jstring jTitleStr = WtfStringToJstring(env, title); - env->CallVoidMethod(mJavaFrame->frame(env).get(), mJavaFrame->mSetTitle, - jTitleStr); + env->CallVoidMethod(mJavaFrame->frame(env).get(), mJavaFrame->mSetTitle, jTitleStr); checkException(env); env->DeleteLocalRef(jTitleStr); } @@ -770,7 +769,7 @@ WebFrame::didReceiveTouchIconURL(const WTF::String& url, bool precomposed) TimeCounterAuto counter(TimeCounter::JavaCallbackTimeCounter); #endif JNIEnv* env = getJNIEnv(); - jstring jUrlStr = env->NewString(url.characters(), url.length()); + jstring jUrlStr = WtfStringToJstring(env, url); env->CallVoidMethod(mJavaFrame->frame(env).get(), mJavaFrame->mDidReceiveTouchIconUrl, jUrlStr, precomposed); @@ -786,7 +785,7 @@ WebFrame::updateVisitedHistory(const WebCore::KURL& url, bool reload) #endif WTF::String urlStr(url.string()); JNIEnv* env = getJNIEnv(); - jstring jUrlStr = env->NewString(urlStr.characters(), urlStr.length()); + jstring jUrlStr = WtfStringToJstring(env, urlStr); env->CallVoidMethod(mJavaFrame->frame(env).get(), mJavaFrame->mUpdateVisitedHistory, jUrlStr, reload); env->DeleteLocalRef(jUrlStr); @@ -814,7 +813,7 @@ WebFrame::canHandleRequest(const WebCore::ResourceRequest& request) if (url.isEmpty()) return true; JNIEnv* env = getJNIEnv(); - jstring jUrlStr = env->NewString(url.characters(), url.length()); + jstring jUrlStr = WtfStringToJstring(env, url); // check to see whether browser app wants to hijack url loading. // if browser app handles the url, we will return false to bail out WebCore loading @@ -1280,9 +1279,8 @@ static jstring SaveWebArchive(JNIEnv *env, jobject obj, jstring basename, jboole releaseCharactersForJStringInEnv(env, basename, basenameNative); xmlFreeTextWriter(writer); - if (result) { - return env->NewString(filename.characters(), filename.length()); - } + if (result) + return WtfStringToJstring(env, filename); return NULL; #endif @@ -1298,10 +1296,7 @@ static jstring ExternalRepresentation(JNIEnv *env, jobject obj) // Request external representation of the render tree WTF::String renderDump = WebCore::externalRepresentation(pFrame); - unsigned len = renderDump.length(); - if (!len) - return NULL; - return env->NewString(renderDump.characters(), len); + return WtfStringToJstring(env, renderDump); } static StringBuilder FrameAsText(WebCore::Frame *pFrame, jboolean dumpChildFrames) { @@ -1335,10 +1330,7 @@ static jstring DocumentAsText(JNIEnv *env, jobject obj) LOG_ASSERT(pFrame, "android_webcore_nativeDocumentAsText must take a valid frame pointer!"); WTF::String renderDump = FrameAsText(pFrame, false /* dumpChildFrames */).toString(); - unsigned len = renderDump.length(); - if (!len) - return NULL; - return env->NewString(renderDump.characters(), len); + return WtfStringToJstring(env, renderDump); } static jstring ChildFramesAsText(JNIEnv *env, jobject obj) @@ -1354,10 +1346,7 @@ static jstring ChildFramesAsText(JNIEnv *env, jobject obj) renderDumpBuilder.append(FrameAsText(pFrame->tree()->child(i), true /* dumpChildFrames */).toString()); } WTF::String renderDump = renderDumpBuilder.toString(); - unsigned len = renderDump.length(); - if (!len) - return NULL; - return env->NewString(renderDump.characters(), len); + return WtfStringToJstring(env, renderDump); } static void Reload(JNIEnv *env, jobject obj, jboolean allowStale) @@ -1410,10 +1399,7 @@ static jobject StringByEvaluatingJavaScriptFromString(JNIEnv *env, jobject obj, ScriptState* scriptState = mainWorldScriptState(pFrame); if (!value.getString(scriptState, result)) return NULL; - unsigned len = result.length(); - if (len == 0) - return NULL; - return env->NewString(result.characters(), len); + return WtfStringToJstring(env, result); } // Wrap the JavaInstance used when binding custom javascript interfaces. Use a @@ -1710,8 +1696,8 @@ static jobjectArray GetUsernamePassword(JNIEnv *env, jobject obj) jclass stringClass = env->FindClass("java/lang/String"); strArray = env->NewObjectArray(2, stringClass, NULL); env->DeleteLocalRef(stringClass); - env->SetObjectArrayElement(strArray, 0, env->NewString(username.characters(), username.length())); - env->SetObjectArrayElement(strArray, 1, env->NewString(password.characters(), password.length())); + env->SetObjectArrayElement(strArray, 0, WtfStringToJstring(env, username)); + env->SetObjectArrayElement(strArray, 1, WtfStringToJstring(env, password)); } return strArray; } @@ -1797,8 +1783,8 @@ static jobject GetFormTextData(JNIEnv *env, jobject obj) int len = value.length(); if (len) { const WTF::AtomicString& name = input->name(); - jstring key = env->NewString(name.characters(), name.length()); - jstring val = env->NewString(value.characters(), len); + jstring key = WtfStringToJstring(env, name); + jstring val = WtfStringToJstring(env, value); LOG_ASSERT(key && val, "name or value not set"); env->CallObjectMethod(hashMap, put, key, val); env->DeleteLocalRef(key); diff --git a/WebKit/android/jni/WebCoreJni.cpp b/WebKit/android/jni/WebCoreJni.cpp index 1b9619b..0ead46b 100644 --- a/WebKit/android/jni/WebCoreJni.cpp +++ b/WebKit/android/jni/WebCoreJni.cpp @@ -71,6 +71,13 @@ WTF::String jstringToWtfString(JNIEnv* env, jstring str) return ret; } +jstring WtfStringToJstring(JNIEnv* env, const WTF::String& str) +{ + int length = str.length(); + return length ? env->NewString(str.characters(), length) : 0; +} + + #if USE(CHROME_NETWORK_STACK) string16 jstringToString16(JNIEnv* env, jstring jstr) { diff --git a/WebKit/android/jni/WebCoreJni.h b/WebKit/android/jni/WebCoreJni.h index d4a9821..26da3d5 100644 --- a/WebKit/android/jni/WebCoreJni.h +++ b/WebKit/android/jni/WebCoreJni.h @@ -71,13 +71,15 @@ AutoJObject getRealObject(JNIEnv*, jobject); bool checkException(JNIEnv* env); // Create a WTF::String object from a jstring object. -WTF::String jstringToWtfString(JNIEnv* env, jstring str); +WTF::String jstringToWtfString(JNIEnv*, jstring); +// Returns a local reference to a new jstring. +jstring WtfStringToJstring(JNIEnv*, const WTF::String&); #if USE(CHROME_NETWORK_STACK) -string16 jstringToString16(JNIEnv* env, jstring jstr); +string16 jstringToString16(JNIEnv*, jstring); #endif -std::string jstringToStdString(JNIEnv* env, jstring jstr); +std::string jstringToStdString(JNIEnv*, jstring); } diff --git a/WebKit/android/jni/WebCoreResourceLoader.cpp b/WebKit/android/jni/WebCoreResourceLoader.cpp index 301ccde..0c7bad9 100644 --- a/WebKit/android/jni/WebCoreResourceLoader.cpp +++ b/WebKit/android/jni/WebCoreResourceLoader.cpp @@ -120,7 +120,7 @@ bool WebCoreResourceLoader::willLoadFromCache(const WebCore::KURL& url, int64_t { JNIEnv* env = JSC::Bindings::getJNIEnv(); WTF::String urlStr = url.string(); - jstring jUrlStr = env->NewString(urlStr.characters(), urlStr.length()); + jstring jUrlStr = WtfStringToJstring(env, urlStr); jclass resourceLoader = env->FindClass("android/webkit/LoadListener"); bool val = env->CallStaticBooleanMethod(resourceLoader, gResourceLoader.mWillLoadFromCacheMethodID, jUrlStr, identifier); checkException(env); @@ -272,8 +272,7 @@ jstring WebCoreResourceLoader::RedirectedToUrl(JNIEnv* env, jobject obj, } handle->client()->willSendRequest(handle, r, *response); delete response; - WTF::String s = url.string(); - return env->NewString((unsigned short*)s.characters(), s.length()); + return WtfStringToJstring(env, url.string()); } void WebCoreResourceLoader::Error(JNIEnv* env, jobject obj, jint id, jstring description, diff --git a/WebKit/android/jni/WebHistory.cpp b/WebKit/android/jni/WebHistory.cpp index deff687..c060e4c 100644 --- a/WebKit/android/jni/WebHistory.cpp +++ b/WebKit/android/jni/WebHistory.cpp @@ -271,18 +271,15 @@ void WebHistoryItem::updateHistoryItem(WebCore::HistoryItem* item) { const WTF::String& urlString = item->urlString(); jstring urlStr = NULL; if (!urlString.isNull()) - urlStr = env->NewString((unsigned short*)urlString.characters(), urlString.length()); + urlStr = WtfStringToJstring(env, urlString); const WTF::String& originalUrlString = item->originalURLString(); jstring originalUrlStr = NULL; - if (!originalUrlString.isNull()) { - originalUrlStr = env->NewString( - (unsigned short*) originalUrlString.characters(), - originalUrlString.length()); - } + if (!originalUrlString.isNull()) + originalUrlStr = WtfStringToJstring(env, originalUrlString); const WTF::String& titleString = item->title(); jstring titleStr = NULL; if (!titleString.isNull()) - titleStr = env->NewString((unsigned short*)titleString.characters(), titleString.length()); + titleStr = WtfStringToJstring(env, titleString); // Try to get the favicon from the history item. For some pages like Grand // Prix, there are history items with anchors. If the icon fails for the diff --git a/WebKit/android/jni/WebStorage.cpp b/WebKit/android/jni/WebStorage.cpp index 23220f4..b31b212 100644 --- a/WebKit/android/jni/WebStorage.cpp +++ b/WebKit/android/jni/WebStorage.cpp @@ -63,7 +63,7 @@ static jobject GetOrigins(JNIEnv* env, jobject obj) for (unsigned i = 0; i < coreOrigins.size(); ++i) { WebCore::SecurityOrigin* origin = coreOrigins[i].get(); WTF::String url = origin->toString(); - jstring jUrl = env->NewString(url.characters(), url.length()); + jstring jUrl = WtfStringToJstring(env, url); env->CallBooleanMethod(set, mid, jUrl); env->DeleteLocalRef(jUrl); } diff --git a/WebKit/android/jni/WebViewCore.cpp b/WebKit/android/jni/WebViewCore.cpp index 9edc1e2..aa7b79c 100644 --- a/WebKit/android/jni/WebViewCore.cpp +++ b/WebKit/android/jni/WebViewCore.cpp @@ -209,7 +209,7 @@ struct WebViewCoreStaticMethods { // Check whether a media mimeType is supported in Android media framework. bool WebViewCore::isSupportedMediaMimeType(const WTF::String& mimeType) { JNIEnv* env = JSC::Bindings::getJNIEnv(); - jstring jMimeType = env->NewString(mimeType.characters(), mimeType.length()); + jstring jMimeType = WtfStringToJstring(env, mimeType); jclass webViewCore = env->FindClass("android/webkit/WebViewCore"); bool val = env->CallStaticBooleanMethod(webViewCore, gWebViewCoreStaticMethods.m_isSupportedMediaMimeType, jMimeType); @@ -2517,7 +2517,7 @@ void WebViewCore::openFileChooser(PassRefPtr<WebCore::FileChooser> chooser) { JNIEnv* env = JSC::Bindings::getJNIEnv(); WTF::String acceptType = chooser->acceptTypes(); - jstring jAcceptType = env->NewString(const_cast<unsigned short*>(acceptType.characters()), acceptType.length()); + jstring jAcceptType = WtfStringToJstring(env, acceptType); jstring jName = (jstring) env->CallObjectMethod( m_javaGlue->object(env).get(), m_javaGlue->m_openFileChooser, jAcceptType); checkException(env); @@ -2940,8 +2940,8 @@ void WebViewCore::formDidBlur(const WebCore::Node* node) void WebViewCore::addMessageToConsole(const WTF::String& message, unsigned int lineNumber, const WTF::String& sourceID, int msgLevel) { JNIEnv* env = JSC::Bindings::getJNIEnv(); - jstring jMessageStr = env->NewString((unsigned short *)message.characters(), message.length()); - jstring jSourceIDStr = env->NewString((unsigned short *)sourceID.characters(), sourceID.length()); + jstring jMessageStr = WtfStringToJstring(env, message); + jstring jSourceIDStr = WtfStringToJstring(env, sourceID); env->CallVoidMethod(m_javaGlue->object(env).get(), m_javaGlue->m_addMessageToConsole, jMessageStr, lineNumber, jSourceIDStr, msgLevel); @@ -2953,8 +2953,8 @@ void WebViewCore::addMessageToConsole(const WTF::String& message, unsigned int l void WebViewCore::jsAlert(const WTF::String& url, const WTF::String& text) { JNIEnv* env = JSC::Bindings::getJNIEnv(); - jstring jInputStr = env->NewString((unsigned short *)text.characters(), text.length()); - jstring jUrlStr = env->NewString((unsigned short *)url.characters(), url.length()); + jstring jInputStr = WtfStringToJstring(env, text); + jstring jUrlStr = WtfStringToJstring(env, url); env->CallVoidMethod(m_javaGlue->object(env).get(), m_javaGlue->m_jsAlert, jUrlStr, jInputStr); env->DeleteLocalRef(jInputStr); env->DeleteLocalRef(jUrlStr); @@ -2965,8 +2965,8 @@ void WebViewCore::exceededDatabaseQuota(const WTF::String& url, const WTF::Strin { #if ENABLE(DATABASE) JNIEnv* env = JSC::Bindings::getJNIEnv(); - jstring jDatabaseIdentifierStr = env->NewString((unsigned short *)databaseIdentifier.characters(), databaseIdentifier.length()); - jstring jUrlStr = env->NewString((unsigned short *)url.characters(), url.length()); + jstring jDatabaseIdentifierStr = WtfStringToJstring(env, databaseIdentifier); + jstring jUrlStr = WtfStringToJstring(env, url); env->CallVoidMethod(m_javaGlue->object(env).get(), m_javaGlue->m_exceededDatabaseQuota, jUrlStr, jDatabaseIdentifierStr, currentQuota, estimatedSize); @@ -2997,7 +2997,7 @@ void WebViewCore::populateVisitedLinks(WebCore::PageGroup* group) void WebViewCore::geolocationPermissionsShowPrompt(const WTF::String& origin) { JNIEnv* env = JSC::Bindings::getJNIEnv(); - jstring originString = env->NewString((unsigned short *)origin.characters(), origin.length()); + jstring originString = WtfStringToJstring(env, origin); env->CallVoidMethod(m_javaGlue->object(env).get(), m_javaGlue->m_geolocationPermissionsShowPrompt, originString); @@ -3034,8 +3034,8 @@ jobject WebViewCore::getDeviceOrientationService() bool WebViewCore::jsConfirm(const WTF::String& url, const WTF::String& text) { JNIEnv* env = JSC::Bindings::getJNIEnv(); - jstring jInputStr = env->NewString((unsigned short *)text.characters(), text.length()); - jstring jUrlStr = env->NewString((unsigned short *)url.characters(), url.length()); + jstring jInputStr = WtfStringToJstring(env, text); + jstring jUrlStr = WtfStringToJstring(env, url); jboolean result = env->CallBooleanMethod(m_javaGlue->object(env).get(), m_javaGlue->m_jsConfirm, jUrlStr, jInputStr); env->DeleteLocalRef(jInputStr); env->DeleteLocalRef(jUrlStr); @@ -3046,27 +3046,28 @@ bool WebViewCore::jsConfirm(const WTF::String& url, const WTF::String& text) bool WebViewCore::jsPrompt(const WTF::String& url, const WTF::String& text, const WTF::String& defaultValue, WTF::String& result) { JNIEnv* env = JSC::Bindings::getJNIEnv(); - jstring jInputStr = env->NewString((unsigned short *)text.characters(), text.length()); - jstring jDefaultStr = env->NewString((unsigned short *)defaultValue.characters(), defaultValue.length()); - jstring jUrlStr = env->NewString((unsigned short *)url.characters(), url.length()); - jstring returnVal = (jstring) env->CallObjectMethod(m_javaGlue->object(env).get(), m_javaGlue->m_jsPrompt, jUrlStr, jInputStr, jDefaultStr); + jstring jInputStr = WtfStringToJstring(env, text); + jstring jDefaultStr = WtfStringToJstring(env, defaultValue); + jstring jUrlStr = WtfStringToJstring(env, url); + jstring returnVal = static_cast<jstring>(env->CallObjectMethod(m_javaGlue->object(env).get(), m_javaGlue->m_jsPrompt, jUrlStr, jInputStr, jDefaultStr)); + env->DeleteLocalRef(jInputStr); + env->DeleteLocalRef(jDefaultStr); + env->DeleteLocalRef(jUrlStr); + checkException(env); + // If returnVal is null, it means that the user cancelled the dialog. if (!returnVal) return false; result = jstringToWtfString(env, returnVal); - env->DeleteLocalRef(jInputStr); - env->DeleteLocalRef(jDefaultStr); - env->DeleteLocalRef(jUrlStr); - checkException(env); return true; } bool WebViewCore::jsUnload(const WTF::String& url, const WTF::String& message) { JNIEnv* env = JSC::Bindings::getJNIEnv(); - jstring jInputStr = env->NewString((unsigned short *)message.characters(), message.length()); - jstring jUrlStr = env->NewString((unsigned short *)url.characters(), url.length()); + jstring jInputStr = WtfStringToJstring(env, message); + jstring jUrlStr = WtfStringToJstring(env, url); jboolean result = env->CallBooleanMethod(m_javaGlue->object(env).get(), m_javaGlue->m_jsUnload, jUrlStr, jInputStr); env->DeleteLocalRef(jInputStr); env->DeleteLocalRef(jUrlStr); @@ -3122,8 +3123,7 @@ void WebViewCore::updateTextfield(WebCore::Node* ptr, bool changeToPassword, checkException(env); return; } - int length = text.length(); - jstring string = env->NewString((unsigned short *) text.characters(), length); + jstring string = WtfStringToJstring(env, text); env->CallVoidMethod(m_javaGlue->object(env).get(), m_javaGlue->m_updateTextfield, (int) ptr, false, string, m_textGeneration); env->DeleteLocalRef(string); @@ -3157,7 +3157,7 @@ jclass WebViewCore::getPluginClass(const WTF::String& libName, const char* class { JNIEnv* env = JSC::Bindings::getJNIEnv(); - jstring libString = env->NewString(libName.characters(), libName.length()); + jstring libString = WtfStringToJstring(env, libName); jstring classString = env->NewStringUTF(className); jobject pluginClass = env->CallObjectMethod(m_javaGlue->object(env).get(), m_javaGlue->m_getPluginClass, @@ -3295,16 +3295,6 @@ bool WebViewCore::drawIsPaused() const //---------------------------------------------------------------------- // Native JNI methods //---------------------------------------------------------------------- -static jstring WebCoreStringToJString(JNIEnv *env, WTF::String string) -{ - int length = string.length(); - if (!length) - return 0; - jstring ret = env->NewString((jchar *)string.characters(), length); - env->DeleteLocalRef(ret); - return ret; -} - static void RevealSelection(JNIEnv *env, jobject obj) { GET_NATIVE_VIEW(env, obj)->revealSelection(); @@ -3313,7 +3303,7 @@ static void RevealSelection(JNIEnv *env, jobject obj) static jstring RequestLabel(JNIEnv *env, jobject obj, int framePointer, int nodePointer) { - return WebCoreStringToJString(env, GET_NATIVE_VIEW(env, obj)->requestLabel( + return WtfStringToJstring(env, GET_NATIVE_VIEW(env, obj)->requestLabel( (WebCore::Frame*) framePointer, (WebCore::Node*) nodePointer)); } @@ -3422,7 +3412,7 @@ static jstring ModifySelection(JNIEnv *env, jobject obj, jint direction, jint gr #endif WebViewCore* viewImpl = GET_NATIVE_VIEW(env, obj); String selectionString = viewImpl->modifySelection(direction, granularity); - return WebCoreStringToJString(env, selectionString); + return WtfStringToJstring(env, selectionString); } static void ReplaceTextfieldText(JNIEnv *env, jobject obj, @@ -3564,7 +3554,7 @@ static jstring FindAddress(JNIEnv *env, jobject obj, jstring addr, &start, &end, caseInsensitive) == CacheBuilder::FOUND_COMPLETE; jstring ret = 0; if (success) { - ret = env->NewString((jchar*) addrChars + start, end - start); + ret = env->NewString(addrChars + start, end - start); env->DeleteLocalRef(ret); } env->ReleaseStringChars(addr, addrChars); @@ -3615,7 +3605,7 @@ static jstring RetrieveHref(JNIEnv *env, jobject obj, jint frame, WTF::String result = viewImpl->retrieveHref((WebCore::Frame*) frame, (WebCore::Node*) node); if (!result.isEmpty()) - return WebCoreStringToJString(env, result); + return WtfStringToJstring(env, result); return 0; } @@ -3630,7 +3620,7 @@ static jstring RetrieveAnchorText(JNIEnv *env, jobject obj, jint frame, WTF::String result = viewImpl->retrieveAnchorText((WebCore::Frame*) frame, (WebCore::Node*) node); if (!result.isEmpty()) - return WebCoreStringToJString(env, result); + return WtfStringToJstring(env, result); return 0; } diff --git a/WebKit/android/nav/WebView.cpp b/WebKit/android/nav/WebView.cpp index ae09a7e..8720c44 100644 --- a/WebKit/android/nav/WebView.cpp +++ b/WebKit/android/nav/WebView.cpp @@ -982,7 +982,7 @@ int getBlockLeftEdge(int x, int y, float scale) void overrideUrlLoading(const WTF::String& url) { JNIEnv* env = JSC::Bindings::getJNIEnv(); - jstring jName = env->NewString((jchar*) url.characters(), url.length()); + jstring jName = WtfStringToJstring(env, url); env->CallVoidMethod(m_javaGlue.object(env).get(), m_javaGlue.m_overrideLoading, jName); env->DeleteLocalRef(jName); @@ -1339,16 +1339,6 @@ private: // local state for WebView /* * Native JNI methods */ -static jstring WebCoreStringToJString(JNIEnv *env, WTF::String string) -{ - int length = string.length(); - if (!length) - return 0; - jstring ret = env->NewString((jchar *)string.characters(), length); - env->DeleteLocalRef(ret); - return ret; -} - static int nativeCacheHitFramePointer(JNIEnv *env, jobject obj) { return reinterpret_cast<int>(GET_NATIVE_VIEW(env, obj) @@ -1554,8 +1544,7 @@ static jobject nativeCursorText(JNIEnv *env, jobject obj) if (!node) return 0; WTF::String value = node->getExport(); - return !value.isEmpty() ? env->NewString((jchar *)value.characters(), - value.length()) : 0; + return WtfStringToJstring(env, value); } static void nativeDebugDump(JNIEnv *env, jobject obj) @@ -1619,13 +1608,7 @@ static jobject nativeImageURI(JNIEnv *env, jobject obj, jint x, jint y) WebView* view = GET_NATIVE_VIEW(env, obj); LOG_ASSERT(view, "view not set in %s", __FUNCTION__); WTF::String uri = view->imageURI(x, y); - jstring ret = 0; - unsigned len = uri.length(); - if (len) { - ret = env->NewString((jchar*) uri.characters(), len); - env->DeleteLocalRef(ret); - } - return ret; + return WtfStringToJstring(env, uri); } static jint nativeFocusCandidateFramePointer(JNIEnv *env, jobject obj) @@ -1671,7 +1654,7 @@ static jobject nativeFocusCandidateName(JNIEnv *env, jobject obj) if (!input) return 0; const WTF::String& name = input->name(); - return env->NewString((jchar*)name.characters(), name.length()); + return WtfStringToJstring(env, name); } static jobject createJavaRect(JNIEnv* env, int x, int y, int right, int bottom) @@ -1715,8 +1698,7 @@ static jobject nativeFocusCandidateText(JNIEnv *env, jobject obj) if (!node) return 0; WTF::String value = node->getExport(); - return !value.isEmpty() ? env->NewString((jchar *)value.characters(), - value.length()) : 0; + return WtfStringToJstring(env, value); } static jint nativeFocusCandidateTextSize(JNIEnv *env, jobject obj) @@ -2099,7 +2081,7 @@ static jobject nativeGetSelection(JNIEnv *env, jobject obj) WebView* view = GET_NATIVE_VIEW(env, obj); LOG_ASSERT(view, "view not set in %s", __FUNCTION__); String selection = view->getSelection(); - return env->NewString((jchar*)selection.characters(), selection.length()); + return WtfStringToJstring(env, selection); } static jboolean nativeHitSelection(JNIEnv *env, jobject obj, int x, int y) |
