Fix an errorprone for GuardedBy warning

Moving all logic of IMMS#reportPerceptibleAsync into
Binder.withCleanCallingIdentity() runnable parameter to ensure it
can be guarded by ImfLock in the same code block.

To avoid a false alarm lint error caught in CL[1] that the
static analysis checker not be aware in runnable inner called
updateSystemUiLocked has guarded by the ImfLock
with running on the same thread outside the runnable.

[1]: I12d99c15ae0d8965a21406d2495ce5cb18afaea0

Bug: 246309664
Test: make RUN_ERROR_PRONE=true services
Change-Id: Ic7bc9227ce57a3a7c0c3c9726625cd6d0d6a1939
This commit is contained in:
Ming-Shin Lu
2023-01-16 10:20:45 +00:00
parent 5975f9dc72
commit a0dde9c9d6

View File

@@ -3349,15 +3349,16 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
@BinderThread
@Override
public void reportPerceptibleAsync(IBinder windowToken, boolean perceptible) {
Objects.requireNonNull(windowToken, "windowToken must not be null");
synchronized (ImfLock.class) {
if (mCurFocusedWindow != windowToken || mCurPerceptible == perceptible) {
return;
Binder.withCleanCallingIdentity(() -> {
Objects.requireNonNull(windowToken, "windowToken must not be null");
synchronized (ImfLock.class) {
if (mCurFocusedWindow != windowToken || mCurPerceptible == perceptible) {
return;
}
mCurPerceptible = perceptible;
updateSystemUiLocked();
}
mCurPerceptible = perceptible;
Binder.withCleanCallingIdentity(() ->
updateSystemUiLocked(mImeWindowVis, mBackDisposition));
}
});
}
@GuardedBy("ImfLock.class")