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
Loading
Please register or sign in to comment