summaryrefslogtreecommitdiffstats
path: root/WebKit
diff options
context:
space:
mode:
Diffstat (limited to 'WebKit')
-rw-r--r--WebKit/android/WebCoreSupport/MediaPlayerPrivateAndroid.cpp8
-rwxr-xr-xWebKit/android/jni/GeolocationPermissionsBridge.cpp2
-rw-r--r--WebKit/android/jni/JavaBridge.cpp13
-rw-r--r--WebKit/android/jni/MIMETypeRegistry.cpp5
-rw-r--r--WebKit/android/jni/WebCoreFrameBridge.cpp66
-rw-r--r--WebKit/android/jni/WebCoreJni.cpp7
-rw-r--r--WebKit/android/jni/WebCoreJni.h8
-rw-r--r--WebKit/android/jni/WebCoreResourceLoader.cpp5
-rw-r--r--WebKit/android/jni/WebHistory.cpp11
-rw-r--r--WebKit/android/jni/WebStorage.cpp2
-rw-r--r--WebKit/android/jni/WebViewCore.cpp68
-rw-r--r--WebKit/android/nav/WebView.cpp30
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)