Fix a redundant assignRelativeLayerForIme case

Somehow in FlickerTest#CloseAppBackButtonTest
with enabling shell-transition flag will see a weird case is that first
launcher be set relativeZ to above IME container during closing the IME
actiivty, which is understandable since home activity is not IME target
during transient launch,

but soonly in assignRelativeLayerForIme will
set IME container's relativeZ to be above launcher after recents
animation finish.

This action will confuse SurfaceFlinger side while invoking
Layer::isHiddenByPolicy() to traverse all layers using relativeZ and
cause stack-overflow due to circulated relativeZ relationship in between
launcher and IME container.

As we don't need to set relative layer if the IME target in non-multi-window
mode is the activity main window since updateImeParent will ensure the IME
surface be attached on the fullscreen activity.

Add a check in assignRelativeLayerForIme to not set RelativeZ if
the IME target is the full screen activity, to break out circulated
RelativeZ in between ImeContainer & Launcher window layer.

Fix: 219774897
Test: atest ZOrderingTest
Test: atest FlickerTests#CloseAppBackButtonTest --iterations 20

Change-Id: I5abff1980328dc47ee193429a76a5d39a8625899
2 files changed