Fix NPE in WindowState#needsRelativeLayeringToIme
CL[1] modified DC#computeImeTarget to keep the previous IME target
window when the insets visiblity of the IME target window is visible
in order to prevent flickering because IME hiding animation occurs
on top of the overview screen.
However, this caused below call stack in needsRelativeLayeringToIme()
may hit NPE by invoking getParentWindow().isInputMethodTarget() on
the null parent window because the window is the previous IME target
which has been removed from the hierarchy:
WindowState.needsRelativeLayeringToIme
InsetsStateController.isAboveIme
InsetsStateController.getInsetsForWindow
InsetsPolicy.getInsetsForWindow
WindowState.getInsetsState
DisplayContent.computeImeTarget
Make sure set DC#mInputMethodTarget as null when the IME target
window is removed by WindowState#removeImmediately() for fixing NPE
by accessing outdated object.
[1]: Ib898bc2e3a5b063fe9eaf8b07d022231dd1326a3
Fix: 171818150
Bug: 166736352
Test: all WM tests passed
Test: atest DisplayContentTests#\
testComputeImeTarget_shouldNotCheckOutdatedImeTargetLayerWhenRemoved
Change-Id: I7ff42b0e6ef5b68f37f81fe9a396bdc7e045c6ea
2 files changed