--- a/widget/src/android/AndroidBridge.cpp
+++ b/widget/src/android/AndroidBridge.cpp
@@ -384,19 +384,19 @@ AndroidBridge::GetHandlersForMimeType(co
const nsAString& aAction)
{
ALOG_BRIDGE("AndroidBridge::GetHandlersForMimeType");
AutoLocalJNIFrame jniFrame;
NS_ConvertUTF8toUTF16 wMimeType(aMimeType);
jstring jstrMimeType =
mJNIEnv->NewString(wMimeType.get(), wMimeType.Length());
- const PRUnichar* wAction;
- PRUint32 actionLen = NS_StringGetData(aAction, &wAction);
- jstring jstrAction = mJNIEnv->NewString(wAction, actionLen);
+
+ jstring jstrAction = mJNIEnv->NewString(nsPromiseFlatString(aAction).get(),
+ aAction.Length());
jobject obj = mJNIEnv->CallStaticObjectMethod(mGeckoAppShellClass,
jGetHandlersForMimeType,
jstrMimeType, jstrAction);
jobjectArray arr = static_cast<jobjectArray>(obj);
if (!arr)
return PR_FALSE;
@@ -417,19 +417,18 @@ AndroidBridge::GetHandlersForURL(const c
nsIHandlerApp **aDefaultApp,
const nsAString& aAction)
{
ALOG_BRIDGE("AndroidBridge::GetHandlersForURL");
AutoLocalJNIFrame jniFrame;
NS_ConvertUTF8toUTF16 wScheme(aURL);
jstring jstrScheme = mJNIEnv->NewString(wScheme.get(), wScheme.Length());
- const PRUnichar* wAction;
- PRUint32 actionLen = NS_StringGetData(aAction, &wAction);
- jstring jstrAction = mJNIEnv->NewString(wAction, actionLen);
+ jstring jstrAction = mJNIEnv->NewString(nsPromiseFlatString(aAction).get(),
+ aAction.Length());
jobject obj = mJNIEnv->CallStaticObjectMethod(mGeckoAppShellClass,
jGetHandlersForURL,
jstrScheme, jstrAction);
jobjectArray arr = static_cast<jobjectArray>(obj);
if (!arr)
return PR_FALSE;
@@ -448,31 +447,28 @@ AndroidBridge::OpenUriExternal(const nsA
const nsAString& aPackageName, const nsAString& aClassName,
const nsAString& aAction, const nsAString& aTitle)
{
ALOG_BRIDGE("AndroidBridge::OpenUriExternal");
AutoLocalJNIFrame jniFrame;
NS_ConvertUTF8toUTF16 wUriSpec(aUriSpec);
NS_ConvertUTF8toUTF16 wMimeType(aMimeType);
- const PRUnichar* wPackageName;
- PRUint32 packageNameLen = NS_StringGetData(aPackageName, &wPackageName);
- const PRUnichar* wClassName;
- PRUint32 classNameLen = NS_StringGetData(aClassName, &wClassName);
- const PRUnichar* wAction;
- PRUint32 actionLen = NS_StringGetData(aAction, &wAction);
- const PRUnichar* wTitle;
- PRUint32 titleLen = NS_StringGetData(aTitle, &wTitle);
jstring jstrUri = mJNIEnv->NewString(wUriSpec.get(), wUriSpec.Length());
jstring jstrType = mJNIEnv->NewString(wMimeType.get(), wMimeType.Length());
- jstring jstrPackage = mJNIEnv->NewString(wPackageName, packageNameLen);
- jstring jstrClass = mJNIEnv->NewString(wClassName, classNameLen);
- jstring jstrAction = mJNIEnv->NewString(wAction, actionLen);
- jstring jstrTitle = mJNIEnv->NewString(wTitle, titleLen);
+
+ jstring jstrPackage = mJNIEnv->NewString(nsPromiseFlatString(aPackageName).get(),
+ aPackageName.Length());
+ jstring jstrClass = mJNIEnv->NewString(nsPromiseFlatString(aClassName).get(),
+ aClassName.Length());
+ jstring jstrAction = mJNIEnv->NewString(nsPromiseFlatString(aAction).get(),
+ aAction.Length());
+ jstring jstrTitle = mJNIEnv->NewString(nsPromiseFlatString(aTitle).get(),
+ aTitle.Length());
return mJNIEnv->CallStaticBooleanMethod(mGeckoAppShellClass,
jOpenUriExternal,
jstrUri, jstrType, jstrPackage,
jstrClass, jstrAction, jstrTitle);
}
void
@@ -529,20 +525,19 @@ AndroidBridge::GetClipboardText(nsAStrin
aText.Assign(jniStr);
return PR_TRUE;
}
void
AndroidBridge::SetClipboardText(const nsAString& aText)
{
ALOG_BRIDGE("AndroidBridge::SetClipboardText");
-
- const PRUnichar* wText;
- PRUint32 wTextLen = NS_StringGetData(aText, &wText);
- jstring jstr = mJNIEnv->NewString(wText, wTextLen);
+ AutoLocalJNIFrame jniFrame;
+ jstring jstr = mJNIEnv->NewString(nsPromiseFlatString(aText).get(),
+ aText.Length());
mJNIEnv->CallStaticObjectMethod(mGeckoAppShellClass, jSetClipboardText, jstr);
}
bool
AndroidBridge::ClipboardHasText()
{
ALOG_BRIDGE("AndroidBridge::ClipboardHasText");
@@ -671,16 +666,17 @@ AndroidBridge::IsNetworkLinkKnown()
ALOG_BRIDGE("AndroidBridge::IsNetworkLinkKnown");
return !!mJNIEnv->CallStaticBooleanMethod(mGeckoAppShellClass, jIsNetworkLinkKnown);
}
void
AndroidBridge::SetSelectedLocale(const nsAString& aLocale)
{
ALOG_BRIDGE("AndroidBridge::SetSelectedLocale");
+ AutoLocalJNIFrame jniFrame;
jstring jLocale = GetJNIForThread()->NewString(PromiseFlatString(aLocale).get(), aLocale.Length());
GetJNIForThread()->CallStaticVoidMethod(mGeckoAppShellClass, jSetSelectedLocale, jLocale);
}
void
AndroidBridge::SetSurfaceView(jobject obj)
{
mSurfaceView.Init(obj);
@@ -813,16 +809,17 @@ extern "C" JNIEnv * GetJNIForThread()
jclass GetGeckoAppShellClass()
{
return mozilla::AndroidBridge::GetGeckoAppShellClass();
}
void
AndroidBridge::ScanMedia(const nsAString& aFile, const nsACString& aMimeType)
{
+ AutoLocalJNIFrame jniFrame;
jstring jstrFile = mJNIEnv->NewString(nsPromiseFlatString(aFile).get(), aFile.Length());
nsString mimeType2;
CopyUTF8toUTF16(aMimeType, mimeType2);
jstring jstrMimeTypes = mJNIEnv->NewString(nsPromiseFlatString(mimeType2).get(), mimeType2.Length());
mJNIEnv->CallStaticVoidMethod(mGeckoAppShellClass, jScanMedia, jstrFile, jstrMimeTypes);
}