Don't flash system bars while showing an immersive app on lockscreen
Before applying this patch, when a show-when-locked immersive app is showing, the system bars would quickly show and hide, which are redundant to the user. The root cause is that, for nav bar, we have a policy to show nav bar if the width and height of status bar are MATCH_PARENT and status bar has no PRIVATE_FLAG_KEYGUARD. When keyguard is becoming status bar, its keyguard flag would be removed first, and then the height would be changed to the bar height. So the nav bar would be shown between these events. For status bar, we force showing it when it is expanded by checking its width and height are MATCH_PARENT or not. To fix the issue, this change introduces a new private flag which indicates that the status bar window is now in an explicit expanded state. We check this flag instead of checking the width and height of status bar. This change also fix a bug that: when AOD is enabled, if the foreground app has FLAG_SHOW_WHEN_LOCKED, FLAG_TURN_SCREEN_ON, and FLAG_FULLSCREEN, clicking on the power key would make it show the app again instead of AOD. (not 100%, but chances) Bug: 80147982 Test: 1. go/wm-smoke 2. Launch a show-when-locked turn-screen-on immersive app on AOD, and see if any system bar flashes. 3. Launch a show-when-locked turn-screen-on immersive app on lockscreen, and see if any system bar flashes. 4. a. Enable AOD in Settings. b. Open a show-when-locked turn-screen-on immersive app. c. Click on power key, and see if AOD shows. 5. Launch an immersive app and drag down the status bar, see if nav bar keeps there as long as status bar is expanded. Change-Id: Ie885d504eb73ae8a86736b2c3ed4fb03eb9f739e
Loading
Please register or sign in to comment