Use public types to update system UI visibility

Taskbar is also considered as a navigation bar. While its visibility is
changed, View#dispatchSystemUiVisibilityChanged should be called.

Bug: 225765490
Test: atest WindowInsetsControllerTests
Change-Id: Ie9624211aa6077085966d588c28601000c68a4f2
This commit is contained in:
Tiger Huang
2022-03-21 17:16:15 +08:00
parent 017ebacdaf
commit e389f15ca6

View File

@@ -23,8 +23,6 @@ import static android.view.Display.DEFAULT_DISPLAY;
import static android.view.Display.INVALID_DISPLAY;
import static android.view.InputDevice.SOURCE_CLASS_NONE;
import static android.view.InsetsState.ITYPE_IME;
import static android.view.InsetsState.ITYPE_NAVIGATION_BAR;
import static android.view.InsetsState.ITYPE_STATUS_BAR;
import static android.view.InsetsState.SIZE;
import static android.view.View.PFLAG_DRAW_ANIMATION;
import static android.view.View.SYSTEM_UI_FLAG_FULLSCREEN;
@@ -2314,11 +2312,12 @@ public final class ViewRootImpl implements ViewParent,
*/
void updateCompatSysUiVisibility(@InternalInsetsType int type, boolean visible,
boolean hasControl) {
if (type != ITYPE_STATUS_BAR && type != ITYPE_NAVIGATION_BAR) {
@InsetsType final int publicType = InsetsState.toPublicType(type);
if (publicType != Type.statusBars() && publicType != Type.navigationBars()) {
return;
}
final SystemUiVisibilityInfo info = mCompatibleVisibilityInfo;
final int systemUiFlag = type == ITYPE_STATUS_BAR
final int systemUiFlag = publicType == Type.statusBars()
? View.SYSTEM_UI_FLAG_FULLSCREEN
: View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
final boolean wasVisible = (info.globalVisibility & systemUiFlag) == 0;