tree bde34d6f07d8563cc636fdb03db57ed69b9014b8
parent da433c60c1be2ab162078929fe0958de7c4d967e
author Ming-Shin Lu <lumark@google.com> 1637086131 +0800
committer Ming-Shin Lu <lumark@google.com> 1642825780 +0800

Reduce potential lock contention during start input

IMMS#startInputOrWindowGainedFocus invokes several WM internal methods
to check if the IME client and its windowToken has IME focus:

- getDisplayIdForWindow(windowToken)
   - Checked at beginning of startInputOrWindowGainedFocus to know if
     the displayID of the client window is same as the client reported
     displayID.
- isInputMethodClientFocus(uid, pid, displayId)
  - Checked next to getDisplayIdForWindow invoked, it's to know if the
    client is focused on the display.
- isUidAllowedOnDisplay(displayId, uid)
  - Checked in startInputUncheckedLocked, used to see if the client's
    uid is allow to access on the display.

As calling these methods requres holding WM locks, if the lock
contention takes longer time, it may impact the UI
performance since startInputOrWindowGainedFocus is a sync IPC
call that requires the remote client to execute on the UI thread.

To Remove/reduce unnecessary internal module calls that requires
holding lock by followed ways:

1) Remove isUidAllowedOnDisplay & getDisplayIdForWindow validation
check & combine these checks into isInputMethodClientFocus with
adding windowToken parameter, to reduce the timing of being blocked
by WM lock.

2) Make startInputUncheckLocked as private method and add documentation
  - as all call points of startInputUncheckedLocked is inside of
startInputOrWindowGainedFocus, even though 1) removed calling
isUidAllowedOnDisplay, it still be checked in the combined version of
isInputMethodClientFocus without any visible change, and adding the
documentation for invoking startInputUncheckedLocked requires
the focus check must done before.

2) Refine WindowManagerInternal#shouldRestoreImeVisibility to
smaller the synchronized block since WMS#getTaskSnapshot should
not be called when holding WM lock.

Bug: 197848765
Test: atest CtsInputMethodTestCases
Change-Id: Ie850a67c116466c46bd62d44f4fbdd5584eda5de
