Lock down RemoteInputConnectionImpl#getInputConnection()
This is a mechanical refactoring CL that locks down RemoteInputConnectionImpl#getInputConnection() as a private method. This is supposed to be helpful to to avoid future misuse of raw InputConnection instance outside RemoteInputConnectionImpl. Note that InputMethodManager#isAcceptingText() remains to have the same observable behavior in this CL. The key fact is that the following two fields are updated in an atomic way. * RemoteInputConnectionImpl#mInputConnection * RemoteInputConnectionImpl#mFinished Bug: 192412909 Test: presubmit Change-Id: Ic5fbc6213ad62df95fc0b7eef18bab1fd9fbdbf1
This commit is contained in:
@@ -1381,8 +1381,7 @@ public final class InputMethodManager {
|
||||
public boolean isAcceptingText() {
|
||||
checkFocus();
|
||||
synchronized (mH) {
|
||||
return mServedInputConnection != null
|
||||
&& mServedInputConnection.getInputConnection() != null;
|
||||
return mServedInputConnection != null && !mServedInputConnection.isFinished();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -86,13 +86,17 @@ public final class RemoteInputConnectionImpl extends IInputContext.Stub {
|
||||
* @return {@link InputConnection} to which incoming IPCs will be dispatched.
|
||||
*/
|
||||
@Nullable
|
||||
public InputConnection getInputConnection() {
|
||||
private InputConnection getInputConnection() {
|
||||
synchronized (mLock) {
|
||||
return mInputConnection;
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isFinished() {
|
||||
/**
|
||||
* @return {@code true} until the target {@link InputConnection} receives
|
||||
* {@link InputConnection#closeConnection()} as a result of {@link #deactivate()}.
|
||||
*/
|
||||
public boolean isFinished() {
|
||||
synchronized (mLock) {
|
||||
return mFinished;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user