Merge "Get the navigation bar insets frame from the window"
diff --git a/services/core/java/com/android/server/wm/AccessibilityController.java b/services/core/java/com/android/server/wm/AccessibilityController.java
index 8ce8c46..a0d8dfb 100644
--- a/services/core/java/com/android/server/wm/AccessibilityController.java
+++ b/services/core/java/com/android/server/wm/AccessibilityController.java
@@ -994,7 +994,7 @@
// navigation bar insets into nonMagnifiedBounds. It happens when
// navigation mode is gestural.
if (isUntouchableNavigationBar(windowState, mTempRegion3)) {
- final Rect navBarInsets = getNavBarInsets(mDisplayContent);
+ final Rect navBarInsets = getSystemBarInsetsFrame(windowState);
nonMagnifiedBounds.op(navBarInsets, Region.Op.UNION);
availableBounds.op(navBarInsets, Region.Op.DIFFERENCE);
}
@@ -1459,10 +1459,12 @@
return touchableRegion.isEmpty();
}
- static Rect getNavBarInsets(DisplayContent displayContent) {
- final InsetsSource source = displayContent.getInsetsStateController().getRawInsetsState()
- .peekSource(ITYPE_NAVIGATION_BAR);
- return source != null ? source.getFrame() : EMPTY_RECT;
+ static Rect getSystemBarInsetsFrame(WindowState win) {
+ if (win == null) {
+ return EMPTY_RECT;
+ }
+ final InsetsSourceProvider provider = win.getControllableInsetProvider();
+ return provider != null ? provider.getSource().getFrame() : EMPTY_RECT;
}
/**
@@ -1615,7 +1617,10 @@
// region of navigation bar inset because all touch events from this region
// would be received by launcher, i.e. this region is a un-touchable one
// for the application.
- unaccountedSpace.op(getNavBarInsets(dc), unaccountedSpace,
+ unaccountedSpace.op(
+ getSystemBarInsetsFrame(
+ mService.mWindowMap.get(a11yWindow.getWindowInfo().token)),
+ unaccountedSpace,
Region.Op.REVERSE_DIFFERENCE);
}