Bug 576065 - Fix Android IME implementation, r=mwu a=blocking-fennec
This commit is contained in:
@@ -91,7 +91,8 @@ AndroidBridge::Init(JNIEnv *jEnv,
|
||||
|
||||
mGeckoAppShellClass = (jclass) jEnv->NewGlobalRef(jGeckoAppShellClass);
|
||||
|
||||
jShowIME = (jmethodID) jEnv->GetStaticMethodID(jGeckoAppShellClass, "showIME", "(I)V");
|
||||
jNotifyIME = (jmethodID) jEnv->GetStaticMethodID(jGeckoAppShellClass, "notifyIME", "(II)V");
|
||||
jNotifyIMEChange = (jmethodID) jEnv->GetStaticMethodID(jGeckoAppShellClass, "notifyIMEChange", "(Ljava/lang/String;III)V");
|
||||
jEnableAccelerometer = (jmethodID) jEnv->GetStaticMethodID(jGeckoAppShellClass, "enableAccelerometer", "(Z)V");
|
||||
jEnableLocation = (jmethodID) jEnv->GetStaticMethodID(jGeckoAppShellClass, "enableLocation", "(Z)V");
|
||||
jReturnIMEQueryResult = (jmethodID) jEnv->GetStaticMethodID(jGeckoAppShellClass, "returnIMEQueryResult", "(Ljava/lang/String;II)V");
|
||||
@@ -183,9 +184,24 @@ AndroidBridge::EnsureJNIThread()
|
||||
}
|
||||
|
||||
void
|
||||
AndroidBridge::ShowIME(int aState)
|
||||
AndroidBridge::NotifyIME(int aType, int aState)
|
||||
{
|
||||
mJNIEnv->CallStaticVoidMethod(mGeckoAppShellClass, jShowIME, aState);
|
||||
mJNIEnv->CallStaticVoidMethod(mGeckoAppShellClass,
|
||||
jNotifyIME, aType, aState);
|
||||
}
|
||||
|
||||
void
|
||||
AndroidBridge::NotifyIMEChange(const PRUnichar *aText, PRUint32 aTextLen,
|
||||
int aStart, int aEnd, int aNewEnd)
|
||||
{
|
||||
jvalue args[4];
|
||||
AutoLocalJNIFrame jniFrame(1);
|
||||
args[0].l = mJNIEnv->NewString(aText, aTextLen);
|
||||
args[1].i = aStart;
|
||||
args[2].i = aEnd;
|
||||
args[3].i = aNewEnd;
|
||||
mJNIEnv->CallStaticVoidMethodA(mGeckoAppShellClass,
|
||||
jNotifyIMEChange, args);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -201,13 +217,16 @@ AndroidBridge::EnableLocation(bool aEnable)
|
||||
}
|
||||
|
||||
void
|
||||
AndroidBridge::ReturnIMEQueryResult(const PRUnichar *result, PRUint32 len, int selectionStart, int selectionEnd)
|
||||
AndroidBridge::ReturnIMEQueryResult(const PRUnichar *aResult, PRUint32 aLen,
|
||||
int aSelStart, int aSelLen)
|
||||
{
|
||||
jvalue args[3];
|
||||
args[0].l = mJNIEnv->NewString(result, len);
|
||||
args[1].i = selectionStart;
|
||||
args[2].i = selectionEnd;
|
||||
mJNIEnv->CallStaticVoidMethodA(mGeckoAppShellClass, jReturnIMEQueryResult, args);
|
||||
AutoLocalJNIFrame jniFrame(1);
|
||||
args[0].l = mJNIEnv->NewString(aResult, aLen);
|
||||
args[1].i = aSelStart;
|
||||
args[2].i = aSelLen;
|
||||
mJNIEnv->CallStaticVoidMethodA(mGeckoAppShellClass,
|
||||
jReturnIMEQueryResult, args);
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
Reference in New Issue
Block a user