Merge "Skip IME initialization when received the token that already registered" into qt-dev

This commit is contained in:
TreeHugger Robot
2019-05-30 17:33:17 +00:00
committed by Android (Google) Code Review
2 changed files with 22 additions and 1 deletions

View File

@@ -472,8 +472,12 @@ public class InputMethodService extends AbstractInputMethodService {
*/
@MainThread
@Override
public final void initializeInternal(IBinder token, int displayId,
public final void initializeInternal(@NonNull IBinder token, int displayId,
IInputMethodPrivilegedOperations privilegedOperations) {
if (InputMethodPrivilegedOperationsRegistry.isRegistered(token)) {
Log.w(TAG, "The token has already registered, ignore this initialization.");
return;
}
mPrivOps.set(privilegedOperations);
InputMethodPrivilegedOperationsRegistry.put(token, mPrivOps);
updateInputMethodDisplay(displayId);

View File

@@ -132,4 +132,21 @@ public final class InputMethodPrivilegedOperationsRegistry {
}
}
}
/**
* Check the given IME token registration status.
*
* @param token IME token
* @return {@code true} when the IME token has already registered
* {@link InputMethodPrivilegedOperations}, {@code false} otherwise.
*/
@AnyThread
public static boolean isRegistered(IBinder token) {
synchronized (sLock) {
if (sRegistry == null) {
return false;
}
return sRegistry.containsKey(token);
}
}
}