Skip to content
Commit 9ad5d7d4 authored by Ming-Shin Lu's avatar Ming-Shin Lu
Browse files

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
parent ae31181f
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment